首页 > 代码库 > iptables基本操作
iptables基本操作
iptables实际上是Linux内置模块netfilter的管理程序,netfilter才是真正意义上起到防火墙作用的内核模块,并且工作在内核空间,而管理程序iptables则工作在用户空间。作为用户无法直接操作内核模块,因此需要通过iptables去编写防火墙规则。
在生产环境中,大多数都使用硬件防火墙,较少使用Linux服务器作为网关设备。我们就以iptables作为“主机型防火墙”(即主要对本机进行保护的防火墙)来了解其编写规则。
iptables采用了“表”和“链”的分层结构,如下图所示:
由图可知,iptables主要包含了四表五链,每张表可以理解为一个容器,每张表中有不同的链,而每条链中又包含了若干的规则,而这些规则正是实现防火墙的策略。
基本格式:iptables [-t 表名] 管理选项 [链名] [匹配条件] -j [动作]
管理选项:
-A:在指定链的末尾添加一条新的规则。
-D:删除指定链中的某条规则,可以指定规序号或具体内容
-I:在指定链中插入一条新的规则,未指定序号时默认作为第一条规则。
-L:列出指定链中所有规则。
-P:设定默认规则。
-F:清空指定链中的所有规则,未指定具体链,则清空表中所有链。
-n:使用数字形式显示输出结果。
-v:查看规则时显示详细信息。
--line-numbers:查看规则列表时,同时显示在规则中的序号。
动作:
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包。
匹配条件:
匹配条件具有很大的灵活性,常见的有以下几种:
-s:源地址匹配
-d:目标地址匹配
-p:协议匹配
--sport:源端口匹配
--dport:目标端口匹配
示例:
1 设置默认规则:
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
2 开放80和22号端口:
iptables -I INPUT -d 本机IP -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -d 本机IP -p tcp --dport 22 -j ACCEPT
3 拒绝IP为192.168.1.0/24网段的数据包进入本机:
iptables -I INPUT -s 192.168.1.0/24 -j DROP
4 查看防火墙规则:
iptables -L -n --line-numbers
Chain INPUT (policy DROP)
num target prot opt source destination
1 DROP all -- 192.168.154.156 0.0.0.0/0
2 ACCEPT tcp -- 0.0.0.0/0 192.168.154.160 tcp dpt:8080
3 ACCEPT tcp -- 0.0.0.0/0 192.168.154.160 tcp dpt:80
4 ACCEPT tcp -- 192.168.154.161 0.0.0.0/0 tcp dpt:873
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
7 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
9 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
10 DROP all -- 192.168.154.156 0.0.0.0/0
11 DROP all -- 192.168.154.156 0.0.0.0/0
12 DROP all -- 192.168.154.156 0.0.0.0/0
13 DROP all -- 192.168.154.156 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
5 保存防火墙规则:
service iptables save
把防火墙规则保存到文件中:
iptables-save > a.txt
从文件中恢复防火墙规则:
iptables-restore < a.txt
备注:通常情况下,如果前端有硬件防火墙,则关闭内网所有的iptables;如果服务器有公网IP,直接面向公网,则设置INPUT链的默认规则为DROP,并且开放必要的端口,如Web服务器的80端口。OUTPUT链的默认规则可以设置为ACCEPT。
iptables基本操作