Linux 防火墙命令 🛡️ 本指南详细介绍了在 Ubuntu/Debian 和 RedHat/CentOS 系统上配置和管理防火墙的命令,确保
Linux 防火墙命令 🛡️
本指南详细介绍了在 Ubuntu/Debian 和 RedHat/CentOS 系统上配置和管理防火墙的命令,确保服务器安全的同时保持必要的服务可访问。
📑 目录导航
🐧 一、Ubuntu / Debian 系统 (UFW)
1. 系统更新与 UFW 安装
1
2
3
4
5
6
|
# 更新软件包列表
sudo apt update
# 安装 UFW (Uncomplicated Firewall)
sudo apt install ufw -y
# 📦 安装简易防火墙工具
|
2. 基本防火墙配置
1
2
3
4
5
6
7
8
9
10
11
|
# 允许 SSH 连接(重要!先配置再启用)
sudo ufw allow 22/tcp
# 🔐 如果 SSH 使用其他端口,替换 22 为实际端口
# 允许 1Panel 控制面板端口
sudo ufw allow 8090/tcp
# 🖥️ 替换 8090 为您的 1Panel 实际端口
# 启用 UFW 防火墙
sudo ufw enable
# 🚀 启用防火墙功能
|
3. 防火墙管理命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# 查看防火墙状态和规则
sudo ufw status
# 📋 显示当前防火墙规则
# 重新加载防火墙配置
sudo ufw reload
# 🔄 应用配置更改
# 禁用防火墙
sudo ufw disable
# 🛑 临时关闭防火墙
# 完全禁用防火墙开机自启
sudo systemctl disable ufw
# ⚠️ 禁止防火墙开机自动启动
|
4. 高级规则管理
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 允许特定端口
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 3306/tcp # MySQL
# 允许特定IP访问
sudo ufw allow from 192.168.1.100
# 删除规则
sudo ufw delete allow 8090/tcp
# 拒绝连接
sudo ufw deny 23/tcp # 拒绝Telnet
|
5. 应用配置示例
1
2
3
4
5
6
|
# 配置基本的Web服务器防火墙
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 3306/tcp # MySQL (如果在本机)
sudo ufw enable
|
🐂 二、RedHat / CentOS 系统 (FirewallD)
1. 系统更新与 FirewallD 安装
1
2
3
4
5
6
|
# 更新系统软件包
sudo yum update -y
# 安装 FirewallD
sudo yum install firewalld -y
# 📦 安装防火墙守护进程
|
2. 防火墙服务管理
1
2
3
4
5
6
7
8
|
# 启动 FirewallD 服务
sudo systemctl start firewalld
# 设置开机自启
sudo systemctl enable firewalld
# 查看服务状态
sudo systemctl status firewalld
|
3. 端口配置
1
2
3
4
5
6
7
8
9
10
11
|
# 允许 SSH 连接(重要!)
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
# 🔐 替换 22 为您的 SSH 端口
# 允许 1Panel 端口
sudo firewall-cmd --zone=public --add-port=8090/tcp --permanent
# 🖥️ 替换 8090 为实际端口
# 重新加载防火墙规则
sudo firewall-cmd --reload
# 🔄 使更改生效
|
4. 防火墙管理命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 查看所有规则
sudo firewall-cmd --list-all
# 📋 显示完整防火墙配置
# 查看开放端口
sudo firewall-cmd --list-ports
# 立即停止防火墙
sudo systemctl stop firewalld
# 🛑 临时关闭防火墙
# 禁用开机自启
sudo systemctl disable firewalld
# ⚠️ 禁止防火墙自动启动
|
5. 高级配置
1
2
3
4
5
6
7
8
9
|
# 添加服务(而不仅仅是端口)
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
# 限制特定IP访问
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept' --permanent
# 移除规则
sudo firewall-cmd --zone=public --remove-port=8090/tcp --permanent
|
6. 区域管理
1
2
3
4
5
6
7
8
|
# 查看所有可用区域
sudo firewall-cmd --get-zones
# 查看默认区域
sudo firewall-cmd --get-default-zone
# 更改默认区域
sudo firewall-cmd --set-default-zone=internal
|
🔄 三、常用服务端口参考
Web 服务相关
1
2
3
4
5
6
7
|
# HTTP 和 HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 或者使用 FirewallD
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
|
数据库服务
1
2
3
4
5
6
7
8
9
10
11
|
# MySQL
sudo ufw allow 3306/tcp
# PostgreSQL
sudo ufw allow 5432/tcp
# Redis
sudo ufw allow 6379/tcp
# MongoDB
sudo ufw allow 27017/tcp
|
其他常见服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# FTP
sudo ufw allow 21/tcp
# DNS
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
# SMTP
sudo ufw allow 25/tcp
# IMAP/POP3
sudo ufw allow 143/tcp # IMAP
sudo ufw allow 993/tcp # IMAPS
sudo ufw allow 110/tcp # POP3
sudo ufw allow 995/tcp # POP3S
|
开发相关端口
1
2
3
4
5
6
7
8
9
10
11
12
|
# Node.js 开发
sudo ufw allow 3000/tcp
# React/Vue 开发
sudo ufw allow 8080/tcp
# Django/Flask
sudo ufw allow 8000/tcp
# Docker
sudo ufw allow 2375/tcp # Docker API
sudo ufw allow 2376/tcp # Docker TLS
|
⚠️ 四、重要安全建议
1. 远程连接前的准备
1
2
3
4
5
6
|
# 在启用防火墙前,务必先允许SSH!
# 否则可能会被锁定在服务器外
# 对于生产服务器,建议使用 fail2ban 增强安全
sudo apt install fail2ban # Ubuntu/Debian
sudo yum install fail2ban # CentOS/RHEL
|
2. 最小权限原则
1
2
3
4
5
6
7
|
# 只开放必要的端口
# 定期审查防火墙规则
sudo ufw status numbered # 查看带编号的规则
sudo ufw delete [编号] # 删除不需要的规则
# FirewallD 查看详细规则
sudo firewall-cmd --list-all --zone=public
|
3. 备份防火墙配置
1
2
3
4
5
6
7
|
# Ubuntu/Debian
sudo cp /etc/ufw/user.rules /etc/ufw/user.rules.backup
sudo cp /etc/ufw/before.rules /etc/ufw/before.rules.backup
# CentOS/RHEL
sudo firewall-cmd --runtime-to-permanent
sudo cp /etc/firewalld/zones/public.xml /etc/firewalld/zones/public.xml.backup
|
4. 定期安全审计
1
2
3
4
5
6
7
8
|
# 检查不必要的开放端口
sudo ufw status verbose
# 查看防火墙日志
sudo tail -n 50 /var/log/ufw.log
# 检查异常连接尝试
sudo grep -i "denied" /var/log/ufw.log
|
🔍 五、故障排除命令
1. 检查端口状态
1
2
3
4
5
6
7
8
|
# 查看端口监听状态
sudo netstat -tulnp
# 或者使用 ss 命令
sudo ss -tulnp
# 检查特定端口
sudo netstat -tulnp | grep :80
|
2. 测试连接
1
2
3
4
5
6
7
8
|
# 从本地测试端口连通性
telnet your-server-ip 22
# 或者使用 nc
nc -zv your-server-ip 8090
# 使用 curl 测试 HTTP 服务
curl -I http://your-server-ip:80
|
3. 查看日志
1
2
3
4
5
6
|
# 查看防火墙日志
sudo tail -f /var/log/ufw.log # Ubuntu/Debian
sudo journalctl -u firewalld -f # CentOS/RHEL
# 查看系统日志中的防火墙相关消息
sudo dmesg | grep -i firewall
|
4. 重置防火墙配置
1
2
3
4
5
6
|
# UFW 重置到默认状态
sudo ufw reset
# FirewallD 重置配置
sudo firewall-cmd --reset-to-defaults
sudo systemctl restart firewalld
|
💡 六、实用技巧
1. 批量开放端口范围
1
2
3
4
5
|
# UFW
sudo ufw allow 8000:8010/tcp
# FirewallD
sudo firewall-cmd --add-port=8000-8010/tcp --permanent
|
2. 限制访问频率
1
2
3
4
5
|
# UFW 速率限制(防止暴力破解)
sudo ufw limit ssh
# FirewallD 使用 rich rules
sudo firewall-cmd --add-rich-rule='rule service name="ssh" limit value="5/m" accept' --permanent
|
3. 创建自定义配置文件
1
2
3
4
5
6
7
8
|
# 备份当前配置
sudo ufw export backup.rules
# 导入配置
sudo ufw import backup.rules
# FirewallD 导出配置
sudo firewall-cmd --list-all --permanent > firewall-backup.xml
|
4. 使用 IP 集管理多个 IP
1
2
3
4
5
|
# 创建 IP 集(FirewallD)
sudo firewall-cmd --permanent --new-ipset=trusted --type=hash:ip
sudo firewall-cmd --permanent --ipset=trusted --add-entry=192.168.1.100
sudo firewall-cmd --permanent --ipset=trusted --add-entry=192.168.1.101
sudo firewall-cmd --permanent --add-rich-rule='rule source ipset=trusted accept'
|
5. 定时开放端口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# 使用 cron 定时任务管理防火墙
# 例如:只在工作时间开放某些端口
# 创建开放端口的脚本
echo 'sudo ufw allow 3389/tcp' > /usr/local/bin/open-rdp
chmod +x /usr/local/bin/open-rdp
# 创建关闭端口的脚本
echo 'sudo ufw delete allow 3389/tcp' > /usr/local/bin/close-rdp
chmod +x /usr/local/bin/close-rdp
# 设置定时任务
crontab -e
# 添加以下行:
# 0 8 * * 1-5 /usr/local/bin/open-rdp
# 0 18 * * 1-5 /usr/local/bin/close-rdp
|
🎯 七、总结
关键要点回顾
-
系统选择:
- Ubuntu/Debian: 使用 UFW (Uncomplicated Firewall)
- CentOS/RHEL: 使用 FirewallD
-
基本流程:
- 安装防火墙软件
- 先允许 SSH 连接
- 配置必要的服务端口
- 启用防火墙
- 定期审查规则
-
安全最佳实践:
- 遵循最小权限原则
- 定期备份配置
- 监控防火墙日志
- 使用 fail2ban 等工具增强安全
-
故障排除:
- 检查端口状态
- 测试连接
- 查看日志文件
- 必要时重置配置
下一步建议
-
深入学习:
- 研究 iptables (UFW 和 FirewallD 的底层工具)
- 学习网络分段和 VLAN 配置
- 了解入侵检测系统 (IDS)
-
自动化管理:
- 编写脚本自动化防火墙配置
- 使用配置管理工具 (Ansible, Puppet, Chef)
- 实现基础设施即代码 (IaC)
-
监控和告警:
- 设置防火墙事件监控
- 配置异常连接告警
- 定期进行安全审计
🛡️ 重要提醒: 通过合理配置防火墙,您可以显著提升服务器安全性。记得始终先允许SSH连接再启用防火墙,避免被锁定在服务器外!
现在您已经掌握了 Linux 防火墙的全面知识,可以根据实际需求灵活配置安全策略了。记得定期审查和更新防火墙规则,确保服务器安全的同时保持服务的可访问性。