Linux防火墙设置——iptables

防火墙用于监控往来流量,并根据用户定义的规则来过滤数据包以保证安全。iptables是Linux下设置防火墙规则的常用工具,它可以让你设置、维护以及查看防火墙的规则表。你可以定义多个表,每个表可以包含多个链。每个链都是一系列规则,而每个规则定义了如何处理匹配的数据包。对于匹配的数据包要为其指定“目标”。目标可以是另一条链,也可以是如下特殊值(动作)之一:

  • ACCEPT:意味着数据包允许通过。
  • DROP:意味着数据包不允许通过。
  • RETURN:意味着跳过当前链并且回到调用链的下一条规则。

下面我们来探究一下iptables中的过滤表。过滤表有3条链:

  • INPUT:用来控制传入的数据包,你可以针对某个端口、协议或源ip地址来中断或允许连接。
  • FORWARD :用来过滤传入此地但将要被转发至别处的数据包。
  • OUTPUT:用来过滤传出的数据包。

实践出真知,下面来简单感受一下iptables的使用。

1. 查看当前iptables状态

 

通过这个命令可以查看当前iptables配置状态。-L选项用来列出所有规则,-v选项用来显示详细信息。输出示例如下图所示。可以看到3条链都被设置为默认的ACCEPT策略。当前每条链还没有规则。接下来我们会修改INPUT链来过滤进入的流量。

 

 

 2. 定义规则

定义规则意味着把它追加到列表(链)的末尾。iptables命令完整的选项格式长得像这样。我们不必所有的选项。

 

这里 -A表示追加。interface是想要在其上过滤的网络接口。protocol是你想过滤的数据包所用的网络协议,你也可以指定端口号。

首先,启用本机内部的流量通信。这样应用和数据库之间的所有通信都能正常进行。

 

输出示例:

 

然后,我们启用HTTP、SSH和SSL端口连接。

想要HTTP(80端口),HTTPS(443端口),SSH(22端口)连接正常工作,输入以下命令来实现。我们用-p选项指定协议,-dport(destination port)选项指定相应的端口。

 

现在,这些指定端口上的TCP连接都能被接受。

接下来,基于源地址过滤数据包。

如果你想基于ip源地址或者地址范围来接受或拒绝数据包,那么你可以通过-s选项来指定。比如,接受来自192.168.1.3的数据。

 

你可以丢弃来自这一地址的数据包,只要将ACCEPT改为DROP:

 

如果对于来自某一地址范围的数据包你都想丢弃,则需要使用iprange模块,并通过--src-range指定地址范围。

 

最后,丢弃所有其他流量通信。这是十分重要的步骤,因为这样可以阻止其他端口的未授权访问。以下命令丢弃了除上述端口外其他所有的流入数据。

 

定义完以上规则后,再来看一看iptables中INPUT状态:

3. 删除规则

如果你想移除所有规则,可以使用flush命令:

 

 

如果你想删除指定规则,可以使用-D选项。在这之前,列出所有规则,使用下面的命令可以显示规则对应的行号:

 

输出如下图:    

 

最后通过行号删除对应的规则:

 

4. 设置的持久化

目前为止我们对防火墙设置的规则都还只是保存在内存中。这意味这一旦重启变动都会消失。在Debian/Ubuntu系统中,可以使用一下命令保持设置:

 

该命令将当前规则保存到系统配置文件,它会在重启时重设规则表。每次设置规则后都应该运行这个命令。

猜你喜欢

转载自www.cnblogs.com/smarxdray/p/11933864.html
今日推荐