`
hongliangpan
  • 浏览: 319574 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Syslog在网络管理中的应用

阅读更多
Syslog在网络管理中的应用
 信息来源于:上海电信信息网络部 王晓文
摘要
Syslog 是一种工业标准的协议,可用来记录设备的日志。在UNIX系统,路由器、交换机等网络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件。管理者可以通过查看系统记录,随时掌握系统状况。UNIX的系统日志是通过syslogd这个进程记录系统有 关事件记录,也可以记录应用程序运作事件。通过适当的配置,我们还可以实现运行syslog协议的机器间通信,通过分析这些网络行为日志,藉以追踪掌握与 设备和网络有关的状况。
关键词:Syslog,Syslogd,Priority(PRI),Facility,Severity,Header,Message(MSG),Timestamp。
1.引言
    电信运营商的网络庞大而复杂,其上运行着多种网络设备、主机系统以及业务应用。而且随着电信业的不断发展,各种新业务的推出,不同的系统纷纷建立,网络的 复杂性不断增长,使得被管理的对象在系统中不是集中的而是分散的。分布式的管理必然要求网络管理员在网络的协议层次结构上对系统管理做出重新的认识,通过 适当的策略实现集中式管理,实现事件的实时监控和快速响应的网络管理。传统的网络管理员关心的问题不单是安装配置、备份恢复、系统安全、性能优化等,还必 须从OSI模型不同的层次重新考虑系统管理的内容和形式,再加上承载业务的特点,侧重于事件监控和响应的建设是当今网络管理的主要方向。
2.网络管理的原则和要求
     从技术的角度来说,网络管理有两条原则:1、由于管理信息而带来的通行量不应明显的增加网络的通信量。2、被管理设备上的协议代理不应明显得增加系统处理 的额外开销,以致于该设备的主要功能都被削弱。网络管理的对象主要是构成网络的硬件和软件应用所组成。这一类包括工作站、服务器、网卡、路由器、网桥和集 线器等等。通常情况下这些设备都分散在不同的地方,另外由于设备众多,要做到实时实地管理需要大量的人力和物力。有什么办法可以对网络设备进行远程管理和 状态进行预警呢?
3.集中式网络管理的实现
    实际工作中,由于管理员不可能7×24小时监视着网络设备,网络运行中可能会发生很多突发情况。因此,使用日志记录设备的报警信息十分重要,管理员可以借 此对安全事件进行原因追查和故障排除等工作。以路由器为例,一般都会设定内存保留Syslog。但路由器的内存(Buffer)容量有限,大量事件发生 时,会覆盖之前的记录,不利于实时预警和报告。而对UNIX系统来说,由于管理设备的多样性和数量的缘故,一台台登录访问日志效率低下也不现实。所以有必 要建立专门的日志服务器,通过Syslog服务,接收设备发送出的报警信息。
4.Syslog在网络管理中的应用
4.1. Syslog Protocol简介
    Syslog是一种工业标准的协议,可用来记录设备的日志。在UNIX系统,路由器、交换机等网络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件。管理者可以通过查看系统记录,随时掌握系统状况。在UNIX系统里,被syslog协议接受的事件可以被记录 到不同的文件,还可以通过网络实现运行syslog协议的机器之间的信息传递。
Syslog已被许多日志函数采纳,它用在许多保护措施中——任何 行为都可以通过syslog 记录事件。通过System Call,记录用户自行开发的应用程序的运行状况。日志系统的重点之一便是要研究及开发一些系统程序,例如logger等,将网络应用程序重要的行为向 syslog接口呼叫并记录为日志,大部分内部系统工具如邮件和打印系统都是如此生成信息的,许多新增的程序如Tcpwrappers和SSH也是如此工 作的。通过syslogd(负责大部分系统事件的daemon),系统事件可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或通过网络 记录远端设备上的事件。
 
图1   Syslogd运作图
4.2. Syslog在网络管理方面应用
    Syslog协议提供了一个传递方式,允许一个设备通过网络把事件信息传递给事件信息接受者(也称之为日志服务器)。由于每个进程、应用程序和操作系统都 或多或少地被独立完成,在syslog信息内容会有一些不一致的地方。因此,协议中并没有任何关于信息的格式或内容的假设。这个协议就是简单地被设计用来 传送事件信息,但是事件已经被接受到不会被通知。Syslog协议和进程最基本原则就是简单,在协议的发送者和接受者之间不要求有严格的相互协调。事实 上, syslog信息的传递可以在接受器没有被配置甚至没有接受器的情况下开始。反过来,在没有被清晰配置或者定义的情况下,接收器也可以接收到信息。
    几 乎所有的网络设备都可以通过syslog protocol将日志信息以UDP方式传送到远端服务器,远端接收日志服务器必须通过syslogd来监听UDP Port 514,并且根据syslog.conf中的配置来处理本机和接收访问系统的日志信息,把指定的事件写入特定档案中,供后台数据库管理和响应之用。也就是 说可以让任何所产生的事件都登录到一台或多台服务器上,以便后台数据库可以相对远端设备以Off-line的方法分析事件。

                            图2日志分析系统架构图
4.3. Syslog的格式说明
    设备必须通过一些规则来配置,以便显示或者传递事件信息。不管管理员决定怎样配置对事件信息的处理,把这些信息发送到syslog接受者的过程一般都由下面部分构成:决定哪个帮助信息要被发送,要被发送的级别,定义远程的接受者。
    被 传输的syslog信息的格式主要有3个容易识别出来的部分,分别是PRI、HEADER、MSG。数据包的长度小于1024个字节。PRI部分必须有 3、4、5个字符,以“<”开头,然后是一个数字,并以“>”结尾。在方括号内的数字被称为优先级 (Priority),由facility和severity两个值构成。信息中的facilities和severities通过十进制值进行数字的编 码。一些操作系统的后台监控程序和进程被分配一个facility值,那些没有分配一个facility值的进程和daemons将会使用“local use”的facilities值或者“用户级别”的facilities值。下面的表格表示被指定的Facilities值和对应的数字代码。
Numerical Code            Facility
0                    kernel messages                            
1                  user-level messages
2                  mail system      
3                  system daemons                             
4                  security/authorization messages            
5                  messages generated internally by syslogd   
6                  line printer subsystem                     
7                  network news subsystem                     
8                  UUCP subsystem                             
9                  clock daemon                               
10                  security/authorization messages            
11                  FTP daemon                                 
12                  NTP subsystem                              
13                  log audit                                  
14                  log alert                                  
15                  clock daemon                               
16                  local use 0  (local0)                   
17                   local use 1  (local1)                      
18                   local use 2  (local2)                      
19                   local use 3  (local3)                      
20                   local use 4  (local4)                      
21                   local use 5  (local5)                      
22                   local use 6  (local6)                      
23                   local use 7  (local7)                      
                      表1    Syslog Message Facilities
每个信息优先级也有一个表示十进制Severity登记的参数, 下面的表格描述出他们和对应数值。
Numerical Code                 Severity
        
0                   Emergency
1                   Alert
2                   Critical
3                   Error
4                   Warning
5                   Notice
6                   Informational
7                         Debug
                          
表 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日志服务器容易成为攻击者的目标,对于防范系统方面的攻击比较脆弱,需要特别注意。

参考文献:
RFC 3164-----The BSD Syslog Protocol

syslogd(请参阅syslogd(1M) 和 )是 UNIX 系统的一个常见组件,用于执行系统日志记录活动。syslogd 从一组日志源(如 /dev/log 和 /dev/klog )中读取数据,并按照 /etc/syslog.conf 中的说明处理这些日志消息。通过 syslog() 调用(请参阅 syslog(3C)),可将应用程序日志消息记录到 syslog 中。
syslog 消息格式


syslog 消息采用一种包含可选优先级和设备的标准格式。优先级指示消息的紧急程度。设备指示发布消息的子系统。表 3-1 列出了 /usr/include/syslog.h 中定义的优先级和设备资源。
表 3-1 syslog 优先级
消息 说明
LOG_ALERT 立即采取措施。
LOG_CRIT 发生了紧急状况。
LOG_DEBUG 调试级别的消息。
LOG_EMERG 系统不可用。
LOG_ERR 出现错误。
LOG_INFO 信息性消息。
LOG_NOTICE 正常,但需要引起注意的重要状态。
LOG_WARNING 处于警告状态。

表 3-2 介绍了 syslog 设备资源消息。
表 3-2 syslog 设备资源消息
消息 说明
LOG_AUTH 安全/授权消息(已废弃;现改用 LOG_AUTHPRIV)。
LOG_AUTHPRIV 安全/授权消息(专用)。
LOG_CRON 时钟守护程序(cron 和 at)。
LOG_DAEMON 无单独设备值的系统守护程序。
LOG_FTP ftp 守护程序。
LOG_KERN 内核消息。
从 LOG_LOCAL0 到 LOC_LOCAL7 保留供本地使用。
LOG_LPR 行式打印机子系统。
LOG_MAIL 电子邮件子系统。
LOG_NEWS USENET 新闻子系统。
LOG_SYSLOG 由 syslogd 内部生成的消息。
LOG_USER(缺省) 普通用户级别的消息。
LOG_UUCP UUCP 子系统。

消息过滤


使用 /etc/syslog.conf,可以根据优先级和设备过滤消息。可以将消息定向到:
• 特定日志文件
• 控制台
• 指定用户。如果用户已登录,则会将消息发送到用户终端。
• 所有登录用户
• 转发到远程系统。有关详细信息,请参阅“日志整合概述”。
有关配置消息过滤器的其他信息,请参阅 syslogd(8) 联机帮助页。

分享到:
评论

相关推荐

    如何在windows服务器中使用syslog功能

    Syslog是一种标准协议,用于在网络设备、服务器和应用程序之间收集和分发日志信息。它允许管理员监控多个系统的事件,并在一个中心位置进行分析,这对于故障排查和安全审计至关重要。 要在Windows服务器上启用...

    SYSLOG日志数据采集实现

    ### SYSLOG日志数据采集实现 #### 一、引言 在网络安全管理中,日志数据的采集至关重要。通过对各种安全设备的...在未来,随着网络安全需求的不断增长,SYSLOG将继续作为一项关键的技术服务于网络管理和监控领域。

    SysLog日志工具1

    总结,SYSLog日志工具是网络管理的重要组成部分,它提供了灵活的配置选项和API接口,使得系统管理员能够有效地监控和管理分布式环境中的日志信息,从而更好地理解和解决潜在的问题。通过理解和使用这些工具,可以...

    syslog协议

    最后,Syslog在网络管理中的应用不仅仅限于记录日志,它还支持与安全相关的事件日志管理。许多安全事件可以通过Syslog进行记录,管理员可以利用这些信息对安全事件进行追踪和分析,从而及时采取措施预防潜在的安全...

    Go-快速的系统日志syslog解析器

    syslog是一种广泛使用的标准协议,用于在各种网络设备和应用程序之间交换日志信息。本文将深入探讨使用Go语言开发快速syslog解析器的相关知识点。 一、syslog协议基础 syslog协议允许系统和服务发送结构化的文本...

    [日志分析工具]Syslog Watcher 5

    在实际使用中,Syslog Watcher 5可以帮助运维人员监控网络设备的性能,检测安全威胁,追踪应用程序错误,以及优化系统配置。对于大型企业或复杂IT环境来说,这种工具是不可或缺的,它可以大大提高故障诊断和问题解决...

    syslog syslog4j syslogd linuxsyslog4j

    在实际应用中,开发者会集成syslog4j到他们的Java项目中,以便利用syslog协议发送和接收日志信息,从而实现日志的集中管理和分析。 总的来说,syslog、syslog4j、syslogd和Linux syslog构成了一个强大的日志管理...

    syslog4j-0.9.46.zip

    syslog协议是一种广泛应用于网络设备、操作系统和应用程序的日志记录标准,它允许系统管理员集中收集和分析来自不同源的日志信息。syslog4j-0.9.46.zip这个压缩包包含了syslog4j的特定版本,即0.9.46,这是一个针对...

    Syslog4j首页、文档和下载 - Syslog协议的Java版 - 开源中国社区.pdf

    ### Syslog4j知识点概述 #### 一、Syslog4j简介 ...综上所述,Syslog4j作为一款专为Syslog协议设计的Java库,具有丰富的功能和灵活的配置选项,非常适合那些需要在Java应用中实现Syslog日志记录的场景。

    Syslog配置及使用简介

    Syslog配置及使用简介 syslog是一种日志记录协议,用于将日志信息从设备发送到中央日志服务器,以便于日志收集、存储和分析。...因此,syslog 协议和配置在网络管理和安全领域中扮演着非常重要的角色。

    syslog协议发送日志(java)

    syslog协议是网络设备、操作系统和应用程序之间广泛使用的标准日志记录协议,它允许系统将日志消息发送到中央日志服务器,便于管理和分析。在Java环境中实现syslog协议发送日志,我们可以利用相关的库或者自定义编程...

    syslog-server.zip

    《深入理解Syslog服务器在SpringBoot中的应用》 Syslog服务器是网络日志管理系统的核心组件,主要用于收集、存储和分析来自各种设备的日志信息。在本文中,我们将深入探讨如何在SpringBoot框架下构建和使用Syslog...

    syslog

    标题 "syslog" 指的是 Unix 和 Linux 系统中的日志系统,它是一个标准的日志记录协议,用于收集和处理来自不同网络设备和应用程序的事件信息。syslog 支持分布式日志记录,允许管理员在一个中心位置监控和管理多台...

    syslog在UNIX和Windows服务器端及客户端配置

    Syslog(系统日志协议)是一种标准的、广泛应用于网络设备和计算机系统中的日志记录协议。它能够帮助系统管理员集中管理来自不同来源的日志信息,便于进行故障诊断、安全审计和性能监控等工作。本篇文章将详细介绍...

    java发送syslog日志,支持多目的ip

    Java发送Syslog日志是一种常见的系统日志管理方式,尤其在分布式系统中,它能帮助开发者收集、分析和处理来自不同节点的日志信息。Syslog协议是一个标准的日志消息传递协议,广泛应用于网络设备、操作系统和其他软件...

    windows syslog server测试工具

    在IT行业中,日志管理是系统运维工作的重要组成部分,尤其对于服务器监控和故障排查来说,syslog服务扮演了至关重要的角色。Syslog是一种标准的日志协议,广泛应用于各种网络设备、操作系统和应用程序,用于收集和...

    syslog-ngOSE_3.30管理手册

    在理解这些知识点的过程中,我们应当注意到,syslog-ng 的安装和配置对于系统日志管理是至关重要的。一个良好配置的 syslog-ng 能够帮助我们更高效地处理日志数据,增强系统的可维护性与安全性。 尽管手册的内容被...

    ros MT_Syslog 日志记载

    总的来说,ros MT_Syslog 日志记载是网络管理中不可或缺的一部分,它提供了对网络行为的深入了解,帮助管理员更好地管理和维护他们的网络基础设施。了解和熟练掌握MT_Syslog的使用,将极大地提高工作效率和网络安全...

    SyslogWatcher

    在压缩包“Syslog Watcher 2”中,我们可以期待的是SyslogWatcher的最新版本,可能包含更多改进和新功能,如增强的性能、更多的自定义选项以及更广泛的设备和应用支持。用户只需解压并运行,即可体验到这个绿色版...

Global site tag (gtag.js) - Google Analytics