插件窝 干货文章 如何配置CentOS系统以限制进程资源使用的安全策略

如何配置CentOS系统以限制进程资源使用的安全策略

限制 使用 进程 资源 502    来源:    2025-04-16

CentOS 系统进程资源限制安全策略配置指南

1. 使用 ulimit 设置用户级资源限制

ulimit 是 Linux 内置的命令,用于限制用户会话的资源使用:

# 查看当前限制
ulimit -a

# 在 /etc/security/limits.conf 中添加永久限制
vim /etc/security/limits.conf

# 示例配置:
*               hard    nproc           1000     # 最大进程数
*               hard    nofile          1024     # 最大打开文件数
user1           hard    cpu             2        # 用户user1最多使用2个CPU分钟
@developers     hard    memlock         512000   # developers组内存锁定限制

2. 使用 cgroups (Control Groups) 进行精细控制

CentOS 7+ 使用 systemd 的 cgroups 实现:

# 创建自定义 slice
vim /etc/systemd/system/resource-limited.slice

[Unit]
Description=Resource Limited Slice
Before=slices.target

[Slice]
CPUQuota=50%      # 限制最多使用50% CPU
MemoryLimit=1G    # 限制最多使用1GB内存

# 重载 systemd 配置
systemctl daemon-reload

# 将服务放入该 slice
systemctl set-property httpd.service Slice=resource-limited.slice

3. 使用 systemd 资源控制

直接为服务设置资源限制:

# 限制Apache服务资源
systemctl set-property httpd.service CPUQuota=200%
systemctl set-property httpd.service MemoryLimit=512M
systemctl set-property httpd.service BlockIOWeight=500

# 永久保存设置
systemctl edit httpd.service

4. 使用 cpulimit 工具限制特定进程

# 安装 cpulimit
yum install -y cpulimit

# 限制进程PID为1234的CPU使用率为30%
cpulimit -p 1234 -l 30

5. 使用 nice 和 renice 调整进程优先级

# 启动时设置低优先级
nice -n 19 /path/to/command

# 调整运行中进程优先级
renice 19 -p 1234

6. 内核参数调优

# 编辑 sysctl 配置
vim /etc/sysctl.conf

# 添加以下参数
kernel.pid_max = 65536                 # 最大PID数量
vm.overcommit_memory = 2               # 严格内存分配策略
vm.overcommit_ratio = 80               # 允许超配比例
kernel.sysrq = 0                       # 禁用SysRq键
kernel.core_uses_pid = 1               # 核心转储包含PID
fs.file-max = 65536                    # 系统最大打开文件数

# 应用配置
sysctl -p

7. 使用 SELinux 增强安全性

# 确保SELinux处于 enforcing 模式
getenforce
setenforce 1

# 永久配置
vim /etc/selinux/config
SELINUX=enforcing

8. 监控和审计

# 安装监控工具
yum install -y sysstat atop htop

# 设置审计规则
auditctl -a exit,always -F arch=b64 -S execve
auditctl -a exit,always -F arch=b32 -S execve

# 查看资源使用情况
sar -u 1 3       # CPU使用率
sar -r 1 3       # 内存使用
sar -d 1 3       # 磁盘I/O

9. 使用 namespaces 隔离进程

# 创建隔离的命名空间
unshare --pid --fork --mount-proc /bin/bash

# 使用容器技术如Docker进行更彻底的隔离

最佳实践建议

  1. 分层限制:结合用户级(ulimit)、服务级(systemd)和系统级(sysctl)限制
  2. 监控基线:先监控正常使用模式,再设置合理的限制阈值
  3. 逐步实施:先在测试环境验证,再应用到生产环境
  4. 文档记录:记录所有资源限制及其理由
  5. 定期审查:随着业务增长调整限制参数

通过以上配置,可以有效防止单个进程或用户消耗过多系统资源,提高系统的整体稳定性和安全性。