荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: ainny (为你等待), 信区: Hacker
标  题: 构建SYSLOG系统详解(isbase IamIn)
发信站: BBS 荔园晨风站 (Tue Mar 28 12:44:46 2000), 转信

发信人: cloudsky (小四), 信区: Security
标  题: 构建SYSLOG系统详解(isbase IamIn)
发信站: 武汉白云黄鹤站 (Sat Mar 25 23:53:53 2000), 站内信件

标题:构建SYSLOG系统详解

iamin << deepin@21cn.com >>
<< http://www.isbase.com/ >>

一:介绍

    系统log是管理员每日需要查看的文件记录。里面记载了大量系统正常和不正常的运
行信息,对管理员分析系统的状况,监视系统的活动是一个相当重要的部分。如何有效
的利用系统的log来分析和定位攻击的可能呢?我将在下面的文章,介绍一下有关syslog
如何配置和如何使用第三方工具检查问题。

二: syslog.conf的详细说明

    首先我们看看标准Unix Log系统的设置,对于不同类型的Unix,实际上除了一些关
键词的不同,系统的syslog.conf格式是相同的。syslog采用可配置的、统一的系统登记
程序,随时从系统各处接受log请求,然后根据/etc/syslog.conf中的预先设定把log信息
写入相应文件中、邮寄给特定用户或者直接以消息的方式发往控制台。值得注意的是,为
了防止入侵者修改、删除messages里的记录信息,可以采用用打印机记录或采用方式来挫
了防止入侵者修改、删除messages里的记录信息,可以采用用打印机记录或采用方式来挫
败入侵者的企图。


以Sun Solaris 7  为例
/etc/syslog.conf的一般格式如下:
#ident  "@(#)syslog.conf        1.4     96/10/11 SMI"   /* SunOS 5.0 */
#
# Copyright (c) 1991-1993, by Sun Microsystems, Inc.
#
# syslog configuration file.
#
# This file is processed by m4 so be careful to quote (`') names
# that match m4 reserved words.  Also, within ifdef's, arguments
# containing commas must be quoted.
#
*.err;kern.notice;auth.notice                   /dev/console
*.err;kern.debug;daemon.notice;mail.crit        /var/adm/messages
*.alert;kern.err;daemon.err                     operator
*.alert                                         root
*.emerg                                         *
# if a non-loghost machine chooses to have authentication messages
# sent to the loghost machine, un-comment out the following line:
# sent to the loghost machine, un-comment out the following line:
#auth.notice                    ifdef(`LOGHOST', /var/log/authlog, @loghost)

