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

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)。
- 定期检查生效规则,确认无冲突或冗余条目。
- 生产环境中建议结合 f ail2ban 等工具防止暴力破解。
- 多网卡服务器应按接口划分安全区域,实现精细化控制。
基本上就这些,根据实际使用的工具选择对应方法即可。关键是理解规则顺序和默认策略的作用,避免误配导致服务不可用。