主流Linux防火墙工具
Linux发行版通常预装以下防火墙工具之一:

- iptables:传统工具,基于规则链(Chain)和表(Table)管理网络流量。
- firewalld:CentOS/RHEL 7+默认工具,支持动态更新规则和区域(Zone)管理。
- ufw:Ubuntu/Debian的简化工具,提供用户友好的命令行接口。
查看防火墙状态与规则
检查防火墙是否启用
- iptables:
sudo systemctl status iptables # 检查服务状态 sudo iptables -L -n -v # 列出所有规则(-n禁用DNS解析,-v显示详细信息)
- firewalld:
sudo systemctl status firewalld sudo firewall-cmd --state # 输出"running"表示启用
- ufw:
sudo ufw status verbose # 显示详细状态和规则
查看当前规则
- iptables:
sudo iptables -S # 以规则格式输出 sudo iptables -L -n --line-numbers # 显示规则编号,便于删除
- firewalld:
sudo firewall-cmd --list-all # 列出所有区域的规则 sudo firewall-cmd --list-ports # 仅显示放行的端口
- ufw:
sudo ufw status numbered # 显示带编号的规则列表
查看特定端口或服务
- iptables:
sudo iptables -L -n | grep 80 # 检查80端口(HTTP)是否放行
- firewalld:
sudo firewall-cmd --query-port=80/tcp # 检查端口是否开放
- ufw:
sudo ufw status | grep 80
防火墙规则管理示例
| 操作 | iptables命令 | firewalld命令 | ufw命令 |
|---|---|---|---|
| 放行TCP 80端口 | sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
sudo firewall-cmd --add-port=80/tcp --permanent |
sudo ufw allow 80/tcp |
| 拒绝特定IP | sudo iptables -A INPUT -s 192.168.1.1 -j DROP |
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.1" reject' |
sudo ufw deny from 192.168.1.1 |
| 保存规则(永久生效) | sudo iptables-save > /etc/iptables.rules |
sudo firewall-cmd --reload |
sudo ufw reload |
注意事项
- 规则优先级:iptables按顺序匹配规则,firewalld基于区域优先级。
- 日志记录:可通过
-j LOG(iptables)或--log(ufw)记录被拦截的流量。 - 备份规则:修改前备份现有规则,避免配置错误导致服务中断。
相关问答FAQs
Q1:如何临时关闭防火墙进行测试?
- iptables:
sudo iptables -F # 清空所有规则(谨慎使用)
- firewalld:
sudo systemctl stop firewalld
- ufw:
sudo ufw disable
Q2:防火墙规则未生效怎么办?
- 检查规则是否已保存(如firewalld需
--permanent并reload)。 - 确认规则顺序是否正确(iptables中DROP规则可能覆盖ACCEPT)。
- 查看系统日志(如
/var/log/messages或journalctl -u firewalld)排查错误。