mail.debug                      ifdef(`LOGHOST', /var/log/syslog, @loghost)
#
# non-loghost machines will use the following lines to cause "user"
# log messages to be logged locally.
#
ifdef(`LOGHOST', ,
user.err                                        /dev/console
user.err                                        /var/adm/messages
user.alert                                      `root, operator'
user.emerg                                      *
)
syslog.conf的格式如下,既然大家都懒得看syslog.conf的man,那么只好我在这里再向大
家讲一下了:
设备.行为级别 [;设备.行为级别] 记录行为
注意各栏之间用[Tab]来分隔,用空格是无效的。
第一栏:设备 描述
auth    认证系统,即询问用户名和口令
cron    系统定时系统执行定时任务时发出的信息
daemon  某些系统的守护程序的syslog,如由in.ftpd产生的log
kern    内核的syslog信息
kern    内核的syslog信息
lpr     打印机的syslog信息
mail    邮件系统的syslog信息
mark    定时发送消息的时标程序
news    新闻系统的syslog信息
user    本地用户应用程序的syslog信息
uucp    uucp子系统的syslog信息
local0..7 种本地类型的syslog信息,这些信息可以又用户来定义
*:代表以上各种设备
第二栏:行为级别 描述(危险程度递加)
debug   程序的调试信息
info    信息消息
notice  要注意的消息
warning 警告
err     一般性错误
crit    严重情况
alert   应该立即被纠正的情况
emerg   紧急情况
none    指定的服务程序未给所选择的
第三栏:记录归属(举例) 描述
/dev/console send messages to devices 控制台,实际上是可以任何合法的设备名
/var/adm/messages write messages to files 写入/var/adm/messages,定义这里可以
分类写到不同的log文件中
分类写到不同的log文件中
@loghost forward messages to a loghost 其他的日志记录服务器.也叫loghost主机
fred,user1 send messages to users 传送消息给某用户(但此用户正登陆的时候可以看到
@
*:send messages to all logged-in users 传送消息给所有的在线用户
@符号后面可以是ip,也可以是域名,默认在/etc/hosts文件下loghost这个别名已经指定
给了本机。
如 “192.168.1.4     sun1.isbase.com    loghost”
另外这一栏也支持m4的宏,下面我们看到的是一个标准的m4宏。在syslog.conf里可以通
过define(`LOGHOST`,hostname)来定义LOGHOST这个常量,注意的是这个LOGHOST可以不是
/etc/hosts下的loghost这个别名所指向的主机.
ifdef(`LOGHOST', ,
user.err                                        /dev/console
user.err                                        /var/adm/messages
user.alert                                      `root, operator'
user.emerg                                      *
)
如果用打印机来记录日志文件,可以采用如下方法:
把打印机连接到终端端口/dev/ttya上,在/etc/syslog.conf中加入配置语句.
Auth.notice                                       /dev/ttya
如果是记录到log文件中,一定要注意此文件必须存在,且文件属性为600,否则无法记
录log信息.


三.配置举例

这里举一个比较通用的例子,某一台主机的log记录要求,所有的认证信息存到auth.log
,各个deamon的log,包括telnet,ftp的连接和状态记录到deamon.log,mail log单独记录到
maillog.log文件,其他信息记录与messages里面.另外所有的这些log同样要传到一台特定
的loghost主机。我们首先在/etc/hosts中定义一台主机的别名为loghost(当然你可以也
可以直接在syslog.conf里指定loghost)如


192.168.1.88            deepin.isbase.com       loghost

下面是符合条件的 syslog.conf的内容:

*.info;mail.none;auth.none;deamon.none  /var/adm/messages
*.info;mail.none;auth.none;deamon.none  @loghost
auth.notice             /var/log/auth.log
auth.notice             @loghost
deamon.info             /var/log/deamon.log
deamon.info             @loghost
mail.debug              /var/log/mail.log
mail.debug              @loghost


改好syslog.conf以后,在定义的目录下确认log文件是否存在,不存在,就用
touch /var/log/auth.log;chmod 600 /var/log/auth.log来建立一个.另外..不要忘记
给syslog发一个-HUP的信号.用ps –ef |grep syslogd找出syslogd的PID,再用
kill –HUP (刚才查到的)PID 来让syslogd重新读取syslog.conf.定义的loghost需要配
置吗?还是要作一点工作的.实际上最简单
的方法是用*.info        /var/log/all.log
把所有主机各种级别的log记到一个大文件里面。。如果你在loghost上也想分类,按照
常规写就是了。在log记录中会有一个域标识主机名来区别来源于不同主机的log记录。
是不是比想像的简单?实际上也没有必要用m4的宏,直接写也很明了。要注意的是按照
syslog的man里面的说明,notice级别比info,waring低,但notice级别并不被Info包括
也就是说用auth.waring或auth.ifo是无法记录在认证时的系统信息的,不过这是在
solairs下使用的结果,在linux和solairs又不一样,auth.waring可以记录认证信息。
那么local0-7这几个设备名是怎么回事呢?
实际上用他们来记录自己开发的程序的信息是很方便的。例如在你写的某个shell脚本里
,使用类似与:logger –p local0.notice –t [tag]…这样的语句,可以利用syslogd
帮你记录运行的信息,当然你的syslog.conf也要加上一条
local0.notice   /var/log/myapps.log
具体logger的用法,man logger看看就知道了。


四.Logcheck
由于业务繁忙的主机log往往相当巨大,很多无用的信息会把值得注意的log信息淹没起
由于业务繁忙的主机log往往相当巨大,很多无用的信息会把值得注意的log信息淹没起
来,对于管理员审计log相当不便,所以一些“偷懒”的管理员们往往自己写上一些脚本
来作log的分类和整理工作。当然,这些脚本也很容易在 internet上找到,一个易于使用
且功能比较强大的工具是logcheck。

Logcheck可以在http://www.psionic.com/tools/logcheck-1.1.1.tar.gz 获得,安装是
相当简便的,仅仅只有一个标准的c程序需要编译,主要运行部分是一个shell脚本。
解开压缩包以后,运行make,按照它的提示选择你所使用的操作系统以后重新make以后,
很快就能安装完毕。配置文件和主运行脚本均默认安装在/usr/local/etc下主要是
logcheck.sh  主要运行脚本,负责分析本次的log并汇报结果
logcheck.hacking  可能有人攻击而在log记录中出现的关键词
例如,此文件里面默认包括了以下一些关键词
"wiz"
"WIZ"
"debug"
"DEBUG"
ATTACK
nested
VRFY bbs
VRFY decode
VRFY uudecode
VRFY lp
VRFY demo
VRFY demo
VRFY guest
VRFY root
VRFY uucp
VRFY oracle
VRFY sybase
VRFY games
vrfy bbs
vrfy decode
vrfy uudecode
vrfy lp
vrfy demo
vrfy guest
vrfy root
vrfy uucp
vrfy oracle
vrfy sybase
vrfy games
expn decode
expn uudecode
expn wheel
expn root
EXPN decode
EXPN decode
EXPN uudecode
EXPN wheel
EXPN root
LOGIN root REFUSED
rlogind.*: Connection from .* on illegal port
rshd.*: Connection from .* on illegal port
sendmail.*: user .* attempted to run daemon
uucico.*: refused connect from .*
tftpd.*: refused connect from .*
login.*: .*LOGIN FAILURE.* FROM .*root
login.*: .*LOGIN FAILURE.* FROM .*guest
login.*: .*LOGIN FAILURE.* FROM .*bin
login.*: .*LOGIN FAILURE.* FROM .*uucp
login.*: .*LOGIN FAILURE.* FROM .*adm
login.*: .*LOGIN FAILURE.* FROM .*bbs
login.*: .*LOGIN FAILURE.* FROM .*games
login.*: .*LOGIN FAILURE.* FROM .*sync
login.*: .*LOGIN FAILURE.* FROM .*oracle
login.*: .*LOGIN FAILURE.* FROM .*sybase
attackalert

同样,你可以自己分析系统的log,删除或增加必要的关键词
同样,你可以自己分析系统的log,删除或增加必要的关键词
logcheck.violations 系统运行时出现的异常信息的关键词
logcheck.violations.ignore 系统出现异常信息,但包含在这个文件中的关键词的log
记录视为正常,并不作为logcheck报告异常信息的一部分
logcheck.ignore 系统出现可能攻击的记录,但由于包含在这个文件中的关键词的log
记录视为正常,并不作为logcheck报告攻击部分的一部分

在安装完成以后,你还需要作以下两件事,一个是修改logcheck.sh中的一些参数使它符
合你的要求,一个是在你的cron任务里增加定时检测的任务。

Logcheck,sh里面注意的参数主要是:
# Person to send log activity to.
SYSADMIN=root
默认把logcheck的报告发给本机的root..当然你可能希望发给自己的信箱,改这里就可
以了,如果你希望把结果发给几个人,自己定义mial的别名去吧。
另一个位置:
# SunOS, Sun Solaris 2.5
$LOGTAIL /var/log/syslog > $TMPDIR/check.$$
$LOGTAIL /var/adm/messages >> $TMPDIR/check.$$
这个是sun标准存放log的地方,当然,我们不是自己定义过log的存放地点吗?加上我们
自己要检查的log文件
$LOGTAIL /var/log/auth.log >> $TMPDIR/check.$$
$LOGTAIL /var/log/deamon.log >> $TMPDIR/check.$$
$LOGTAIL /var/log/deamon.log >> $TMPDIR/check.$$
$LOGTAIL /var/log/mail.log >> $TMPDIR/check.$$

下面就是要服务器帮你自动用logcheck.sh来检查你的log了。。不要告诉我你不会用cron
来作这件事。。。
对于log记录很多的主机每天就分析几次,对于firewall主机这类产生标准log很少的主
机每30-60分钟检查一次不会对系统有什么负担。
使用了logcheck加上一个集中的loghost,对管理一个拥有大量主机的网络系统,能大大
的降低劳动强度,也便于及时的发现系统的异常情况,阻止可能的攻击行为。

最后一句。。。集中管理大型网络的log..loghost主机的存放log记录的硬盘一定要大,
不然撑爆了是不能记录任何log的:) …当然你可以时常备份这些log,再删除老的log文件,
删除以后…别忘了马上再touch一个新的log文件..syslogd不会帮你检查和建立这个文件
的,不过你倒是可以在备份脚本里作这件事.


五.syslog存在的问题和发展。
标准Syslog的记录是明文保存的,也没有效验机制,被修改以后是无法得知的,同时在
网络上传输syslog消息的时候也很容易被伪造和窜改,对于某些系统syslog的文件属性
是不合适的,如solair,默认是任何人可读,实际上,只需要root可读写,即600的文件
属性就足够了。要解决这些问题,恐怕只能使用第三方的log系统,包括logdeamon,
syslog-ng等等。其中syslog-ny号称是下一代的syslog (ng=next generration),包含
了一些比较好的特性,如log文件的md5效验,log记录加密存放,加密在网上传输的数

据流,内置syslog过滤器,但是现在这个软件尚未发展完全,由于它特殊的log格式,使
得管理员自己定制和过滤相对比较麻烦,目前我们也没有作更多的测试,所以暂时不推
荐关键系统上使用这些产品。当然也有一些商用的log分析系统,这里就不作介绍了。


--
            我问飘逝的风:来迟了?
            风感慨:是的,他们已经宣战。
            我问苏醒的大地:还有希望么?
            大地揉了揉眼睛:还有,还有无数代的少年。
            我问长空中的英魂:你们相信?
            英魂带着笑意离去:相信,希望还在。

※ 来源:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: 203.207.226.124]

--
☆ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: bbs@192.168.28.23]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店