CentOS系统中恶意程序想要长期驻留,通常会利用系统自带的自动加载机制,在系统重启后自动启动运行,因此掌握对应的防护设置方法对保障服务器安全至关重要。

排查系统服务自动加载项
CentOS 7及以上版本默认使用systemd作为服务管理工具,而旧版本多使用chkconfig管理启动项,需要先排查这两类服务的自动加载情况。
systemd服务排查
首先查看所有已启用自动启动的systemd服务,执行以下命令:
# 列出所有处于enabled状态的服务单元 systemctl list-unit-files --type=service --state=enabled
如果发现陌生或可疑的服务,先查看该服务的配置路径和启动脚本内容:
# 查看指定服务的单元配置文件路径,替换service_name为实际服务名 systemctl status service_name # 查看服务启动脚本内容 cat /usr/lib/systemd/system/service_name.service
确认是恶意服务后,先停止服务并禁用自动启动:
# 停止运行中的恶意服务 systemctl stop service_name # 禁用服务自动启动 systemctl disable service_name # 删除服务单元配置文件 rm -f /usr/lib/systemd/system/service_name.service # 重新加载systemd配置 systemctl daemon-reload
chkconfig服务排查
针对CentOS 6及更早版本,或者仍在使用chkconfig的场景,执行以下命令排查启动项:
# 列出所有服务的启动状态,0-6对应不同运行级别 chkconfig --list
发现可疑服务后,先关闭对应运行级别的自动启动,再停止服务:
# 关闭服务在所有运行级别的自动启动,替换service_name为实际服务名 chkconfig service_name off # 停止运行中的服务 service service_name stop # 删除服务的启动脚本 rm -f /etc/init.d/service_name
清理定时任务自动加载项
恶意程序经常会向系统定时任务中添加启动命令,实现定期或开机时自动运行,需要排查以下几类定时任务。
系统级定时任务
查看/etc/crontab文件中的定时任务配置:
cat /etc/crontab
同时检查/etc/cron.d/目录下的所有自定义定时任务文件:
ls -l /etc/cron.d/ cat /etc/cron.d/*
用户级定时任务
查看所有用户的定时任务,执行以下命令:
# 查看root用户的定时任务 crontab -l # 查看指定用户的定时任务,替换username为实际用户名 crontab -u username -l
如果发现恶意定时任务,直接编辑删除对应条目:
# 编辑当前用户的定时任务,删除恶意条目后保存 crontab -e # 编辑指定用户的定时任务 crontab -u username -e
检查开机启动脚本
CentOS系统开机时会自动执行部分脚本,恶意程序可能会在这些脚本中添加启动命令。
rc.local脚本检查
查看/etc/rc.d/rc.local文件,该文件中的命令会在系统启动最后阶段执行:
cat /etc/rc.d/rc.local
如果文件中有可疑命令,直接编辑删除,同时确认该文件是否有可执行权限,避免恶意程序后续添加内容:
# 编辑rc.local文件删除恶意命令 vim /etc/rc.d/rc.local # 移除可执行权限,防止未授权修改 chmod -x /etc/rc.d/rc.local
profile类脚本检查
系统登录时会加载/etc/profile、/etc/bashrc以及用户目录下的.bash_profile、.bashrc等脚本,检查这些文件中是否有恶意启动命令:
cat /etc/profile cat /etc/bashrc # 检查所有用户的home目录下的配置文件 ls -la /home/*/.*profile /home/*/.*bashrc cat /home/*/.*profile /home/*/.*bashrc
长期防护配置建议
除了排查现有恶意项,还需要做以下配置降低后续被恶意程序自动加载的风险:
- 定期执行服务、定时任务、启动脚本的排查命令,记录正常项的状态,方便后续对比
- 对/usr/lib/systemd/system、/etc/init.d、/etc/cron.d等关键目录设置严格的权限,仅允许root用户修改
- 使用
auditd服务监控关键目录的文件变更,及时发现恶意程序的修改操作 - 避免直接使用root用户运行未知来源的程序,减少恶意程序获取高权限修改启动项的可能
如果排查过程中发现无法确认的可疑项,可以先通过ps -ef | grep 进程名查看进程详情,结合进程的启动路径和父进程信息判断是否为恶意程序,再执行对应的清理操作。