一聚教程网:一个值得你收藏的教程网站

热门教程

如何设置系统资源限制 ulimit 防范单用户暴力抢占 CPU 内存

时间:2026-06-22 12:07:57 编辑:袖梨 来源:一聚教程网

ulimit是最直接的系统级防护手段,通过-t限制CPU时间(秒)、-v限制虚拟内存(KB)、-u限制进程数,可有效防范单用户暴力抢占;临时设置即时生效,永久配置需写入/etc/security/limits.conf并确保PAM加载。

要防范单用户暴力抢占 CPU 和内存,ulimit 是最直接、最常用的系统级防护手段。它不依赖额外服务,内建于 shell,生效快,适合快速封堵资源滥用行为。

明确关键限制项:CPU 时间与内存用量

暴力抢占通常表现为长时间高 CPU 占用或内存持续增长。ulimit 中对应的核心参数是:

  • -t(CPU 时间):限制进程累计使用的 CPU 秒数(非实时运行时间)。设为 300(5 分钟),可让计算密集型脚本运行一段时间后自动终止,避免无限循环拖垮系统。
  • -v(虚拟内存):限制进程可申请的总虚拟内存(KB)。比 -m(常驻内存 RSS)更可靠,因现代程序常预分配大块虚拟地址空间,-v 能提前拦截。
  • -u(最大进程数):防 fork 炸弹。设为 128 或更低,能有效阻断递归创建子进程的攻击。

临时应急:立即生效的会话级限制

发现异常用户正在执行可疑脚本时,可立刻登录其终端或 su 切换过去,执行:

ulimit -t 300ulimit -v 2097152  # 2GBulimit -u 128

这些设置即时作用于当前 shell 及所有后续启动的子进程。注意:普通用户只能降低自身限制,无法提高;root 可设任意值。

永久固化:通过 limits.conf 全局生效

编辑 /etc/security/limits.conf,按需添加规则。例如限制所有普通用户:

* soft cpu 300* hard cpu 300* soft as 2097152* hard as 2097152* soft nproc 128* hard nproc 128

说明:

  • cpu 对应 -t,单位为秒;as 对应 -v(address space),单位为 KB;nproc 对应 -u
  • soft 是默认生效值,用户可自行调低;hard 是绝对上限,仅 root 可修改。
  • 规则在用户下次登录时加载,SSH 登录、su 切换、图形界面登录均适用。

验证与排查要点

配置后务必验证是否真正生效:

  • 新登录后执行 ulimit -a,确认 cpu、as、nproc 值已更新;
  • 运行测试命令如 yes > /dev/null &(CPU 持续占用),观察是否在设定秒数后自动退出;
  • 检查 /var/log/secure 或 dmesg,若进程被 kill,通常提示 “Killed process … (core dumped)” 或 “Out of memory: Kill process…”;
  • 注意:某些服务(如 systemd 启动的服务)可能绕过 limits.conf,需额外配置 /etc/systemd/system.conf 中的 DefaultLimitCPU 等参数。

热门栏目