linux系统日志:透析Linux日志查入侵

日志对于网络安全来说无疑是非常重要它记录了系统每天发生各种各样你可以通过它来检查发生原因或者受到攻击后攻击者留下痕迹日志主要功能有审计和监测同时它也可以实时监测系统状态监测入侵者
日志子系统分类
在Linux系统中有 3个主要日志子系统:
连接时间日志——由多个执行把纪录写入到/var/log/Wtmp和/var/run/UtmpLogin等更新Wtmp和Utmp文件使系统管理员能够跟踪谁在何时登录到系统
进程统计——由系统内核执行个进程终止时为每个进程往进程统计文件(Pacct或Acct)中写个纪录进程统计是为系统中基本服务提供命令使用统计
日志——由Syslogd(8)执行各种系统守护进程、用户和内核通过Syslog(3)向文件/var/log/messages报告值得注意事件另外有许多UNIX创建日志像HTTP和FTP这样提供网络服务服务器也保持详细日志
常用日志文件如下:
Access-log:纪录HTTP/WEB传输
Acct/pacct:纪录用户命令
Aculog:纪录MODEM活动
Btmp:纪录失败纪录
Lastlog:纪录最近几次成功登录事件和最后次不成功登录
Messages:从Syslog中记录信息(有链接到Syslog文件)
Sudolog:纪录使用Sudo发出命令
Sulog:纪录“su”使用
Utmp:纪录当前登录每个用户
Wtmp:个用户每次登录进入和退出时间永久纪录
Xferlog:纪录FTP会话
日志记录基本过程
Utmp、Wtmp和Lastlog日志文件是多数重用UNIX日志子系统关键——保持用户登录进入和退出纪录有关当前登录用户信息记录在文件Utmp中;登录进入和退出纪录在文件Wtmp中;最后次登录文件可以用“Lastlog”命令察看数据交换、关机和重起也记录在Wtmp文件中所有纪录都包含时间戳这些文件(Lastlog通常不大)在具有大量用户系统中增长十分迅速例如Wtmp文件可以无限增长除非定期截取许多系统以天或者周为单位把Wtmp配置成循环使用它通常由Cron运行脚本来修改这些脚本重新命名并循环使用Wtmp文件
小知识:通常Wtmp在第天结束后命名为Wtmp.1;第 2天后Wtmp.1变为Wtmp.2直到Wtmp.7
每次有个用户登录时Login在文件Lastlog中察看用户UID如果找到了则把用户上次登录、退出时间和主机名写到标准输出中然后Login在Lastlog中纪录新登录时间在新Lastlog纪录写入后Utmp文件打开并插入用户Utmp纪录该纪录直用到用户登录退出时删除Utmp文件被各种命令文件使用包括Who、Users和FingerLogin打开文件Wtmp附加用户Utmp纪录当用户登录退出时具有更新时间戳Utmp纪录附加到文件中Wtmp文件被Last和AC使用
查看具体日志
Wtmp和Utmp文件都是 2进制文件它们不能被诸如Tail命令剪贴或合并(需要使用Cat命令)用户需要使用Who、W、Users、Last和AC来使用这两个文件包含信息
1.Who:该命令查询Utmp文件并报告当前登录每个用户Who缺省输出包括用户名、终端类型、登录日期及远程主机例如输入Who回车后显示:
chyang pts/0 Aug 18 15:06
ynguo pts/2 Aug 18 15:32
ynguo pts/3 Aug 18 13:55
lewis pts/4 Aug 18 13:35
ynguo pts/7 Aug 18 14:12
ylou pts/8 Aug 18 14:15
如果指明了Wtmp文件名则Who命令查询所有以前纪录命令“Who /var/log/Wtmp”将报告从Wtmp文件创建或删改以来次登录
2.W:该命令查询Utmp文件并显示当前系统中每个用户和它所运行进程信息
3.Users:Users用单独行显示出当前登录用户每个显示用户名对应个登录会话如果个用户有不止个登录会话那他用户名将显示相同次数例如输入Users回车后显示:
chyang lewis lewis ylou ynguo ynguo
4.Last:Last命令往回搜索Wtmp显示从文件第次创建以来登录过用户例如:
chyang pts/9 202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49)
cfan pts/6 202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14)
chyang pts/4 202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40)
lewis pts/3 202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03)
lewis pts/2 202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12)
如果指明了用户那么Last只报告该用户近期活动例如:last ynguo显示:
ynguo pts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30)
ynguo pts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44)
ynguo pts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16)
ynguo pts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25)
5.AC:AC命令根据当前/var/log/Wtmp文件中登录进入和退出来报告用户连结时间(小时)如果不使用标志则报告总时间例如:ac显示:
total 5177.47
ac -d(回车)显示每天连结时间:
Aug 12 total 261.87
Aug 13 total 351.39
Aug 14 total 396.09
Aug 15 total 462.63
Aug 16 total 270.45
ac -p(回车)显示每个用户连接时间:
ynguo 193.23
yucao 3.35
rong 133.40
hdai 10.52
6.Lastlog:Lastlog文件在每次有用户登录时被查询可以使用Lastlog命令来检查某特定用户上次登录时间并格式化输出上次登录日志/var/log/Lastlog内容它根据UID排序显示登录名、端口号(tty)和上次登录时间例如:
rong 5 202.38.64.187 Fri
Aug 18 15:57:01 +0800 2000
dbb
**Never logged in**
xinchen
**Never logged in**
pb9511
**Never logged in**
小知识:如果个用户从未登录过Lastlog显示"**Never logged**注意这个命令需要以ROOT权限运行
另外可在命令后加些参数实现其它功能例如“last -u 102”将报告UID为102用户“last -t 7”表示限制上报告
进程审查
UNIX可以跟踪每个用户运行每条命令如果想知道昨晚别人弄乱了哪些重要文件进程统计子系统可以告诉你点无疑对跟踪入侵者很有帮助和连接时间日志区别进程统计子系统缺省不激活它必须启动在Linux系统中启动进程统计使用Accton命令必须用ROOT身份来运行先使用Touch命令来创建Pacct文件:
touch /var/log/pact
然后运行Accton:
Accton /var/log/pact
旦Accton被激活就可以使用Lastcomm命令监测系统中任何时候执行命令若要关闭统计可以使用不带任何参数Accton命令
小知识:Lastcomm命令报告以前执行文件不带参数时Lastcomm命令显示当前统计文件生命周期内纪录所有命令有关信息包括命令名、用户、TTY、命令耗费CPU时间和个时间戳如果系统有许多用户输入则可能很长
进程统计存在个问题是Pacct文件可能增长十分迅速这时需要交互式或经过Cron机制运行SA命令来保持日志数据在系统控制内
小知识:SA命令报告、清理并维护进程统计文件它能把/var/log/pacct中信息压缩到摘要文件/var/log/savacct和/var/log/usracct中这些摘要包含按命令名和用户名分类系统统计数据SA缺省情况下先读它们然后读Pacct文件使报告能包含所有可用信息SA输出有下面些标记项:
Avio——每次执行平均I/O操作次数
Cp——用户和系统时间总和以分钟计
Cpu——和cp
K——内核使用平均CPU时间以1k为单位
K*sec——CPU存储完整性以1k-core秒
Syslog设备
Syslog已被许多日志采纳它用在许多保护措施中Syslog可以纪录系统事件并写到个文件或设备中或给用户发送个信息它能纪录本地事件或通过网络纪录另个主
机上事件
Syslog设备依据两个重要文件:/etc/Syslogd(守护进程)和/etc/Syslog.conf配置文件习惯上多数Syslog信息被写到/var/adm或/var/log目录下信息文件(messages.*)中个典型Syslog纪录包括生成名字和个文本信息它还包括个设备和个优先级范围每个Syslog消息被赋予下面主要设备的:
LOG_AUTH——认证系统:Login、SU、Getty等
LOG_CRON——Cron守护进程
LOG_DAEMON——其它系统守护进程如Routed
LOG_FTP——文件传输协议:Ftpd、Tftpd
LOG_KERN——内核产生消息
LOG_MAIL——电子邮件系统
LOG_SYSLOG——由Syslogd(8)产生内部消息
LOG_LOCAL0~LOG_LOCAL7——本地使用保留
Syslog为每个事件赋予几个区别优先级:
LOG_EMERG——紧急情况
LOG_ALERT——应该被立即改正问题如系统数据库破坏
LOG_CRIT——重要情况如硬盘
LOG_ERR——
LOG_WARNING——警告信息
LOG_NOTICE——不是情况但是可能需要处理
LOG_INFO——情报信息
Syslog.conf文件指明Syslogd纪录日志行为在启动时查询配置文件该文件由区别或消息分类单个条目组成每个占对每类消息提供个选择域和个动作域这些域由Tab隔开:选择域指明消息类型和优先级;动作域指明Syslogd接收到个和选择标准相匹配消息时所执行动作每个选项是由设备和优先级组成当指明个优先级时Syslogd将纪录个拥有相同或更高优先级消息所以如果指明“crit”那所有标为Crit、Alert和Emerg消息将被纪录每行行动域指明当选择域选择了个给定消息后应该把他发送到哪儿例如如果想把所有邮件消息纪录到个文件中如下:
#Log all the mail messages in one place mail.* /var/log/maillog
其它设备也有自己日志UUCP和News设备能产生许多外部消息它把这些消息存到自己日志(/var/log/spooler)中并把级别限为“err”或更高例如:
# Save mail and s errors of level err and higher in aspecial file.uucp,s.crit /var/log/spooler
个紧急消息到来时可能想让所有用户都得到也可能想让自己日志接收并保存:
#Everybody gets emergency messages plus log them on anther machine *.emerg * *.emerg @linuxaid.com.cn
Alert消息应该写到ROOT和Tiger个人账号中:
#ROOT and Tiger get alert and higher messages *.alert ROOT,tiger
小提示:有时Syslogd将产生大量消息例如内核(Kern设备)可能很冗长用户可能想把内核消息纪录到/dev/console中下面例子表明内核日志纪录被注释掉了:
#Log all kernel messages to the console
#Logging much clutters up the screen
#kern.* /dev/console
用户可以在行中指明所有设备下面例子把Info或更高级别消息送到/var/log/messages除了Mail以外级别“none”禁止个设备:
#Log anything(except mail)of level info or higher
#Don't log private authentication messages!
*.info:mail.none;authpriv.none /var/log/messages
在有些情况下可以把日志送到打印机这样网络入侵者如何修改日志都没有用了
小提示:有个小命令Logger为Syslog(3)系统日志文件提供个Shell命令接口使用户能创建日志文件中条目例如:logger This is a test它将产生个如下Syslog纪录:
Aug 19 22:22:34 tiger: This is a test!
所以不要完全相信日志攻击者很容易修改它
通过上面对Linux日志了解我们就可以更好实时监测系统状态监测和追踪侵入者行踪了!
Tags:  查看linux日志 linux启动日志 linux日志 linux系统日志

延伸阅读

最新评论

发表评论