2.iptables规则管理

1.什么是iptables规则

  • 数据包的过滤是基于规则,规则是由“匹配条件”+“动作”组成。我们对规则的操作是增删改查
  • 操作规则的语法:iptables [-t] [表名] 选项 [链名] [规则] [动作]
  • 操作规则之前我们需要考量如下问题:
    1. 要实现什么功能 (判断添加到那张表上)
    2. 报文流经的路线 (判断添加到那个链上)
iptables选项 含义 示例
-t 对指定的表进行操作,table必须是raw,nat,filter,mangle中的一个。默认是filter表 iptables -t filter
-A, --append chain rule-specification 在指定链 chain 的末尾插入指定的规则,也就是说,这条规则会被放到最后,最后才会被执行。规则是由后面的匹配来指定 iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
-I, --insert chain [rulenum] rule-specification 在链 chain 中的指定位置插入一条或多条规则。如果指定的规则号是1,则在链的头部插入。这也是默认的情况,如果没有指定规则号 iptables -I INPUT -s 192.168.1.0/24 -j ACCEPT
-p 指定要匹配的数据包协议类型 iptables -t filter -I INPUT -p tcp
-s, --source address[/mask][,...] 把指定的一个或者一组地址作为源地址,按此规则进行过滤。当后面没有mask 时,address 是一个地址,比如:192.168.1.1;当 mask 指定时,可以表示一组范围内的地址,比如:192.168.1.0/255.255.255.0 iptables -I INPUT -s 192.168.1.0/24 -j DROP
-d, --destination address[/mask][,...] 地址格式同上,但这里指定地址为目的地址,按此进行过滤 iptables -I
-i, --in-interface name 指定数据包的来自来自网络接口,比如最常见的 eth0 。注意:它只对 INPUT,FORWARD,PREROUTING 这三个链起作用。如果没有指定此选项, 说明可以来自任何一个网络接口。同前面类似,"!" 表示取反 iptables -
-o, --out-interface name 指定数据包出去的网络接口。只对 OUTPUT,FORWARD,POSTROUTING 三个链起作用 iptables
-L, --list [chain] 列出链 chain 上面的所有规则,如果没有指定链,列出表上所有链的所有规则 iptables -t filter -nL
-D, --delete chain rule-specification -D, --delete chain rulenum 在指定的链 chain 中删除一个或多个指定规则 iptables -D INPUT -s 192.168.1.0/24 -j ACCEPT
-R num:Replays替换/修改第几条规则 iptables -t filter -R INPUT 1 -p icmp -j DROP
-P, --policy chain target 为指定的链 chain 设置策略 target。注意,只有内置的链才允许有策略,用户自定义的是不允许的 iptables -t filter -P INPUT DROP
-F, --flush [chain] 清空指定链 chain 上面的所有规则。如果没有指定链,清空该表上所有链的所有规则。 iptables -t filter -F
-Z, --zero [chain] 把指定链,或者表中的所有链上的所有计数器清零 iptables -t filter -Z
-N, --new-chain chain 用指定的名字创建一个新的链 iptables
-X, --delete-chain [chain] 删除指定的链,这个链必须没有被其它任何规则引用,而且这条上必须没有任何规则。如果没有指定链名,则会删除该表中所有非内置的链。 iptables -X Rules_name
-E, --rename-chain old-chain new-chain 用指定的新名字去重命名指定的链。这并不会对链内部照成任何影响。 iptables -E Old_Rules New_Rules
-j, --jump target <指定目标> 即满足某条件时该执行什么样的动作 target 可以是内置的目标,比如 ACCEPT,也可以是用户自定义的链 iptables -I INPUT -s 192.168.1.0/24 -j DROP
-h 显示帮助信息 iptables -h
2.添加规则
2.1.查看防火墙规则
iptables -nL -v --line-numbers

-n 不解析
-L 列出所有规则
-v 详细的包的数量及字节数
--line-numbers 列出规则序号

2.2.如何添加规则: 禁止10.0.0.10 ping 10.0.0.200
-I:插入Insert

