前言
玩Linux服务器、搭建网站、部署项目,防火墙是第一道安全防线。很多新手搭建完环境就直接裸机上线,极易被恶意攻击、暴力破解、扫描端口。
CentOS 7及以上版本默认自带 firewalld 动态防火墙,相比传统iptables,操作更简单、支持动态生效、无需重启服务器。今天给大家整理一份零基础可直接套用的Linux防火墙最全配置指南,日常运维、生产环境都能用,建议收藏备用!
一、Linux防火墙基础认知
1、什么是firewalld?
firewalld 是Linux系统动态防火墙管理工具,核心作用:
- 管控服务器进出流量,放行合法端口、拦截恶意访问
- 支持规则动态修改,无需重启服务,实时生效
- 自带区域规则,可区分办公网、公网、内网,安全性更高
2、永久规则 VS 临时规则
- --permanent :永久生效,重启服务器不丢失,必须重载才生效
- 不加参数:临时生效,即时可用,服务器重启后规则全部失效
- 所有永久配置后,必须执行: firewall-cmd --reload 重载生效
二、防火墙基础启停命令(必记)
1、查看防火墙状态
bash
# 简洁查看状态
firewall-cmd --state
# 详细查看运行状态
systemctl status firewalld
2、启动/停止/重启防火墙
bash
# 启动防火墙
systemctl start firewalld
# 停止防火墙
systemctl stop firewalld
# 重启防火墙
systemctl restart firewalld
3、设置开机自启(生产环境必备)
bash
# 开机自动启动(推荐)
systemctl enable firewalld
# 取消开机自启
systemctl disable firewalld
三、核心实操:端口开放与关闭(最常用)
1、永久开放单个端口
格式: --add-port=端口/协议
bash
# 永久开放80端口(网站http)
firewall-cmd --permanent --add-port=80/tcp
# 永久开放443端口(网站https)
firewall-cmd --permanent --add-port=443/tcp
# 永久开放22端口(SSH远程连接)
firewall-cmd --permanent --add-port=22/tcp
# 重载生效
firewall-cmd --reload
2、开放端口范围
bash
# 永久开放20000-30000所有TCP端口
firewall-cmd --permanent --add-port=20000-30000/tcp
firewall-cmd --reload
3、关闭已开放端口
bash
# 永久关闭8080端口
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload
4、查看已放行所有端口
bash
# 查看当前放行端口
firewall-cmd --list-ports
四、服务方式放行(不用记端口,更便捷)
防火墙支持直接放行常用服务,无需手动输入端口,适合新手:
bash
# 永久放行http服务(80端口)
firewall-cmd --permanent --add-service=http
# 永久放行https服务(443端口)
firewall-cmd --permanent --add-service=https
# 重载生效
firewall-cmd --reload
# 查看已放行服务
firewall-cmd --list-services
五、高级配置:限制IP访问(安全加固)
1、禁止指定IP访问服务器
bash
# 禁止192.168.1.100这个恶意IP所有访问
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.100 reject"
firewall-cmd --reload
2、仅允许指定IP访问某个端口
bash
# 只允许192.168.1.50访问3306数据库端口(禁止外网随便连MySQL)
firewall-cmd --permanent --add-rich-rule="rule family=IPv4 source address=192.168.1.50 port protocol=tcp port=3306 accept"
firewall-cmd --reload
3、查看所有高级富规则
bash
firewall-cmd --list-rich-rules
六、常用区域配置(了解即可)
firewalld 默认分多个区域,默认使用 public 公网区域:
bash
# 查看所有可用区域
firewall-cmd --get-zones
# 查看当前默认区域
firewall-cmd --get-default-zone
# 修改默认区域为public
firewall-cmd --set-default-zone=public
七、生产环境安全最佳实践
1、绝不随意关闭防火墙,公网服务器必须保持防火墙开机启动
2、只开放业务必需端口,多余端口一律关闭,不随意开放大范围端口
3、MySQL(3306)、Redis(6379)等数据库端口,禁止对公网开放,仅允许内网IP访问
4、修改默认SSH端口,配合防火墙限制登录IP,防止暴力破解
5、所有配置优先使用 permanent 永久模式,避免重启后规则丢失
八、总结
Linux防火墙是服务器安全的第一道门槛,掌握 firewalld 基础命令,就能轻松搞定端口放行、IP限制、安全防护。
相比于复杂的iptables,firewalld 命令简洁、上手简单,不管是个人建站、测试环境,还是企业生产服务器,都能直接套用以上命令。
建议大家养成习惯:服务器上线先配置防火墙,从源头杜绝网络攻击,运维工作少走弯路!
全部评论