iptables filter 表小案例

匹配扩展中,还有需要加 -m 引用模块的显示扩展,默认是隐含扩展,不要使用 -m。

  • 状态检测的包过滤:

-m state –state {NEW,ESTATBLISHED,INVALID,RELATED} 指定检测那种状态

-m multiport 指定多端口号
–sport
–dport
–ports

-m iprange 指定 IP 段
–src-range ip-ip
–dst-range ip-ip

-m connlimit 连接限定
–comlimit-above # 限定大连接个数

-m limit 现在连接速率,也就是限定匹配数据包的个数
–limit 指定速率
–limit-burst # 峰值速率,最大限定

-m string 按字符串限定
–algo bm|kmp 指定算法 bm 或 kmp
–string “STRING” 指定字符串本身


  • 使用 shell 脚本放行 22,80,21 端口
[root@localhost ~]# vi /usr/local/sbin/iptables.sh
#!/bin/bash
ipt="/usr/sbin/iptables"
# 定义一个变量——iptables命令(定义变量时尽量使用绝对路径,避免环境变量的影响)
$ipt -F
# 清空原有规则
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
# 上面三行是定义其默认策略
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# -m是指定检测状态,--state指定数据包状态(配合-m使用),该命令行的目的是使数据处理
通信)更顺畅
$ipt -A INPUT -s 192.168.56.128/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
# 以上三行命令是指定放行的包的类型 

注意: 脚本中指定的 IP 如果和主机 IP 不同时不要在远程端口直接运行该脚本!

  • icmp 协议示例
    [root@localhost ~]#iptables -I INPUT -p icmp –icmp-type 8 -j DROP