Linux防火墙配置新手指南:iptables与

先了解两个常见防火墙工具

Linux下最常用的防火墙工具有两个:firewalldiptables

  • firewalld:RHEL 7 / CentOS 7 之后的默认方案,支持动态规则,操作更简单,适合日常管理。
  • iptables:传统方案,规则静态加载,功能强大但稍复杂。

本文会同时覆盖两种,你根据自己系统的版本来选。
查看当前系统版本:cat /etc/redhat-release

动手前的准备工作

无论用哪种工具,都要先保证服务安装并处于运行状态。
以下操作建议用 root 用户或具备 sudo 权限的普通用户执行。

检查并安装 firewalld

rpm -q firewalld        # 查看是否安装
systemctl status firewalld  # 查看运行状态

如果未安装,执行:

yum install firewalld -y   # CentOS/RHEL
systemctl enable --now firewalld  # 开机自启并立即启动

检查并安装 iptables-services

若你坚持用 iptables,可能需要先停用 firewalld:

systemctl stop firewalld
systemctl disable firewalld
yum install iptables-services -y
systemctl enable --now iptables
避坑:不要同时运行 firewalld 和 iptables,规则会冲突。

firewalld 实操:开放常用端口

firewalld 使用 zone(区域)管理规则,默认区域是 public
常用命令如下:

查看当前区域和规则

firewall-cmd --get-default-zone
firewall-cmd --list-all

开放 SSH(22 端口)

SSH 默认已经放行,但如果你改了端口,需要手动添加:

firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload

--permanent 表示永久生效,不加的话重启后会丢失。--reload 重新加载规则。

开放 HTTP(80)和 HTTPS(443)

推荐使用服务名:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

移除规则

firewall-cmd --permanent --remove-service=http
firewall-cmd --reload

常用端口和服务sshhttphttpsmysql(3306/tcp)等。

iptables 快速入门

如果你坚持用 iptables,以下命令可以完成类似功能:

开放 SSH 端口

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

开放 80 和 443

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

拒绝其余入站流量(重要)

iptables -P INPUT DROP

这个策略模式会丢弃所有未显式允许的输入包,一定要先放行 SSH 再执行,否则你会立马断开连接。

保存规则

service iptables save    # 保存到 /etc/sysconfig/iptables

避坑:iptables 规则重启后消失,必须执行保存操作。

避坑:这些错误你可能也会犯

  1. SSH 端口没放行就改了默认端口 → 先通过 VNC 或控制台恢复规则,或者在放行新端口前保留原 SSH 连接。
  2. firewalld 和 iptables 同时运行 → 规则冲突,防火墙失效。只能用其中一个。
  3. --reload 后老规则还在 → 检查是否所有规则都加了 --permanent,临时规则 reload 后会丢失。
  4. iptables -P INPUT DROP 后失联 → 如果只允许 22 端口,但 SSH 监听在其他端口,就会被拒绝。用 VNC 或带外管理修复。
  5. 忘记保存规则 → iptables 需要 service iptables save,firewalld 需要 --permanent

验证防火墙是否生效

查看当前开放端口

firewalld

firewall-cmd --list-ports
firewall-cmd --list-services

iptables

iptables -L -n -v

从外部测试

用另一台机器或手机连接你放行的端口:

telnet 你的服务器IP 80
curl http://你的服务器IP

如果连接成功,说明防火墙配置正确。
如果连接超时或拒绝,先检查规则是否真的放行了该端口。

如果仍然不通,请检查云服务商的安全组或 VPC 防火墙(比如阿里云安全组、腾讯云防火墙),它们独立于系统防火墙,需要额外放行。

结尾

Linux防火墙配置并不复杂,抓住核心——明确要放行的服务,拒绝其余流量——就能保证安全。
建议先按本文步骤在测试机上完整操作一遍,理解每条命令的含义之后再应用到生产环境。
遇到异常时,优先回看避坑和高频问题部分,往往能找到线索。

分享到:
上一篇
零基础搞懂Linux用户权限:从创建到设置完整教程
下一篇
Linux SELinux配置从零到上手:改模式、排错与验证
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意