监控linux用户登录尝试的方法有:1.使用faillog查看失败记录;2.配置pam_faillock.so锁定账户;3.监控日志文件实时追踪;4.设置邮件告警。具体如下:使用faillog命令可查看或重置用户登录失败次数,如sudo faillog -u john清除特定用户的记录;通过在/etc/pam.d/sshd中添加pam_faillock.so模块并设置deny=3和unlock_time=900实现三次失败后锁定15分钟;使用tail -f或grep命令监控/var/log/auth.log中的登录尝试,并结合awk统计ip的失败次数;安装fail2ban配置jail.local文件,定义封禁规则与邮件通知,当检测到三次错误密码时自动封禁ip并发送邮件告警。
直接告诉你怎么监控linux用户登录尝试,最简单也最常用的就是用faillog来查看失败的登录记录。
解决方案
faillog命令可以显示登录失败的尝试次数。它会读取/var/log/faillog文件,这个文件记录了每个用户的登录失败信息。要查看所有用户的失败登录记录,直接运行:
sudo faillog
这会列出每个用户的用户名和失败登录次数。如果你只想看特定用户的,比如john,那就:
sudo faillog -u john
如果想清除某个用户的失败登录记录,可以这样:
sudo faillog -u john -r
-r参数就是重置的意思。
另外,还可以设置用户登录失败多少次后锁定账号。这通常是通过pam_faillock.so模块实现的。这个模块会在/etc/pam.d/目录下的各种服务配置文件中使用,比如sshd或login。
如何配置pam_faillock.so来锁定用户?
首先,找到你想要保护的服务配置文件,比如/etc/pam.d/sshd。然后,在auth和account部分分别添加如下行:
auth required pam_faillock.so preauth audit deny=3 unlock_time=900 account required pam_faillock.so audit deny=3 unlock_time=900
这里的deny=3表示允许3次失败尝试,unlock_time=900表示锁定时间是900秒(15分钟)。preauth参数确保在用户输入密码之前就进行检查。audit参数用于记录审计日志。
配置完成后,重启SSH服务:
sudo systemctl restart sshd
现在,如果用户连续输入3次错误的密码,账号就会被锁定15分钟。
除了faillog和pam_faillock.so,还有其他监控方法吗?
当然有。还可以通过监控/var/log/auth.log或/var/log/secure文件来实时追踪登录尝试。这两个文件记录了系统认证相关的事件,包括成功的和失败的登录。
可以使用tail -f命令来实时查看日志:
sudo tail -f /var/log/auth.log
或者使用grep命令来过滤失败的登录尝试:
sudo grep "Failed password" /var/log/auth.log
这会显示所有包含”Failed password”的行,也就是失败的密码尝试。
还可以结合awk等工具来进一步分析日志,比如统计某个IP地址的失败登录次数:
sudo grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
这个命令会列出所有尝试登录的IP地址,以及每个IP地址的失败次数,并按照失败次数从高到低排序。
如何设置邮件告警,当检测到异常登录时自动发送通知?
这个需要结合logwatch或者fail2ban等工具来实现。logwatch可以定期分析日志文件,并生成报告,然后通过邮件发送给你。fail2ban则可以实时监控日志,当检测到恶意行为时,自动封禁IP地址。
以fail2ban为例,首先安装它:
sudo apt install fail2ban
然后,配置/etc/fail2ban/jail.local文件。这个文件可以覆盖/etc/fail2ban/jail.conf中的默认配置。
添加如下配置:
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 findtime = 600 bantime = 3600 destemail = your_email@example.com sendername = Fail2Ban action = %(action_mwl)s
这里的maxretry = 3表示允许3次失败尝试,findtime = 600表示在600秒内,bantime = 3600表示封禁时间是3600秒(1小时)。destemail是接收告警邮件的邮箱地址。action = %(action_mwl)s表示使用默认的邮件告警动作。
配置完成后,重启fail2ban服务:
sudo systemctl restart fail2ban
现在,当有人连续输入3次错误的SSH密码时,fail2ban会自动封禁该IP地址,并发送邮件告警。