鸟哥在书中介绍了这样的一种环境。 办公室内有10台Linux主机,每一台负责一个网络服务。为了无需登录每台主机去查看登录文件,需要设置一台syslog服务器,其他主机的登录文件都发给它。这样做的话,只需要登录到syslog服务器上就能查看所有主机的登录文件。 RedHat上的设置方法,鸟哥已经介绍了。 【服务器端】step 1:查看服务器是否开启了UDP 514端口 grep '514' /etc/services step 2:修改syslogd的启动设置文件/etc/sysconfig/syslog 将SYSLOGD_OPTIONS="-m 0"修改成SYSLOGD_OPTIONS="-m 0 -r" step 3:重启syslogd服务 /etc/init.d/syslog restart 重启后,你会发现UDP 514端口已经打开。 Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:514 0.0.0.0:* 5628/syslogd 【客户端】step 1:在/etc/syslog.conf中,添加下行。 user.* @192.168.0.Y # syslog服务器的IP地址 在Ubuntu中配置syslogd服务器的方法类似。 step 1:查看服务器是否开启了UDP 514端口,有下面一行说明端口514被打开,没有需要加入 # grep '514' /etc/services 184:shell 514/tcp cmd # no passwords used
185:syslog 514/udp step 2: 修改/etc/init.d/sysklogd,将SYSLOGD=""修改成SYSLOGD=" -r" step 3: 修改/etc/default/syslogd,将SYSLOGD=""修改成SYSLOGD=" -r" step 4: 重启服务 /etc/init.d/sysklogd restart step 5: 验证 在/var/log/messages中找到 May 1 23:31:59 flagonxia-desktop syslogd 1.5.0#5ubuntu3: restart (remote reception) # netstat -tlunp 得到syslogd服务正在监听端口514 udp 0 0 0.0.0.0:514 0.0.0.0:* 3912/syslogd step 6: 假设syslog服务器的IP地址:192.168.1.25,在其他主机上的/etc/syslog.conf中加入 *.* @192.168.1.25 注:/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 ,关键errerror ,错误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 。攻击者进入系统后通常立刻修改系统日志,因此作为网管你应该用一台机器专门处理日志信息,其他机器的日志自动转发到它上面,这样日志信息一旦产生就立刻被转移,这样就可以正确记录攻击者的行为。