Featured image of post Linux 防火墙命令 🛡️

Linux 防火墙命令 🛡️

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

🎯 七、总结

关键要点回顾

  1. 系统选择

    • Ubuntu/Debian: 使用 UFW (Uncomplicated Firewall)
    • CentOS/RHEL: 使用 FirewallD
  2. 基本流程

    • 安装防火墙软件
    • 先允许 SSH 连接
    • 配置必要的服务端口
    • 启用防火墙
    • 定期审查规则
  3. 安全最佳实践

    • 遵循最小权限原则
    • 定期备份配置
    • 监控防火墙日志
    • 使用 fail2ban 等工具增强安全
  4. 故障排除

    • 检查端口状态
    • 测试连接
    • 查看日志文件
    • 必要时重置配置

下一步建议

  1. 深入学习

    • 研究 iptables (UFW 和 FirewallD 的底层工具)
    • 学习网络分段和 VLAN 配置
    • 了解入侵检测系统 (IDS)
  2. 自动化管理

    • 编写脚本自动化防火墙配置
    • 使用配置管理工具 (Ansible, Puppet, Chef)
    • 实现基础设施即代码 (IaC)
  3. 监控和告警

    • 设置防火墙事件监控
    • 配置异常连接告警
    • 定期进行安全审计

🛡️ 重要提醒: 通过合理配置防火墙,您可以显著提升服务器安全性。记得始终先允许SSH连接再启用防火墙,避免被锁定在服务器外!

现在您已经掌握了 Linux 防火墙的全面知识,可以根据实际需求灵活配置安全策略了。记得定期审查和更新防火墙规则,确保服务器安全的同时保持服务的可访问性。

最后更新于 2025-09-28