Netfilter作为Linux内置的主机防火墙,它可以使用iptables命令处理IPv4协议,也可以使用ip6tables命令处理IPv6协议。在iptables之前,Linux 2.2中使用ipchains来配置防火墙,Linux 2.0中则使用ipfwadm,它基于BSD的ipfw命令实现。
以下命令在RHEL 6.x上执行通过,但也适用于其他Linux发行版。
1.显示防火墙的状态
以root权限运行下面的命令:
1. # iptables -L -n -v
参数说明:
- -L:列出规则。
- -v:显示详细信息。此选项会显示接口名称、规则选项和TOS掩码,以及封包和字节计数。
- -n:以数字形式显示IP地址和端口,不使用DNS解析。
如果希望输出的结果中显示行号,可以运行:
1. # iptables -L -n -v --line-nmubers
这样,就可以按照行号在防火墙中添加、删除规则。
要显示输入或输出链规则,可以运行:
1. # iptables -L INPUT -n -v
2. # iptables -L OUTPUT -n -v --line-numbers
2.停止、开启和重启防火墙
如果你使用的是RHEL/Fedora/CentOS系统,可以运行:
1. # service iptables stop
2. # service iptables start
3. # service iptables restart
我们也可以使用iptables命令停止防火墙并删除所有规则:
1. # iptables -F
2. # iptables -X
3. # iptables -t nat -F
4. # iptables -t nat -X
5. # iptables -t mangle -F
6. # iptables -t mangle -X
7. # iptables -P INPUT ACCEPT
8. # iptables -P OUTPUT ACCEPT
9. # iptables -P FORWARD ACCEPT
参数说明:
- -F:删除所有的规则
- -X:删除链
- -t table_name:匹配表(称为nat或mangle)
- -P:设置默认策略(如DROP、REJECT或ACCEPT)
3.删除防火墙规则
以带行号的形式显示已有的防火墙规则,请运行:
1. # iptables -L INPUT -n --line-numbers
2. # iptables -L OUTPUT -n --line-numbers
3. # iptables -L OUTPUT -n --line-numbers | less
4. # iptables -L OUTPUT -n --line-numbers | grep 202.54.1.1
下面我们使用行号删除规则:
1. # iptables -D INPUT 4
将IP地址202.54.1.1从规则中删除:
1. # iptables -D INPUT -s 202.54.1.1 -j DROP
参数说明:
- -D:从选择的链中删除一条或多条规则
4.插入防火墙规则
首先运行下面的命令:
1. # iptables -L INPUT -n --line-numbers
得到运行结果:
1. Chain INPUT (policy DROP)
2. num target prot opt source destination
3. 1 DROP all -- 202.54.1.1 0.0.0.0/0
4. 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
在行1和行2之间插入规则:
1. # iptables -I INPUT 2 -s 202.54.1.2 -j DROP
查看更新后的规则,会发现插入成功,下面是示例:
1. Chain INPUT (policy DROP)
2. Num target prot opt source destination
3. 1 DROP all -- 202.54.1.1 0.0.0.0/0
4. 2 DROP all -- 202.54.1.2 0.0.0.0/0
5. 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
5.保存防火墙规则
在RHEL/Fedora/CentOS Linux下,可以使用下面的命令保存防火墙规则:
1. # service iptables save
在其它Linux发行版(如Ubuntu)上,可以使用iptables-save命令保存防火墙规则:
1. # iptables-save > /root/my.active.firewall.rules
2. # cat /root/my.active.firewall.rules
6.重新加载防火墙规则
我们可以使用iptables-restore命令重新加载使用iptables-save命令保存的防火墙规则:
1. # iptables-restore < /root/my.active.firewall.rules
我们还可以利用这种特性来快速部署防火墙规则。
7.设置默认防火墙策略
我们首先来配置一个防火墙策略,它默认丢弃所有的网络数据包:
1. # iptables -P INPUT DROP
2. # iptables -P OUTPUT DROP
3. # iptables -P FORWARD DROP
4. # iptables -L -v -n
5. #连接失败,因为防火墙丢弃所有的网络数据包
6. # ping cyberciti.biz
7. # wget http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.2-rc5.tar.bz2
在此基础上,我们只关闭入站连接:
1. # iptables -P INPUT DROP
2. # iptables -P FORWARD DROP
3. # iptables -P OUTPUT ACCEPT
4. # iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
5. # iptables -L -v -n
6. #ping和wget可以正常工作
7. # ping cyberciti.biz
8. # wget http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.2-rc5.tar.bz2