如何查看用户登录记录 last命令审计日志分析
发布时间 - 2025-09-01 00:00:00 点击率:次要查看用户登录记录并排查安全问题,必须结合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
: 显示最近10条记录。last reboot
: 查看系统重启记录,这对于诊断系统问题很有用。last -f /var/log/wtmp.1
: 指定不同的wtmp文件,比如查看历史的登录记录。
但要注意,
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的输出会包含很多信息,包括时间戳、用户ID、进程ID等。你需要仔细分析这些信息,才能还原用户登录行为。
如何分析审计日志中的异常登录行为?
仅仅记录登录信息是不够的,还需要分析这些信息,找出异常行为。比如:
- 短时间内大量登录失败: 这可能是暴力破解攻击的迹象。
- 非工作时间登录: 可能是账户被盗用。
- 来自异常IP地址的登录: 同样可能是账户被盗用。
要自动化分析这些信息,可以使用
auditd的日志分析工具,或者将日志导入到SIEM(安全信息和事件管理)系统中。SIEM系统可以关联多个日志源,提供更全面的安全分析。
例如,你可以编写一个简单的脚本,定期分析审计日志,查找短时间内大量登录失败的记录:
#!/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的强大之处,并善用它来监控和分析系统安全事件。
# python
# centos
# ubuntu
# 工具
# ai
# win
# 排列
# python脚本
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
大连网站制作公司哪家好一点,大连买房网站哪个好?
如何在VPS电脑上快速搭建网站?
如何在Windows虚拟主机上快速搭建网站?
英语简历制作免费网站推荐,如何将简历翻译成英文?
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Laravel如何处理文件下载请求?(Response示例)
如何将凡科建站内容保存为本地文件?
手机网站制作与建设方案,手机网站如何建设?
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
javascript如何操作浏览器历史记录_怎样实现无刷新导航
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何快速搭建高效服务器建站系统?
JavaScript如何实现继承_有哪些常用方法
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
使用spring连接及操作mongodb3.0实例
如何在 Pandas 中基于一列条件计算另一列的分组均值
公司网站制作需要多少钱,找人做公司网站需要多少钱?
Laravel如何使用模型观察者?(Observer代码示例)
Laravel如何使用Service Container和依赖注入?(代码示例)
Laravel怎么在Blade中安全地输出原始HTML内容
如何获取PHP WAP自助建站系统源码?
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
如何在橙子建站中快速调整背景颜色?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
如何在万网自助建站中设置域名及备案?
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
微信小程序 scroll-view组件实现列表页实例代码
如何实现javascript表单验证_正则表达式有哪些实用技巧
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
php 三元运算符实例详细介绍
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
Swift中swift中的switch 语句
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
香港服务器网站卡顿?如何解决网络延迟与负载问题?
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
Laravel如何实现事件和监听器?(Event & Listener实战)
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)

