防火墙规则修改
在 CentOS 系统中,你可以使用firewalld来配置防火墙规则。以下是临时或永久开放 Nginx 的 80 端口和 SSH 的 22 端口的方法,以及规则修改和删除的方式:
关闭selinux和防火墙
#临时关闭
setenforce 0 &>>/dev/null
#修改配置文件 永久关闭
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config;
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭网络管理nmtui(networkmanager)如果网络中存在虚拟网络建议关闭
systemctl stop NetworkManager
systemctl disable NetworkManager
一、临时开放端口(重启后失效)
# 开放80端口(Nginx)
sudo firewall-cmd --add-port=80/tcp
# 开放22端口(SSH)
sudo firewall-cmd --add-port=22/tcp
二、永久开放端口(重启后保留)
# 开放80端口(Nginx)
sudo firewall-cmd --permanent --add-port=80/tcp
# 开放22端口(SSH)
sudo firewall-cmd --permanent --add-port=22/tcp
# 重载防火墙使配置生效
sudo firewall-cmd --reload
三、查看防火墙规则
# 查看当前活动规则(临时+永久)
sudo firewall-cmd --list-all
# 仅查看永久规则
sudo firewall-cmd --permanent --list-all
四、修改规则
修改端口(例如将 SSH 从 22 改为 2222):
# 先删除旧规则
sudo firewall-cmd --permanent --remove-port=22/tcp
# 添加新规则
sudo firewall-cmd --permanent --add-port=2222/tcp
# 重载防火墙
sudo firewall-cmd --reload
修改服务(例如将 HTTP 改为 HTTPS):
# 删除HTTP服务
sudo firewall-cmd --permanent --remove-service=http
# 添加HTTPS服务
sudo firewall-cmd --permanent --add-service=https
# 重载防火墙
sudo firewall-cmd --reload
五、删除规则
# 删除80端口规则(永久)
sudo firewall-cmd --permanent --remove-port=80/tcp
# 删除22端口规则(永久)
sudo firewall-cmd --permanent --remove-port=22/tcp
# 重载防火墙使配置生效
sudo firewall-cmd --reload
六、其他常用命令
开放服务而非端口(推荐):
# 开放HTTP服务(自动配置80端口)
sudo firewall-cmd --permanent --add-service=http
# 开放SSH服务(自动配置22端口)
sudo firewall-cmd --permanent --add-service=ssh
# 重载防火墙
sudo firewall-cmd --reload
查看预定义服务列表:
sudo firewall-cmd --get-services
查看端口占用情况:
sudo lsof -i :80
sudo lsof -i :22
七、使用iptables管理防火墙
[root@node1 ~]# iptables -P INPUT ACCEPT
[root@node1 ~]# iptables -P FORWARD ACCEPT
[root@node1 ~]# iptables -F
[root@node1 ~]# iptables -L -n
[root@node2 ~]# iptables -P INPUT ACCEPT
[root@node2 ~]# iptables -P FORWARD ACCEPT
[root@node2 ~]# iptables -F
[root@node2 ~]# iptables -L -n
注意事项
临时 vs 永久:不带--permanent的命令仅临时生效,重启后丢失;带--permanent的命令需执行firewall-cmd --reload才能生效。
安全性:生产环境建议限制 SSH 访问源 IP,例如:
sudo firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="192.168.1.0/24"
port protocol="tcp" port="22" accept'
配置完成后,建议通过firewall-cmd --list-all检查规则是否正确生效。

浙公网安备 33010602011771号