温馨提示×

如何配置Debian防火墙规则

小樊
64
2025-10-03 18:48:59
栏目: 智能运维

Debian防火墙配置指南(以UFW和iptables为例)

Debian系统中,UFW(Uncomplicated Firewall) 是推荐的轻量级防火墙工具(基于iptables封装,简化操作),而iptables 则提供更底层的网络包过滤功能。以下是两者的详细配置步骤及注意事项:

一、UFW(推荐新手使用)

UFW的设计目标是“简单易用”,适合大多数日常场景(如家庭服务器、小型网站)。

1. 安装UFW
sudo apt update && sudo apt install ufw
2. 启用UFW
sudo ufw enable

系统会提示“Command may disrupt existing ssh connections”,输入 y 确认(若已通过SSH连接,UFW会自动允许SSH端口,无需担心断开)。

3. 配置默认策略

设置默认拒绝所有入站连接(防止未授权访问),允许所有出站连接(保障服务器正常访问外网):

sudo ufw default deny incoming
sudo ufw default allow outgoing
4. 允许常用服务端口
  • SSH(远程管理,默认端口22)
    sudo ufw allow 22/tcp
    
  • HTTP(网页服务,默认端口80)
    sudo ufw allow 80/tcp
    
  • HTTPS(加密网页服务,默认端口443)
    sudo ufw allow 443/tcp
    
  • MySQL(数据库服务,默认端口3306)
    sudo ufw allow 3306/tcp
    
5. 允许/拒绝特定IP访问
  • 允许某IP(如192.168.1.100)访问所有端口
    sudo ufw allow from 192.168.1.100
    
  • 拒绝某IP(如192.168.1.101)访问所有端口
    sudo ufw deny from 192.168.1.101
    
  • 允许某IP访问特定端口(如192.168.1.100访问SSH)
    sudo ufw allow from 192.168.1.100 to any port 22
    
6. 查看与管理规则
  • 查看当前规则状态(简洁模式):
    sudo ufw status
    
  • 查看详细规则(包含端口、协议、来源等)
    sudo ufw status verbose
    
  • 删除某条规则(如删除SSH允许规则)
    sudo ufw delete allow 22/tcp
    
  • 重载规则(修改后应用更改)
    sudo ufw reload
    
7. 启用日志记录(可选)

日志可帮助排查防火墙拦截的问题(如误拦截正常访问):

sudo ufw logging on

日志默认存储在 /var/log/ufw.log

二、iptables(底层网络过滤,适合高级用户)

iptables是Linux内核自带的防火墙工具,功能强大但配置复杂,适合需要精细控制流量的场景(如企业级服务器)。

1. 安装iptables
sudo apt update && sudo apt install iptables
2. 配置基础规则

编辑规则文件(避免直接操作命令行,防止误操作):

sudo nano /etc/iptables.rules

添加以下内容(示例:允许SSH、HTTP、HTTPS、ICMP(ping),拒绝其他入站):

*filter
# 允许本地回环接口(本地服务通信)
-A INPUT -i lo -j ACCEPT
# 允许已建立的连接和相关的流量(如SSH反向隧道)
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许所有出站流量
-A OUTPUT -j ACCEPT
# 允许SSH(端口22)
-A INPUT -p tcp --dport 22 -j ACCEPT
# 允许HTTP(端口80)
-A INPUT -p tcp --dport 80 -j ACCEPT
# 允许HTTPS(端口443)
-A INPUT -p tcp --dport 443 -j ACCEPT
# 允许ping(ICMP类型8:echo请求)
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# 拒绝所有其他入站流量
-A INPUT -j REJECT --reject-with icmp-host-prohibited
# 拒绝所有转发流量(若服务器不作为路由器)
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

保存并退出(Ctrl+OEnterCtrl+X)。

3. 应用规则
sudo iptables-restore < /etc/iptables.rules
4. 设置开机自动加载

创建启动脚本,确保系统重启后规则依然生效:

sudo nano /etc/network/if-pre-up.d/iptables

添加以下内容:

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.rules

赋予执行权限:

sudo chmod +x /etc/network/if-pre-up.d/iptables
5. 保存与恢复规则
  • 保存当前规则(避免重启丢失):
    sudo iptables-save > /etc/iptables.rules
    
  • 恢复规则(如从备份文件恢复):
    sudo iptables-restore < /path/to/backup.rules
    

三、注意事项

  1. 备份规则:修改前备份现有规则(如 sudo cp /etc/iptables.rules /etc/iptables.rules.bak),避免配置错误导致无法访问。
  2. 测试规则:生产环境应用新规则前,先在测试环境验证,防止误拦截正常服务(如SSH端口被拦截会导致无法远程登录)。
  3. 最小化开放端口:仅开放必要的服务端口(如网站只需开放80/443,数据库只需开放3306给特定IP),减少攻击面。
  4. 定期审查规则:每月检查一次防火墙规则,移除不再使用的端口或IP授权(如旧项目的数据库端口)。
  5. 结合其他安全措施:防火墙只是安全体系的一部分,还需配合强密码、SSH密钥认证、系统更新等措施,提升整体安全性。

通过以上步骤,你可根据需求选择UFW或iptables配置Debian防火墙,有效保护服务器免受非法访问。

0