Debian系统常用的防火墙工具为ufw(简单易用)和iptables(功能强大),以下是具体配置步骤:
ufw(Uncomplicated Firewall)是Debian默认推荐的防火墙管理工具,基于iptables封装,简化了规则配置流程。
sudo apt update && sudo apt install ufw
sudo ufw enable # 启用防火墙,默认拒绝所有入站连接、允许所有出站连接
sudo ufw default deny incoming # 默认拒绝所有入站流量(增强安全性)
sudo ufw default allow outgoing # 允许所有出站流量(保障正常上网)
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 # 详细模式(显示规则优先级、接口等)
sudo ufw delete allow ssh
sudo ufw allow from 192.168.1.100 to any port 22
sudo ufw logging on # 日志保存至/var/log/ufw.log
iptables是Linux内核级的防火墙工具,功能更灵活,但配置复杂,需手动管理规则持久化。
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 # 加载规则
iptables-persistent:sudo apt install iptables-persistent
sudo netfilter-persistent save # 保存当前规则
sudo netfilter-persistent reload # 重启后自动加载
firewalld是动态防火墙管理工具,支持区域(Zone)和服务(Service)的概念,适用于复杂网络环境。
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 # 重新加载配置(无需重启服务)
防火墙是安全的第一道防线,但需结合以下策略全面提升系统安全性:
保持系统和软件最新,及时修复已知漏洞:
sudo apt update && sudo apt upgrade -y # 更新软件包列表并升级所有可升级的包
# 配置自动安全更新(可选):
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades # 启用自动安全更新
/etc/ssh/sshd_config),修改以下参数:PermitRootLogin no # 禁止root用户通过SSH登录
重启SSH服务使配置生效:sudo systemctl restart ssh
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
SSH是远程管理的主要方式,需重点保护:
/etc/ssh/sshd_config,修改Port参数(如2222):Port 2222
PasswordAuthentication no
PubkeyAuthentication yes
生成密钥对并将公钥上传至服务器:ssh-keygen -t rsa -b 4096 # 生成密钥对(客户端执行)
ssh-copy-id yourusername@your_server_ip # 上传公钥
AllowUsers yourusername@192.168.1.100
禁用不必要的服务,减少攻击面:
# 查看运行中的服务:
sudo systemctl list-units --type=service --state=running
# 停止并禁用不需要的服务(如CUPS打印服务):
sudo systemctl stop cups
sudo systemctl disable cups
sudo apt install logwatch
sudo systemctl enable logwatch
sudo systemctl start logwatch
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分钟
/etc/cron*、/etc/ssh):chmod 700 /etc/cron* /etc/ssh/ssh_host_*_key
chmod 600 /etc/shadow # 密码文件仅root可读
find / -perm -4000 -type f -exec ls -ld {} \; 2>/dev/null
027,用户拥有读写执行,组和其他用户无权限):echo "umask 027" >> /etc/profile
编辑/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系统上构建完善的防火墙与安全策略体系,有效降低系统被攻击的风险。需定期检查和更新规则,适应不断变化的安全威胁。