浅析Linux操作系统登录帐户的管理和审计
1、登录帐户管理
在Linux下登录用户帐户的管理是通过utmp和wtmp这两个工具来实现的。wtmp还记录系统重启和系统状态变化的有关信息。所有与utmp和wtmp相关的数据都分别被保存在/var/run/utmp和/var/log/wtmp这两个文件中。这两个文件均归属于root用户所有并且访问权限被设置为644,这些文件中的数据是加密过的。可以用dump-utmp这个工具将原始的数据转换为ASCII的数据,便于系统管理员分析用户的登录以及系统重启和系统状态变化的有关信息。
登录帐户管理的相关命令
last 命令提供了每个用户登录和退出的时间,同时还有系统重新启动以及运行状态改变的信息。默认情况下,last分析/var/log/wtmp文件并显示每个连接和运行状态改变的信息。Last输出的信息可能太多而让查看的人无法应付,典型的用法是last –5,表示查看/var/log/wtmp中的最新5条记录的内容。
who 命令的主要用处是报告系统中当前登录进来的用户信息。Who命令提供了如下的信息:用户登录进入使用的系统终端设备、用户的地址、使用的主机名、X显示的窗口(假如使用了X Windows系统)、用户是否接受其他用户的消息和交谈请求等。
ac 命令提供了有关用户连接的大概统计,我们可以使用带有标志 d 和 p 的 ac 命令。标志 d 显示了一天的总连接统计,标志 p 显示了每一个用户的连接时间。这种统计信息的方式对了解与探测入侵有关的用户情况及其他活动很有帮助。
lastlog 命令读取/var/log/lastlog文件并产生用户最后一次登录信息的报告lastlog命令也用于在Linux系统中检查不寻常的登录记录。
2、系统帐户的审计
Linux操作系统可以通过设置日志文件可以对每个用户的每一条命令进行纪录,不过这一功能默认是没有打开的。
开启这个功能的过程:
# touch /var/log/pacct
# action /var/log/pact
也可以用自已的文件来代替/var/log/pacct这个文件。但必须路径和文件名的正确。
sa命令与 ac 命令一样,sa 是一个统计命令。该命令可以获得每个用户或每个命令的进程使用的大致情况,并且提供了系统资源的消费信息。在很大程度上,sa 又是一个记帐命令,对于识别特殊用户,特别是已知特殊用户使用的可疑命令十分有用。另外,由于信息量很大,需要处理脚本或程序筛选这些信息。
lastcomm命令, 与 sa 命令不同,lastcomm 命令提供每一个命令的输出结果,同时打印出与执行每个命令有关的时间印戳。就这一点而说,lastcomm 比 sa 更有安全性。如果系统被入侵,请不要相信在 lastlog、utmp、wtm中记录的信息,但也不要忽略,因为这些信息可能被修改过了。另外有可能有人替换了who程序来掩人耳目。通常,在已经识别某些可疑活动后,进程记帐可以有效的发挥作用。使用 lastcomm 可以隔绝用户活动或在特定时间执行命令。
3、使用logrorate对审计文件管理
/var/log/utmp,/var/log/wtmp和/var/log/pacct文件都是动态的数据文件。wtmp和pacct文件是在文件尾部不断地增加记录。在繁忙的网络上,这些文件会变得很大。Linux提供了一个叫logrotate的程序,它允许管理员对这些文件进行管理。
Logrotate读取/etc/logrotate.d目录下的文件。管理员通过该目录下的脚本文件,控制logrotate程序的运作。一个典型的脚本文件如下:
{
rotate 5
weekly
errors root@serve1r
mail root@server1
copytruncate
compress
size 100k
}
脚本文件的含义如下:
● rotate 5——保留该文件一份当前的备份和5份旧的备份。
● weekly——每周处理文件一次,通常是一周的第一天。
● errors——向邮件地址发送错误报告。
● mail——向邮件地址发送相关的信息。
● copytruncate——允许进程持续地记录,备份文件创建后,把活动的日志文件清空。
● compress——使用gzip工具对旧的日志文件进行压缩。
● size 100k——当文件超过100k 时自动处理。