已复制
全屏展示
复制代码

iptables常用扩展模块使用功能


· 2 min read

iprange

匹配数据包的IP地址范围

# 源地址IP范围限制
iptables -I INPUT -m iprange --src-range 192.168.1.0-192.168.1.254 -j REJECT

# 目的地址IP范围限制
iptables -I INPUT -m iprange --dst-range 192.168.2.0-192.168.2.254 -j REJECT

string

用于匹配报文中的字符串。如果是在某一台服务器中转数据流量时运行iptables:无法控制https的包(因为无法解析https包),可以控制http的包。如果在NGINX的后面运行iptables:https与http都能控制。

# 拒绝报文中包含Traffic-Control字符串的数据包
iptables -I INPUT -p tcp -m string --string "Traffic-Control" --algo bm -j REJECT

# 当有多个条件需要匹配的时候,创建新链来解决
iptables -N secondarystring
iptables -I INPUT -p tcp -m string --string "Host: js.tv.itc.cn" --algo bm -j secondarystring
iptables -I secondarystring -m string --string "GET /kao.js" --algo bm -j DROP
  • 参数
    --algo bm 表示使用bm算法去匹配指定的字符串

time

匹配报文到达的时间

# 设置当前机器在 09:00:00 点到 18:00:00 点不允许访问网站
iptables -I OUTPUT -p tcp --dport 80 -m time --timestart 09:00:00 --timestop 18:00:00 -j REJECT
iptables -I OUTPUT -p tcp --dport 443 -m time --timestart 09:00:00 --timestop 18:00:00 -j REJECT
  • 参数
    --weekdays 6,7 表示星期六和星期天
    --timestart 09:00:00 表示开始时间
    --timestop 18:00:00 表示结束时间
    --monthdays 22,23 表示每月的22号和23号
    --datestart 2020-07-31 表示结束日期
    --datestop 2020-08-23 表示开始日期
    注意:--monthdays--weekdays可以使用 "!" 取反,其他选项不能取反。

connlimit

匹配与服务端的连接数,表示一个客户端IP与服务器的连接数量,这里默认就是针对某一个客户端ip地址的,所有不需要写出客户端的IP地址。

# 一个客户端IP只允许有两个到ssh的连接,超过了2个就不允许连接了
iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT

🔗

文章推荐