Linux防火墙主要用于监测、过滤、记录网络之间的数据传输,以下是一些常见的设置方法:
一、iptables(传统防火墙工具)
- 基础概念
- iptables是基于规则的网络防火墙,工作在Linux内核的网络层和传输层。它通过一系列的规则链来决定对网络数据包的处理方式,如接受、拒绝或转发。
- 优势
- 灵活性高,可以根据源IP、目的IP、端口等多种条件制定精确的规则。
- 开源且免费,广泛适用于各种Linux发行版。
- 类型(规则链)
- INPUT链:处理进入本机的数据包。
- OUTPUT链:处理从本机发出的数据包。
- FORWARD链:处理通过本机转发的数据包。
- 应用场景示例
- 如果只想允许本机特定端口(如SSH端口22)接受外部连接,可以在INPUT链添加规则:
- 如果只想允许本机特定端口(如SSH端口22)接受外部连接,可以在INPUT链添加规则:
- 第一条规则允许TCP协议目的端口为22的数据包进入,第二条规则拒绝其他所有进入本机的数据包。
- 常见问题及解决方法
- 规则顺序问题:iptables规则是按顺序匹配的。如果先设置了拒绝所有规则,后面的允许规则将永远不会被匹配到。解决方法是调整规则顺序,将允许规则放在拒绝规则之前。
- 规则持久化:默认情况下,iptables规则在系统重启后会丢失。可以通过将规则保存到配置文件(如
/etc/iptables/rules.v4
)并在系统启动时自动加载来解决。例如,在CentOS系统中,可以使用service iptables save
命令保存规则,编辑/etc/rc.local
文件添加iptables -F; iptables -A INPUT...
(这里的...
是之前定义好的规则)来在启动时加载规则。
二、firewalld(较新的防火墙管理工具)
- 基础概念
- firewalld是一个动态管理防火墙的工具,它提供了更友好的用户界面(命令行界面也相对简洁),并且支持区域的概念。不同的区域可以有不同的安全策略,例如公共区域、内部区域等。
- 优势
- 动态加载规则,不需要重启防火墙即可应用新规则。
- 区域化管理使得策略设置更符合实际网络拓扑结构。
- 类型(区域)
- public区域:默认区域,适用于公开的网络接口,对入站连接限制较多。
- internal区域:适用于内部网络连接,相对public区域对入站连接限制较少。
- 应用场景示例
- 在public区域开放HTTP服务(端口80):
- 在public区域开放HTTP服务(端口80):
- 第一条命令永久地在public区域添加允许HTTP服务的规则,第二条命令重新加载firewalld配置使规则生效。
- 常见问题及解决方法
- 服务名称识别问题:如果添加规则时指定的服务名称不被识别,可能是服务未在firewalld的服务定义中。可以查看
/usr/lib/firewalld/services/
目录下的服务定义文件,或者使用firewall - cmd --get - services
查看可用的服务名称列表。 - 区域切换问题:如果错误地将网络接口分配到某个区域,可能导致网络连接异常。可以使用
firewall - cmd --zone = internal --change - interface = eth0
(假设eth0是要切换的接口)将接口切换到正确的区域。