防火墙规则修改

在 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检查规则是否正确生效。

posted @ 2025-06-24 16:28  youemby  阅读(85)  评论(0)    收藏  举报