表 2 Syslog Message Severities Priority(优先级) = facility * 8 + severity值。比如说,一个核心信息(facility=0)和一个Emergency的severity将会产生优先级为0。同样, 一个“local use 4”信息(facility=20)和一个Notice的severity(severity=5)将会产生165的优先级。 标题(HEADER)部分由称为TIMESTAMP和HOSTNAME的两个域组成,PRI结尾的“>”会马上跟着一个 TIMESTAMP,任何一个TIMESTAMP或者HOSTNAME域后面都必须跟着一个空格字符。HOSTNAME包含主机的名称,若无主机名或无法 识别则显示IP地址。如果一个主机有多个IP地址,它通常会使用它传送信息的那个IP地址。TIMESTAMP是本机时间,采用的格式是“Mmm dd hh:mm:ss”表示月日时分秒。HOSTNAME域仅仅能够包括主机名称,Ipv4地址或者是信息产生者的Ipv6地址。 MSG部分是Syslog数据包剩下的部分。这通常包含了产生信息进程的额外信息,以及信息的文本部分。MSG部分有两个域,分别为TAG域和 CONTENT域,TAG域的值是产生信息的程序或者进程的名称,CONTENT包含了这个信息的详细内容。传统上来说,这个域的格式较为自由,并且给出 一些时间的具体信息。TAG是一个不许超过32个字符的字母数字字符串,任何一个非字母数字字符都将会终止TAG域,并且被假设是CONTENT域的开 始。在大多数情况下,表示TAG结束的CONTENT域的第一个字符用左大括号( [ ],分号( : )或者是空格来表示。 4.3. Syslog的发送和接收 接受端服务器收到发送给它的syslog数据包,它将检查它的有效PRI。如果第一次字符不是一个“<”,或者第三、第四或者第五不是一个 “>”,接收端将认为数据包没有包含有效的PRI。接着检查在标题部分的有效TIMESTAMP,从这些规则中,信息的接收一般有三个情况,下面给 出了这三个情况的通常属性,并列举了随后在这篇中什么地方会描写这些情况。 有效的PRI and TIMESTAMP:在数据包中发现一个有效的PRI和TIMESTAMP,那么会接着检查数据包的内部配置,接收端必须根据数据包的优先级来还原,或者 在不对数据包做任何变化的情况下将它转发出去。这里要注意到的是接受端没有必要确认TIMSTIMP里面的时间,同时接收端也没有必要确认 HOSTANME的值和发送信息设备的主机名或者IP地址一致。 有效的 PRI,但没有TIMESTAMP 或者TIMESTAMP无效:要是在数据包中发现一个有效的TIMESTAMP,那么必须马上添加一个TIMESTAMP和一个空格字符在PRI部分的结 尾的方括号内,它还必须添加一个HOSTNAME和空格字符在TIMESTAMP后面,接收到的信息包剩下的部分必须被当曾MSG的CONTENT域并附 加上,由于无法识别产生信息的设备所发出的进程,TAG的值无法被识别出来, 所以不会包含再里面。TIMESTAMP将会是接收端的本地时间,HOSTNAME是设备的名称,它被中继器所识别。如果名字如能被决定, 设备的IP地址将被使用到。要是中继器添加一个TIMESTAMP(或者同时添加TIMESTAMP和HOSTNAME)在PRI后面, 然后检查是否数据包的总体长度仍然小于或等于1024个字节。如果数据包被扩展超过1024个比特, 中继器必须截去一部分数据包数据使它到达到1024比特。这将会导致原始数据包结尾部分重要信息的丢失. 所以,这就是产生的syslog数据包的PRI和HEADER部分包含在4.3节所记录的值和域之中的缘故。 没有 PRI or 或者 PRI无法识别:如果收不到PRI或者PRI不可识别,除了必须插入一个优先级为13的PRI和我们在上面描述的TIMESTAMP,还必须插入一个 HOSTNAME。被接收到的数据包的全部内容将被认为是被传递的MSG的CONTENT并被添加在后面。一个不可识别的PRI的例子就是“< 00>”,这也许是一个信息的前4个字符。如果接收到这样的syslog信息,那么它的优先级将被中继器或收集者改为13,并且加入 TIMESTAMP。具体如下: 原来接收到的信息 <00>... 被传递或识别的信息 <13>TIMESTAMP HOSTNAME <00>... 如果中继器添加一个TIMESTAMP(或者同时添加一个TIMESTAMP和HOSTNAME)在PRI后面, 那么它将检查这个数据包的总体长度是否等于或者小于1024个比特。 在UNIX文件系统里头,syslog设备依据两个重要的文件:syslogd(守护进程)和syslog.conf配置文件。习惯上,多数syslog 信息被写到/var/adm或/var/log目录下的信息文件中(syslog或messages.*)。一个典型的syslog纪录包括生成程序的名 字和一个文本信息。它还包括一个设备和一个优先级范围(但不在日志中出现)。Syslog.conf的格式比较复杂,大家可以参考一下有关书籍(或者在主 机上man syslog.conf),主要是如下语句形式: facility、level、action。Facility代表各种服务,level代表syslog的认证级别,action代表的是针对前面信息 的处理动作。Action字段如果是@loghos(主机名或具体IP),则把信息发送到loghost,而不是本地的 /var/adm/messages。 4.4. 配置实例 4.4.1 UNIX à UNIX服务器 接收端设置: 我们采用一台Sun服务器作为日志接收服务器(Hostname:nmtest1-yd,IP为192.168.3.71)。一般情况下,UNIX系统的 本地系统日志都存放在/var卷下(Solaris系统默认存放在/var/adm/messages),当然我们也可以更改存放路径。根据需求,配置 syslogd.conf文件,重启syslogd应用。监控应用多的话,message可能会增大很多,可以做一些简单的分类即可。 # vi /etc/syslogd.conf kern.crit /dev/console *把kern.crit、kern.alert及kern.emerg相关信息送到系统consle authpriv.* /var/log/securelog mail.info;mail.!err /var/log/maillog *把mail信息priority大于等于info,但priority为error除外的信息记录 发送端设置:(一台Sun服务器,IP为192.168.3.72) 指定好loghost,让后编辑/etc/syslog.conf,将原先的设定 *.info;mail.none;authpriv.none;cron.none[Tab]/var/log/messages 改成: *.err;kern.debug;daemon.notice;mail.crit[Tab]/var/log/syslog@192.168.3.71 保存后退出,在两台服务器上重启syslogd进程。在接收端和发送端上通过snoop监听514端口状况。可以发现有包进出。在nmtest1-yd上查看/var/log/syslog,可以发现: Nov 23 18:17:25 [192.168.3.72.159.195] sendmail[17259]: unable to qualify my own domain name (nmtest2-yd) -- using short name Nov 23 18:17:25 [192.168.3.72.159.195] sendmail[17895]: My unqualified host name (nmtest2-yd) unknown; sleeping for retry Nov 23 18:17:25 [192.168.3.72.159.195] last message repeated 1 time 4.4.2 路由器à UNIX服务器 接收端设置: 我们采用一台Sun服务器作为日志接收服务器(Hostname:nmtest1-yd,IP为192.168.3.71),配置syslog.conf文件。 local0.info[Tab]/var/log/hw.log 保存退出,并生成hw.log空文件,touch /var/log/hw.log。 发送端设置: router1# conf router1(config)# logging on router1(config)#loggin 192.168.3.71 router1(config)#logging facility local0 router1(config)#logging trap info router1(config)#logging timestamps log datetime localtime 在nmtest1-yd上查看/var/log/hw.log,可以发现: Nov 18:17:25: %LINK-3-UPDOWN: Interface POS2/0/0, changed state to up Nov 18:17:25: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet3/0, changed state to up Nov 18:17:25: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet3/1, changed state to up Nov 18:17:25: %LINEPROTO-5-UPDOWN: Line protocol on Interface POS2/0/0, changed state to up 5. 结束语 结合syslog进行集中式网络管理,应先了解系统日志运作原理,并且能够依照本身需求,灵活运用日志系统,打造一个适合自身的记录环境。这种方法也存在不足之处,由于syslog是以UDP方式传送,个别的日志消息可能会遗失;在网络设备崩溃的情况下,可能不会将最有用的信息发送到syslog服务器 上,这对于排除崩溃故障不是很有用;而且syslog日志服务器容易成为攻击者的目标,对于防范系统方面的攻击比较脆弱,需要特别注意。