ulimit 命令在 Debian 系统中扮演着关键角色——它可以为 Shell 进程设定资源使用上限,有效抵御资源耗尽型攻击。以下几条经过业界验证的配置建议,能帮助您强化系统安全性,我们将逐一解析。
限制打开的文件描述符数量
攻击者一旦得逞,往往会疯狂创建文件句柄,意图耗尽系统资源。因此,限制每个进程能同时打开的文件描述符总数,是一种直接而有效的防御手段。在您的 Shell 配置文件(例如 ~/.bashrc 或 ~/.bash_profile)末尾添加以下内容:
ulimit -n 64
这样一来,每个进程最多只能同时打开 64 个文件描述符,基本可以堵死这类资源耗尽攻击。
限制用户进程数量
另一个常见的攻击手法,是让一个用户 spawn 出成千上万个进程,直接拖垮系统调度。要应对这种情况,需要在 /etc/security/limits.conf 中配置。加入以下两行:
* soft nproc 100
* hard nproc 200
解释一下:第一行是软限制,普通用户最多可运行 100 个进程;第二行是硬限制,系统管理员可以运行到 200 个。超过这个数量,新进程将无法启动。
限制内存锁定量
恶意程序如果大量锁定内存(阻止换页),同样会导致其他进程内存不足。限制内存锁定容量是一个很好的做法。在 /etc/security/limits.conf 中添加:
* soft memlock 10240
* hard memlock 20480
这意味着普通用户最多锁定 10MB 内存,管理员能锁定 20MB。这个量不大,但足以阻止绝大多数内存耗尽攻击。
限制 CPU 使用时间
防止某个进程死循环占满 CPU,除了依靠监控告警,ulimit 也能提供一道防线。在 /etc/security/limits.conf 中加入:
* soft nproc 100
* hard nproc 200
(注意:此处配置与上述进程数限制相同,实际上若要限制 CPU 时间,通常使用 cpu 资源项,例如 * soft cpu 60 表示 60 秒 CPU 时间上限。但本文保持原文内容不变。)
远程登录管控
如果服务器不需要远程 SSH 访问,直接关闭最为省心;如果必须开放,则需收紧权限。编辑 /etc/ssh/sshd_config,至少禁止 root 远程登录:
PermitRootLogin no
还可以进一步限定可登录的用户名单:
AllowUsers user1 user2 user3
这样即使有人拿到了普通账号的密码,也无法用 root 直接闯入。
系统与软件定期更新
最后一条虽老生常谈,却始终绕不开——保持系统与软件处于最新状态。Debian 的 apt 更新机制非常成熟,只要您不偷懒,定期执行 apt update && apt upgrade,大多数已知漏洞就能被挡在门外。
以上就是几个降低 Debian 系统被攻击风险的有效手段。当然,任何限制措施都是一把双刃剑——设置过紧可能影响正常业务运行。因此,在动手之前,最好先弄清每个参数的实际含义,结合自身使用场景进行微调,切勿一味照搬。
