• iptables 命令


    NAME
           iptables — administration tool for IPv4 packet filtering and NAT
    
    SYNOPSIS
           iptables -ADC 指定链的规则 [-A 添加 -D 删除 -C 修改] 
    iptables - RI 
    iptables -D chain rule num[option] 
    iptables -LFZ 链名 [选项] 
    iptables -[NX] 指定链 
    iptables -P chain target[options] 
    iptables -E old-chain-name new-chain-name

    参数

     -A -append
        在所选择的链末添加一条或更多规则。当源(地址)或者/与 目的(地址)转换 为多于一个(多个)地址时,这条规则会加到所有可能的地址(组合)后面。
     -D -delete
        从所选链中删除一条或更多规则。这条命令可以有两种方法:可以把被删除规则 指定为链中的序号(第一条序号为1),或者指定为要匹配的规则。
     -R -replace
        从选中的链中取代一条规则。如果源(地址)或者/与 目的(地址)被转换为多地 址,该命令会失败。规则序号从1开始。
     -I -insert
        根据给出的规则序号向所选链中插入一条或更多规则。所以,如果规则序号为1, 规则会被插入链的头部。这也是不指定规则序号时的默认方式。
     -L -list
        显示所选链的所有规则。如果没有选择链,所有链将被显示。也可以和z选项一起 使用,这时链会被自动列出和归零。精确输出受其它所给参数影响。
     -F -flush
        清空所选链。这等于把所有规则一个个的删除。
     -Z -zero
        把所有链的包及字节的计数器清空。它可以和 -L配合使用,在清空前察看计数器,请参见前文。
     -N -new-chain
        根据给出的名称建立一个新的用户定义链。这必须保证没有同名的链存在。
     -X -delete-chain
        删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前你必须删 除或者替换与之有关的规则。如果没有给出参数,这条命令将试着删除每个非 内建的链。
     -P -policy
        设置链的默认目标规则。
     -E -rename-chain
        根据用户给出的名字对指定链进行重命名,这仅仅是修饰,对整个表的结构没有影响。 TARGETS参数给出一个合法的目标。只有非用户自定义链可以使用规则,而且内建链和用 户自定义链都不能是规则的目标。

    iptables 的四表五链

       filter: 负责过滤功能,包含了内建的链 INPUT(处理进入的包)、FORWORD(处理通过的包)和OUTPUT(处理本地生成的包)。
       nat: 用于nat功能(端口映射, 地址映射等),由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING (修改准备出去的包)。
       mangle: 用于对特定数据包的修改。
       raw: 优先级最高, 设置raw时一般是为了不再让iptables做数据包的链接跟踪处理, 提高性能。

       默认表是filter表,表的处理优先级: raw > mangle > nat > filter.

       5个链为: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING.

           PREROUTING: 数据包进入路由表之前。
           INPUT: 通过路由表后目的地为本机。
           FORWARDING: 通过路由表后, 目的地不为本机。
           OUTPUT: 由本机产生, 向外转发。
           POSTROUTIONG: 发送到网卡接口之前。

    关于4表5链的对应关系图:

    数据包的完整流向:

    常见设置参数:

      --dport 指定目标TCP/IP端口 如 –dport 80
      --sport 指定源TCP/IP端口 如 –sport 80
      -p tcp 指定协议为tcp
      -p icmp 指定协议为ICMP
      -p udp 指定协议为UDP
      -j DROP 拒绝
      -j ACCEPT 允许
      -j REJECT 拒绝并向发出消息的计算机发一个消息
      -j LOG 在/var/log/messages中登记分组匹配的记录
      -m mac –-mac 绑定MAC地址
      -m limit –-limit 1/s 1/m 设置时间策列
      -s 10.10.0.0或10.10.0.0/16 指定源地址或地址段
      -d 10.10.0.0或10.10.0.0/16 指定目标地址或地址段
      -s ! 10.10.0.0 指定源地址以外的

    示例:

       //开放ssh端口防火墙
       iptables -A INPUT -p tcp --dport 22 -j ACCEPT
       iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
       注:如果在预设设置把OUTPUT设置成DROP策略的话,就需要设置OUTPUT规则,否则无法进行SSH连接。

       //关闭web服务端口
       iptables -A INPUT -p tcp --dport 80 -j drop
       iptables -A INPUT -p tcp -m multiport --dports 80,443 -j drop //配置多个端口

       //流量限制
       iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT   //--limit 100/minute 表示将传入连接限制为100个每分钟,--limit -burst 200 表示仅当连接总数达到200个以后才开始限制连接数。   

       //记录丢弃的网络包
       iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables dropped packets:" //记录eth0接口所丢弃的网络包
       //限制每个IP的并发连接数
       iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT //允许每个客户端同时建立最多3个连接

       //开启icmp服务
       iptables -A INPUT -p icmp -j ACCEPT

       //只允许某台或某个ip段主机进行连接
       iptables -A INPUT -s 192.168.0.1 -p tcp --dport 22 -j ACCEPT //允许ip为192.168.0.1的主机进行连接
       iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT //允许ip段为192.168.0.0的主机进行连接

       配置路由转发
       //改变目的地址
       iptables -t nat -A PREROUTING -i eth0 -p tcp --dst 1.1.1.1 --dport 80 -j DNAT --to-destination 2.2.2.2:80 //把所有通过eth0这个网卡发往地址1.1.1.1的包都转发到 局域网的中2.2.2.2这台机器上
      iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -m string --string "baidu.com" --algo bm -j DNAT --to-destination 1.1.1.1:80 //将匹配到baidu.com    的请求转到局域网的1.1.1.1这台机器上
      //改变源地址
      iptables -t nat -I POSTROUTING 1 -j SNAT -s 192.168.10.0/24 --to-source 192.168.1.10 //将来源于192.168.10.0/24网段内的请求转发到192.168.1.10主机上

      //保存iptables规则
      iptables-save > ~/iptables.rules
      //恢复iptables规则
      iptables-restore < ~/iptables.rules

    赠人玫瑰,手有余香,如果我的文章有幸能够帮到你,麻烦帮忙点下右下角的推荐,谢谢!

    作者: imcati

    出处: https://www.cnblogs.com/imcati/>

    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接

  • 相关阅读:
    1060. Are They Equal (25)
    1063. Set Similarity (25)
    Java基础学习总结(20)——基础语法
    Java基础学习总结(19)——Java环境变量配置
    Java基础学习总结(19)——Java环境变量配置
    Java基础学习总结(18)——网络编程
    Java基础学习总结(18)——网络编程
    Java基础学习总结(17)——线程
    Java基础学习总结(17)——线程
    Java基础学习总结(16)——Java制作证书的工具keytool用法总结
  • 原文地址:https://www.cnblogs.com/imcati/p/11455974.html
Copyright © 2020-2023  润新知