• 软件防火墙之iptables自定义链chain


    链管理类:

    -N:new, 自定义一条新的规则链
    -E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除
    -X:delete,删除自定义的空的规则链
    -P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:ACCEPT:接受, DROP:丢弃
    

    范例:自定义一条新的规则链chain

    [root@localhost ~]# iptables -N web_chain
    

    范例:在nat表中自定义一条新的规则链

    [root@localhost ~]# iptables -N web_chain -t nat
    

    范例:删除自定义空的规则链

    [root@localhost ~]# iptables -X web_chain -t nat
    

    范例:重命名自定义链

    [root@localhost ~]# iptables -E web_chain WEB_CHAIN
    

    范例:添加一条规则到自定义链

    [root@localhost ~]# iptables -A WEB_CHAIN -s 172.31.0.7 -p tcp -m multiport --dports 80,443 -j REJECT
    

    范例:关联自定义链chain

    [root@localhost ~]# iptables -A INPUT -s 172.31.0.0/16 -j WEB_CHAIN
    

    范例:创建自定义链实现WEB的访问控制

    [root@localhost ~]# iptables -N WEB_CHAIN
    [root@localhost ~]# iptables -A INPUT -s 172.31.0.0/16 -j WEB_CHAIN
    [root@localhost ~]# iptables -A WEB_CHAIN -p icmp -j ACCEPT
    [root@localhost ~]# iptables -I WEB_CHAIN 2 -s 172.31.0.7 -j RETURN
    
    # 效果如下:
    [root@localhost ~]# iptables -vnL
    Chain INPUT (policy ACCEPT 30 packets, 1980 bytes)
     pkts bytes target     prot opt in     out     source               destination         
      216 14308 WEB_CHAIN  all  --  *      *       172.31.0.0/16        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 16 packets, 1568 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    Chain WEB_CHAIN (1 references)
     pkts bytes target     prot opt in     out     source               destination         
        0     0 REJECT     tcp  --  *      *       172.31.0.7           0.0.0.0/0            multiport dports 80,443 reject-with icmp-port-unreachable
        0     0 RETURN     all  --  *      *       172.31.0.7           0.0.0.0/0           
        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0 
    

    范例: 删除自定义链3个步骤

    #无法直接删除自定义链,删除自定议链和创建的顺序相反
    [root@localhost ~]# iptables -X WEB_CHAIN
    iptables: Too many links.
    
    1)[root@localhost ~]# iptables -F WEB_CHAIN
    [root@localhost ~]# iptables -vnL
    Chain INPUT (policy ACCEPT 6 packets, 428 bytes)
     pkts bytes target     prot opt in     out     source               destination         
      350 23978 WEB_CHAIN  all  --  *      *       172.31.0.0/16        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 4 packets, 464 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    Chain WEB_CHAIN (1 references)
     pkts bytes target     prot opt in     out     source               destination
    
    # 清空默认的表filter
    2)[root@localhost ~]# iptables -F
    3)[root@localhost ~]# iptables -X WEB_CHAIN
    # 查看执行后的效果
    [root@localhost ~]# iptables -vnL
    Chain INPUT (policy ACCEPT 10 packets, 724 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    
    Chain OUTPUT (policy ACCEPT 6 packets, 680 bytes)
     pkts bytes target     prot opt in     out     source               destination
    

    规则优化最佳实践

    1. 安全放行所有入站和出站的状态为ESTABLISHED状态连接,建议放在第一条,效率更高
    2. 谨慎放行入站的新请求
    3. 有特殊目的限制访问功能,要在放行规则之前加以拒绝
    4. 同类规则(访问同一应用,比如:http ),匹配范围小的放在前面,用于特殊处理
    5. 不同类的规则(访问不同应用,一个是http,另一个是mysql ),匹配范围大的放在前面,效率更
    高
    6. 应该将那些可由一条规则能够描述的多个规则合并为一条,减少规则数量,提高检查效率
    7. 设置默认策略,建议白名单(只放行特定连接)
         iptables -P,不建议,容易出现“自杀现象”
         规则的最后定义规则做为默认策略,推荐使用,放在最后一条
    

    iptables保存规则

    以上命令都是临时生效,持久保存规则需要如下操作:

    方法一:

    # 保存规则
    [root@localhost ~]# iptables-save > /home/iptables.ruls
    
    # 执行导入保存的规则
    [root@localhost ~]# iptables-restore < /home/iptables.ruls
    
    写入开机启动配置
    [root@localhost ~]# vim /etc/rc.d/rc.local
    
    iptables-restore < /home/iptables.ruls
    
    # 加执行权限
    [root@localhost ~]# chmod +x /etc/rc.d/rc.local
    

    方法二:(CentOS7,8)

    # 安装
    [root@localhost ~]# yum install iptables-services
    
    添加到配置文件里面
    [root@localhost ~]# iptables-save > /etc/sysconfig/iptables
    
    启动
    [root@localhost ~]# systemctl start iptables
    设置开机启动
    [root@localhost ~]# systemctl enable --now iptables
    
  • 相关阅读:
    VLAN
    Debug出错 Release没问题
    弹出VIEW.非dialog
    [转帖]Android Bitmap内存限制OOM,Out Of Memory
    关于性格内向者的10个误解,献给奋战在一线的程序员
    Android 调用webservice
    Android2.2新特性.APK安装参数installLocation
    数据结构中的基本排序算法总结
    Post Operation for Windows 8 Apps || Windows Phone
    ZipArchive For Windows 8 Apps
  • 原文地址:https://www.cnblogs.com/xuanlv-0413/p/14748291.html
Copyright © 2020-2023  润新知