[root@route ~]# iptables -t filter -I INPUT -p icmp -j REJECT
[root@route ~]# iptables -L -n

2.3.如何修改规则:
-R:修改 需要指定规则的编号

[root@route ~]# iptables -t filter -R  INPUT 1 -p icmp -j DROP

2.4.如何清空计数器:

[root@route ~]# iptables -t filter  -Z
[root@rstx-43 ~]# iptables -t filter -nL -v
Chain INPUT (policy ACCEPT 36 packets, 2545 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:1194

pkts  包的数量
bytes 字节数

2.5.备份规则;

[root@route ~]# iptables-save > /etc/iptables.rule

2.6.清空规则:

[root@route ~]# iptables -t filter -F					# 只操作filter
[root@route ~]# iptables -t nat -F			                # 清空nat表

2.7.恢复规则:

[root@route ~]# iptables-restore < /etc/iptables.rule

2.8.拒绝进入防火墙的所有ICMP协议数据包

iptables -I INPUT -p icmp -j REJECT

2.9.允许防火墙转发除ICMP协议以外的所有数据包

iptables -A FORWARD -p ! icmp -j ACCEPT
说明:使用“!”可以将条件取反。

2.10.拒绝转发来自192.168.1.10主机的数据,允许转发来自192.168.0.0/24网段的数据

iptables -A FORWARD -s 192.168.1.11 -j REJECT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

说明:注意要把拒绝的放在前面不然就不起作用了啊。

2.11.丢弃从外网接口(eth1)进入防火墙本机的源地址为私网地址的数据包

iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

2.12.封堵网段(192.168.1.0/24),两小时后解封。

iptables -I INPUT -s 10.20.30.0/24 -j DROP
iptables -I FORWARD -s 10.20.30.0/24 -j DROP
at now 2 hours at> iptables -D INPUT 1 at> iptables -D FORWARD 1

说明:这个策略咱们借助crond计划任务来完成,就再好不过了。

[1] Stopped at now 2 hours

2.13.只允许管理员从202.13.0.0/16网段使用SSH远程登录防火墙主机。

iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

说明:这个用法比较适合对设备进行远程管理时使用,比如位于分公司中的SQL服务器需要被总公司的管理员管理时。

2.14.允许本机开放从TCP端口20-1024提供的应用服务。

iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT

2.15.允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。

iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT

2.16.禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机

iptables -I INPUT -p icmp --icmp-type Echo-Request -j DROP
iptables -I INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT
iptables -I INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT

2.17.禁止转发来自MAC地址为00:0C:29:27:55:3F的和主机的数据包

iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3F -j DROP

说明:iptables中使用“-m 模块关键字”的形式调用显示匹配。咱们这里用“-m mac –mac-source”来表示数据包的源MAC地址。

2.18.允许防火墙本机对外开放TCP端口20、21、25、110以及被动模式FTP端口1250-1280

iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT

说明:这里用“-m multiport –dport”来指定目的端口及范围

2.19.禁止转发源IP地址为192.168.1.20-192.168.1.99的TCP数据包。

iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP

说明:此处用“-m –iprange –src-range”指定IP范围。

2.20.禁止转发与正常TCP连接无关的非—syn请求数据包。

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

说明:“-m state”表示数据包的连接状态,“NEW”表示与任何连接无关的,新的嘛!

2.21.拒绝访问防火墙的新数据包,但允许响应连接或与已有连接相关的数据包

iptables -A INPUT -p tcp -m state --state NEW -j DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

说明:“ESTABLISHED”表示已经响应请求或者已经建立连接的数据包,“RELATED”表示与已建立的连接有相关性的,比如FTP数据连接等。

2.22.只开放本机的web服务(80)、FTP(20、21、20450-20480),放行外部主机发住服务器其它端口的应答数据包,将其他入站数据包均予以丢弃处理。

iptables -I INPUT -p tcp -m multiport --dport 20,21,80 -j ACCEPT
iptables -I INPUT -p tcp --dport 20450:20480 -j ACCEPT
iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
posted @ 2022-10-05 22:54  老夫聊发少年狂88  阅读(140)  评论(0编辑  收藏  举报