在Linux系统中,防火墙是保护服务器网络安全的核心组件,通过配置合理的防火墙规则,可以限制不必要的网络访问,拦截恶意请求,避免系统端口被非法扫描或攻击。不同的Linux发行版默认使用的防火墙工具存在差异,常见的包括iptables、firewalld和ufw,用户需要根据自己使用的系统选择对应的工具进行规则配置。

一、iptables防火墙规则设置
iptables是Linux系统中经典的防火墙工具,基于内核的netfilter框架实现,很多老版本Linux发行版默认使用它作为防火墙管理工具。它的规则配置相对底层,灵活性较高,但学习成本也相对更高。
1. 基础规则操作
首先查看当前已有的iptables规则,可以使用以下命令:
# 查看当前filter表的规则,显示规则编号和详细信息 iptables -L -n -v --line-numbers
如果需要开放80端口(HTTP服务常用端口),允许外部访问,可以添加如下规则:
# 在INPUT链中添加规则,允许tcp协议访问80端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT
如果要限制特定IP访问22端口(SSH服务常用端口),可以添加如下规则:
# 允许192.168.1.100访问22端口 iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT # 拒绝其他所有IP访问22端口 iptables -A INPUT -p tcp --dport 22 -j DROP
2. 规则持久化
iptables的规则默认是临时的,系统重启后会丢失,需要将规则保存到文件中实现持久化。在CentOS系统中可以使用以下命令保存:
# 保存iptables规则到配置文件 service iptables save
在Debian或Ubuntu系统中,需要先安装iptables-persistent工具:
# 安装持久化工具 apt-get install iptables-persistent # 保存当前规则 netfilter-persistent save
二、firewalld防火墙规则设置
firewalld是Red Hat系列发行版(如CentOS 7及以上、Fedora)默认使用的防火墙管理工具,它支持动态更新规则,不需要重启服务就能生效,还引入了区域(zone)的概念,方便用户根据不同网络环境配置不同的规则策略。
1. 基础规则操作
首先查看firewalld的运行状态:
# 查看firewalld服务状态 systemctl status firewalld
开放80端口的命令如下:
# 永久开放80端口,--permanent表示规则永久生效,重启后不丢失 firewall-cmd --permanent --add-port=80/tcp # 重新加载规则,让配置生效 firewall-cmd --reload
如果要限制特定IP访问服务,可以使用富规则(rich rule):
# 允许192.168.1.100访问22端口 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept' # 重新加载规则 firewall-cmd --reload
2. 区域管理
firewalld的默认区域是public,用户也可以查看所有可用区域:
# 查看所有可用区域 firewall-cmd --get-zones
如果需要将网卡绑定到指定区域,可以使用以下命令:
# 将eth0网卡绑定到trusted区域 firewall-cmd --permanent --zone=trusted --change-interface=eth0 firewall-cmd --reload
三、ufw防火墙规则设置
ufw(Uncomplicated Firewall)是Ubuntu系统默认推荐的防火墙工具,它的设计目标是简化防火墙配置流程,操作命令更加简洁,适合新手用户使用。
1. 基础规则操作
首先启用ufw防火墙:
# 启用ufw,启用后会自动配置基础规则 ufw enable
开放80端口的命令如下:
# 允许80端口的tcp访问 ufw allow 80/tcp
限制特定IP访问22端口的命令如下:
# 允许192.168.1.100访问22端口 ufw allow from 192.168.1.100 to any port 22
2. 规则查看与删除
查看当前ufw规则可以使用以下命令:
# 查看ufw状态和规则列表 ufw status verbose
如果需要删除某条规则,可以先查看规则编号,再执行删除操作:
# 查看带编号的规则列表 ufw status numbered # 删除编号为1的规则 ufw delete 1
四、防火墙规则配置注意事项
- 配置规则前建议先备份原有规则,避免配置错误导致无法远程连接服务器。
- 修改SSH服务对应的端口规则时,一定要先确保当前会话的规则不会被误删,否则可能导致服务器失联。
- 规则配置完成后建议测试访问是否正常,确认规则生效且不影响正常业务。
- 如果是云服务器,还需要注意云服务商的安全组规则,需要和系统内的防火墙规则配合配置。
不同防火墙工具的适用场景不同,iptables适合需要精细化控制规则的场景,firewalld适合Red Hat系列发行版用户,ufw适合Ubuntu新手用户,用户可以根据自己的需求选择合适的工具进行配置。