Ubuntu日志中管理用户登录信息的方法
last命令:查看系统启动以来的用户登录、注销及系统重启记录,数据源自/var/log/wtmp文件。执行last可显示用户名、终端类型、登录IP、登录时间及会话状态(如“still logged in”表示仍在登录)。该命令是快速了解近期登录情况的常用工具。lastlog命令:查看所有用户的最后一次成功登录信息,包括登录时间、IP地址,数据源自/var/log/lastlog文件。执行lastlog会列出所有用户(包括从未登录过的),从未登录的用户会显示“Never logged in”。who命令:显示当前登录的用户信息,包括用户名、终端类型、登录时间及来源(本地或IP地址),数据源自/var/run/utmp文件。执行who可快速掌握当前系统活跃用户。w命令:扩展了who的功能,不仅显示当前登录用户,还提供用户正在执行的命令、空闲时间、CPU占用等详细信息,数据同样源自/var/run/utmp文件。lastb命令:查看失败的登录尝试记录(如密码错误、无效用户),数据源自/var/log/btmp文件(需root权限)。该命令是检测潜在入侵尝试的重要工具,执行sudo lastb可查看失败登录的详细信息。Ubuntu的用户认证日志主要存储在/var/log/auth.log(Debian/Ubuntu)或/var/log/secure(Red Hat/CentOS)中,记录了用户登录、登出、sudo操作、密码修改等认证相关事件。可通过以下命令筛选关键信息:
sudo grep "session opened" /var/log/auth.log(“session opened”表示用户成功登录);sudo grep "sshd" /var/log/auth.log(SSH登录会记录在sshd服务日志中);sudo grep "invalid user" /var/log/auth.log(无效用户尝试登录的记录)或sudo grep "authentication failure" /var/log/auth.log(认证失败记录)。若需要更详细的用户操作记录(包括命令执行时间、IP地址),可通过修改系统配置文件实现:
/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 HISTSIZE=4096
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$(date +"%Y%m%d_%H:%M:%S")"
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S: ${USER} : "
chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null
这段代码的作用是将用户的命令历史记录到/var/log/history/${用户名}/目录下,文件名包含用户名、IP地址及执行时间(如root@192.168.1.100_20251028_10:30:00),并设置日志文件的权限(仅用户自己可读写)。source /etc/profile,后续用户的操作命令将自动记录到指定目录。/var/log/auth.log、/var/log/wtmp、/var/log/btmp)包含敏感信息,需确保只有root用户可访问。可使用chmod 600命令设置权限,例如sudo chmod 600 /var/log/auth.log。cron任务定期检查登录记录,例如每周检查一次失败登录尝试,及时发现异常。可将以下命令添加到/etc/crontab中:0 3 * * 0 root /usr/bin/grep "invalid user" /var/log/auth.log >> /var/log/failed_login_audit.log
该任务会在每周日凌晨3点执行,将失败登录记录追加到/var/log/failed_login_audit.log中。fail2ban等工具,自动分析登录日志并封禁可疑IP地址。例如,安装fail2ban后,配置/etc/fail2ban/jail.local文件启用SSH防护,设置maxretry=3(允许的最大失败次数)和bantime=600(封禁时间,单位秒),可有效防止暴力破解。