centos/RHEL 7+默认使用firewalld,旧系统或debian/ubuntu常用iptables;firewalld通过区域管理策略,支持动态配置,可使用firewall-cmd添加端口、服务及切换区域,需–permanent和–reload生效;iptables则通过链式规则精细控制流量,需手动保存规则,配置时应确保备用访问、优先使用服务名、定期检查规则,并结合fail2ban等工具增强安全。

linux防火墙的配置主要依赖于iptables或更现代的firewalld工具,具体使用哪种取决于你的系统发行版和版本。CentOS/RHEL 7及以上默认使用firewalld,而一些旧系统或Debian/Ubuntu系列仍常用iptables。下面介绍两种主流方式的配置方法与实用技巧。
使用firewalld配置防火墙
firewalld是动态管理防火墙规则的服务,支持区域(zone)概念,便于按网络环境切换策略。
- 启动并启用firewalld:
sudo systemctl start firewalld
sudo systemctl enable firewalld - 查看当前状态:
sudo firewall-cmd –state - 开放指定端口(如80/tcp):
sudo firewall-cmd –add-port=80/tcp –permanent
配置后需重载生效:
sudo firewall-cmd –reload - 使用服务名开放常见服务:
sudo firewall-cmd –add-service=http –permanent - 设置默认区域或更改接口所属区域:
sudo firewall-cmd –set-default-zone=public
sudo firewall-cmd –zone=internal –change-Interface=eth0
使用iptables配置防火墙
对于未使用firewalld的系统,直接操作iptables可精细控制流量规则。
- 查看现有规则:
sudo iptables -L -n -v - 允许本地回环通信:
sudo iptables -A input -i lo -j ACCEPT - 允许已建立的连接通过:
sudo iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT - 开放特定端口(如ssh 22):
sudo iptables -A INPUT -p tcp –dport 22 -j ACCEPT - 拒绝其他所有入站连接:
sudo iptables -P INPUT DROP - 保存规则(不同系统命令不同):
在CentOS上:service iptables save
在Ubuntu上建议使用iptables-persistent:
sudo netfilter-persistent save
配置技巧与注意事项
- 修改防火墙前确保有备用访问方式(如控制台),避免被锁在系统外。
- 优先使用服务名而非端口号,提升可读性(例如用http代替80)。
- 定期检查生效规则,确认无冲突或冗余条目。
- 生产环境中建议结合fail2ban等工具防止暴力破解。
- 多网卡服务器应按接口划分安全区域,实现精细化控制。
基本上就这些,根据实际使用的工具选择对应方法即可。关键是理解规则顺序和默认策略的作用,避免误配导致服务不可用。