5.21. 所有重要日志的物理硬拷贝

最重要的安全考虑因素之一是以下目录下不同日志文件的完整性/var/log服务器上的目录。即使我们的服务器上部署了各种安全功能,如果破解者仍然可以访问它,我们最后的防线就是日志文件系统,因此考虑一种确保日志文件完整性的方法非常重要。

如果你的服务器上或网络中的机器上安装了打印机,一个好主意是拥有所有重要日志的实际物理硬拷贝。这可以通过使用连续进纸打印机并将 syslog 程序配置为将所有你认为重要的日志发送到/dev/lp0打印机设备。破解者可以更改服务器上的文件、程序等,但是当你有一台打印机可以打印所有重要日志的真实纸质副本时,他们就无能为力了。

示例 5-3. 打印日志报告

为了记录从你的服务器到连接到此服务器的打印机的所有 telnet、邮件、启动消息和 ssh 连接,你需要在 "/etc/syslog.conf" 文件中添加以下行:编辑 syslog.conf 文件 vi/etc/syslog.conf并在文件末尾添加以下行
            authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0
            
现在重启你的 syslog 守护进程以使更改生效
            [root@deep] /# /etc/rc.d/init.d/syslog restart
            

为了记录从你的服务器到连接到本地网络中远程服务器的打印机的所有 telnet、邮件、启动消息和 ssh 连接,那么你需要在/etc/syslog.conf远程服务器上的文件。如果你的网络中没有打印机,你也可以将所有日志文件复制到另一台机器;只需省略以下添加的第一个步骤/dev/lp0到你的syslog.conf远程服务器上的文件,并直接转到-r远程服务器上的选项步骤。使用将所有日志文件复制到另一台机器的功能,你将有可能在一台主机上控制所有 syslog 消息,并将减少管理需求。编辑syslog.conf文件 vi/etc/syslog.conf例如在远程服务器上mail.openna.com并在文件末尾添加以下行
            authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0
            
由于 syslog 守护进程的默认配置是不接收来自网络的任何消息,我们必须在远程服务器上启用接收来自网络消息的功能。要在远程服务器上启用接收来自网络消息的功能,请添加以下选项-r到你的 syslog 守护进程脚本文件仅在远程主机上:编辑 syslog 守护进程 vi +24/etc/rc.d/init.d/syslog并更改
            
            daemon syslogd -m 0
            
            
改为
            daemon syslogd -r -m 0
            
现在在远程主机上重启你的 syslog 守护进程以使更改生效
            [root@mail /]# /etc/rc.d/init.d/syslog restart
            

现在,如果我们在远程服务器上有一个防火墙(你应该有一个),我们必须添加或验证以下行的存在
            ipchains -A input  -i $EXTERNAL_INTERFACE -p udp \ (1)
            -s $SYSLOG_CLIENT \     (2)
            -d $IPADDR 514 -j ACCEPT (3)
             

(1)
其中 EXTERNAL_INTERFACE="eth0" 在防火墙文件中。
(2)
其中 IPADDR="208.164.186.2" 在防火墙文件中。
(3)
其中 SYSLOG_CLIENT="208.164.168.0/24" 在防火墙文件中。

现在在远程主机上重启你的防火墙以使更改生效
            [root@mail /]# /etc/rc.d/init.d/firewall restart
            
此防火墙规则将允许来自我们内部客户端的远程服务器上端口 514(syslog 端口)上的传入 UDP 数据包被接受。有关防火墙的更多信息,请参见第 7 章网络防火墙.

最后,编辑 syslog.conf 文件vi /etc/syslog.conf在本地服务器上,并在文件末尾添加以下行
            authpriv.*;mail.*;local7.*;auth.*;daemon.info @mail
             
其中 mail 是远程服务器的主机名。现在,如果有人入侵你的主机并威胁要删除重要的系统日志,你仍然拥有所有内容的硬拷贝。这样就可以很容易地追踪到他们的来源并进行相应的处理。现在重启你的 syslog 守护进程以使更改生效
            [root@deep] /# /etc/rc.d/init.d/syslog restart
            
与远程主机上相同,我们必须在本地主机上的防火墙脚本文件中添加或验证以下行的存在
            ipchains -A output -i $EXTERNAL_INTERFACE -p udp \ (1)
            -s $IPADDR 514 \   (2)
            -d $SYSLOG_SERVER 514 -j ACCEPT  (3)
            

(1)
其中 EXTERNAL_INTERFACE="eth0" 在防火墙文件中。
(2)
其中 IPADDR="208.164.186.1" 在防火墙文件中。
(3)
其中 SYSLOG_SERVER="mail.openna.com" 在防火墙文件中。

现在重启你的防火墙以使更改生效
            [root@deep] /# /etc/rc.d/init.d/firewall restart
            
此防火墙规则将允许本地服务器上端口 514 syslog 端口上发往远程 syslog 服务器的传出 UDP 数据包被接受。有关防火墙的更多信息,请参见第 7 章 网络防火墙。

Important: 永远不要使用你的网关服务器作为主机来控制所有 syslog 消息;这是一个非常糟糕的主意。sysklogd 程序有更多的选项和策略,有关更多信息,请参见关于 sysklogd(8)syslog(2)syslog.conf(5) 的手册页。