要查看用户登录记录并排查安全问题,必须结合last命令与auditd审计日志分析。1. 使用last命令可快速查看登录历史,如last查看所有记录,last username查询特定用户,last -n 10显示最近10条,last reboot查看重启记录,last -f /var/log/wtmp.1读取历史wtmp文件;但其依赖的/var/log/wtmp文件易被篡改,存在安全隐患。2. 配置auditd可实现更可靠的审计:通过sudo apt-get install auditd或yum install auditd安装并启动服务,编辑/etc/audit/rules.d/audit.rules添加-w /var/log/wtmp -p wa -k login_attempts和-w /var/log/btmp -p wa -k failed_login_attempts规则以监控成功与失败登录,重启auditd生效。3. 使用sudo ausearch -k login_attempts和sudo ausearch -k failed_login_attempts搜索对应事件,分析时间、uid、ip等信息。4. 分析异常行为包括:短时间内大量失败登录(可能为暴力破解)、非工作时间或异常ip登录;可通过编写python脚本调用ausearch自动检测失败登录频率,超过阈值则告警。综上,应以auditd为核心,结合last命令和自动化分析,全面追踪用户活动并保障系统安全。

查看用户登录记录,关键在于利用
last
last命令审计日志分析
last
/var/log/wtmp
last
如何使用last命令?
last
last
last username
last john
last -n 10
last reboot
last -f /var/log/wtmp.1
但要注意,
last
/var/log/wtmp
如何配置和使用auditd审计日志?
auditd
last
首先,确保
auditd
sudo apt-get install auditd # Debian/Ubuntu sudo yum install auditd # CentOS/RHEL sudo systemctl start auditd sudo systemctl enable auditd
接下来,配置审计规则。编辑
/etc/audit/rules.d/audit.rules
-w /var/log/wtmp -p wa -k login_attempts -w /var/log/btmp -p wa -k failed_login_attempts
这两条规则分别监控
/var/log/wtmp
/var/log/btmp
login_attempts
failed_login_attempts
重启
auditd
sudo systemctl restart auditd
现在,你可以使用
ausearch
sudo ausearch -k login_attempts # 查找登录成功的记录 sudo ausearch -k failed_login_attempts # 查找登录失败的记录
ausearch
如何分析审计日志中的异常登录行为?
仅仅记录登录信息是不够的,还需要分析这些信息,找出异常行为。比如:
要自动化分析这些信息,可以使用
auditd
例如,你可以编写一个简单的脚本,定期分析审计日志,查找短时间内大量登录失败的记录:
#!/usr/bin/env python3
import subprocess
import re
def analyze_failed_logins(time_window=60, threshold=5):
"""
Analyzes audit logs for failed login attempts within a given time window.
"""
cmd = f"sudo ausearch -k failed_login_attempts -ts recent -i"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
log_lines = result.stdout.splitlines()
login_attempts = []
for line in log_lines:
if "time->" in line:
timestamp = re.search(r"time->(.*)", line).group(1).strip()
uid_match = re.search(r"uid=(.*?) ", line)
uid = uid_match.group(1) if uid_match else "N/A"
login_attempts.append((timestamp, uid))
# Simple analysis: Count failed logins per user within the time window
user_counts = {}
for timestamp, uid in login_attempts:
if uid not in user_counts:
user_counts[uid] = 0
user_counts[uid] += 1
for user, count in user_counts.items():
if count > threshold:
print(f"Possible brute-force attack detected for user {user}: {count} failed logins in the last {time_window} seconds.")
if __name__ == "__main__":
analyze_failed_logins()这个脚本会调用
ausearch
这只是一个简单的例子,实际应用中,你需要根据你的安全需求,编写更复杂的分析脚本。 关键是理解
auditd
以上就是如何查看用户登录记录 last命令审计日志分析的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号