iptables防火墙设置-语法

作者: _narcissus | 来源:发表于2019-03-24 11:00 被阅读6次

    今天心情不好,果然,放个歌的链接都有问题

    相信看了前面的还是不懂怎么写,其实前面的只是以讲故事的方式了解了一下表和链,以及简单的添加和删除


    man page中规则的写法已经写的很详细了

    这里总结一下:

    iptables -t 使用什么表 -增加/删除/修改 那条链 (数字) -p 协议 -s 目标地址 -j 丢弃/接收

    当然了,也不是每条规则都需要写这么多参数的.只要能达到目标即可,比如说:我想阻止所有的tcp请求(默认是filter表可以不写,-I默认写入到规则列表最上面,后面数字也不必写,已经阻止所有tcp请求了,ip地址也不需要写)

      sudo iptables -I INPUT -p tcp -j DROP
    

    上面这条规则写完后,你会惊喜的发现你已经打不开百度网页了.为什么呢?我只阻止了tcp请求啊,跟服务器给我发消息有什么关系呢?tcp协议是有三次握手的,网页传输正好使用了tcp协议,我们给服务器发送一个请求后,服务器会给我们回一个请求,可是我们阻止了所有的tcp请求,自然无法完成握手,也就无法打开网页了.打不开网页多可怕,所以把上面的规则删掉

      sudo iptables -D INPUT 1
    

    下面正式写语法:

    • 新增规则

      iptables [-t table] -A chain rule-specification 
      iptables [-t table] -I chain rulenum rule-specification
      iptables [-t table] -N chain
      
      • rule-specification表示指定规则,比如说指定ip,指定协议,指定动作这些
        rule-specification =[matches...] [target]
        • match = -m matchname [per-match-options]
          举个例子:match为-p tcp 或者 -s 192.168.0.12
        • target = -j targetname [per-target-options]
          举个例子:target为-j DROP 或者 -j ACCEPT
      • [-t table]表示可选,可以写,可以不写(如果是filter表就不需要写,其它表是必须写的)
      • -A参数与-I参数区别:A表示append/add,新增或在已有规则后面添加.I表示insert,插入到指定位置,可以将规则写入到表中的任意位置,这个位置就是后面的rulenum决定的.
      • -N表示添加用户自定义的链
      • targetname表示对规则的处理,有accept接收/drop丢弃/return暂存
    • 删除规则

      iptables [-t table] -D chain rulenum
      iptables [-t table] -F
      iptables [-t table] -X
      
      • -D删除rulenum所指的规则
      • -F删除指定的整个表的规则
      • -X删除用户自定义的表
    • 查看规则

      iptables [-t table] -C chain rule-specification
      iptables [-t table] -L [chain [rulenum]]
      iptables [-t table] -S [chain [rulenum]]
      

      -Ccheck检查是否存在规则,存在不给提示,不存在给出提示
      -L-S区别:L显示的信息全面,S显示简略信息
      常用的查看规则(显示排序数字): sudo iptables -nvL --line-numbers

    • 修改规则

      iptables [-t table] -R chain rulenum rule-specification
      iptables [-t table] -E old-chain-name new-chain-name
      iptables [-t table] -P chain target
      
      • -Rreplace替代rulenum指定的规则

      • -Erename修改用户自定义链的名字

      • -Ppolicy修改iptables默认链的规则,target只有drop和accept这两种情况
        举个例子:
        我们的个人电脑一般是不会用来做路由的吧,路由转发这种事是服务器和路由器做的,所以forward这条链对我们的作用几乎为零,那我们就可以将链的规则修改为丢弃

        sudo iptables -P FORWARD -j DROP
        
    • 清除所有链/指定链/指定规则的数据包统计

      iptables [-t table] -Z [chain [rulenum]]
      
    清除数据之前 清除数据之后

    over over语法已经完了
    想想和mysql的增删改查好像没多大区别吧,其实语法写起来简单,难的是rule-specification的写法,就比如说可以ping别的主机且不允许被ping,就需要了解icmp-type的相关知识了.

    相关文章

      网友评论

        本文标题:iptables防火墙设置-语法

        本文链接:https://www.haomeiwen.com/subject/fepevqtx.html