首页 > 代码库 > linux防火墙--iptables(二)

linux防火墙--iptables(二)

五、filter过滤和转发

a、打开内核的IP转发

    # sysctl -w net.ipv4.ip_forward=1

    或 # echo 1 > /proc/sys/net/ipv4/ip_forward


b、基本匹配条件

·通用匹配

    → 可直接使用,不依赖于其他条件或扩展

    → 包括网络协议、IP地址、网络接口等条件

·隐含匹配

    → 要求以特定的协议匹配作为前提

    → 包括端口、TCP标记、ICMP类型等条件


类别选项用法
通用匹配协议匹配-p 协议名
地址匹配-s 源地址         -d 目标地址
接口匹配-i 收数据网卡     -o发数据网卡
隐含匹配端口匹配--sport 源端口    --dsport 目标端口
ICMP类型匹配--icmp-type  ICMP类型
TCP标记匹配--tcp-flags检查哪些位哪些位被设置(!取反)


c、封禁IP地址、网段(这里加 -p icmp 做测试)

·主机防护,针对入站访问的源地址(源地址:发起访问的地址)

    # ping 192.168.1.201

    PING 192.168.1.201 (192.168.1.201) 56(84) bytes of data.

    64 bytes from 192.168.1.201: icmp_seq=1 ttl=64 time=1.98 ms

    64 bytes from 192.168.1.201: icmp_seq=2 ttl=64 time=0.326 ms

    # iptables -I INPUT 1 -p icmp -s 192.168.1.202 -j DROP

    # ping 192.168.1.201(ping不通,用ctrl+c取消)

    PING 192.168.1.201 (192.168.1.201) 56(84) bytes of data.

    --- 192.168.1.201 ping statistics ---

    3 packets transmitted, 0 received, 100% packet loss, time 2510ms


·网络防护,针对转发访问的源地址(源地址:并非真正发起访问的地址)

    # iptables -F

    # ping 192.168.1.201

    PING 192.168.1.201 (192.168.1.201) 56(84) bytes of data.

    64 bytes from 192.168.1.201: icmp_seq=1 ttl=64 time=2.16 ms

    64 bytes from 192.168.1.201: icmp_seq=2 ttl=64 time=0.250 ms

    # iptables -I FORWARD -p icmp -s 192.168.1.202 -j DROP

    # ping 192.168.1.201

    PING 192.168.1.201 (192.168.1.201) 56(84) bytes of data.

    64 bytes from 192.168.1.201: icmp_seq=1 ttl=64 time=0.408 ms

    64 bytes from 192.168.1.201: icmp_seq=2 ttl=64 time=0.341 ms

    

d、保护指定的网络服务

·限制对指定服务端口的访问

    # iptables -A INPUT -s 192.168.1.202/24 -p tcp --dport 22 -j ACCEPT

    # iptables -A INPUT -p tcp --dport 22 -j DROP

    # iptables -A INPUT ! -s 192.168.1.202/24 -p tcp --dport 20:21 -j DROP


e、禁ping相关策略处理

·允许本机ping其他主机,但是,禁止其他主机ping本机

   # iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT

   # iptables -A INPUT -p icmp ! --icmp-type echo-request -j ACCEPT


   # iptables -A INPUT ! -s 127.0.0.1 -p icmp --icmp-type echo-request -j DROP

   # iptables -A OUTPUT ! -s 127.0.0.1 -p icmp ! --icmp-type echo-request -j DROP


f、TCP标记细分控制

·禁止入站的SYN请求包(第一次握手)

    → 检查4个标记位,其中SYN位被设置

·放行入站访问的其他数据包

    # iptables -A INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK,FIN  SYN -j DROP

    # iptables -A INPUT -i eth1 -p tcp ! --syn -j ACCEPT


六、iptables状态匹配

a、扩展匹配的用法

·基本格式

    → -m 扩展模块 --扩展条件 条件值

    example:-m mac --mac 00:0D:29:24:EC:19

b、常见的扩展匹配

类别选项用法
显示匹配
状态匹配-m state --state 状态值
MAC地址匹配-m mac --mac-source MAC地址
多端口匹配
-m multiport --sport 源端口列表
-m multiport --dport 目标端口列表
IP范围匹配
-m iprange --src-range IP1-IP2
-m iprange --dst-range IP1-IP2


c、iptables状态跟踪

·网络连接的五种状态

    → NEW,请求建立连接的包、完全陌生的包

    → ESTABLISHED,将要或已经建立连接的包

    → RELATED,与已知某个连接相关联的包

    → INVALID,无对应连接,以及连接无效的包

    → UNTRACKED,未跟踪状态的包


d、丢弃陌生的TCP响应

·比如,反射、反弹式攻击

    # iptables -A INPUT -m state --state NEW -p tcp ! --syn -j DROP

    # iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP







linux防火墙--iptables(一)     http://nmore.blog.51cto.com/9008175/1437118


本文出自 “ywcto” 博客,请务必保留此出处http://nmore.blog.51cto.com/9008175/1437304