在CentOS系统中,可以通过多种方式来限制普通用户对系统进程的访问权限。以下是几种有效的方法:
SELinux是CentOS内置的强制访问控制(MAC)系统:
# 检查SELinux状态
sestatus
# 如果未启用,启用SELinux
sudo setenforce 1
sudo sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config
# 设置进程域隔离
sudo semanage login -a -s user_u username
# 安装cgroups工具
sudo yum install libcgroup libcgroup-tools
# 创建控制组
sudo cgcreate -g cpu,memory,devices:/limited_group
# 限制用户访问
sudo cgset -r devices.deny="a" limited_group
sudo cgset -r devices.allow="c 1:3 rwm" limited_group # 仅允许基本设备
# 将用户添加到该组
sudo usermod -aG limited_group username
# 修改/etc/fstab添加以下行
proc /proc proc defaults,hidepid=2 0 0
# 重新挂载/proc
sudo mount -o remount /proc
hidepid
参数说明:
- 0
: 默认,所有用户可见所有进程
- 1
: 隐藏其他用户进程
- 2
: 隐藏其他用户进程,且/proc/[pid]目录仅对所有者可见
编辑 /etc/security/limits.conf
文件:
username hard nproc 50 # 限制用户最多50个进程
username hard core 0 # 禁止生成core文件
username - maxlogins 1 # 限制同时登录数
对于使用systemd的服务:
# 编辑服务单元文件
sudo systemctl edit --full servicename
# 添加以下内容
[Service]
MemoryLimit=512M
CPUQuota=50%
TasksMax=20
# 移除用户进程的特定能力
sudo setcap -r /path/to/process
sudo setcap cap_net_raw-ep /path/to/process
# 安装auditd
sudo yum install audit
# 配置审计规则
sudo auditctl -a exit,always -F arch=b64 -S kill -S ptrace -F auid!=unset -k process_access
# 查看审计日志
sudo ausearch -k process_access
以上方法可以组合使用,根据实际安全需求选择适当的限制级别。对于生产环境,建议先进行全面测试。