Linux防火墙配置详解:零基础保姆级教程

前置准备


在开始配置 Linux 防火墙之前,请确保你拥有:



  • 一台 Linux 服务器(CentOS 7+/Ubuntu 18.04+)

  • SSH 或终端访问权限(root 或 sudo 用户)

  • 知道需要放行或拦截的服务端口(例如 Web 服务需要 80/443,SSH 默认 22)

  • 系统防火墙状态:先确认当前是否已安装。


大多数 VPS 默认已安装 firewalld(红帽系)或 ufw(Debian 系),本文以 firewalld 为主演示,同时附带 iptables 的通用方法。

分步操作


1. 查看并管理防火墙服务


# CentOS/RHEL
systemctl status firewalld # 检查是否运行
sudo systemctl start firewalld # 启动防火墙
sudo systemctl enable firewalld # 设置开机自启

Ubuntu(使用 ufw 或者 firewalld)

sudo ufw status verbose # 查看状态
sudo ufw enable # 启用防火墙


2. 开放常用端口(以 firewalld 为例)


临时开放(立即生效,重启后失效):


sudo firewall-cmd --add-port=80/tcp
sudo firewall-cmd --add-port=443/tcp

永久开放(推荐):


sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload # 重载使永久规则生效

允许服务名称(更简单,如 http,https 等):


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

3. 关闭/限制端口(以 firewalld 为例)


sudo firewall-cmd --permanent --remove-port=3306/tcp   # 移除 MySQL 端口
sudo firewall-cmd --reload

4. 使用 iptables(通用方法)


如果系统没有 firewalld,可以直接操作 iptables:


# 查看当前规则
sudo iptables -L -n

放行 80 端口

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

保存规则(不同发行版命令不同)

CentOS 6:service iptables save

Ubuntu:iptables-save > /etc/iptables/rules.v4

注意:iptables 规则重启后丢失,必须持久化。

避坑指南



  • 忘记 reload:使用 --permanent 添加规则后,必须执行 firewall-cmd --reload 才能生效。

  • SSH 端口被误封:永远不要在没有备用连接的情况下关闭 22 端口(或你的 SSH 端口)。建议先添加规则放行 SSH,再测试。

  • firewalld 与 iptables 冲突:不能同时运行两个防火墙管理工具,停用其中一个。

  • icmp 被拦截导致 ping 不通:如果不需要,可放行 icmp:firewall-cmd --permanent --add-protocol=icmpfirewall-cmd --reload

  • Ubuntu 默认无 firewalld:安装即可 sudo apt install firewalld,但推荐使用 ufw,更简单。


高频问题解答


Q1:防火墙规则添加后没有生效怎么办?

A:检查是否使用了 --permanent 并执行了 --reload;或者检查规则顺序,iptables 默认第一条匹配后不再处理后续。


Q2:如何临时关闭防火墙进行排查?


sudo systemctl stop firewalld      # 临时关闭 firewalld

或者 iptables -F 清空所有规则(危险)

测试完记得重启:sudo systemctl start firewalld


Q3:如何查看当前开放的端口?


firewall-cmd --list-ports

或者

ufw status numbered


Q4:配置防火墙后网站访问不了,怎么排查?

A:确认端口已开放;检查云服务商安全组(如阿里云、腾讯云)是否也有独立防火墙,两者必须同时放行。


效果验证


配置完成后,按以下步骤验证防火墙是否按预期工作:



  1. 检查防火墙状态(运行中):


   systemctl is-active firewalld   # 输出 active 或 inactive


  1. 查看已开放的端口/服务


   firewall-cmd --list-all        # 包含 ports、services、interfaces 等


  1. 本地测试端口连通性(在服务器自身):


   curl -I http://localhost:80

telnet localhost 80



  1. 远程测试(从另一台机器):


   nc -vz 你的服务器IP 80

如果返回 Connected to 表示端口已放行;

若超时或被拒绝,说明防火墙或安全组有问题。



  1. 验证规则优先级:尝试访问一个未开放的端口(如 8080),应被拒绝。


根据上述方法确认防火墙配置生效后,你的服务器安全性已得到提升。

如果你正在处理 Linux 防火墙配置,建议先按本文步骤完整执行,再根据自己的环境做微调;

遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
WP商城WooCommerce搭建:从零开始:在宝塔面板搭建
下一篇
零基础Docker部署小老虾AI:从环境准备到效果验证
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意