用专用Linux日志服务器增强系统安全 |
| 作者:赵珂 zhaoke.net (2005-05-18 13:18:45) |
|
|
目录 一. 准备工作 二. 系统安装 三. 系统配置 四. 测试 五. 结论 六. 更多
关键词: Linux日志服务器(Linux Log Server)
为什么要建立专用Linux日志服务器? 首先, 我们简单分析一下入侵的过程. 黑客通过探测和利用漏洞非法进入到一台计算机系统中, 首要的事情就是 隐藏自己的痕迹, 而不会去告诉他人系统已被攻击. 为了完成隐藏任务, 大多数黑客会删除日志文件中所有可疑条目. 因为一旦黑客被捕, 日志文件 将成为最重要的证据. 如果你发现系统被入侵, 你看到的日志文件可能已被 篡改, 那么我们如何才能够保证日志文件是100%完整的呢? 接下来我将向 大家介绍如何在你的网络里建立一台用于收集其它计算机系统日志的专用机器. 这样一来就算黑客入侵了你的系统, 修改了日志, 但你仍有一个完整的日志 备份在专用的Linux日志服务器上.
一. 准备工作
wwwserver: web服务器. logserver: log服务器, 专门的日志服务器, 用于保护wwwserver的日志.
wwwserver的ip: 210.77.144.2 logserver的ip: 210.77.144.1
本文使用Redhat 9.0来做Linux日志服务器. 请确认web服务器中的 /etc/hosts文件已经建立了logserver条目. 简单操作:
logserver的ip地址为210.77.144.1
[root@wwwserver /]# echo "210.77.144.1 logserver">>/etc/hosts
运行系统: Red Hat 9
wwwserver系统和网络环境: [zhaoke@wwwserver /]# uname -r 2.4.20-8smp
[zhaoke@wwwserver /]# cat /etc/redhat-release Red Hat Linux release 9 (Shrike)
[zhaoke@wwwserver /]# /sbin/ifconfig eth0|grep inet inet addr:210.77.144.2 Bcast:210.77.144.255 Mask:255.255.248.0
logserver系统和网络环境: [zhaoke@logserver /]# uname -r 2.4.20-8smp
[zhaoke@logserver /]# cat /etc/redhat-release Red Hat Linux release 9 (Shrike)
[zhaoke@logserver /]# /sbin/ifconfig eth0|grep inet inet addr:210.77.144.1 Bcast:210.77.144.255 Mask:255.255.248.0
二. 系统安装
大家可以参考下面文章建立Web(含SSL)服务器和防火墙策略:
1). 在Redhat Linux 9上通过DSO方式搭建Apache HTTP服务器. http://zhaoke.net/articles/general/2005-01-31.shtml
2). 在Redhat Linux 9上通过DSO方式搭建Apache SSL HTTP服务器. http://zhaoke.net/articles/general/2005-02-07.shtml
3). 为Apache HTTP 1.3.3 Server设定一个简单防火墙策略. http://zhaoke.net/articles/general/2005-02-01.shtml
三. 系统配置
1. 配置wwwserver的syslog.conf
修改web服务器syslog的配置文件/etc/syslog.conf, 告诉syslogd进程 传输本系统的日志信息到logserver上.
[root@wwwserver /]# vi /etc/syslog.conf
添加下面的代码到syslog.conf中: *.* @logserver
2. 在wwwserver机器上重启syslogd
完成步骤一后, 重启syslogd以使用新的配置:
[root@wwwserver /]# killall -HUP syslogd 或者 [root@wwwserver /]# /etc/rc.d/init.d/syslog restart
3. 配置wwwserver机器的防火墙
添加允许从wwwserver的514端口传输udp封包到logserver的防火墙策略.
[ root@wwwserver /] /sbin/iptables -A OUTPUT -p udp -i eth0 -s 210.77.144.2 -d 210.77.144.1 --destination-ports:514 -j ACCEPT
[ root@wwwserver /] /sbin/iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- 210.77.144.2 210.77.144.1 接上行udp dpt:syslog
注: 端口514用于syslog程序.
[root@wwwserver /]# cat /etc/services|grep 514/udp syslog 514/udp
[root@wwwserver /]# /usr/sbin/lsof -i:514 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME syslogd 18014 root 10u IPv4 131882 UDP *:syslog
4. 配置logserver机器
到现在为止, 我们已经设置了允许web服务器发送日志信息到专用 日志服务器logserver. 接下来设置日志服务器能从Web服务器接受 日志文件信息.
[root@www /]# ps -aux|grep syslogd root 2612 0.0 0.0 1440 340 ? S Feb03 0:01 syslogd -m 0
从上面可以看到syslogd进程号为1292, 我们需要停止syslogd 进程, 然后配置syslogd和重新启动.
[root@log /]# kill 1292
现在syslog进程已经终止, 我们需要重新启动syslog并启动 syslog的"远程接受(remote reception)"功能.
[root@log /]# /sbin/syslogd -rm 0
5. 确认日志服务器的syslog进程正确配置
检查/var/log/messages日志文件确认syslogd已重启
[root@log /]# tail -f /var/log/messages
在文件的底层你能看见:
Feb 11 14:52:42 log syslogd 1.4.1: restart (remote reception).
这样syslogd已经工作了.
6. 防火墙配置
在你的日志服务器上添加下面防火墙策略, 允许来自web服务器512端口的 udp数据传输到logserver上.
[root@log]# /sbin/iptables -A INPUT -p udp -i eth0 -s 210.77.144.2 -d 210.77.144.1 --sport 514 -j ACCEPT
[root@log root]# /sbin/iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- 210.77.144.2 210.77.144.1 udp spt:syslog .....
四. 测试
最后一步我们需要做的是验证所有的配置是否正常工作. 我们可以这样来 做, 首先从wwwserver登出和登陆:
[root@wwwserver /]# logout Login: root Password: xxxxxxxxxx
然后检查logserver上的日志文件/var/log/messages或者/var/log/secure) , 可以看到下面的记录: Feb 26 20:29:02 wwwserver login[1623]: ROOT LOGIN on `tty2'
从上面可以看出webserver上的root登陆记录到了logserver的日志文件中. 测试完毕.
五. 结论
在我们要建立一台专用的日志服务器时, 请确认日志服务器是足够安全的, 它仅接受来自于信任网络的日志信息. 日志服务器上最好不要运行其它的 应用程序, 如xwindows, web服务器, 数据库mysql或oralce, ftp服务器, 邮件服务器等.
六. 更多
关于作者: 赵珂, 操作系统研究和安全工程师. zhaoke.net是作者的个人网站. 欢迎技术交流.
(http://www.fanqiang.com)
原文链接:http://zhaoke.net/articles/general/2005-02-26.shtml
|
|