实战搭建L inux 远程日志服务器
2018-07-14王继敏
王继敏
(河南科技学院信息工程学院,河南 新乡 453003)
【关键字】Linux;日志
0 引言
日志服务器将系统上发生的重要事件记录下来,以协助系统管理员进行安全分析、 故障排查及合规审计等。 但如果遭受到非法入侵, 入侵者会删除日志以防止入侵行为被追踪, 而将日志记录在远程服务器就可以避免这种情况。 常见的Linux 发行版都是采用的rsyslog 来实现日志服务的, 并可以较方便的将一台Linux 主机配置为远程日志服务器。本文将阐述相关的技术原理和实现方法。
本文所述的命令、 配置文件等都基于RHEL6.3(Redhat Enterprise Linux 6.3), 不 同Linux 发 行 版 之 间或许有细微的差别, 这些差异不在本文的探讨范围之内。
1 日志
Linux 下的日志记录了系统每天发生的各种各样的事情, 可以通过它来检查错误发生的原因, 或者受到攻击时攻击者留下的痕迹。 日志主要的功能有: 审计和监测。 RHEL6 下的日志文件存放在/var/log 目录下,下面举几个常见日志的例子:
●/var/log/dmesg
核心启动日志。 这个日志文件记录了内核启动时候输出的信息。
●/var/log/messages
系统报错日志。
●/var/log/maillog
邮件系统日志。
●/var/log/secure
安全信息、认证登录和与xinetd 有关的日志。
●/var/log/cron
计划任务执行成功与否的日志。
●/var/log/wtmp
记录所有的登录和登出。可以用last 命令查看所有登录过系统的用户和IP。
●/var/log/btmp
记录错误的登录尝试。 可以用lastb 命令查看。 注意, 这个文件如何突然快速增大, 可能有人试图暴力破解用户密码。
●/var/log/lastlog
记录每个用户的最后登录信息。
RHEL6 下有一个tailf 命令非常适合用于监控日志文 件 的 变 化。 例 如 输 入 命 令 “tailf /var/log/secure”,这时, 屏幕显示的末尾就是系统输出的最新的安全信息、认证登录和与xinetd 有关的日志。
2 日志的分类和分级
Linux 下的日志采用先分类, 然后在每个类别下分级的管理模式。 日志种类可以分为七类[1]:
●authpriv 安全认证相关
●cron at 和cron 定时任务相关
●deamon 定时任务相关
●kern 内核产生
●lpr 打印系统产生
●mail 邮件系统产生
●syslog 日志服务本身
除上面列出的七类常见日志以外,还有news(新闻系统相关)、uucp(unix to unix copy)等日志类型(目前已经不太常用)。 另外, 还有local0~lobal7 这八个日志类型, 是系统保留的, 可以供其他程序使用或者用户自定义使用。
日志又可以分为八种级别, 按照级别由低到高分别是:
●debug 排错信息
●info 正常信息
●notice 稍微要注意的
●warn 警告
●err(error) 错误
●crit(critical) 关键的错误
●alert 警报警惕
●emerg(emergence) 紧急突发事件
3 日志的总管家rsyslog
在RHEL6 中日志由系统服务rsyslog 进行管理和控制。 最小化安装RHEL6 后,rsyslog 服务默认是开启的。该服务的配置文件位于/etc/rsyslog.conf,下面对该配置文件进行简单描述。
该配置文件主要分为MODULES 和TOOLS 两小节。MODULES 小节设置rsyslog 服务加载的模块。 其中#号表示注释。其中比较重要的是“#$ModLoad imudp”和“#$UDPServerRun 514”两行,取消掉该行注释后,表示允许514 端口接收使用UDP 协议转发过来的日志。 这样可以把本主机配置为集中式的日志服务器, 它接收并存储其它主机的日志,提高了整个系统的安全性。 “#$ModLoad imtcp”和“#$InputTCPServerRun 514”功能相同,只不过采用的是TCP 协议。
RULES 这一节定义了不同类型和级别的日志应存放 在 哪 里。 例 如,“*.info;mail.none;authpriv.none;cron.none /var/log/messages” 表 示 除 了mail 日 志、authpriv 日志和cron 日志之外, 其它的所有类型info 级别及以上的日志都存放在/var/log/messages 下。
4 配置远程日志服务器
使用虚拟机作为实验环境, 首先启动两台RHEL6虚拟机,其中一台主机ip 地址为192.168.1.111,将其设置为日志服务器。 另一台ip 地址192.168.1.112,设置为客户端用于测试日志服务器是否正确配置。
然后配置日志服务器主机的/etc/rsyslog.conf 文件,并重启rsyslog 服务。以下给出/etc/rsyslog.conf 文件需要修改的地方,及重启服务的命令:
# vi /etc/rsyslog.conf
......
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
......
# service rsyslog restart
接下来配置客户端主机的/etc/rsyslog.conf 文件,定义其日志向日志服务器发送,然后重启rsyslog 服务。以下给出/etc/rsyslog.conf 文件需要修改的地方,及重启服务的命令:
# vi /etc/rsyslog.conf
......
#### RULES ####
......
*.info @192.168.1.111
......
# service rsyslog restart
最后配置日志服务器主机的防火墙, 使其可以接收客户端发来的日志信息。 简单起见, 这里直接用命令“iptalbes -F”关闭日志服务器主机的防火墙。 此时就可以测试一下, 远程日志服务器是否配置成功了。例如客户端主机用logger 命令产生一条日志, 用tailf观察一下日志服务器的日志变化。
经过这样的搭建,ip 地址为192.168.1.112 的Linux主 机 上 的 日 志 信 息, 将 会 发 送 到 ip 地 址 为192.168.1.111 的远程日志服务器上。
如果整个系统有多台Linux 主机提供网络服务,那么配置一台集中式的远程日志服务器负责接收多台Linux 主机的日志信息, 不仅加强了日志信息的安全,而且管理员只需要查看日志服务器上的信息即可以掌握整个系统的运行状况,方便管理。
5 结束语
日志服务器在系统的运行维护过程中起到重要的作用, 可以协助系统管理员进行安全分析、 故障排查及合规审计等。 为了避免日志信息被非法入侵者删除, 可以采用远程日志服务器的方式提升系统安全。通过RHEL6 中内置的rsyslog 软件包及修改相应配置文件,可以方便的架设远程日志服务器。