17认识与分析登录档.docx
- 文档编号:25542998
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:32
- 大小:56.66KB
17认识与分析登录档.docx
《17认识与分析登录档.docx》由会员分享,可在线阅读,更多相关《17认识与分析登录档.docx(32页珍藏版)》请在冰豆网上搜索。
17认识与分析登录档
认识与分析登录档1
什么是登录文件?
1
登录文件的纪录:
syslogd4
登录文件内容的一般格式4
登录文件的设定文件:
/etc/syslog.conf5
登录文件的安全性设置11
登录文件主机的简单设定13
登录文件的轮替(logrotate):
14
logrotate的设定文件14
实际测试logrotate的动作19
分析登录文件22
一些常见指令:
last,lastlog,dmesg22
dmesg22
last23
lastlog23
鸟哥自己写的登录档分析工具:
24
认识与分析登录档
『登录档』似乎是常常听到的名词,网络上的老手们也常常告知新手们要多察看登录档,那么这些登录档是干嘛用的?
嗯!
似乎是当你启发一个事件的时候,或者是有人登入你的Linux主机的时候,主机会有一些认证的程序或者是一些重要的讯息,由于这些讯息有被追踪的重要性,所以自然就有需要将他保留下来,以备未来的不时之需啰,这些讯息会被纪录在某些档案上,这些档案就被称为登录档了!
那么您晓得该登入者的信息被纪录在哪里吗?
这些信息的量有多大呢?
您可以每天自行观看吗?
哇!
如果能用ShellScripts来分析的话,不是就更快速了吗?
呵呵!
这里鸟哥写了一个小小的分析档案(logfile.sh),让大家可以更快乐的管理你的Linux主机呦!
^_^
什么是登录文件?
这部分是最容易被新手所忽略的,那就是『详细而确实的纪录或者是备份系统的登录文件』。
那么什么是登录档呢?
简单的说,就是记录系统活动记录的几个档案,例如:
何时、何地(来源IP)、何人(loginname)、做了什么动作,另外就是系统在什么时候做了什么样的行为时,发生了什么样的事件等等,要知道的是,我们的Linux主机在背景之下,有相当多的daemons在工作着,那么这些工作中的程序总是会有一些讯息显示,这些显示的讯息就是给记录在登录文件当中啦,也就是说,记录这些系统的重要讯息,就是登录文件所进行的纪录工作的内容了。
而由于这些记录的工作内容对于系统的信息太详细了,若被取得将可能影响到系统的安全性,因此,通常这些登录档只有root可以进行视察的功能!
那么为何要记录与解析登录文件呢?
这是由于登录文件有几个重要的功能:
*解决系统的错误:
这个对于系统管理员来说是很重要的信息,例如:
开机的过程当中侦测到的硬件讯息数据会记录到内存当中,由于这些侦测的信息可以提供我们了解硬件信息,所以如果你的系统发生问题时,可以下达dmesg看看硬件的侦测有没有发生错误呢!
另外,如果系统资源被耗尽、核心活动发生错误等等事件发生的时候,则系统登录文件亦会将错误的讯息记录在登录文件中(通常是/var/log/messages),这些都可以藉以取得错误发生时的信息,并加以克服问题!
!
*解决网络服务的问题:
在安装或设定新服务的套件时,最常使用到这个功能了!
例如在安装启动sendmail时,如果sendmail无法提供服务的时候,那么无法提供服务的问题则会被纪录到登录文件当中去,则只要分析登录档就可以了解问题点,并藉以解决问题啦!
(所以我们常说『天助自助者』是真的啦!
察看
(1)屏幕上面的错误讯息与
(2)登录文件的错误信息,几乎可以解决大部分的Linux问题!
)
*记录登录信息:
这个东西相当的重要!
例如:
有天您的apache这个WWW服务挂了,你怎么知道何时挂掉的?
而最后登入者是谁?
!
这都可以藉由分析apache的登录文件来取得信息;此外,万一有一天您的系统被入侵,并且被利用来攻击他人的主机,这个时候对方的主机查出是您的Linux在进行攻击的行为,这个时候你要如何告知对方您的主机是由于被入侵所导致的问题,并且协助对方继续往来源追查呢?
!
呵呵!
此时登录档可是相当重要的呢!
因此,一个有经验的主机管理员,会随时随地查阅一下自己的登录文件,以随时掌握系统的最新脉动!
那么常见的几个登录档有哪些呢?
一般而言,有下面几个:
*/var/log/secure:
记录登入系统存取数据的档案,例如pop3,ssh,telnet,ftp等都会记录在此档案中;
*/var/log/wtmp:
记录登入者的讯息数据,由于本档案已经被编码过,所以必须使用last这个指令来取出档案的内容;
*/var/log/messages:
这个档案相当的重要,几乎系统发生的错误讯息(或者是重要的信息)都会记录在这个档案中;
*/var/log/boot.log:
记录开机或者是一些服务启动的时候,所显示的启动或关闭讯息;
*/var/log/maillog或/var/log/mail/*:
纪录邮件存取或往来(sendmail与pop3)的使用者记录;
*/var/log/cron:
这个是用来记录crontab这个例行性服务的内容的!
*/var/log/httpd,/var/log/news,/var/log/mysqld.log,/var/log/samba,/var/log/procmail.log:
分别是几个不同的网络服务的记录文件啦!
常见的登录档就是这几个,但是,不同的Linuxdistributions,通常登录档的档名不会相同(除了/var/log/messages之外),所以说,您还是得要查阅您Linux主机上面的登录文件设定数据,才能知道你的登录档主要档名喔!
好了,那么记录了这些登录文件之后,我要做什么分析呀!
?
基本上,一个好的系统管理员大概都知道『一部主机负责的服务最好能少尽量少』,这是什么意思呢?
也就是说,这部主机为邮件主机那么就专门负责邮件工作,不要还搞WWW服务!
这样有几个好处,除了系统的安全性较佳之外(因为开的port变少了!
),登录档的解析也会比较简单!
因为我们的/var/log/secure记录的登入者信息就会比较有一致性!
那么我们就可以查询一下每日登入的使用者账号啦与错误讯息啦等等的!
(当然啰,如果你的频宽够、经验丰富的话,那么一部主机上面安装所有的网络服务也是可以的啦!
)基本上,检查/var/log/messages、/var/log/secure这些个档案也就相当够了!
因为系统发生的错误或者是警告讯息通常都会写入这些档案中。
但是,如果我手边有数十部主机怎么办?
我要不要一部一部去察看logfile呢?
呵呵!
那样察看会死人ㄋㄟ~因此,我们底下也使用一个简易的登录档来分析RedHat(含Fedora啦!
)系列的登录文件吧!
在Linux的登录文件系统当中,大多以一支特定的daemon来进行写入这些讯息的工作,那就是syslogd这支程序啦!
所以说,只要软件套件有支持syslogd的登录文件写入模式,那么该软件套件的信息就会被写入到syslogd管理的登录档当中。
另外,由于登录档如果一直长大的话,那么这些登录档的写入动作将会很没有效率,这是因为档案太大时,ASCII格式码的数据文件写入比较麻烦的缘故!
那么怎么进行登录文件数据的备份工作呢?
呵呵!
那就使用logrotate吧!
将数据进行轮转(rotate)?
什么是轮转?
!
(我ㄌㄟ台语不轮转呦!
?
)其实也可以称为轮替啦!
所谓的logrotate基本上,就是将旧的log档案更改名称,然后建立一个空的log档案,如此一来,新的log档案将从零开始记录,然后只要将旧的log档案留下一阵子,嗯!
那就可以达到将登录档『轮转』的目的啦!
此外,如果旧的纪录(大概要保存几个月吧!
保存了一段时间没有问题,那么就可以让系统自动的将他砍掉,免得占掉很多宝贵的硬盘空间说!
(举个例子来说,鸟哥的WWW网站一个月的登录档,所占掉的硬盘空间大小,大概就有3GB这么多....而且都是纯文字文件....很可怕吧!
)
所以说,基本上,针对log档案来设计的服务有这两支:
*syslogd:
进行系统或者是网络服务的登录文件记录工作;
*logrotate:
将旧的数据更名,并且建立新的登录档,以保持登录档的『新鲜』,并视设定将最旧的登录档删除。
所以,接着下来我们来谈一谈怎么样规划这两支程序呢?
!
就由syslogd这支程序先谈起吧!
毕竟得先有登录档,才可以进行logrotate呀!
您说是吧!
?
登录文件的纪录:
syslogd
刚刚上面提到说,Linux的登录档主要是由syslogd这个daemon在负责,那么您的Linux是否有启动syslogd呢?
而且是否有设定开机时启动呢?
呵呵!
检查一下先:
[root@linux~]#psaux|grepsyslog
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
root111290.00.01616204?
SsOct030:
01syslogd-m0
#瞧!
对吧!
确实有启动的!
[root@linux~]#chkconfig--list|grepsyslog
syslog0:
off1:
off2:
on3:
on4:
on5:
on6:
off
#因为鸟哥的系统用runlevel3,所以,也是有启动的!
看到syslog这个服务名称了吧?
!
呵呵!
所以知道他已经在背景底下工作啰!
如前所述,syslog这支程序提供了『系统登入信息记录』及『Kernel错误或警示信息记录』等功能,此外,他还提供了『本地端与远程计算机的登录信息记录』功能,所以,可以将远程的主机登入信息同时记录在本地端呢!
很不错的功能吧!
!
此外,目前正规使用的系统服务中,大都预设支持以syslog这一个服务来记录他的登录档案数据,例如apache,samba,sendmail等等。
登录文件内容的一般格式
一般来说,通常经过syslog而记录下来的数据主要有:
*事件发生的日期与时间;
*发生此事件的主机名称;
*启动此事件的服务名称(如samba,xinetd等)或函式名称(如libpam..);
*该讯息数据内容。
当然,这些信息的『详细度』是可以修改的,而且,这些信息可以作为系统除错之用呢!
我们先来看一下/var/log/secure的内容显示些什么呢?
[root@linux~]#cat/var/log/secure
Oct1610:
16:
13linuxsshd[3494]:
Acceptedpasswordfordmtsaifrom
192.168.1.11port1037ssh2
Oct1610:
20:
15linuxxinetd[21592]:
START:
shellpid=4176from=192.168.1.31
Oct1614:
50:
25linuxsshd[26665]:
Acceptedpasswordfordmtsaifrom
192.168.1.11port1078ssh2
Oct1619:
56:
06linuxxinetd[20576]:
START:
shellpid=21013from=192.168.1.31
以第一笔数据为例,该数据说明的内容为:
『时间在Oct1610:
16:
13(10/16,10:
16)时;由主机名称为linux的那部主机当中;由sshd(且其PID为3494)那项服务所产生的一个讯息;讯息内容说明是:
接受来自192.168.1.11连接至本机,使用ssh2联机机制,接受的使用者为dmtsai』。
有够清楚的吧!
^_^。
就是因为太清楚了,包括那个192.168.1.11的IP来源,以及使用者账号为dmtsai,这些信息如果让比较高竿的cracker知道后,是有可能猜测密码的,所以啰,这些信息当然不能够外流啦!
好好保存吧!
其实还有很多的信息值得查阅的呢!
尤其是/var/log/messages的内容。
记得一个好的系统管理员,要常常去『巡视』登录档的内容喔!
尤其是:
*当你觉得系统似乎不太正常时;
*某个daemon老是无法正常启动时;
*某个使用者老是无法登入时;
*某个demon执行过程老是不顺畅时;
还有很多啦!
反正觉得系统不太正常,就得要查询查询登录档就是了。
登录文件的设定文件:
/etc/syslog.conf
什么?
登录档还有设定档?
?
喔!
不是啦~是syslogd这个daemon的设定档啦!
我们现在知道syslogd可以负责主机产生的各个信息的登录,而这些信息本身是有『严重等级』之分的,而且,这些数据要传送到什么文件名的档案里去?
这都是可以修订的呢,所以我们才会在一开头的地方讲说,每个Linuxdistributions放置的登录档档名可能会有所差异啊!
基本上,syslog针对各种服务与讯息记录在某些档案的设定档就是:
/etc/syslog.conf
这个档案规定了『哪些服务需要被纪录,该服务产生的什么等级的讯息要被纪录?
』这个/etc/syslog.conf的内容语法是这样的:
服务名称[.=!
]讯息等级讯息记录的文件名或装置或主机
#例如底下:
mail.info/var/log/maillog_info
简单的说明如下:
#服务名称:
什么服务产生的讯息要被纪录的意思。
syslog认识的服务主要有底下这些:
*auth,authpriv:
主要与认证有关的机制,例如telnet,login,ssh等需要认证的服务都是使用此一机制;
*cron:
就是例行性命令cron/at等产生讯息记录的地方;
*daemon:
与各个daemon有关的讯息;
*kern:
就是核心(kernel)产生讯息的地方;
*lpr:
亦即是打印相关的讯息啊!
*mail:
只要与邮件收发有关的讯息纪录都属于这个;
*news:
与新闻群组服务器有关的东西;
*syslog:
就是syslogd这支程序本身产生的信息啊!
*user,uucp,local0~local7:
与Unixlike机器本身有关的一些讯息。
基本上,syslog所认识的信息服务与一般我们常说的服务不太一样。
举例来说,关于邮件服务器,我们可以选择sendmail,qmail或者是当红的postfix这些软件来达成,但这些服务器使用的都是同一个通讯协议,亦即是smtp这个玩意儿(参阅一下/etc/services的内容,找到smtp观察一下portnumber啦!
)。
所以,这些同性质的服务器,产生的讯息都属于syslog当中的mail所管辖的范围喔!
另外,每种服务所产生的数据量其实是差异很大的,举例来说,mail的登录文件讯息多的要命,每一封信件进入后,mail至少需要记录『寄信人的信息;与收信者的讯息』等等,而如果是用来做为工作站主机的,那么登入者(利用login登录主机处理事情)的数量一定不少,那个authpriv所管辖的内容可就多的要命了。
为了让不同的信息放置到不同的档案当中,好让我们分门别类的进行登录档的管理,所以啰,将各种类别的服务之登录文件,记录在不同的档案里面,就是我们/etc/syslog.conf所要作的规范了!
#讯息等级
每种服务所产生的讯息是有差异的,有启动时告知系统的信息讯息(information),有被入侵时发出的警告讯息(warn),还有系统硬件发生错误时,所产生的重大问题讯息(error等等);基本上,系统将讯息分为七个主要的等级,依序是这样的(由不重要排列到重要讯息等级):
1.info:
仅是一些基本的讯息说明而已;
2.notice:
比info还需要被注意到的一些信息内容;
3.warning或warn:
警示的讯息,可能有问题,但是还不至于影响到某个daemon运作的信息;基本上,info,notice,warn这三个讯息都是在告知一些基本信息而已,应该还不至于造成一些系统运作困扰;
4.err或error:
一些重大的错误讯息,例如设定文件的某些设定值造成该服务服法启动的信息说明,通常藉由err的错误告知,应该可以了解到该服务无法启动的问题呢!
5.crit:
比error还要严重的错误信息,这个crit是临界点(critical)的缩写,这个错误已经很严重了喔!
6.alert:
警告警告,已经很有问题的等级,比crit还要严重!
7.emerg或panic:
疼痛等级,意指系统已经几乎要当机的状态!
很严重的错误信息了。
通常大概只有硬件出问题,导致整个核心无法顺利运作,就会出现这样的等级的讯息吧!
除了这些有等级的讯息外,还有两个特殊的等级,那就是debug(错误侦测等级)与none(不需登录等级)两个,当我们想要作一些错误侦测,或者是忽略掉某些服务的信息时,就用这两个咚咚吧!
特别留意一下在讯息等级之前还有[.=!
]的连结符号喔!
他代表的意思是这样的:
*.:
代表『比后面还要高的等级(含该等级)都被记录下来』的意思,例如:
mail.info代表只要是mail的信息,而且该信息等级高于info(含info本身)时,就会被记录下来的意思。
*.=:
代表所需要的等级就是后面接的等级而已,其它的不要!
*.!
:
代表不等于,亦即是除了该等级外的其它等级都记录。
一般来说,我们比较常使用的是『.』这个连结符号啦!
^_^
#讯息记录的文件名或装置或主机
再来则是这个讯息要放置在哪里的纪录了。
通常我们使用的都是记录的档案啦!
但是也可以输出到装置呦!
例如打印机之类的!
也可以记录到不同的主机上头去呢!
底下就是一些常见的放置处:
*档案的绝对路径:
通常就是放在/var/log里头的档案啦!
*打印机或其它:
例如/dev/lp0这个打印机装置
*使用者名称:
显示给使用者啰!
*远程主机:
例如@test.adsldns.org当然啦,要对方主机也能支持才行!
**:
代表『目前在在线的所有人』,类似wall这个指令的意义!
基本上,整个syslog的设定档就只是这样而已,底下我们来思考一些例题,好让你可以更清楚的知道如何设定syslogd啊!
例题:
如果我要将我的mail相关的数据给他写入/var/log/maillog当中,那么在/etc/syslog.conf应该如何写?
答:
基本的写法是这样的:
mail.info /var/log/maillog
注意到上面喔,当我们的等级使用info时,那么『任何大于info等级(含info这个等级)之上的讯息,都会被写入到后面接的档案之中!
』这样可以了解吗?
也就是说,我们可以将所有mail的登录信息都纪录在/var/log/maillog里面的意思啦!
例题:
我要将新闻群组数据(news)及例行性命令的信息(cron)都写入到一个称为/var/log/cronnews的档案中,但是这两个程序的警告讯息记录在/var/log/cronnews.warn该如何设定我的档案呢?
答:
很简单啦!
既然是两个程序,那么只好以分号来隔开了,此外,由于第二个指定档案中,我只要记录警告讯息,因此设定上需要指定『=』这个符号,所以就成为了:
news.*;cron.* /var/log/cronnews
news.=warn;cron.=warn /var/log/cronnews.warn
上面那个『.=』就是在指定等级的意思啦!
由于指定了等级,因此,只有这个等级的讯息才会被纪录在这个档案里面呢!
例题:
我的messages这个档案需要记录所有的信息,但是就是不想要记录cron,mail及news的信息,那么应该怎么写才好?
答:
可以有两种写法,分别是:
*.*;news,cron,mail.none /var/log/messages
*.*;news.none;cron.none;mail.none /var/log/messages
使用『,』分隔时,那么等级只要接在最后一个即可,如果是以『;』来分的话,那么就需要将服务与等级都写上去啰!
这样会设定了吧!
了解语法之后,我们来看一看在尚未开启网络服务的情况下,我们的syslog有哪些系统服务已经在纪录了呢?
!
那就是瞧一瞧/etc/syslog.conf这个档案的预设内容啰!
(注意!
如果需要将该行做为批注时,那么就加上#符号就可以啦!
)
#来自FedoraCoreRelease4的相关资料
[root@linux~]#vi/etc/syslog.conf
#kern.*/dev/console
#只要是kernel产生的讯息,全部都送到console去!
#这个项目预设是关闭的!
不过,只要您愿意,可以开启就是了!
*.info;mail.none;authpriv.none;cron.none/var/log/messages
#在已知各服务的讯息中,不要记录到这个档案当中啦!
#例如mail我们已经预设要记录在/var/log/maillog(底下),
#所以自然不要在记录mail到这个/var/log/messages档案中啦!
#然后其它的讯息全部都记录到/var/log/messages当中!
#所以这个档案相当的重要!
没有被规定到的讯息都可以在这里找到!
authpriv.*/var/log/secure
#这个就是经过一些身份确认的行为之后,需要记录身份的档案啦!
#什么是身份确认呢?
例如pop3收信要输入账号与密码、ssh与telnet,ftp
#等等的服务需要输入账号与密码,这些都会在/var/log/secure里面记录!
#他可也是相当重要的一个档案呢!
mail.*-/var/log/maillog
#只要跟mail有关的(不论是pop3还是sendmail)都会被纪录到这个档案中!
cron.*/var/log/cron
#还记得例行性命令那一章节吗?
!
对啦!
就是那个crontab的东西,
#那东西的服务程序名称就是cron啦!
执行cron的结果都记录于此!
*.emerg*
#任何时候发生的警告讯息都会显示给在线的所有人!
那个*就是目前在线的所有人啦!
#这个就是利用wall之类的方式传输讯息的啊!
uucp,news.crit/var/log/spooler
#记录新闻错误高于crit的等级的信息,写入spooler当中!
local7.*/var/log/boot.log
#将开机的当中的讯
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 17 认识 分析 登录