实时地监控root密码的修改并立即发出报警可以使用 auditd 和 audisp-remote 来实现这个功能。以下是具体步骤:
安装必要的软件包:sudo yum install audit audisp-plugins postfix mailx配置审计规则:
编辑 /etc/audit/rules.d/audit.rules 文件,添加以下规则:
-w /etc/shadow -p wa -k password-change重启审计服务:
sudo service auditd restart创建一个脚本来处理密码变更事件:
创建一个名为 /usr/local/bin/password_change_alert.sh 的脚本文件:
#!/bin/bash ALERT_EMAIL="your_email@example.com" echo "Root password change detected!" | mail -s "URGENT: Root Password Changed" $ALERT_EMAIL
确保将 your_email@example.com 替换为你想接收警报的邮箱地址。
给脚本添加执行权限:sudo chmod +x /usr/local/bin/password_change_alert.sh配置 audisp-remote:
编辑 /etc/audisp/audisp-remote.conf 文件,确保以下行被正确设置:
active = yes direction = out path = /sbin/audisp-remote type = always format = string配置 audispd:
编辑 /etc/audisp/plugins.d/af_unix.conf 文件,确保以下行被正确设置:
active = yes direction = out path = /sbin/audispd type = always args = /usr/local/bin/password_change_alert.sh format = string重启 auditd 服务:
sudo service auditd restart配置邮件服务:
如果你还没有配置过邮件服务,需要配置 Postfix 来发送邮件。编辑 /etc/postfix/main.cf 文件,添加或修改以下行:
relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt smtp_use_tls = yes
然后创建 /etc/postfix/sasl_passwd 文件:
[smtp.gmail.com]:587 username@gmail.com:password
替换 username@gmail.com 和 password 为你的 Gmail 账户信息。
运行以下命令:
postmap /etc/postfix/sasl_passwd chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db systemctl restart postfix
这样设置后,每当 root 密码被更改,你就会立即收到一封提醒邮件。这个方法会实时监控 /etc/shadow 文件的变化,只要有写入或属性更改的操作,就会触发警报。
请注意,这个方法可能会产生一些误报,因为它监控的是 /etc/shadow 文件的任何更改,而不仅仅是 root 密码的更改。如果你希望更精确地只监控 root 密码的更改,可能需要编写更复杂的脚本来解析审计日志并检查具体是否为 root 密码更改。
另外,为了确保系统安全,建议同时采取其他安全措施,如使用强密码策略、限制 root 登录、使用 SSH 密钥认证等。
网友回复