温馨提示×

Debian环境下如何设置防火墙与安全策略

小樊
46
2025-11-11 06:06:46
栏目: 智能运维

Debian环境下防火墙与安全策略设置指南

一、防火墙设置

Debian系统常用的防火墙工具为ufw(简单易用)和iptables(功能强大),以下是具体配置步骤:

1. 使用ufw(推荐新手)

ufw(Uncomplicated Firewall)是Debian默认推荐的防火墙管理工具,基于iptables封装,简化了规则配置流程。

  • 安装ufw
    sudo apt update && sudo apt install ufw
    
  • 启用ufw
    sudo ufw enable  # 启用防火墙,默认拒绝所有入站连接、允许所有出站连接
    
  • 配置默认策略
    sudo ufw default deny incoming  # 默认拒绝所有入站流量(增强安全性)
    sudo ufw default allow outgoing # 允许所有出站流量(保障正常上网)
    
  • 允许必要服务
    根据需求开放常用端口(如SSH、HTTP、HTTPS),避免过度开放:
    sudo ufw allow ssh       # 允许SSH(默认端口22)
    sudo ufw allow http      # 允许HTTP(端口80)
    sudo ufw allow https     # 允许HTTPS(端口443)
    # 若使用非标准端口(如SSH改用2222),需明确指定:
    sudo ufw allow 2222/tcp
    
  • 管理规则
    • 查看当前规则及状态:
      sudo ufw status          # 简洁模式
      sudo ufw status verbose  # 详细模式(显示规则优先级、接口等)
      
    • 删除规则(如取消SSH端口22的允许):
      sudo ufw delete allow ssh
      
  • 高级配置
    • 限制IP访问:仅允许特定IP访问SSH(如192.168.1.100):
      sudo ufw allow from 192.168.1.100 to any port 22
      
    • 启用日志记录(便于排查问题):
      sudo ufw logging on  # 日志保存至/var/log/ufw.log
      
2. 使用iptables(高级用户)

iptables是Linux内核级的防火墙工具,功能更灵活,但配置复杂,需手动管理规则持久化。

  • 安装iptables
    sudo apt update && sudo apt install iptables
    
  • 配置基础规则
    编辑规则文件(如/etc/iptables/rules.v4),添加以下内容(允许本地回环、已建立连接、SSH、HTTP/HTTPS,拒绝其他入站):
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    # 允许本地回环流量
    -A INPUT -i lo -j ACCEPT
    # 允许已建立的连接和相关的流量
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    # 允许SSH(端口22)
    -A INPUT -p tcp --dport 22 -j ACCEPT
    # 允许HTTP(端口80)和HTTPS(端口443)
    -A INPUT -p tcp --dport 80 -j ACCEPT
    -A INPUT -p tcp --dport 443 -j ACCEPT
    # 允许ICMP(ping)
    -A INPUT -p icmp -j ACCEPT
    # 默认拒绝所有其他入站流量
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    COMMIT
    
  • 应用规则
    sudo iptables-restore < /etc/iptables/rules.v4  # 加载规则
    
  • 保存规则(开机自启)
    Debian默认不自动保存iptables规则,需安装iptables-persistent
    sudo apt install iptables-persistent
    sudo netfilter-persistent save  # 保存当前规则
    sudo netfilter-persistent reload  # 重启后自动加载
    
3. firewalld(可选)

firewalld是动态防火墙管理工具,支持区域(Zone)和服务(Service)的概念,适用于复杂网络环境。

  • 安装firewalld
    sudo apt update && sudo apt install firewalld
    
  • 启动并启用服务
    sudo systemctl start firewalld
    sudo systemctl enable firewalld
    
  • 配置默认区域
    sudo firewall-cmd --set-default-zone=public  # public区域为默认,拒绝未明确允许的流量
    
  • 开放端口/服务
    sudo firewall-cmd --permanent --add-service=ssh  # 开放SSH服务
    sudo firewall-cmd --permanent --add-port=80/tcp  # 开放HTTP端口
    sudo firewall-cmd --reload  # 重新加载配置(无需重启服务)
    

