Debian服务器默认安装后并不等于绝对安全,很多攻击之所以成功,并不是因为漏洞有多高级,而是因为基础配置没做好。加固的核心思路是减少暴露面、限制权限、记录行为、快速响应。下面直接进入具体操作层面,按优先级从高到低梳理一套可落地的防御方案。
1. 更新系统与内核安全补丁
第一步永远是确保系统处于最新状态。Debian的稳定版仓库会持续推送安全更新,但前提是必须正确配置安全源。检查/etc/apt/sources.list中是否包含security.debian.org相关的条目,然后执行:
apt update && apt upgrade -y
对于内核更新,建议安装linux-image-amd64元包,这样内核升级时不会遗漏。如果服务器承担关键业务,可以配置unattended-upgrades实现自动安装安全更新,但要排除内核热升级可能引发的重启问题。至少保证每周手动检查一次更新,攻击者往往会在漏洞公开后几小时内开始扫描未修补的主机。
2. 最小化安装与移除无用服务
Debian默认安装会根据选择的任务集带入不少服务,比如exim4邮件服务、rpcbind、cups打印服务等,这些在服务器场景下几乎用不到,却可能成为攻击入口。用ss -tulnp查看当前监听的端口,凡是业务不需要的一律关闭并卸载:
systemctl disable --now exim4 rpcbind cups apt purge exim4 rpcbind cups -y
如果某些服务确实需要,但只应在内网访问,务必通过防火墙限制来源IP,而不是仅仅依赖服务自身的绑定配置。减少一个监听端口,就减少一类被扫描命中的概率。
3. SSH加固:第一道远程防线
SSH是Linux服务器最常被暴力破解的目标。修改/etc/ssh/sshd_config中的关键参数:
Port 2222 PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes AllowUsers deploy MaxAuthTries 3 LoginGraceTime 30 ClientAliveInterval 300 ClientAliveCountMax 2
把默认22端口改掉能过滤掉大量自动化扫描流量,但端口修改不能替代密钥认证。禁止root直接登录、禁止密码认证是必须做到的。如果团队多人需要登录,为每个人生成独立密钥对,并定期审查authorized_keys文件。另外,安装fail2ban可以自动封禁反复尝试登录的IP:
apt install fail2ban -y systemctl enable --now fail2ban
fail2ban默认配置对SSH有效,但建议在/etc/fail2ban/jail.local中根据实际环境调整bantime和findtime,避免误伤正常用户。
4. 防火墙策略:默认拒绝,按需放行
Debian上使用nftables或iptables均可,推荐直接使用nftables作为前端管理工具。核心原则是入站默认DROP,只放行业务端口和必要的管理端口。示例配置:
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0; policy drop; }
nft add rule inet filter input ct state established,related accept
nft add rule inet filter input iif lo accept
nft add rule inet filter input tcp dport 2222 accept
nft add rule inet filter input tcp dport 443 accept
nft add rule inet filter input tcp dport 80 accept
如果服务器有IPv6地址,务必同时配置IPv6规则,否则防火墙形同虚设。保存规则并设置开机自启:
nft list ruleset > /etc/nftables.conf systemctl enable nftables
对于UDP,除非业务明确需要(如DNS、WireGuard),否则一律不开放。出站流量一般保持默认允许,但如果服务器被入侵,限制出站可以阻止反弹shell和恶意下载,具体可根据业务需求收紧。
5. 账户与权限管理
除了SSH禁止root登录外,还需要检查系统中是否存在多余账户、空密码账户或UID为0的非root账户。执行以下命令快速排查:
awk -F: '($3==0){print $1}' /etc/passwd
awk -F: '($2==""){print $1}' /etc/shadow
对于需要执行特权命令的普通用户,使用sudo进行细粒度授权,不要直接给ALL权限。编辑/etc/sudoers时使用visudo,例如只允许deploy用户重启nginx:
deploy ALL=(root) /usr/sbin/nginx -s reload
同时,设置密码策略,确保所有账户密码强度足够。对于服务账户,使用systemd的硬化选项或直接设置为nologin shell,禁止交互登录。
6. 文件系统与关键目录加固
对/tmp目录设置noexec、nosuid、nodev挂载选项,防止攻击者在临时目录执行恶意程序。编辑/etc/fstab:
tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev 0 0
对/var、/home等分区根据实际情况考虑是否添加nodev和nosuid。另外,使用chattr命令保护关键配置文件不被篡改:
chattr +i /etc/ssh/sshd_config chattr +i /etc/sysctl.conf
需要修改时先chattr -i解除锁定。这种手段可以增加攻击者植入持久化后门的难度。
7. 内核参数与网络层防护
通过sysctl调整内核网络参数,增强对常见攻击的抵御能力。编辑/etc/sysctl.conf或/etc/sysctl.d/99-hardening.conf:
net.ipv4.tcp_syncookies = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_ignore_bogus_error_responses = 1 kernel.randomize_va_space = 2
启用SYN cookies可以缓解SYN flood攻击,反向路径过滤能防止IP欺骗,关闭重定向和源路由则减少中间人攻击风险。执行sysctl -p立即生效。
8. 日志审计与入侵检测
没有日志,被入侵了都不知道。确保rsyslog或systemd-journald正常运行,并将关键日志同步到远程日志服务器或至少保留足够长的本地存储周期。安装auditd对敏感文件进行审计:
apt install auditd -y systemctl enable --now auditd
添加审计规则监控/etc/passwd、/etc/shadow、/etc/sudoers等文件的修改:
auditctl -w /etc/passwd -p wa -k identity_change auditctl -w /etc/shadow -p wa -k identity_change auditctl -w /etc/sudoers -p wa -k sudoers_change
对于入侵检测,可以部署AIDE对系统文件做完整性校验,定期比对哈希值发现异常变动。安装后初始化数据库,并设置cron任务每周检查一次。
9. 服务级安全配置
如果服务器运行Web服务(如nginx、Apache),确保以非root用户运行worker进程,关闭目录浏览,限制请求体大小,配置合理的超时时间。对于数据库服务(如MySQL、PostgreSQL),只监听本地或内网地址,移除默认测试账户,设置强密码并定期更换。对于PHP应用,禁用危险函数,开启open_basedir限制文件访问范围。
以nginx为例,在配置文件中添加安全响应头:
add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; add_header X-XSS-Protection "1; mode=block" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always;
这些响应头虽然不能直接阻止攻击,但能显著提高浏览器端攻击的利用门槛。
10. 定期备份与应急响应
加固做得再好,也无法保证100%不被攻破。因此必须建立定期备份机制,将关键数据和配置文件备份到离线或异地存储。备份要包含数据库、网站文件、系统配置、用户密钥等。同时准备一份应急响应清单,包括如何隔离受感染主机、如何从备份恢复、如何分析入侵痕迹等。一旦发现异常登录或文件变动,能够快速定位并处置。
Debian服务器安全加固不是一次性工作,而是一个持续的过程。攻击手法不断演进,系统配置也需要随之调整。建议每季度重新审查一次安全策略,结合日志分析结果和最新的威胁情报,对防火墙规则、账户权限、服务配置进行优化。只有把基础工作做扎实,才能让攻击者无机可乘。
