CentOS服务器的监控和安全事件应对是运维工作的核心内容,搭建完善的监控体系能够帮助运维人员实时掌握服务器状态,在安全风险萌芽阶段及时处理,避免造成业务中断或数据泄露。
CentOS服务器核心监控维度
系统资源监控
系统资源是服务器运行的基础,需要重点监控CPU、内存、磁盘、网络的使用情况。可以通过系统自带工具或者第三方工具实现持续监控。
使用top命令可以实时查看CPU和内存的使用情况,以下是查看当前系统资源占用的基础命令:
# 查看实时系统资源占用,每3秒刷新一次 top -d 3 # 查看内存使用情况,单位为MB free -m # 查看磁盘空间占用 df -h # 查看磁盘IO情况 iostat -x 1 5
系统日志监控
系统日志记录了服务器的所有操作和运行状态,是发现安全事件的重要依据。CentOS的核心日志存放在/var/log目录下,需要重点关注的日志包括:
/var/log/messages:系统通用日志,记录大部分系统服务运行信息/var/log/secure:安全相关日志,记录用户登录、权限变更等信息/var/log/cron:定时任务日志,记录定时任务的执行情况/var/log/audit/audit.log:审计日志,记录系统调用的详细信息
可以通过tail命令实时查看日志更新,也可以使用grep过滤关键信息:
# 实时查看secure日志的最新内容 tail -f /var/log/secure # 过滤日志中的失败登录记录 grep "Failed password" /var/log/secure # 查看最近10条系统报错日志 tail -n 10 /var/log/messages | grep -i "error"
用户行为监控
异常的用户行为是安全事件的重要特征,需要监控用户的登录情况、操作命令、权限变更等。可以通过以下方式实现用户行为监控:
首先查看当前登录用户,检测是否存在异常登录:
# 查看当前所有登录用户 who # 查看用户登录历史记录 last # 查看用户失败登录历史 lastb
如果需要记录所有用户的操作命令,可以配置history命令的详细记录,在/etc/profile中添加以下配置:
# 设置history命令记录的时间格式 export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " # 设置历史命令保存数量 export HISTSIZE=10000 export HISTFILESIZE=20000 # 实时写入历史命令,避免退出终端后丢失 shopt -s histappend PROMPT_COMMAND="history -a"
网络流量监控
异常的网络流量通常意味着服务器被入侵或者正在被攻击,需要监控服务器的端口开放情况、网络连接状态、流量出入情况。
常用的网络监控命令如下:
# 查看当前所有网络连接 netstat -antp # 查看当前监听的端口 netstat -lntp # 查看网络流量使用情况,需要安装iftop工具 yum install -y iftop iftop -i eth0 # 查看当前进程的网络连接情况 ss -antp
常见安全事件识别特征
暴力破解攻击
暴力破解攻击是最常见的服务器安全威胁,特征是在/var/log/secure日志中短时间内出现大量失败的密码验证记录,通常来自同一个IP地址。可以通过以下命令快速识别:
# 统计失败登录的IP及次数
grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr
异常进程运行
服务器被入侵后通常会运行挖矿程序、僵尸网络程序等恶意进程,特征是进程占用极高的CPU或内存资源,且进程路径不在常规的软件安装目录下。可以通过top命令查看占用资源过高的进程,再通过ls -l /proc/进程ID/exe查看进程的实际路径。
异常文件变更
恶意程序通常会在系统中创建新的文件,或者修改系统关键文件如/etc/passwd、/etc/shadow、~/.ssh/authorized_keys等。可以通过find命令查找最近变更的文件:
# 查找最近24小时内修改过的文件 find / -mtime -1 -type f 2>/dev/null # 查找/etc目录下最近修改过的文件 find /etc -mtime -1 -type f
异常网络连接
恶意进程通常会与远程控制服务器建立连接,特征是服务器存在到陌生IP的异常网络连接,或者开放了非业务需要的端口。可以通过netstat或者ss命令查看所有网络连接,识别陌生IP的连接。
安全事件标准化应对流程
事件确认与隔离
当发现疑似安全事件后,首先确认事件的真实性,排除误报可能。确认事件存在后,第一时间对服务器进行隔离,避免影响扩散。如果是云服务器,可以通过安全组暂时封禁所有非管理端口的访问;如果是物理服务器,可以暂时断开公网连接,仅保留管理通道。
恶意程序清除
找到恶意进程后,先结束进程运行,再删除恶意程序文件。操作步骤如下:
# 假设恶意进程ID为1234,结束进程 kill -9 1234 # 查看进程对应的文件路径 ls -l /proc/1234/exe # 删除恶意文件 rm -f 恶意文件路径
同时需要检查定时任务,避免恶意程序被定时拉起:
# 查看系统定时任务 crontab -l # 查看系统级定时任务 cat /etc/crontab ls /etc/cron.d/
漏洞修复与加固
清除恶意程序后,需要排查漏洞成因,修复相关漏洞。常见的原因包括系统或服务存在未修复的漏洞、使用了弱密码、开放了不必要的端口等。对应的加固措施包括:
- 更新系统所有补丁:
yum update -y - 修改所有用户密码为强密码,禁用不必要的用户
- 关闭不必要的端口和服务,仅开放业务需要的端口
- 配置防火墙规则,限制仅允许信任IP访问管理端口
- 配置SSH登录仅允许密钥认证,禁用密码登录
事后审计与监控优化
事件处理完成后,需要对整个事件的处理过程进行审计,记录事件发现时间、影响范围、处理步骤、根本原因等信息。同时根据本次事件的特征,优化现有的监控规则,比如增加对应特征的日志告警,避免同类事件再次发生。
监控体系优化建议
手动监控效率低且容易遗漏,建议搭建自动化的监控告警体系。可以使用Zabbix、Prometheus等开源监控工具,配置资源使用阈值告警、日志关键字告警、异常登录告警等规则,当触发告警时通过邮件、短信等方式通知运维人员。同时定期备份服务器关键数据,避免安全事件导致数据丢失。