日志的概念
所谓日志(Log)是指系统所指定对象的某些操作和其操作结果按时间有序的集合。每个日志文件由日志记录组成,每条日志记录描述了一次单独的系统事件。通常情况下,系统日志是用户可以直接阅读的文本文件,其中包含了一个
时间戳和一个信息或者子系统所特有的其他信息。日志文件为服务器、
工作站、防火墙和应用软件等IT资源相关活动记录必要的、有价值的信息,这对系统监控、查询、报表和
安全审计是十分重要的。日志文件中的记录可提供以下用途:监控系统资源;审计用户行为;对可疑行为进行告警;确定入侵行为的范围;为恢复系统提供帮助;生成调查报告;为打击计算机犯罪提供证据来源。
日志的特点
日志记录着系统中特定事件的相关活动信息,从计算机取证角度看,日志主要有以下特点:
不易读懂
虽然大部分系统的日志都以
文本的形式记录,但由于各系统日志格式不一致,不熟悉各类日志格式就很难获取有用的信息。同时有相当部分应用系统并不采用文本格式记录着日志信息,必须借助专用的工具分析这些日志,否则很难读懂其中的日志信息。
数据量大
通常对外服务产生的日志文件如Web服务日志、
防火墙、
入侵检测系统日志和数据库日志以及各类服务器日志等都很大,一个日志文件一天产生的容量少则几十兆、几百兆,多则有几个G,几十个G,这使得获取和分析日志信息变得很困难。
不易获取
由于网络中不同的操作系统、
应用软件、网络设备和服务产生不同的日志文件,即使相同的服务如IIS也可采用不同格式的日志文件记录日志信息。目前国际上还没有形成标准的日志格式,各系统开发商和网络设备生产商往往根据各自的需要制定自己的日志格式,使得不同系统的日志格式和存储方式有所差别。如何获取各类不同系统产生的不同日志文件作为打击计算机犯罪者的电子证据变得尤为困难。
不同日志之间存在某种必然的联系
一个系统的日志是对本系统涉及的运行状况的信息按时间顺序作一简单的记录,仅反映本系统的某些特定事件的操作情况,并不完全反映某一用户的整个活动情况。一个用户在网络活动的过程中会在很多的系统日志中留下痕迹,如防火墙IDS日志、操作系统日志等,这些不同的日志之间存在某种必然的联系来反映用户的活动情况。只有将多个系统的日志结合起来分析,才能准确反映用户活动情况。
容易被修改、破坏甚至伪造
产生系统日志的软件通常为应用系统而不是作为操作系统的子系统运行,所产生的日志记录容易遭到恶意的破坏或修改。系统日志通常存储在系统未经保护的目录中,并以文本方式存储,未经加密和校验处理,没有提供防止恶意篡改的有效保护机制。因此,日志文件并不一定是可靠的,入侵者可能会篡改日志文件,从而不能被视为有效的证据。由于日志是直接反映入侵者痕迹的,在
计算机取证中扮演着重要的角色,入侵者获取系统权限窃取机密信息或破坏重要数据后往往会修改或删除与其相关的日志信息,甚至根据系统的漏洞伪造日志以迷惑系统管理员和审计。
Windows系统日志
以Windows2000/XP为例,日志文件通常有应用程序日志,
安全日志、系统日志、DNS服务器日志、FTP日志、WWW日志等等。 日志文件默认位置: 应用程序日志、安全日志、系统日志、DNS日志默认位置:%sys temroot%\sys tem32\config,默认文件大小512KB,管理员都会改变这个默认大小。
安全日志文件:%sys temroot%\sys tem32\config\SecEvent.EVT
系统日志文件:%sys temroot%\sys tem32\config\SysEvent.EVT
应用程序日志:%sys temroot%\sys tem32\config\AppEvent.EVT
Internet信息服务FTP日志默认位置:%sys temroot%\sys tem32\logfiles\msftpsvc1\
默认每天一个日志 Internet信息服务WWW日志默认位置:%sys temroot%\sys tem32\logfiles\w3svc1\
默认每天一个日志 Scheduler服务日志默认位置:%sys temroot%\schedlgu.txt
以上日志在注册表里的键:
应用程序日志,安全日志,系统日志,DNS服务器日志,它们这些LOG文件在注册表中的位置:
HKEY_LOCAL_MACHINE\sys tem\CurrentControlSet\Services\Eventlog
有的管理员很可能将这些日志重定位。其中EVENTLOG下面有很多的子表,里面可查到以上日志的定位目录。
Schedluler服务日志在注册表中的位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SchedulingAgent
Windows NT/2000主要有以下三类日成记录系统事件:
应用程序日志
记录由应用程序产生的事件。例如,某个数据库程序可能设定为每次成功完成备份操作后都向应用程序日志发送事件记录信息。应用程序日志中记录的时间类型由应用程序的开发者决定,并提供相应的系统工具帮助用户使用应用程序日志。
系统日志
记录由Windows NT/2000操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。系统日志中记录的时间类型由Windows NT/2000操作系统预先定义。
安全日志
记录与安全相关事件,包括成功和不成功的登录或退出、
系统资源使用事件等。与系统日志和应用程序日志不同,安全日志只有
系统管理员才可以访问。
Windows NT/2000的系统日志由事件记录组成。每个事件记录为三个功能区:记录头区、事件描述区和附加数据区。
Linux系统日志
在Unix下,最常用的存放日志文件的目录是:
/usr/adm 早期版本的
Unix /var/adm 较新版本的
Unix /var/log 用于Solaris,Linux,BSD等
/etc Unix system V早期版本
在这些目录下,或其子目录下,你可以找到以下日志文件(也许是其中的一部分):
lastlog 记录用户最后一次成功登录时间
loginlog 不良的登陆尝试记录
messages 记录输出到系统主控台以及由syslog系统服务程序产生的消息
utmp 记录当前登录的每个用户
utmpx 扩展的utmp
wtmp 记录每一次用户登录和注销的历史信息 wtmpx 扩展的wtmp
vold.log 记录使用外部介质出现的错误
xferkig 记录Ftp的存取情况 sulog 记录su命令的使用情况
acct 记录每个用户使用过的命令
aculog 拨出自动呼叫记录
记录输出到系统主控台以及由syslog系统服务程序产生的消息。syslog采用可配置的、统一的系统登记程序,随时从系统各处接受log请求,然后根据/etc/syslog.conf中的预先设定把log信息写入相应文件中、邮寄给特定用户或者直接以消息的方式发往控制台。值得注意的是,为了防止入侵者修改、删除messages里的记录信息,可以采用用打印机记录或跨越网络登记的方式来挫败入侵者的企图。
任何程序都可以通过syslog记录事件。Syslog可以记录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或通过网络记录到另一台主机上的事件。
Syslog依据两个重要的文件:/sbin/syslogd(
守护进程)和/etc/syslog.conf配置文件。习惯上,多数syslog信息被写到/var/adm或/ar/log目录下的信息文件中(*message.)。一个典型的syslog记录包括生成程序的名字和一个文本信息,它还包括一个设备和一个行为级别(但不在日志中出现)。
syslogd & klogd ---------/etc/syslog.conf
/var/log/secure:登录到系统存取资料的记录;FTP、SSH、TELNET...
/var/log/wtmp:记录登录者讯录,二进制文件,须用last来读取内容
/var/log/messages:杂货铺
/var/log/boot.log:记录开机启动讯息,dmesg | more
常识
# ps aux | grep syslog
# chkconfig --list | grep syslog
# cat /var/log/secure
/etc/syslog.conf 哪些服务产生的哪些等级讯息记录到哪里
记录到相同地方的多个讯息源用分号间隔
vi /etc/syslog.conf
接收远程日志
# grep 514 /etc/services
syslog 514/udp
vi /etc/sysconfig/syslog
# 将SYSLOGD_OPTIONS="-m 0"
# 改成
SYSLOGD_OPTIONS="-m 0 -r"
/etc/init.d/syslog restart
[root@linux ~]# netstat -tlunp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:514 0.0.0.0:* 24314/syslogd
对应client
# vi /etc/syslog.conf
*.* @192.168.1.100
logrotate
* /etc/
logrotate.conf
* /etc/logrotate.d/
logrotate.conf 才是主要配置文件,而/logrotate.d /这个目录内的所有文件都被读入 /etc/logrotate.conf来执行!
如果在 /etc/logrotate.d/ 目录文件中,没有相应的细节设定则以 /etc/logrotate.conf 设定为
缺省值!
vi /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler
/var/log/boot.log /var/log/cron {
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
1、用空格作多个档案分隔
2、所有设定在{}中
3、# prerotate:在启动logrotate执行的指令
# postrotate:在做完 logrotate后需处理的指令
logrotate [-vf] logfile
参数:
-v :显示过程
-f :强制执行
而 logrotate 的工作加入到 crontab /etc/cron.daily/logrotate;所以系统每天自动查看
只是要注意一下:/var/log/messages 是否有这样的类似内容
Oct 24 15:15:35 localhost syslogd 1.4.1: restart.
四、实例:
要求: 登录档案每月替换一次
若> 10MB ;强制替换,不不考虑一个月的期限;
保存五备份文档;
备份文档不压缩。
步骤1:
root@linux ~]#
chattr +a /var/log/admin.log
[root@linux ~]# lsattr /var/log/admin.log
-----a------- /var/log/admin.log
只能新增不能删节除,除非chattr -a /var/log/admin.log
[root@linux ~]# mv /var/log/admin.log /var/log/admin.log.1
mv: cannot move '/var/log/admin.log' to '/var/log/admin.log.1':permission deny
步骤2:
vi /etc/logrotate.d/admin
# This configuration is from VBird 2005/10/24
/var/log/admin.log {
monthly
size=10M
rotate 5
nocompress
sharedscripts
prerotate
/usr/bin/chattr -a /var/log/admin.log
endscript
sharedscripts
postrotate
/usr/bin/killall -HUP syslogd
/usr/bin/chattr +a /var/log/admin.log
endscript
}
步骤3:测试
# logrotate -v /etc/logrotate.conf
.....(前面省略).....
rotating pattern: /var/log/admin.log 10485760 bytes (5 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/admin.log
log does not need rotating
not running shared prerotate script, since no logs will be rotated
............
# logrotate -vf /etc/logrotate.d/admin
reading config file /etc/logrotate.d/admin
reading config info for /var/log/admin.log
也就是说: /etc/syslog.conf 与/etc/logrotate.d/* 对应文档搭配起来使用;先由syslogd 按照syslog.conf指定的方法处理消息,
然后送给 logrotat来按照/etc/logrotate.d/*文档要求来轮替日志。
常见指令
# dmesg | more 读/var/log/boot.log
dmesg | grep 'eth'
# last -n number
[root@linux ~]# last -f filename
-n :number
-f :last 预设值为读 /var/log/wtmp 文档,而 -f 读取不同的文档
# last -n 5 -f /var/log/wtmp.1
dmtsai2 pts/2 Mon Oct 24 14:18 - 14:18 (00:00)
dmtsai2 work:0 work Mon Oct 24 14:18 gone - no logout
dmtsai2 work:0 work Mon Oct 24 14:18 - 14:18 (00:00)
dmtsai2 pts/2 Mon Oct 24 14:18 - 14:18 (00:00)
dmtsai2 work:0 work Mon Oct 24 14:18 - 14:18 (00:00)
# lastlog
只读取/var/log/lastlog 内容,只包括当前系统上面所有的账号最近一次LOGIN的时间。