分类: 系统运维
2009-04-07 10:51:50
本文作者:zcj
来源:
本文可以任意转载, 请保留作者和来源
Syslog协议
Syslog protocol是一种工业标准的协议,允许一个设备通过IP网络把通告信息传递给事件信息接收者(也称之为“syslogd”,“syslog daemon”或“日志服务器”)。术语“syslog”一般用作真正的syslog protocol,或者也用作应用程序或库发送syslog信息。Syslog是一个简单协议,常用来管理计算机系统和安全审计。虽然存在大量不足,Syslog获得了大量设备和接收者跨越多个平台和操作系统的支持。因此,Syslog可用来将日志数据从多种不同类型的系统整合到一个存贮中心。
由于每个进程、应用程序和操作系统都或多或少地被独立完成,在syslog信息内容会有一些不一致的地方。因此,协议中并没有任何关于信息的格式或内容的假设。这个协议就是简单地被设计用来传送事件信息。在所有情况下,都有一个产生这个信息的设备,其中的syslog 程序可以发送信息到接收者,但是事件已经被接收到不会被通知。Syslog 采用用户数据报协议(UDP)作为其底层传输层机制。被分配syslog的端口是514端口。数据通常是以简明文本的形式发送的,但诸如Stunnel, sslio或sslwrap的SSL wrapper会被用来通过SSL/TLS提供层加密。
Syslog 协议和进程最基本原则就是其简便性,在协议的发送者和接收者之间不要求有严格的相互协调。事实上,syslog 信息的传递可以在接收器没有被配置甚至没有接收器的情况下开始。反过来,在没有被清晰配置或者定义的情况下,接收器也很可能接收到信息。这个简单原则很好地促进了syslog 的认可和开展。
日志文件由系统日志和内核日志监控程序syslogd 与klogd 控制, 在/etc/syslog.conf 文件中配置这两个监控程序默认活动。
日志文件按/etc/syslog.conf 配置文件中的描述进行组织。下图是/etc/syslog.conf 文件的内容:
[root@localhost ~]# cat /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
syslog.conf 行的基本语法是:
[ 消息类型][ 处理方案]
注意:中间的分隔符必须是Tab 字符!
消息类型是由" 消息来源" 和" 紧急程度" 构成,中间用点号连接。例如上图中,news.crit 表示来自news 的“ 关键” 状况。在这里,news 是消息来源,crit 代表关键状况。通配符* 可以代表一切消息来源。
说明:
第一条语句*.info ,将info 级以上(notice,warning,err,crit,alert 与emerg )的所有消息发送到相应日志文件。
日志文件类别(按重要程度分类)日志文件可以分成八大类,下面按重要性从大到下列出:emerg emergency ,紧急
alert,警报
crit critical,关键
err error,错误
warning 警告
notice 通知
info 信息
debug 调试
简单列一下消息来源
auth 认证系统,如login 或su ,即询问用户名和口令
cron 系统执行定时任务时发出的信息
daemon 某些系统的守护程序的 syslog ,如由in.ftpd 产生的log
kern 内核的信息
lpr 打印机的信息
mail 处理邮件的守护进程发出的信息
mark 定时发送消息的时标程序
news 新闻组的守护进程的信息
user 本地用户的应用程序的信息
uucp uucp 子系统的信息
* 表示所有可能的信息来源
处理方案
"处理方案" 选项可以对日志进行处理。可以把它存入硬盘,转发到另一台机器或显示在管理员的终端上。
处理方案一览:
文件名 写入某个文件,要注意绝对路径。
@主机名 转发给另外一台主机的syslogd 程序。
@IP地址 同上,只是用IP 地址标识而已。
/dev/console发送到本地机器屏幕上。
*发送到所有用户的终端上。
| 程序通过管道转发给某个程序。
例如:
kern.emerg /dev/console( 一旦发生内核的紧急状况,立刻把信息显示在控制台上)
说明:
如果想修改syslogd 的记录文件,首先你必须杀掉syslogd 进程,在修改完毕后再启动syslogd 。攻击者进入系统后通常立刻修改系统日志,因此作为网管你应该用一台机器专门处理日志信息,其他机器的日志自动转发到它上面,这样日志信息一旦产生就立刻被转移,这样就可以正确记录攻击者的行为。
将日志文件记录到远程主机 。
说到这远程主机就是我们本文要配置的syslog 服务器。
2.syslog 服务器配置实践步骤
例如: 10.0.0.1 为syslog 服务器 10.0.0.2为客户机
步骤:
1. 服务端配置
vi /etc/sysconfig/syslog
sysLOGD_OPTIONS = “-r –m 0” ## -r意思是接受远程的日志
重起syslog 服务 /etc/rc.d/init.d/syslog restart
2. 客户端配置
vi /etc/syslog.conf
在消息去向处添加 @10.0.0.1
例如:*.info;mail.none;authpriv.none;cron.none @10.0.0.1
存盘退出重起服务
/etc/rc.d/init.d/syslog restart
( 知识点:直接查看日志尾部: tail /var/log/messages 或者tail /var/log/boot 这样就可以看到syslog 重起)
注意:日志服务使用的端口是:514/udp syslog 服务器应该打开这个端口
syslog 日志服务器端不能根据源地址过滤,为了防止外网向日志服务器写垃圾信息要在网络拓扑中解决,网关上做限制外网访问514 端口。
如果服务器比较多的话,这样形成的日志比较大,要做好日志的分析
3. 一些日志工具
chklastlog
chkwtmp
dump_lastlog
spar
Swatch
Zap
日志分类方法
有任何问题请到