数码知识屋
霓虹主题四 · 更硬核的阅读氛围

防火墙规则设置教程:手把手教你保护服务器安全

发布时间:2026-01-22 15:01:27 阅读:186 次

为什么需要设置防火墙规则

你有没有遇到过半夜收到服务器被爆破登录的告警?或者发现某个服务莫名其妙地响应变慢?这些问题,很可能是因为你的服务器“大门敞开”,没做好访问控制。防火墙就是那道门卫,决定谁可以进、谁必须拦下。

比如你开了一个网站,只需要让外界访问80和443端口,但SSH管理端口(默认22)如果也对所有人开放,黑客就会不断尝试暴力破解密码。这时候,正确的防火墙规则就能帮你挡住这些骚扰。

常用防火墙工具介绍

Linux服务器上最常见的防火墙工具是iptablesfirewalld。Ubuntu用户更习惯用ufw,简单直观。下面以CentOS 7+常用的firewalld为例,讲怎么设置规则。

启用并启动firewalld

新装系统可能默认没开防火墙,先确认状态:

sudo systemctl status firewalld

如果没运行,启动并设为开机自启:

sudo systemctl start firewalld
sudo systemctl enable firewalld

查看当前规则

想知道现在哪些端口开着,执行:

sudo firewall-cmd --list-all

输出会显示当前区域(通常是public)允许的服务和端口。比如看到ssh、http、https,说明这几个服务是放行的。

添加允许的服务或端口

你想让网站能被访问,就得放行HTTP和HTTPS:

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

改完记得重载配置:

sudo firewall-cmd --reload

如果你运行的是自定义端口的应用,比如Node.js服务跑在3000端口,那就直接加端口:

sudo firewall-cmd --permanent --add-port=3000/tcp

限制SSH访问,提高安全

别让全世界都能连你的SSH。假设你公司固定IP是203.0.113.10,只允许这个IP访问SSH端口:

sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10" service name="ssh" accept'

这样其他IP连22端口会被直接拒绝,减少日志里的暴力破解记录。

屏蔽恶意IP

发现某个IP一直扫描你的端口,可以直接拉黑:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'

把192.168.1.100换成你要封禁的IP。也可以用drop,比reject更彻底,不回复任何信息。

删除规则

加错了规则怎么办?比如想删掉3000端口的放行:

sudo firewall-cmd --permanent --remove-port=3000/tcp
sudo firewall-cmd --reload

注意一定要加上--permanent,否则重启后规则还在。

实际应用场景举例

小李负责公司的测试服务器,开发团队要用MySQL(3306)、Redis(6379),但他不想全网开放。他的做法是:

  • 只允许办公室公网IP访问3306
  • Redis只绑定内网IP,外加防火墙限制,双重保险
  • 临时开放6379给某位远程开发人员调试,用完立刻删规则

这样做既满足需求,又不会把数据库暴露在公网。

一些实用建议

改防火墙规则时,别把自己踢出去。尤其是远程操作,务必确保至少有一条通路能连进去。比如修改SSH端口前,先测试新端口是否生效,再关旧端口。

定期检查日志,看看/var/log/audit/audit.log或journalctl里有没有异常连接尝试。配合fail2ban这类工具,能自动封禁多次失败的IP。

规则不是越多越好,越复杂越容易出错。保持简洁清晰,只开必要的端口,是最稳妥的做法。