Linux日志日常管理篇.docx
- 文档编号:12811274
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:19
- 大小:56.43KB
Linux日志日常管理篇.docx
《Linux日志日常管理篇.docx》由会员分享,可在线阅读,更多相关《Linux日志日常管理篇.docx(19页珍藏版)》请在冰豆网上搜索。
Linux日志日常管理篇
Linux日志管理篇
操作系统的日志主要具有审计与监测的功能,通过对日志信息的分析,可以检查错误发生的原因,监测追踪入侵者及受到攻击时留下的痕迹,甚至还能实时的进行系统状态的监控。
有效利用日志信息并对其进行分析与实时的监控管理,对于系统的安全性具有极为重要的作用。
对于日志信息的管理通常采用两种方法,一种方法是不同服务器的日志信息都存放在各自系统内,系统管理员对各服务器进行分散管理。
另一种方法则是使用日志主机系统,这是一个从其他主机收集日志,并将它们存放在同一个地方的系统,很容易使来自多个主机的日志条目关联起来,对其进行统一管理、分析,甚至配合自动化工具进行实时的监控,有效提高管理的效率。
第一种方法往往是大多数系统管理员的常用的方法,这种传统的管理方法在服务器数量较少时还能勉强应付,但在处理多主机状况时却并非一种有效的方法。
本文主要讲述二种日志管理方法,探寻一种提高系统管理效率的途径。
一、日志主机系统的部署
日志主机系统包括日志主机及各主机系统两个部分,其中日志主机相当于服务器端,而各主机系统相当于客户端,将日志信息实时的传送到日志主机上来。
1.Linux系统中系统日志服务器的安装
对管理员来说,日志非常有用,但大量的日志又很麻烦。
当一些事件运行错误时,日志可以对故障排除起到至关重要的作用,特别是在安全性相关问题上。
但是如果攻击者危害到你的主机,日志将会告诉你,对于主机来说这很有用;你需要给数据中心发信息。
保护日志非常重要,一个中央日志服务器会更容易管理、分析和查找它们。
针对这一点,我将向你展示如何把多个主机的系统日志集中收集到一个主机上来管理,即Linux上的中央系统日志服务器。
首先,所有集中的系统日志服务器都应该建成一个安全和硬化的主机。
在主机上没有一点关于保护和集中化你们日志方面。
其次,你怎样能从你的主机上获得日志呢?
让我们开始安装中央系统日志服务器。
我将举例说明如果使用rSyslog,实际的标准Linux系统日志。
Ubuntu和红帽常使用它,并且通过文件/etc/rsyslog.conf进行管理。
文件中包含许多指定的特殊系统日志:
有的是控制台方面的,有的是文件方面或其它主机的。
首先,我们需要载入合适的TCP和UDP插件以支持接收系统日志。
把下面的代码添加到rsyslog.conf的头部:
$modloadimtcp
$modloadimudp
$InputTCPServerRun10514
$UDPServerRun514
载入的这两个模块能支持监听TCP和UDP的端口,并且指定哪个端口来接受事件,在这种情况下,使用TCP的10514端口和UDP的514端口。
你需要确认一下本地防火墙(在你的主机和中央系统日志服务器之间的防火墙)
下面我们需要指定一些规则来告诉rSyslog在哪放输入事件。
如果你不添加任何规则,输入事件将按照本地的规则进行处理,并且与本地主机的事件交织在一起。
我们需要在上面添加节之后和本地处理系统日志之前来正确的指定这个规则,例如:
if$fromhost-ipisequal'192.168.0.2'then/var/log/192.168.0.2.log
&~
这里我们说的每一个来自于192.168.0.2的系统日志都应该保存在/var/log/192.168.0.2.log文件中。
&~这个符号是非常重要的,因为它告诉rSyslog将停止处理消息。
如果你把它忘写了,消息将越过下一个规则,并且继续处理。
在这一规则中还有其他的变量。
例如:
if$fromhost-ipstartswith'192.168.'then/var/log/192.168.log
&~
这里我们用192.168.*替代了以这个为开始的所有IP地址,写入到/var/log/192.168.log文件中。
你还可以看到一些其它的过滤。
你将需要重启这个rsyslog服务来激活我们所做的新的配置:
$sudoservicersyslogrestart
现在,对于发送方的主机,我们还需要对文件rsyslog.conf进行一些更改,在文件的头部,添加下面这行:
*.*@@192.168.0.1:
10514
这是发送的所有事件,来自于所有源代码和所有重要级别(用*.*),通过TCP协议传给IP地址为192.168.0.1的10514端口。
你可是用你所在环境的地址来替换这个IP地址。
要启用此配置,你将需要重启主机上的rSyslog。
你可以通过SSL/TLS更进一步地发送你的系统日志。
如果你在互联网上或其它网络间传输系统日志,这也没什么坏处,你可能会发现这个的简单说明。
现在,如果给你的配置管理系统(如果不使用这个,你可以试一试Puppet或Cfengine工具)添加这个配置,然后,您可以用适当的系统日志来有效地配置每台主机,以确保你的日志将被发送到中央系统日志服务器。
2.日志主机的部署
日志主机采用一台RHEL5的服务器(假设其主机名为loghost),日志收集软件采用Linux平台上的Syslog,Syslog一般都随Linux系统安装时已经安装,对于我们部署整个系统提供了极大的便利性,因此在此不对其安装步骤进行阐述,仅讲述其配置方法。
Syslog既可作为客户端,也可作为服务器端,并且支持远程的日志收集。
其配置文件为/etc/sysconfig/syslog,要配置其作为服务器端,需对此配置文件相应部分改为如下所示:
SYSLOGD_OPTIONS=“-r-m0”,“-r”选项表示使syslog接收客户端的远程日志信息。
接下来重启Syslog服务器端使配置生效:
#servicesyslogdrestart
由于Syslog采用514端口监听来自各客户端的日志信息,因此需要在日志主机的防火墙上开放514端口,以iptables为例,对特定网段开放514端口:
/sbin/iptables-AINPUT-ieth0-ptcp-s192.168.0.0/16-dport514-syn-jACCEPT
3.客户端的部署
3.1Linux平台下客户端的部署
在Linux平台下依然选择syslog作为客户端进行部署,此时此配置文件为/etc/syslog.conf,其默认配置为(仅以/var/log/message日志为例):
*.info。
mail.none。
authpriv.none。
cron.none /var/log/messages
/var/log/message即Sysolg存放系统日志的绝对路径,将此值替换为日志主机名即可。
例子如下:
*.info。
mail.none。
authpriv.none。
cron.none @loghost
根据上述配置,当Syslog重启使用配置生效后,客户端服务器的日志信息将会实时的传送到日志主机的/var/log/message文件里,对各服务器的日志信息进行统一的管理。
使用如下命令重启Syslog服务使配置生效:
#servicesyslogdrestart
依上述方法将其他系统日志信息(如/var/log/secure)导入到日志主机上。
笔者建议,采用添加配置而非修改的方法,同时在本地及日志主机上保存系统日志。
3.2Windows平台下客户端的部署
在Windows平台下采用软件evtsys进行客户端的部署,其下载链接为:
http:
//engineering.purdue.edu/ECN/Resources/Documents/UNIX/evtsys/evtsys_exe.zip解开后得到两个文件:
evtsys.ext和evtsys.dll。
将这两个文件放到C:
\WINDOWS\system32目录下,在命令行状态下运行如下命令进行安装:
%systemroot%\system32\evtsys –i-hloghost
当安装成功后,可查看服务列表看到相应的信息,如图1所示。
卸载evtsys的命令为:
%systemroot%\system32\evtsys-u
更改日志主机名的命令为:
Netstopevtsys //停止evtsys
evtsys-u //卸载evtsys
evtsys-l-hnewloghost //指定新的日志主机名
netstartevtsys //启动evtsys
二、日志主机的自动日志分析与监控
当整个系统部署好后,可以从日志主机里验证各服务器是否将日志信息发送到了日志主机上。
以/var/log/message为例,打开此文件,当看到具有不同主机名字的日志信息标志着日志主机已经正常工作,节选部分日志如下:
Jan908:
39:
38dogcrond(pam_unix)[4528]:
ses-sionopenedforuserrootby(uid=0)
Jan908:
39:
36dogcrond(pam_unix)[4528]:
sessionclosedforuserroot
Jan908:
39:
40pandacrond(pam_unix)[20296]:
ses-sionopenedforuserrootby(uid=0)
Jan908:
39:
40pandacrond(pam_unix)[20296]:
ses-sionclosedforuserroot
Jan908:
39:
53applastmessagerepeated8times
Jan908:
40:
11applenet-snmp[657]:
Connectionfromudp:
92.168.1.11:
4298
Jan908:
40:
11applenet-snmp[657]:
ReceivedSNMPpacket(s)fromudp:
159.226.2.144:
42988
Jan908:
41:
15orangesshd(pam_unix)[28389]:
ses-sionopenedforusertomby(uid=2011)
Jan908:
41:
28orangesshd(pam_unix)[28389]:
ses-sionopenedforusertomby(uid=2011)
Jan908:
41:
28orange1月908:
41:
28su`(pam_unix)[28425]:
sessionopenedforuserrootbytom(uid=2011)
对于如此庞大的日志信息,大部分并没多大的用处,但在跟踪某一具体问题或者安全漏洞时却可能很有用。
那么我们如何对其进行有效地分析与监测,发挥其真正作用呢?
在此推荐两款比较常用的日志分析与监控软件,对这些日志信息进行自动地分析与监控。
1.利用Logwatch进行日志监控
在Linux系统中,已经默认安装了Logwatch,配合Sendmail的邮件发送功能,向系统管理员发送前一天的日志分析结果邮件。
其配置文件为/etc/log.d/logwatch.conf,下面是省略注释后的配置文件,一般只需将MailTo部分改为系统管理员邮箱地址即可,更多的配置细节可参考其官方http:
//www.logwatch.org
LogDir=/var/log
MallTo=admin@
Pnnt=No
Range=yesterday
Detail=High
Service=All
2.利用Swatch进行日志的实时监控
Swatch从字面上可以简单理解为Watcher(守护者).其它的日志分析软件定期地扫描日志文件,向你报告系统已经发生的问题或者状况.Swatch程序不仅能够做这些,而且它能够像Syslogd守护程序那样主动的扫描日志文件并对特定的日志消息采取修复行动.
一.准备
1.下载和解压缩最新的Swatch软件包.建议从Swatch的官方网站获得可靠的Swatch软件包.
下载网址:
1)创建Swatch软件包存放的目录.
#mkdir-p/usr/local/src/log
2)解压缩源代码包,在log目录下会生成一个新的目录apache_1.3.33
#tarzpxfswatch-3.1.1.tar.gz
二.安装
#cdswatch-3.1.1
#make
#maketest
#makeinstall
#makerealclean
Swatch程序安装成功后,Perl模块将会用于Swatch程序的运行.
三.配置
配置Swatch使其作,需建立配置文件~/.swatchrc,按照其语法规则添加监测的相关内容,可使用“manswatch”命令查看具体配置内容及含义。
下面是一个简单的范例,仅供参考:
Watchfor=/Failedfuseraddllnvalid/i #采用正则表达式的形式指定监测的内容#
echo #使得匹配的行通过stdout显示#
mailaddress=admin\@,subject=MonitorResult #向系统管理员发送监测结果邮件,并设定相应的主题#
malladdresses=admin\@,subject=MonitorResult,when=2-5:
8-17
#向系统管理员发送监测结果邮件,并设定相应的主题及监控的时间#
Swatch程序使用正向表达式(RegularExpressions)来发现感兴趣的目标行.一旦Swatch发现某一行匹配预设定的模式,它会立即采取行动,比如说屏幕打印,发送电子邮件,或者采取用户预先设定的行动.
watchfor/[dD]enied│/DEN.*ED/
echobold
bell3
exec"/etc/call_pager555123408"
上面的脚本是Swatch配置文件一个部分的例子.首先Swatch在指定的日志文件中寻找包含设定单词"denied,Denied,或者其它以DEN开始或者以ED结束的单词的行.一旦搜索到某行包含三个搜索单词中的任何一个.Swatch程序立即向终端显示粗体行和响铃三下,然后发送电子邮件给运行swatch程序的用户(通常是
root用户)警报所在行和执行/etc/call_paper程序,忽略sendmail,fax,unimportantstuff.在这个例子当中,搜索字符串sendmail,fax和unimportantstuff将被忽略.甚至他们符合预定搜索字符串中的一个.
四.使用
使用Swatch非常的简单,如通常使用Swatch检查日志,运行:
swatch--config-file=/home/zhaoke/swatch.conf
--examine=/var/log/messages
上面的例子中配置文件所在的系统绝对路径是/home/zhaoke/swatch.conf,需要检查的日志文件是/var/log/messages.使用swatch检查不段增加的日志文件:
swatch--config-file=/home/zhaoke/swatch.conf
--tail-file=/var/log/messages
使用“swatch--help”查看Swatch运行时的具体选项。
下面是一个运行命令范例,仅供参考:
#swatch-config-file=~/.swatchrc-examine=/var/log/messages
当出现监控到的信息时,Swatch即会实时地发送邮件给系统管理员,及时杜绝入侵者的各种入侵尝试,保护系统的安全。
三、解剖Linux系统的LOG日志文件
日志文件是专门用于记录系统操作事件的记录文件或文件集合,操作系统有操作系统日志文件,数据库系统有数据库系统日志文件,等等。
今天介绍下LOG日志文件。
网管主要靠系统的LOG,即我们时常所说的日志文件,来获得侵入的痕迹及你进来的IP,或其他信息。
当然也有些网管使用第三方工具来记录侵入他电脑的痕迹,这里主要要讲的是一般Linux系统里记录你踪迹的文件。
那到底这些LOG日志文件放在哪里呢?
这主要依靠的是你所进入的UNIX系统系统,各个系统有些不同的LOG文件,但大多数都应该有差不多的位置,最普通的位置如下:
/usr/adm-早期版本的UNIX
/var/adm-新一点的版本使用这个位置
/var/log-一些版本的Solaris,linuxBSD,FreeBSD使用这个位置
/etc-多数UNIX版本把utmp放在这里,有些也把wtmp放在这里,syslog.conf在这里
下面的一些文件根据你所在的目录不同而不同:
acct或pacct--记录每个用户使用的命令记录
access_log--主要当服务器运行NCSAHTTPD时,记录什么站点连接过你的服务器
aculog--保存着你拨出去的MODEMS记录
lastlog--记录了用户最近的LOGIN记录和每个用户的最初目的地,有时是最后不成功LOGIN的记录
loginlog--记录一些不正常的LOGIN记录
messages--记录输出到系统控制台的记录,另外的信息由syslog来生成
security--记录一些使用UUCP系统企图进入限制范围的事例
sulog--记录使用su命令的记录
utmp--记录当前登录到系统中的所有用户,这个文件伴随着用户进入和离开系统而不断变化.
utmpx--UTMP的扩展
wtmp--记录用户登录和退出事件
syslog--最重要的日志文件,使用syslogd守护程序来获得日志信息:
/dev/log--一个UNIX域套接字,接受在本地机器上运行的进程所产生的消息
/dev/klog--一个从UNIX内核接受消息的设备
514端口--一个INTERNET套接字,接受其他机器通过UDP产生的syslog消息。
uucp--记录的UUCP的信息,可以被本地UUCP活动更新,也可有远程站点发起的动作修改,信息包括发出和接受的呼叫,发出的请求,发送者,发送时间和发送主机
lpd-errs--处理打印机故障信息的日志
ftp日志--执行带-l选项的ftpd能够获得记录功能
httpd日志--HTTPD服务器在日志中记录每一个WEB访问记录
history日志--这个文件保存了用户最近输入命令的记录
vold.log--记录使用外接媒介时遇到的错误记录
======================
其他类型的日志文件-
======================
有些类型的LOG文件没有特定的标题,但开始于一个特定的标志,你可以在前面头发现如下的标志,这就一般表示此是个LOG日志文件,你就可以编辑它了:
xfer--表明试图一个禁止的文件传输.
rexe--表明试图执行一个不允许的命令
还有许多其他其他类型的LOG文件存在,主要是第三方软件引起的,或者甚至他妈的网管自己有设置了一只"眼睛"在他的系统上,所以你要对你认为可能是LOG文件的文件多一份心眼。
许多管理员喜欢把日志文件放在同一个目录中以便管理,所以你要检查你发现的LOG文件所在的目录中,是否有其他日志文件放在这里,如果有,咯,你知道怎么做。
另一个你要注意的是有关LOG用户MAIL的文件,此文件名可以多种多样,或则有时是syslog文件的一部分。
你要知道syslog记录那些信息,你可以查看syslog.conf中的信息此文件的目录是在/etc中
======================
WindowsNT的审计跟踪
======================
几乎WINDOWSNT系统中的每一项事务都可以在一定程度上被审计,在WINDOWSNT中可以在两个地方打开审计-EXPLORER和USERMANAGER,在EXPLORER中,选择Securtiy,再选择Auditing以几乎DirectoryAuditing对话框,系统管理员可以在这个窗口选择跟踪有效的和无效的文件访问,在USERMANAGER中,系统管理员可以根据各种用户事件的成功和失败选择审计策略,如登录和退出,文件访问,权限非法和关闭系统等。
WINDOWSNT是使用一种特殊的格式存放它的日志文件,这种格式的文件可以被事件查看器EVENTVIEWER读取。
事件查看器可以在ADMINISTRATIVETOOL程序组中找到。
系统管理员可以使用事件查看器的Filter选项根据一定条件选择要查看的日志条目,查看条件包括类别,用户和消息类型。
WINDOWSNT在三个分开的日志文件存放审计信息:
ApplicationLog-文件包括用NTSECURITYAUTHORITY注册的应用程序产生的信息。
SecurityLog-包括有关通过NT可识别安全提供者和客户的系统访问信息。
SystemLog-包含所有系统相关事件的信息。
WINDOWSNTFTP连接的日志:
WINDOWSNT可以记录入境的FTP连接,在注册表中进行了修改后,你可以是否记录由匿名的,正常用户或者两种用户建立的连接,可以在事件查看器中查看这些日志条目。
WINDOWSNT的HTTPD事务
系统管理员可以使用NT的HTTPD服务在日志中记录对特定文件的访问企图。
可以在控制面板的HTTPD配置工具中选择一个激活日志功能特性。
四、Linux日志管理主要命令详解
从Ext到Ext2,从Ext2再到Ext3,乃至以后的Ext4或者更高版本,Linux系统历来以强大、丰富和完整的日志系统著称。
通过管理日志,可以清晰地了解系统的运行状况,也能从各种蛛丝马迹中发现入侵和快速地阻止入侵。
本文是有关Linux系统全方位管理的第四部分,讲述Linux日志管理方面的事项。
前面三个部分分别为:
文件系统管理,Linux进程管理,以及用户管理。
日志主要的功能有:
审计和监测。
它还可以实时的监测系统状态,监测和追踪侵入者等等。
成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。
Linux中提供了异常日志,并且日志的细节是可配置的。
Linux日志都以明文形式存储,所以用户不需要特殊的工具就可以搜索和阅读它们。
还可以编写脚本,来扫描这些日志,并基于它们的内容去自动执行某些功能。
Linux日志存储在/var/log目录中。
这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。
大多数日志只有root账户才可以读,不过修改文件的访问权限就可以让其他人可读。
在Linux系统中,有四类主要的日志:
◆连接时间日志:
由多个程序执行,把记录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。
◆进程统计:
由系统内核执行。
当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个记录。
进程统计的目的是为系统中的基本服务提供命令使用统计。
◆错误日志:
由syslogd(8)守护程序执行。
各
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 日志 日常 管理
![提示](https://static.bdocx.com/images/bang_tan.gif)