zoukankan      html  css  js  c++  java
  • iptables学习笔记

    ###iptables的四表五链
    #Filter表
    INPUT:到达目标主机套接字的包
    FORWARD:经过路由的包,主要为路由转发
    OUTPUT:本地主机创建的数据包
    #NAT表
    PREROUTING:对刚进来的数据包进行更改
    OUTPUT:本地创建的数据包在路由之前进行更改
    POSTROUTING:在数据包出去时更改数据包信息
    #Managle表
    INPUT:进入设备本身的包
    FORWARD:对经过路由通过设备的包进行更改
    PREROUTING:在路由之前更改传入的包
    OUTPUT:本地创建的数据包在路由之前进行更改
    POSTROUTING:在数据包出去时更改数据包信息
    #raw表


    ###iptables的安装
    yum install iptables-services -y
    #加载模块
    modprobe ip_tables
    modprobe iptable_filter
    modprobe iptable_nat
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe ipt_state
    #查看加载的模块
    lsmod |egrep 'filter|nat|ipt'
    #停止firewalld
    systemctl stop firewalld
    systemctl disable firewalld
    #开启iptables
    systemctl start iptables.service
    systemctl enable iptables.service

    ###iptables命令
    注:iptables规则的读取为从上到下,若匹配到了,就不会往下匹配,所以注意规则的顺序。
    iptables -nL #查看Filter表的防火墙规则,-n为显示源地址栏信息,-L为显示列表信息list,注意参数顺序不能颠倒
    iptables -nL -t nat #查看NAT表的防火墙规则,-t为指定表类型table
    iptables -F #清除Filter表所有规则,注意:这种清除不会清除默认的规则,当改变过默认规则时要注意,以防被挡在防火墙外
    iptables -F -t nat #清除NAT表的规则
    iptables -X #删除用户自定义的链
    iptables -Z #将链的计数器清零(数据包计数器与数据包字节计数器)
    iptables -t #指定表
    iptables -A #将规则追加到指定的链上,链的最后一行
    iptables -I #插入规则到指定的链上,链的第一行
    iptables -R #替换链的规则,默认为第一行
    iptables -D #删除链上的规则
    iptables -nL --line-numbers #查看Filter表规则,并标注规则号码
    iptables -nL -t nat --line-numbers #查看NAT表规则,并标注规则号码
    iptables -D INPUT 1 #删除指定表序号所对应的规则
    iptables -A INPUT -p tcp -m state --dport 22 -j DROP #-A为在指定链后面追加规则,-p(protocol)指定协议为tcp,-m指定匹配状态,--dport指定目标地址端口号,-j指定执行的动作为拦截
    iptables -t filter -A INPUT -p tcp --dport 22 -j DROP #为指定表指定链追加规则,--dport为目标端口,--sport为源端口
    iptables -I INPUT -p tcp -s 10.0.1.51 -i eth0 -j DROP #为指定链添加规则,-s为指定源地址,-i为指定网络接口。表示禁止该ip地址从eth0网卡进入
    iptables -A INPUT -p tcp ! -s 10.0.1.0/24 -i eth0 -j DROP #为指定链追加规则,!为非。表示禁止所有地址连接eth0网卡,除了指定的地址段
    iptables -A INPUT -p tcp ! -s 10.0.0.1 -i eth0 -j DROP #表示拒绝连接eth0,除了这一个ip地址
    #其他参数说明
    -s       #<==指定源地址或网段(192.168.1.0/24)。! 取反。
    -d       #<==指定目的地址(nat表prerouting)
    -i       #<==进入的网络接口(eth0,eth1)
    -o       #<==出去的网络接口(eth0,eth1)
    iptables -I INPUT -p tcp -m multiport --dport 21,22,23,24 -j DROP #-m表示指定状态为多端口,--dport定义多端口,-m multiport不可省略
    iptables -I INPUT -p tcp --dport 3306:3308 -j ACCEPT #--dport为指定端口地址段3306,3307,3308。-j为指定类型为可进入,-m multiport可省略
    iptables -A INPUT -p icmp --icmp-type 8 -j DROP #-p指定协议为icmp,--icmp-type为指定协议类型为ping。表示禁用对主机ping
    iptables -A FORWARD -s 192.168.1.0/24 -p icmp -m icmp --icmp-type any -j DROP #为指定链追加规则。表示只允许该地址段的ip通过icmp协议类型转发
    iptables -I INPUT -s 10.0.0.7 -j DROP #禁止该ip访问
    iptables -I INPUT -p icmp --icmp-type 8 -s 10.0.0.7 -j ACCEPT #允许该地址的所有icmp协议类型
    iptables -I INPUT 2 -p icmp ! -s 10.0.0.1 --icmp-type 8 -j DROP #除了该地址拒绝所有的ip地址ping
    iptables -I INPUT -p tcp --dport 3306 -j DROP #禁止访问主机3306端口

    ###iptables部署实例
    iptables -F
    iptables -X
    iptables -Z
    iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    iptables -A INPUT -s 10.0.1.0/24 -j ACCEPT
    iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT
    iptables -nL

    ###局域网共享上网
    ##能够上网的主机iptables策略,注意顺序
    iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.61 #-A指定链为POSTROUTING,-j指定动作为将源地址进行NAT转换,--to-source指定转换成的地址
    echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf #添加内核地址转发功能
    sysctl -p #查看内核参数设置
    #清除防火墙规则
    iptables -F
    iptables -X
    iptables -Z
    #设置放行的端口
    iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    #设置放行的ip段
    iptables -A INPUT -s 10.0.1.0/24 -j ACCEPT
    iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    #拒接所有的连接
    iptables -P INPUT DROP
    #拒绝所有的转发
    iptables -P FORWARD DROP
    #允许所有输出
    iptables -P OUTPUT ACCEPT
    #允许地址段的输入输出,对应特定的网卡,地址段主机作为源地址
    iptables -A FORWARD -i eth1 -s 172.16.1.0/24 -j ACCEPT
    iptables -A FORWARD -o eth0 -s 172.16.1.0/24 -j ACCEPT
    #允许地址段的输入输出,对应特定的网卡,地址段主机作为目标地址
    iptables -A FORWARD -i eth0 -d 172.16.1.0/24 -j ACCEPT
    iptables -A FORWARD -o eth1 -d 172.16.1.0/24 -j ACCEPT
    ##上网的内网主机设置
    将主机的网关设置为能上网的主机的ip地址,重启网卡

    ###端口映射
    #-d为目标端口,-j指定动作为DNAT目标地址NAT转换,--to-destination指定要转换成的地址和端口。表示将对10地址9000端口的请求转发到172地址的22端口
    iptables -t nat -A PREROUTING -d 10.0.1.61 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.7:22

    ###ip映射
    #表示将对10地址的请求转发到172地址上
    iptables -t nat -A PREROUTING -d 10.0.1.62 -j DNAT --to-destination 172.16.1.7

    ###iptables规则保存
    #由于之前的命令操作都是临时的
    iptables-save > 20190821 #将防火墙规则保存到文件中
    iptables-save #将防火墙规则保存到配置文件中,防止重启后失效
    iptables-restore < 20190821 #从配置文件里载入防火墙配置

    ###iptables配置小技巧
    1.修改之前先导出备份一份
    2.修改的时候小心别把自己关在外面,可以现在定时任务里添加一条定时清空的规则,等测试没问题再取消定时任务。


  • 相关阅读:
    HDU 1010 Tempter of the Bone(DFS剪枝)
    HDU 1013 Digital Roots(九余数定理)
    HDU 2680 Choose the best route(反向建图最短路)
    HDU 1596 find the safest road(最短路)
    HDU 2072 单词数
    HDU 3790 最短路径问题 (dijkstra)
    HDU 1018 Big Number
    HDU 1042 N!
    NYOJ 117 求逆序数 (树状数组)
    20.QT文本文件读写
  • 原文地址:https://www.cnblogs.com/hrers/p/11768649.html
Copyright © 2011-2022 走看看