Linux 防火墙配置详解

Linux 防火墙配置详解

服务器安全第一关就是防火墙,配置错了就远程连不上了,这篇讲常用配置。

1. firewalld(CentOS7 默认)

查看状态:

# 查看防火墙状态
firewall-cmd --state

# 查看开放的端口
firewall-cmd --list-ports

# 查看开放的服务
firewall-cmd --list-services

开放端口:

# 开放 80 端口
firewall-cmd --permanent --add-port=80/tcp

# 开放 443 端口
firewall-cmd --permanent --add-port=443/tcp

# 开放多个端口范围
firewall-cmd --permanent --add-port=8000-9000/tcp

# 重载生效
firewall-cmd --reload

关闭端口:

# 关闭 80 端口
firewall-cmd --permanent --remove-port=80/tcp

# 重载
firewall-cmd --reload

开放服务:

# 开放 nginx 服务
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

# 重载
firewall-cmd --reload

2. iptables(老系统常用)

查看规则:

iptables -L -n

开放端口:

# 开放 22 端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 开放 80 端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 保存规则
service iptables save

3. 常用安全配置

只允许指定 IP 访问 SSH:

# 只允许 192.168.1.100 访问 22 端口
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port='22' accept"

# 拒绝其他所有 IP
firewall-cmd --permanent --remove-service=ssh

firewall-cmd --reload

4. 常用端口说明

端口 服务
22 SSH 远程连接
80 HTTP 网站
443 HTTPS 网站
3306 MySQL 数据库
6379 Redis 缓存
8080 应用服务

5. 常见问题

1)SSH 连不上了:

  • 检查防火墙是不是把 22 端口关了
  • 用控制台登录服务器重新开放

2)网站打不开:

  • 检查 80/443 端口开了没
  • 重载防火墙生效

3)数据库连不上:

  • 3306 端口别对公网开放
  • 只允许本地或指定 IP 访问

总结

防火墙配置记住三点:

  • 先开 22 端口,不然自己都连不上
  • 网站开 80 和 443
  • 数据库别对外网开放

安全第一,别图省事直接关防火墙。


emer 发布于  2026-10-7 07:16 

CentOS7 firewalld开放80、443端口永久生效命令

CentOS 7 默认使用 firewalld 作为防火墙管理工具。很多新手搭建网站后发现外网访问不了,90% 都是因为 80、443 端口没开放。下面是完整的操作步骤,照抄就能用。

1. 先确认防火墙状态

systemctl status firewalld

如果显示 active (running) 说明防火墙正在运行,需要继续下面的操作。如果是 inactive 那就是防火墙没开,问题不在这里。

2. 开放 80 端口(HTTP)

firewall-cmd --zone=public --add-port=80/tcp --permanent

参数说明:

  • --zone=public:作用域为公共区域
  • --add-port=80/tcp:开放 80 端口,TCP 协议
  • --permanent:永久生效,不加这个重启服务器就失效了

3. 开放 443 端口(HTTPS)

firewall-cmd --zone=public --add-port=443/tcp --permanent

4. 一次性开放多个端口

如果需要同时开放多个端口,可以一条命令搞定:

firewall-cmd --zone=public --add-port=80/tcp --add-port=443/tcp --permanent

5. 重载防火墙使配置生效

⚠️ 重点:开放端口后必须重载,否则不生效!

firewall-cmd --reload

6. 查看已开放的端口

确认一下端口有没有真正开放成功:

firewall-cmd --list-ports

正常会输出类似:

80/tcp 443/tcp

7. 常用其他端口开放命令

SSH 端口(默认22,建议改成别的):

firewall-cmd --zone=public --add-port=22/tcp --permanent

MySQL 端口(如果需要远程连接数据库):

firewall-cmd --zone=public --add-port=3306/tcp --permanent

Redis 端口:

firewall-cmd --zone=public --add-port=6379/tcp --permanent

8. 移除/关闭已开放的端口

如果某个端口不需要了,想关掉:

firewall-cmd --zone=public --remove-port=8080/tcp --permanent
firewall-cmd --reload

常见坑

  1. 加了 --permanent 还是不生效?
    忘记 firewall-cmd --reload 了。永久配置写入后必须重载才会加载到运行时。

  2. 端口开放了还是访问不了?
    检查云服务商的安全组(阿里云/腾讯云/华为云都有这个东西),防火墙和安全组是两层,都要开。

  3. firewalld 命令找不到?
    CentOS 7 最小化安装可能没装,执行 yum install firewalld -y 安装。

  4. 临时开放端口(重启就失效)
    去掉 --permanent 参数就是临时开放,重启或 reload 后自动关闭。


遇到服务器、Nginx、MySQL 报错,可以加微信远程协助排查问题。


emer 发布于  2026-10-4 19:22 
'); })();