Linux 防火墙命令 🛡️

本指南详细介绍了在 Ubuntu/Debian 和 RedHat/CentOS 系统上配置和管理防火墙的命令,确保服务器安全的同时保持必要的服务可访问。
📑 目录导航
🐧 一、Ubuntu / Debian 系统 (UFW)
1. 系统更新与 UFW 安装
1 2 3 4 5 6
| sudo apt update
sudo apt install ufw -y
|
2. 基本防火墙配置
1 2 3 4 5 6 7 8 9 10 11
| sudo ufw allow 22/tcp
sudo ufw allow 8090/tcp
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 sudo ufw allow 443/tcp sudo ufw allow 3306/tcp
sudo ufw allow from 192.168.1.100
sudo ufw delete allow 8090/tcp
sudo ufw deny 23/tcp
|
5. 应用配置示例
1 2 3 4 5 6
| sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 3306/tcp sudo ufw enable
|
🐂 二、RedHat / CentOS 系统 (FirewallD)
1. 系统更新与 FirewallD 安装
1 2 3 4 5 6
| sudo yum update -y
sudo yum install firewalld -y
|
2. 防火墙服务管理
1 2 3 4 5 6 7 8
| sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo systemctl status firewalld
|
3. 端口配置
1 2 3 4 5 6 7 8 9 10 11
| sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8090/tcp --permanent
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
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
| sudo ufw allow 80/tcp sudo ufw allow 443/tcp
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
| sudo ufw allow 3306/tcp
sudo ufw allow 5432/tcp
sudo ufw allow 6379/tcp
sudo ufw allow 27017/tcp
|
其他常见服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| sudo ufw allow 21/tcp
sudo ufw allow 53/tcp sudo ufw allow 53/udp
sudo ufw allow 25/tcp
sudo ufw allow 143/tcp sudo ufw allow 993/tcp sudo ufw allow 110/tcp sudo ufw allow 995/tcp
|
开发相关端口
1 2 3 4 5 6 7 8 9 10 11 12
| sudo ufw allow 3000/tcp
sudo ufw allow 8080/tcp
sudo ufw allow 8000/tcp
sudo ufw allow 2375/tcp sudo ufw allow 2376/tcp
|
⚠️ 四、重要安全建议
1. 远程连接前的准备
1 2 3 4 5 6
|
sudo apt install fail2ban sudo yum install fail2ban
|
2. 最小权限原则
1 2 3 4 5 6 7
|
sudo ufw status numbered sudo ufw delete [编号]
sudo firewall-cmd --list-all --zone=public
|
3. 备份防火墙配置
1 2 3 4 5 6 7
| sudo cp /etc/ufw/user.rules /etc/ufw/user.rules.backup sudo cp /etc/ufw/before.rules /etc/ufw/before.rules.backup
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
sudo ss -tulnp
sudo netstat -tulnp | grep :80
|
2. 测试连接
1 2 3 4 5 6 7 8
| telnet your-server-ip 22
nc -zv your-server-ip 8090
curl -I http://your-server-ip:80
|
3. 查看日志
1 2 3 4 5 6
| sudo tail -f /var/log/ufw.log sudo journalctl -u firewalld -f
sudo dmesg | grep -i firewall
|
4. 重置防火墙配置
1 2 3 4 5 6
| sudo ufw reset
sudo firewall-cmd --reset-to-defaults sudo systemctl restart firewalld
|
💡 六、实用技巧
1. 批量开放端口范围
1 2 3 4 5
| sudo ufw allow 8000:8010/tcp
sudo firewall-cmd --add-port=8000-8010/tcp --permanent
|
2. 限制访问频率
1 2 3 4 5
| sudo ufw limit ssh
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
sudo firewall-cmd --list-all --permanent > firewall-backup.xml
|
4. 使用 IP 集管理多个 IP
1 2 3 4 5
| 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
|
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
|
🎯 七、总结
关键要点回顾
系统选择:
- Ubuntu/Debian: 使用 UFW (Uncomplicated Firewall)
- CentOS/RHEL: 使用 FirewallD
基本流程:
- 安装防火墙软件
- 先允许 SSH 连接
- 配置必要的服务端口
- 启用防火墙
- 定期审查规则
安全最佳实践:
- 遵循最小权限原则
- 定期备份配置
- 监控防火墙日志
- 使用 fail2ban 等工具增强安全
故障排除:
- 检查端口状态
- 测试连接
- 查看日志文件
- 必要时重置配置
下一步建议
深入学习:
- 研究 iptables (UFW 和 FirewallD 的底层工具)
- 学习网络分段和 VLAN 配置
- 了解入侵检测系统 (IDS)
自动化管理:
- 编写脚本自动化防火墙配置
- 使用配置管理工具 (Ansible, Puppet, Chef)
- 实现基础设施即代码 (IaC)
监控和告警:
- 设置防火墙事件监控
- 配置异常连接告警
- 定期进行安全审计
🛡️ 重要提醒: 通过合理配置防火墙,您可以显著提升服务器安全性。记得始终先允许SSH连接再启用防火墙,避免被锁定在服务器外!
现在您已经掌握了 Linux 防火墙的全面知识,可以根据实际需求灵活配置安全策略了。记得定期审查和更新防火墙规则,确保服务器安全的同时保持服务的可访问性。