• 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.修改的时候小心别把自己关在外面,可以现在定时任务里添加一条定时清空的规则,等测试没问题再取消定时任务。


  • 相关阅读:
    object-c中NSString与int和float的相互转换
    Keras
    TensorFlow白皮书
    java split进行字符串分割
    Java进行post和get传参数
    MySQL 导出数据
    解析xml并且导入mysql
    MySQL显示中文
    java使用sax解析xml
    mysql connection refused
  • 原文地址:https://www.cnblogs.com/hrers/p/11768649.html
Copyright © 2020-2023  润新知