Linux系统如何增强防火墙安全

手册/FAQ (544) 2015-11-28 09:27:37

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 

THE END