iptables一些练习

iptables 一些小练习

可以参考之前的一起食用 https://www.cnblogs.com/lovesKey/p/10909633.html

  1. 允许来自192.168.0.0/16网段的地址来访问我的192.168.1.7的sshd服务(22端口).

    1. 定义进来的:

      iptables -t filter -A INPUT -s 192.168.0.0/16 -d 192.168.1.7 -p tcp --dport 22 -j ACCEPT

    2. 定义出去的:

      iptables -t filter -A OUTPUT -s 192.168.1.7 -d 192.168.0.0/16 -p tcp --dport 22 -j ACCEPT

    3. 将默认策略都改成DROP:

      iptables -P INPUT DROP
      iptables -P OUTPUT DROP
      iptables -P FORWARD DROP
    4. 状态检测

      这是一种现实扩展(意味着我们要用-m 显示加载模块),用于检测回话之间的连接关系,我们可以实现会话功能的扩展

      什么是状态检测?

      对于tcp协议来说,它是一个有连接的协议,需要三次握手,第一次握手我们称之为NEW连接,而从第二次握手之后,ack都为1,这是正常的数据传输,tcp第二次第三次握手称为 已建立的连接ESTABLISHED,如:SYN=1 ACK=1 RST=1 这种我们无法识别,称为 无法识别的 INVALID

      在如比较特殊的,ftp协议 21是控制端口,20是数据端口.在主动模式下是这样的. 这样21和20端口就是有关系的,我们称为 RELATED

      这样我们就有了四种状态了.

      NEW

      ESTABLISHED

      RELATED

      INVALID

      2.1 练习题

      ​ 默认进来的拒绝,出去的允许,进来的只允许ESTABLISHED进来,出去只允许ESTABLISHED出去,默认规则都是用拒绝

      • 查看之前的规则位于第几行.[这里是因为上一个练习的原因才使用替换的,请注意. 默认你可以增加或插入不用改写的]

        iptables -L -n --line-number

      • 改写INPUT

        • iptables -R INPUT 2 -s 192.168.0.0/16 -d 192.168.1.7 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
        • iptables -R OUTPUT 1 -m state --state ESTABLISHED -j ACCEPT

    5. 允许自己ping别人,别人不能ping我们.

      1. icmp 协议 进来的 request 8(ping),出去的 response 0(响应) . 我需要标记为8出去,标记为0进来. 其中 8 可以用 echo-request 0 可以用echo-reply

        • iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
        • iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

        小扩展:对于127.0.0.1比较特殊,我们需要明确定义它

        iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

        iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

    6. SNAT 源地址转换

      ​ 将所有192.168.0.0网段ip经过的时候全部转换成223.223.223.223 这个假设出来的外网ip:

      iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j SNAT --to-source 223.223.223.223

      1. 如果外网地址不确定,如拨号连接的每次都会变动的ip可以使用 MASQUERADE(动态地址伪装)
        1. iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE

    地址伪装并不适用于所有的地方。

    1. DNAT 目标地址转换

      1. 数据流向是由外向内的,外面是客户端,里面是服务器端通过目标地址转换key让外卖的ip通过我们对外的外网ip来访问我们服务器不同的服务器.
        1. iptables -t nat -A PREROUTING -d 223.223.223.223 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.7

      目标地址转换一定要在路由之前来进行转换,所以要在 PREROUTING

猜你喜欢

转载自www.cnblogs.com/lovesKey/p/11403272.html