核心思路是切断恶意程序提权路径——它无法运行,就谈不上利用权限漏洞;重点在于让攻击者即使拿到低权限shell,也难以突破、横向移动或持久化,通过账户权限最小化、服务端口精简、运行时防护及持续验证闭环实现纵深防御。

核心思路是切断恶意程序提权路径——它无法运行,就谈不上利用权限漏洞。重点不在“防住所有攻击”,而在于让攻击者即使拿到低权限shell,也难以突破、横向移动或持久化。
账户与权限最小化
恶意程序常依赖高权限账户或服务进程提权。必须从源头收紧:
- 禁用root远程登录,改用普通用户+sudo(且sudo仅授权具体命令,不用ALL)
- 删除或禁用默认账号(如centos的ec2-user、ubuntu的ubuntu)、测试账号、长期未登录的僵尸账号
- Web服务进程(如www-data、nginx)绝不赋予shell权限,也不加入sudoers组
- 数据库、Redis等中间件必须设密码,禁止bind 0.0.0.0,只监听127.0.0.1或内网IP
服务与端口精简
每个运行的服务都是潜在的提权入口。攻击者常通过SUID二进制、本地服务漏洞或配置错误实现越权:
- 用
systemctl list-unit-files --state=enabled查启用服务,关闭avahi-daemon、rpcbind、cups、telnet等非必要服务 - 卸载gcc、make、perl等编译/解释工具(除非真需要),防止攻击者现场编译提权exp
- 检查SUID文件:
find / -perm -4000 2>/dev/null | grep -E "(bin|sbin)",只保留/usr/bin/passwd、/usr/bin/sudo等必需项,其余一律chmod u-s - SSH端口改到2222以上,RDP改到3390+,并配合
AllowUsers和IP白名单
运行时防护加固
即使被上传webshell或执行恶意脚本,也要限制其行为边界:
- 启用SELinux或AppArmor,为关键服务(如httpd、mysqld)定义策略,禁止执行非白名单路径的二进制
- PHP环境设置
disable_functions = system,exec,passthru,shell_exec,proc_open,popen,pcntl_exec,并开启open_basedir限定脚本可访问目录 - 对Web目录设置严格权限:
chown -R www-data:www-data /var/www/html,目录750、文件640,禁止写入日志目录以外的任何位置 - 用
setfacl细化权限,例如只允许Web进程写upload/子目录,其他目录拒绝写入
持续验证与响应闭环
权限策略不是一次配置就一劳永逸,需主动验证是否生效:
- 每周执行一次
ps aux --forest,检查是否有异常父进程(如bash被php调起) - 用
ss -tulnp核对监听端口,确认无意外开放(如Redis暴露在公网) - 部署轻量IDS(如fail2ban+自定义规则),监控sudo日志、auth.log中高频失败登录及可疑命令执行
- 发现异常后,立即冻结对应账户、终止进程、检查crontab和systemd timers中是否被植入后门

















