1. 日志与审计,审计提供了一种用来追踪用户活动的办法,在Unix/Linux中可以使用syslogd这样的一个守护进程来进行审计,通过配置这样的一个后台程序可以提供各种水平的系统审计和指定输出目录
a) 日志系统,Unix提供了3中日志系统
i. 记录连接时间的日志,系统中的多个进程运行的时候,把记录写入到/var/log/wtmp和/var/run/utmp。这两个文件的更新由login等进程来完成,以便管理员跟踪谁在何时登陆了系统
ii. 进程统计,用来记录进程的执行和终止,进程统计由系统内核来完成,目的是为了系统中的基本服务提供命令使用情况统计
iii. 错误统计,由syslog来完成,各种系统守护进程。用户程序和内核通过syslog来向文件/var/log/message来报告值得注意的事件
b) 连续时间日志,有关用户当前的登陆信息都会被记录在文件/var/run/utmp中,登入登出的记录在文件/var/log/wtmp中,数据的交换可重启也记录在wtmp文件中,这些文件中的记录都包含时间戳。其中wtmp文件和utmp文件都是二进制文件,不能使用tail命令剪切也不能使用cat命令合并,用户需要使用几个特殊的命令来读取这两个文件所包含的信息,如下:
i. who命令,who命令用于查询utmp文件然后报告当前登录的每个账户,who的确性输出包括用户名、终端类型、登录日期以及远程主机。如果为who指明了wtmp文件即 who /var/log/wtmp,命令会报告从wtmp文件创建以来的每一次登录,然后我再Ubuntu下使用了这个命令但是什么也没有输出,即便我使用了sudo以root身份执行命令。我还试了试who /var/run/utmp这样跟缺省的who命令输出是一样的。
ii. W命令可以用来查询utmp文件并显示当前系统中每个用户和它所运行的进程的信息,就只要一个w就可以了
iii. users命令,users命令用单独的一行输出当前登录的用户,在我的测试中只输出了一个
iv. last命令用于查询wtmp文件第一次创建的时间,也就是开始记录的时间,如果指明用户,那么报告用户近期的活动,但是在ubuntu中指明用户与不直面用户并没有什么不一样
v. ac命令,ac这个命令用于根据/var/log/wtmp文件中的记录的登陆推出时间来报告用户连接的时间(小时),这个命令在ubuntu中是默认不存在的,需要自己安装,可以使用sudo apt install acct来安装(当然这是需要联网安装的)
c) 进程统计日志,当有一个进程终止的时候,为每个进程往进程统计文件pacct和acct中写一个记录,进程统计的基本目的就是为系统中基本服务提供命令使用统计。与连接时间日志不同的是,进程统计子系统默认是不激活的,它必须启动,在ubuntu中这个命令也是需要自己安装的,而且安装所使用的命令与ac命令是相同的。都是sudo apt install acct,accton命令必须使用root身份来运行,基本的命令形式是accton 文件,其中后面的这个文件是一个必须的参数,可以用touch命令来创建一个这样的日志文件,其中touch命令一般用于创建一个不存在的文件或修改一个文件的时间戳。一旦accton被激活,那么就可以使用lastcomm命令来检测系统中任何时候执行的任何命令。若要关闭统计那么可以使用不带参数的accton命令 进程统计日志会产生的一个问题就是pacct文件增长会特别快,这个时候就需要清理压缩这些日志文件,可以使用sa命令来保持日志数据的数量在系统的控制之内
d) 错误日志,由syslogd来执行,多数的syslog信息被写入了/var/log目录下的信息文件中,syslogd通过/etc/syslog.conf文件指明的来记录日志的行为,该程序在启动的时候查询配置文件。该文件由不同的程序或消息分类的单个条目组成,每个占一行,对每一类消息提供一个选择域或一个动作域,选择域指明消息的类型和优先级,动作域指明syslogd接受到的一个与选择标准相匹配的消息时所执行的动作。syslogd仅记录一个拥有相同或更高优先级的消息,而且每行的行动域指明了选择一个给定的消息后应该把它发送到哪
e) 远程日志记录方式,syslogd的默认配置是不接受来自网络上的消息的,远程日志记录就是在本机上记录一份,另外还会自动把日志发送到指定的主机名,这样即便攻击者破坏了日志,那么通过远程主机的日志也可以分析出这个事件
首发于我的个人网站: 点击打开链接