在Linux系统中,防火墙是保障服务器安全的重要屏障,能够有效过滤恶意流量、控制网络访问权限,本文将详细介绍Linux环境下主流防火墙的安装与配置方法,涵盖iptables和firewalld两大工具,帮助用户根据系统版本和需求搭建安全可靠的防护体系。

Linux防火墙概述
Linux防火墙主要工作在网络层和传输层,通过预定义的规则集对进出网络的数据包进行过滤,常见的防火墙工具包括iptables(传统工具)和firewalld(新一代动态管理工具),其中iptables适用于基于Debian/Ubuntu的老版本系统,而firewalld则是CentOS 7及以上版本的默认选择,两者均支持端口管理、IP黑白名单、端口转发等核心功能,但firewalld支持动态规则更新,无需重启服务即可生效。
基于iptables的防火墙配置
安装iptables
在Debian/Ubuntu系统中,可通过以下命令安装:
sudo apt update && sudo apt install iptables -y
在CentOS 6/7系统中,使用:
sudo yum install iptables-services -y
启动并启用iptables服务
sudo systemctl start iptables sudo systemctl enable iptables
基础规则配置
- 查看当前规则:
sudo iptables -L -n -v - 允许已建立的连接:
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
- 允许本地回环:
sudo iptables -A INPUT -i lo -j ACCEPT - 开放指定端口(如SSH的22端口):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 拒绝其他未允许的连接:
sudo iptables -P INPUT DROP
保存规则
Debian/Ubuntu系统需安装iptables-persistent:
sudo apt install iptables-persistent -y sudo netfilter-persistent save
CentOS系统直接使用:

sudo service iptables save
基于firewalld的防火墙配置
安装firewalld
CentOS 7及以上版本默认已安装,若需手动安装:
sudo yum install firewalld -y
Debian/Ubuntu系统可通过PPA安装:
sudo add-apt-repository ppa:headwall/firewalld sudo apt update && sudo apt install firewalld -y
启动并启用firewalld服务
sudo systemctl start firewalld sudo systemctl enable firewalld
区域管理
firewalld通过“区域”划分网络信任级别,默认为public区域,可通过以下命令查看区域:
sudo firewall-cmd --get-active-zones
端口与服务管理
- 开放永久端口(如80端口):
sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --reload
- 开放服务(如SSH):
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
- 查看已开放端口:
sudo firewall-cmd --list-ports
IP地址管理
- 允许特定IP访问:
sudo firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.100 accept" sudo firewall-cmd --reload
- 拒绝IP访问:
sudo firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.50 reject" sudo firewall-cmd --reload
高级安全策略
端口转发
通过iptables实现端口转发(如将80端口转发至8080):
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 sudo iptables-save
firewalld配置端口转发:

sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080 sudo firewall-cmd --reload
防止DDoS攻击
通过iptables限制同一IP的连接数(如每分钟最多10个新连接):
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -m recent --set sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 10 -j DROP
日志记录
开启iptables日志功能,记录被丢弃的数据包:
sudo iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPTABLES_DROP: " --log-level 4 sudo iptables -A INPUT -j DROP
防火墙维护与故障排查
规则管理
- 清空规则(iptables):
sudo iptables -F - 删除规则(iptables):
sudo iptables -D INPUT 1(删除第1条规则) - 重置firewalld规则:
sudo firewall-cmd --reload
常见问题
- SSH连接被拦截:检查是否开放22端口,或临时关闭防火墙测试:
sudo systemctl stop iptables/firewalld - 规则不生效:确保规则已保存(iptables需手动保存,firewalld需reload)
- 日志查看:
sudo tail -f /var/log/messages(iptables日志)或sudo journalctl -u firewalld
Linux防火墙的配置是服务器安全运维的基础工作,用户可根据系统版本选择iptables或firewalld,结合实际需求开放必要端口、限制恶意访问,并通过日志监控异常流量,建议定期审查规则集,及时更新安全策略,确保防火墙持续发挥防护作用,对于生产环境,建议先在测试环境验证规则,避免因配置错误导致服务中断。


















