进程应以非root用户身份运行,避免滥用系统权限。例如,Web服务(如Apache/Nginx)使用apache/nginx用户,数据库服务(如MySQL)使用mysql用户。通过systemctl edit 服务名修改服务的User和Group参数,或在服务脚本中指定用户(如ExecStart=/usr/sbin/nginx -g 'daemon off;'改为ExecStart=/usr/sbin/nginx -g 'daemon off;' --user=nginx)。此外,使用chmod、chown调整进程相关文件/目录权限(如/var/www/html目录设为nginx:nginx,权限750),防止未授权访问。
启用SELinux(CentOS默认开启)并将其设为Enforcing模式(/etc/selinux/config中SELINUX=enforcing),通过semanage、setsebool等命令配置进程权限。例如,允许Apache访问用户家目录:setsebool -P httpd_enable_homedirs 1。若使用AppArmor,为进程创建配置文件(如/etc/apparmor.d/usr.sbin.apache2),限制其能访问的文件路径、网络端口等资源,进一步提升隔离性。
禁用不必要的系统服务(如telnet、ftp、bluetooth),使用systemctl disable 服务名命令,避免未使用的进程暴露端口。仅开放必要的端口(如SSH的22端口、Web的80/443端口),通过firewalld配置规则:firewall-cmd --permanent --add-service=http --add-service=https,然后firewall-cmd --reload。修改SSH默认端口(如改为2222),降低暴力破解风险:编辑/etc/ssh/sshd_config,设置Port 2222,重启SSH服务。
使用systemd将进程托管为守护进程,通过Restart=always参数实现自动重启(如/etc/systemd/system/nginx.service中添加Restart=always),避免进程意外终止。通过chroot命令将进程限制在特定目录(如将FTP服务限制在/var/ftp),限制其对系统其他部分的访问。例如,chroot /var/ftp /bin/bash将用户限制在该目录内,无法访问上级目录。
启用auditd审计服务,监控进程的关键操作(如启动、停止、访问敏感文件)。编辑/etc/audit/audit.rules,添加规则:-w /usr/sbin/nginx -p x -k nginx_exec(监控Nginx执行),-w /etc/passwd -p wa -k passwd_mod(监控密码文件修改)。使用monit或supervisord监控进程状态,配置自动重启:例如,monit配置文件中添加check process nginx with pidfile /var/run/nginx.pid start program = "/usr/sbin/nginx" stop program = "/usr/sbin/nginx -s stop",确保进程异常退出时自动恢复。
删除不必要的默认用户(如adm、lp、sync),使用userdel 用户名命令,减少潜在的攻击入口。设置强密码策略:编辑/etc/login.defs,要求密码长度≥10位、包含大小写字母、数字和特殊字符(如PASS_MIN_LEN 10、PASS_REQUIRE_MIXED_CASE yes),并通过chage -M 90 用户名设置密码有效期为90天。使用sudo替代直接root登录,通过visudo命令配置精细权限(如允许devuser1重启HTTP服务:devuser1 ALL=(root) NOPASSWD: /usr/bin/systemctl restart httpd),避免密码泄露风险。
使用nohup命令让进程忽略挂起信号(如nohup your_command &),输出重定向到nohup.out文件,即使终端关闭仍继续运行。使用screen或tmux创建会话(如screen -S my_session your_command),断开连接后可重新附加(screen -r my_session),保持进程运行。调整进程优先级:使用nice -n 10 your_command降低进程优先级(数值越大优先级越低),减少被系统OOM Killer终止的可能性;若进程已运行,使用renice 10 -p PID调整其优先级。