who命令:实时显示当前登录系统的用户信息,包括用户名、登录终端(如pts/3)、登录时间及IP地址(若为远程登录)。ubuntu@ubuntu-xz:~$ who 输出类似 ubuntu-xz pts/3 2020-03-25 08:22 (100.100.89.82)。last命令:读取/var/log/wtmp文件,列出所有用户的最近登录/登出记录,包含用户名、登录终端、IP地址、登录时间及状态(如still logged in)。last 输出类似 ubuntu-xz pts/1 :0 Thu May 21 12:54 still logged in。lastlog命令:读取/var/log/btmp文件,显示所有用户的最后登录时间(包括从未登录过的用户)。若用户从未登录,会标注**Never logged in**。lastlog 输出类似 Username Port From Latest,其中Latest列表示最后登录时间。/var/log/auth.log(Debian/Ubuntu系),记录用户认证相关的事件(如登录、登出、密码修改、sudo使用等)。sudo grep "session opened" /var/log/auth.log(匹配pam_unix模块的session opened记录)。sudo grep "invalid user" /var/log/auth.log(匹配无效用户名的登录尝试)或 sudo grep "authentication failure" /var/log/auth.log(匹配密码错误的尝试)。sudo grep "session closed" /var/log/auth.log(匹配pam_unix模块的session closed记录)。sudo cat /var/log/auth.log | grep "session opened" 可提取所有用户登录成功的记录。~/.bash_history文件中(如/home/ubuntu/.bash_history),可通过cat或less命令查看。history命令不显示执行时间。需修改/etc/profile(全局)或用户级配置文件(如~/.bashrc),添加以下内容启用时间戳:HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S: `whoami` : "
export HISTTIMEFORMAT
执行source /etc/profile使配置生效,之后history命令会显示每条命令的执行时间及操作用户。.bash_history文件,可将所有用户的命令历史集中存储到/var/log/history目录。编辑/etc/profile,添加以下内容:USER=`whoami`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$(date +%Y%m%d_%H:%M:%S)"
chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null
执行source /etc/profile后,每个用户的命令历史会以用户名@IP_时间戳的格式存储在/var/log/history目录下,确保日志完整性。auditd进行深度审计(系统调用与文件访问)auditd:auditd是Linux内核的审计工具,可记录系统调用、文件访问、用户权限变更等详细事件。sudo apt update && sudo apt install auditd audispd-plugins。sudo systemctl start auditd && sudo systemctl enable auditd。/etc/audit/rules.d/audit.rules(Ubuntu 18.04及以上版本),添加以下常见规则:
execve系统调用):-a exit,always -F arch=b32 -S execve -S execveat -k executed-process(32位);-a exit,always -F arch=b64 -S execve -S execveat -k executed-process(64位)。-w /var/log/auth.log -p wa -k auth_log(监控认证日志文件的写入/修改)。/etc/shadow):-w /etc/shadow -p rwxa -k shadow_access(监控读/写/执行/属性变更)。sudo auditctl -R /etc/audit/rules.d/audit.rules。sudo ausearch -m avc -ts recent(-m avc表示监控访问控制事件,-ts recent表示最近10分钟内的事件)。sudo ausearch -m avc -ts recent -i(-i表示将事件ID转换为可读信息,如进程名、用户)。sudo aureport -m selinux(生成SELinux相关事件的报告);sudo aureport -k(按关键字过滤事件)。auth.log会压缩为auth.log.1.gz),可通过logrotate工具调整轮转策略(如保留天数、文件大小),避免日志占满磁盘。/var/log/audit/audit.log)和用户操作日志(如/var/log/history)需设置严格权限(如chmod 600),防止未经授权的修改或删除。