二、安全策略配置

防火墙是安全的第一道防线,但需结合以下策略全面提升系统安全性:

1. 系统更新与补丁管理

保持系统和软件最新,及时修复已知漏洞:

sudo apt update && sudo apt upgrade -y  # 更新软件包列表并升级所有可升级的包
# 配置自动安全更新(可选):
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades  # 启用自动安全更新
2. 账户与权限管理
  • 禁用root远程登录
    编辑SSH配置文件(/etc/ssh/sshd_config),修改以下参数:
    PermitRootLogin no  # 禁止root用户通过SSH登录
    
    重启SSH服务使配置生效:
    sudo systemctl restart ssh
    
  • 使用sudo替代root
    创建普通用户并加入sudo组,通过sudo执行管理员命令:
    sudo adduser yourusername  # 创建用户
    sudo usermod -aG sudo yourusername  # 加入sudo组
    
  • 强密码策略
    安装libpam-pwquality工具,配置密码复杂度(如长度≥12、包含大小写字母、数字和特殊字符):
    sudo apt install libpam-pwquality
    sudo nano /etc/pam.d/common-password
    
    添加或修改以下行:
    password requisite pam_pwquality.so retry=3 minlen=12 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1
    
3. SSH服务加固

SSH是远程管理的主要方式,需重点保护:

  • 修改默认端口
    编辑/etc/ssh/sshd_config,修改Port参数(如2222):
    Port 2222
    
  • 禁用密码登录
    强制使用SSH密钥对认证,提高安全性:
    PasswordAuthentication no
    PubkeyAuthentication yes
    
    生成密钥对并将公钥上传至服务器:
    ssh-keygen -t rsa -b 4096  # 生成密钥对(客户端执行)
    ssh-copy-id yourusername@your_server_ip  # 上传公钥
    
  • 限制SSH访问
    仅允许特定IP地址访问SSH(如公司IP):
    AllowUsers yourusername@192.168.1.100
    
4. 服务最小化

禁用不必要的服务,减少攻击面:

# 查看运行中的服务:
sudo systemctl list-units --type=service --state=running
# 停止并禁用不需要的服务(如CUPS打印服务):
sudo systemctl stop cups
sudo systemctl disable cups
5. 日志审计与监控
  • 安装Logwatch
    自动生成每日日志报告,便于查看系统活动:
    sudo apt install logwatch
    sudo systemctl enable logwatch
    sudo systemctl start logwatch
    
  • 使用Fail2ban
    防止暴力破解(如SSH登录尝试),自动封禁恶意IP:
    sudo apt install fail2ban
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban
    # 配置SSH防护(编辑/etc/fail2ban/jail.local):
    [sshd]
    enabled = true
    port = 22
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 600  # 封禁10分钟
    
6. 文件系统与内核加固
  • 关键目录权限
    限制敏感目录的访问权限(如/etc/cron*/etc/ssh):
    chmod 700 /etc/cron* /etc/ssh/ssh_host_*_key
    chmod 600 /etc/shadow  # 密码文件仅root可读
    
  • 查找异常SUID文件
    SUID文件可能被利用提权,定期检查并删除异常文件:
    find / -perm -4000 -type f -exec ls -ld {} \; 2>/dev/null
    
  • 配置umask
    设置默认文件权限(如027,用户拥有读写执行,组和其他用户无权限):
    echo "umask 027" >> /etc/profile
    
7. 内核参数加固

编辑/etc/sysctl.conf,添加以下参数增强内核安全性:

# 禁止IP源路由
net.ipv4.conf.all.rp_filter = 1
# 忽略ICMP广播请求(防止Smurf攻击)
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 启用SYN cookies(防止SYN Flood攻击)
net.ipv4.tcp_syncookies = 1
# 保护硬链接和符号链接
fs.protected_hardlinks = 1
fs.protected_symlinks = 1

应用配置:

sudo sysctl -p

通过以上步骤,可在Debian系统上构建完善的防火墙与安全策略体系,有效降低系统被攻击的风险。需定期检查和更新规则,适应不断变化的安全威胁。

0