• 技术文章 >运维 >linux运维

    linux下的软件防火墙iptables——规则的定义与删除

    齐天大圣齐天大圣2020-11-18 15:35:35原创55
    关于ipitables防火墙的介绍,以及如何查看规则及清理规则等,在之前的一篇文章中已经讲述了,今天这里是演示如何制定防火墙的规则。因为工作中,主要会对filter链制定规则,所以这里我们主要也以fitler链做演示。

    准备工作

    制定规则前,我们首先关闭firewalld服务、开启iptables服务,然后清除已有的规则。

    # systemctl stop firewalld
    # systemctl start iptables
    # iptables -F
    # iptables -X
    # iptables -Z

    新增规则链

    关于iptables的添加规则链,选项非常繁多,下面我们看基本用法:

    iptables [-t tables] -A|I 链名 [-i|o 网络接口] [-m state] [--state 数据包状态] \
    > [-p 网络协议]  [-s 源地址 --sport 端口范围] [-d 目标地址 --dport 端口范围] \
    > -j [ACCEPT|DROP|REJECT]

    选项与参数:

    针对ip、网络、网卡接口的规则制定

    下面,给出几个规则链案例。我们允许从192.168.1.110发来的数据、拒绝192.168.1.111发来的数据。

    # iptables -A INPUT -s 192.168.1.110 -j ACCEPT
    # iptables -I INPUT -s 192.168.1.111 -j DROP
    
    # iptables -vnL
    Chain INPUT (policy ACCEPT 33 packets, 3048 bytes)
     pkts bytes target     prot opt in     out     source               destination         
        0     0 DROP       all  --  *      *       192.168.1.111        0.0.0.0/0           
        0     0 ACCEPT     all  --  *      *       192.168.1.110        0.0.0.0/0           
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    Chain OUTPUT (policy ACCEPT 18 packets, 1844 bytes)
     pkts bytes target     prot opt in     out     source               destination

    允许192.168.1.0/24网络地址访问

    # iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
    # iptables -vnL
    Chain INPUT (policy ACCEPT 29 packets, 2328 bytes)
     pkts bytes target     prot opt in     out     source               destination         
        0     0 DROP       all  --  *      *       192.168.1.111        0.0.0.0/0           
        0     0 ACCEPT     all  --  *      *       192.168.1.110        0.0.0.0/0           
        0     0 ACCEPT     all  --  *      *       192.168.1.0/24       0.0.0.0/0           
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    Chain OUTPUT (policy ACCEPT 15 packets, 1460 bytes)
     pkts bytes target     prot opt in     out     source               destination

    思考一个问题,192.168.1.111的数据包是会被接受还是会拒绝。从INPUT第一条规则看是会被拒绝,但从最后一条看,会接受。答案是会被拒绝,当满足其中一条规则时,就不会再走下面的规则了,所以说规则链的顺序也是非常重要的。

    继续看案例:只要是本地回环地址lo都允许

    # iptables -A INPUT -i lo -j ACCEPT

    针对端口的规则制定

    将进入本地的21端口数据包都阻挡掉

    # iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP

    将1024至65534之间的端口都开放,可以用 端口号:端口号 来表示一段连续的端口号

    # iptables -A INPUT -i eth0 -p tcp --dport 1024:65534 -j ACCEPT

    下面来看两个个综合性的规则

    本机的3306端口,不对192.168.1.0/24这个网络开放。

    本机的ssh服务,不接受192.168.1.0/24这个网络的1024:65535端口的数据包

    # iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --dport 3306 -j DROP
    # iptables -A INPUT -i etc0 -p tcp -s 192.168.1.0/24 \
    > --sport 1024:65535 --dport 22 -j DROP

    针对数据包的连接状态的规则制定

    数据包常见的状态有INVALID(无效的数据包)、ESTABLISHED(已经成功连接的状态)、NEW(新建立的数据包)、RELATED(新连接与现有连接相关联)。

    针对ESTABLISHED以及RELATED状态的数据包全都接受,针对INVALID状态的数据包全部丢弃

    # iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
    # iptables -A INPUT -m state --state INVALID -j DROP

    删除规则链

    删除规则链基本和添加规则链一致,只不过-A换成-D即可,下面我们一起来删除几条规则。

    # iptables-save
    # Generated by iptables-save v1.4.21 on Sun Nov 15 22:36:41 2020
    *filter
    :INPUT ACCEPT [4:1920]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [16:1380]
    -A INPUT -s 192.168.1.111/32 -j DROP
    -A INPUT -s 192.168.1.110/32 -j ACCEPT
    -A INPUT -s 192.168.1.0/24 -j ACCEPT
    ……
    
    # iptables -t filter -D INPUT -s 192.168.1.111/32 -j DROP
    # iptables -D INPUT -s 192.168.1.110/32 -j ACCEPT

    注:以上关于iptables的设置只会保存到内存中去,重启服务后系统后,这些设置将消失。所以,只要不把自己阻挡在外情况下,请尽管练习吧

    若想保存规则的话,请输入/usr/libexec/iptables/iptables.init save来保存。

    相关推荐:《linux视频教程

    以上就是linux下的软件防火墙iptables——规则的定义与删除的详细内容,更多请关注php中文网其它相关文章!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!
    专题推荐:linux
    上一篇:linux下的软件防火墙iptables——规则的查看与清除、定义默认策略 下一篇:linux下的软件防火墙iptables——nat表规则的设定
    第14期线上培训班

    相关文章推荐

    • linux下mysql远程安装的方法• linux中一些常见的设置网络参数的命令• linux中出现网络故障该如何排除• linux下的软件防火墙iptables——规则的查看与清除、定义默认策略

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网