免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1523 | 回复: 0
打印 上一主题 下一主题

使用Stunnel保护syslog-ng服务器(图) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-22 01:17 |只看该作者 |倒序浏览
Stunnel是一款可以加密
网络
数据的TCP连接,并可工作在Unix和Windows平台上,它采用Client/Server模式,将Client端的网络数据采用SSL(Secure Sockets Layer)加密后,
安全
的传输到指定的Server端再进行解密还原,然后再发送到访问的
服务器
。Stunnel最新版本Stunnel-4.20 ,官方网址:http://www.stunnel.org/,图1 是Stunnel工作原理。

    图1 Stunnel工作原理
    如果想让信息安全工作再上一个台阶,还可以考虑安装一个名为syslog-ng的日志
软件
,它是syslog的一个功能更强的版本。在接下来的小节里,我们将带领大家一步步地把syslog-ng安装到系统上并让它运转起来。
一、 下载安装syslog-ng
    系统安装要求:先安装C编译器(如GCC),再安装一个libol 包最后装syslog-ng 。

#wget http://www.balabit.com/downlocads/libol/0.3/libol-0.3.14.tar.gz

#wget http://www.balabit.com/downloads/files/syslog-ng/sources/stable/src/syslog-ng-2.0.0.tar.gz

#tar xzvf libol-0.3.14.tar.gz

#cd libol-0.3.14

#./configure ;make;make install

#tar xzvf syslog-ng-2.0.0.tar.gz

#cd syslog-ng-2.0.0

#./configure --prefix=/usr/local/syslog-ng;make;make install

安装完后,请注意在/usr/local/syslog-ng目录下只有man和sbin两个目录,并未生成etc这个存放配置文件的目录.如果此时启动syslog-ng,系统会报错称未找到配置文件,因此,还要从上面解压缩后的目录复制一个示范配置文件到syslog-ng目录下.

#mkdir -p /usr/local/syslog-ng/etc/syslog-ng

#cd /home/mct/ syslog-ng-2.0.0/doc

#cp syslog-ng.conf.sample /usr/local/syslog-ng/etc/syslog-ng/syslog-ng.conf
二、 下载安装stunnel
    实现安全日志
服务器
的第二步是在服务器和每个客户机上安装 Stunnel。Stunnel 还可以用于通常的 syslog 守护进程(而不是将 syslog 替换为 syslog-ng),但那样就没有了我们所寻求的灵活性。在下面的说明中,我将配置和生成 stunnel 以便随其自身的用户和组运行,并将 chroot 目录设置到其自身的目录下 。要执行此操作,应首先创建 stunnel 组和用户(随机选取的 UID 和 GID):

#/usr/sbin/groupadd -g 122 stunnel

#/usr/sbin/useradd -c stunnel -d /nonexistent -m -g 122 -u 122 stunnel

#wget http://www.stunnel.org/download/stunnel/src/stunnel-4.20.tar.gz

#tar zxf stunnel-4.20.tar.gz

#cd stunnel-4.20

#./configure --localstatedir=/var/run/stunnel \

--with-pem-dir=/usr/local/etc/openssl/certs --datadir=/usr/local

#make;make install
三、 建立证书系统
1. 创建pem文件
    在RedHat系统上,只须执行以下命令就可以为机器生成主机身份证书:

#cd/usr/share/ssl/certs

#makesyslog-ng-server.pem

#makesyslog-ng-client.pem
2. 把主机身份证书复制到/etc/stunnel子目录
   
服务器
主机和客户主机对主机身份证书有不同的要求。客户主机只需要syslog-ng-server.pem文件中的公共密钥部分。先从syslog-ng-server.pem文件里去掉私用密钥部分,然后把syslog-ng-server.pem文件复制到每一台客户主机的/etc/stunnel子目录下。主机身份证书文件里的私用密钥部分很容易识别,它以下面这行文本开始:
-----BEGINRSAPRIVATEKEY-----
以下面这行文本结束:
-----ENDRSAPRIVATEKEY-----
    在
服务器
上,把整个文件复制到/etc/stunnel子目录里。类似地,把客户主机的syslog-ng-client.pem文件放到它自己的etc/stunnel子目录里。在服务器上,创建一个特殊的syslog-ng-client.pem文件来包含所有客户主机身份证书的公共密钥部分。具体做法是:先把所有客户主机的syslog-ng-client.pem文件的私用密钥部分去掉,再把剩下的内容合并到一个文件里,创建出来的文件就是服务器的特殊syslog-ng-client.pem文件。
3. 检查主机身份证书的权限
    把服务器证书的所有者设置为根用户(root)且只允许根用户读和写。以下命令将确保完成:

chownroot:rootsyslog-ng-server.pem

chownroot:rootsyslog-ng-client.pem

chmod700syslog-ng-server.pem

chmod700syslog-ng-client.pem
4. 在服务器主机上创建stunnel配置文件
    下面这份代码清单是stunnel程序的一种服务器配置,它们保存在文件

/etc/stunnel/stunnel.conf里:

cert=/etc/stunnel/syslog-ng-server.pem

CAfile=/etc/stunnel/syslog-ng-client.pem

[
5140
]

accept=serverIPaddress:
5140

connect=127.0.0.1:514
5. 在客户主机上创建stunnel配置文件
    下面这份代码清单是stunnel程序的一种客户配置,它们保存在文件/etc/stunnel/stunnel.conf里:

client=yes

cert=/etc/stunnel/syslog-ng-client.pem

CAfile=/etc/stunnel/syslog-ng-server.pem

verify=3

[5140]

accept=127.0.0.1:514

connect=serverIPaddress:5140
6. 在服务器主机上创建syslog-ng配置文件
    下面这份代码清单是syslog-ng程序的一种服务器配置,它们保存在文件/etc/syslog-ng.conf里:


options ...{ long_hostnames(off);

sync(0);

keep_hostname(yes);

chain_hostnames(no); };


source src ...{unix-stream("/dev/log");

pipe("/proc/kmsg");

internal();};


source stunnel ...{tcp(ip("127.0.0.1")

port(514)

max-connections(1));};


destination remoteclient ...{file("/var/log/remoteclient");};


destination dest ...{file("/var/log/messages");};


log ...{source(src); destination(dest);};


log ...{source(stunnel); destination(remoteclient);};
7. 在客户机器上创建syslog-ng配置文件
    下面这份代码清单是syslog-ng程序的一种客户配置,它们保存在文件/etc/syslog-ng.conf里:


options ...{long_hostnames(off);

sync(0);};


source src ...{unix-stream("/dev/log"); pipe("/proc/kmsg");

internal();};


destination dest ...{file("/var/log/messages");};


destination stunnel ...{tcp("127.0.0.1" port(514));};


log ...{source(src);destination(dest);};


log ...{source(src);destination(stunnel);};
8. 启动stunnel和syslog-ng
    以手动方式启动stunnel和syslog-ng需要依次执行以下两条命令:

#stunnel

#syslog-ng-f/etc/syslog-ng.conf
9. 在服务器上监控日志活动
    命令“tail-ffilename”是监控日志文件活动的一个好办法。请大家登录进入中央日志服务器并实时观察日志文件的记录活动。要创建活动以供监控,可以在一台客户主机上敲入“su-”,然后连续按几次回车键以模拟非法口令字。
    #tail-f/var/log/remoteclient
    如果看到的是类似下面的内容,就说明日志集中管理机制工作正常:
    Apr112:34:56chimsu(pam_unix)[8451]:authenticationfailure;
    logname=rreckuid=2112euid=0tty=ruser=rreckrhost=user=root
10. 使用logger命令直接向syslog守护进程发送消息
    有时候,可能需要直接把某些事件发送给syslog守护进程,简单易用的logger命令可以完成这一任务。比如,如果想让系统在每当有人登录时就把当前负载或当前登录用户人数记录到日志里,只须在/etc/bashrc文件里添加一行如下代码就可以收集到这些信息:

logger-pinfo"user$USERstartingashellat'w|head-1'"

这条命令将在/var/log/messages文件里写下如下日志记录项:

Apr106:34:46chimrreck:userrreckstartingashellat06:34:46up

53min,3users,loadaverage:0.06,0.03,0:
四、日志文件的管理技巧
    根据系统上发生的事件数量和为应用程序设定的日志信息详细程度,日志文件可能会在很短的时间内就变得非常大。迟早会有一天,需要轮转使用日志文件。有一个非常有用也非常容易配置的工具可以帮你安排好日志文件的轮转工作,它就是logrotate。logrotate工具已经出现了很多年,Linux的各种最新版本都默认地在根用户的crontab计划任务表里安排它每天运行一次。logrotate工具的选项非常多,但因为篇幅有限,这里只能简要介绍它的基本用法。
    首先,logrotate工具支持日志文件的自动轮转、压缩、删除以及通过电子邮件发送各种系统日志文件或应用程序日志文件。其次,logrotate工具有一个默认的配置文件/etc/logrotate.conf。logrotate工具支持多配置文件;若是配置文件里的定义发出冲突,本地定义将覆盖全局定义、后面的定义将覆盖前面的定义。logrotate工具允许人们在命令行给出任意数目的配置文件。在配置文件里,还可以用include指令调用其他的配置文件。因为配置文件和配置项的先后顺序将影响最终的结果配置,所以在制定日志轮转方案时一定要把先后顺序考虑清楚。应用程序日志文件的logrotate轮转配置文件都集中存放在/etc/logrotate.d/子目录里。
    窍门:如果已经建立了中央日志
服务器
,可以让logrotate工具简单地删除本地日志文件而不是轮转使用它们,这个任务可以用一个等于rotate时间的maxage设置来完成。在激活这个选项之前,确保本地日志被发往中央日志
服务器
。因为logrotate工具通常是作为一项每日一次的cron计划任务来运行的,所以它在一天之内不会对日志文件做修改——除非日志文件的长度超过了预定的限度或者你决定让logrotate工具每天运行一次以上。如果因为测试或其他原因强行让logrotate工具执行某种操作,可以使用“logrotate-f”或“logrotate--force”命令。
五、其他系统日志文件
    有两个系统日志文件与syslog守护进程完全无关:/var/run/utmp和/var/log/wtmp。这两个日志文件记录的是系统登录事件。utmp文件记录着系统的当前状态,finger、write或who等命令都会用到这个文件。utmp文件的man文档警告说,很多系统程序都“愚蠢地依赖本文件的完整性”而从未考虑过如果utmp文件变成一个全局可写的文件时该怎么办。/var/log/wtmp文件记录着系统登录信息。如果你想知道哪些人登录过系统、登录活动有什么规律,这个文件可是无价之宝。这个文件是一个二进制文件,所以不能用文本编辑器查看它的内容信息。要想查看utmp文件的内容,可以使用“last|more”命令,这可以查看到当前系统里有哪些已经登录的用户以及他们从哪里登录进来。如果这个文件莫名其妙地变成了空白或者根本不存在,就是一个你已经被“黑”的信号。截断或删除这些文件是攻击者试图掩盖踪迹时的一种常用伎俩。
六、防止日志信息过载的准则
    1.取得适合自己的工具
    优秀的工具可以最大限度的节省时间,它们可以分类管理日志信息、在日志信息中进行复杂的条件搜索、根据管理员设定的条件自动分拣需要的信息并反馈给管理员等。 就一般日志系统来说,基于不同的技术架构有不同的工具可供选择,应尽量选择与自己的基础设施匹配的管理工具。 这意味着如果企业应用的基础管理设施应用了很多开放源代码的产品,那么同样地在管理工具上也应优先开源解决方案,这样往往可以更好地实现融合、更多地从开源社区获取力量同时降低经济投入。另外,还有一些增强的Syslog工具可供使用,最著名的是Syslog-NG,这是对传统Syslog的一个增强版本,弥补了传统Syslog不支持身份验证、只能使用UDP(用户数据报协议,是ISO参考模型中一种无连接的传输层协议)进行不可靠传输等问题。在应用这类工具时需要注意平衡先进功能与兼容性,以防止基于Syslog的设备不能与Syslog-NG协同工作这样的问题。
    以合理的规范组织日志信息:
    当日志信息达到极大的数量时,分类是必要的,但一定要注意制订灵活的、容易变更的分类规范。一般在一个分类体系当中,不要应用过多的分类维度。通常应用日志源、日志事件类型、重要程度等几个基本的维度是可以构建有效的日志分类体系的,过多的维度会使得日志信息难于管理,那样做的话管理员必须在处理大量信息的同时兼顾更多的关于分类的信息。
    订立可度量的评估规则:
    例如管理员ABC设定他每天处理系统管理日志信息的时间不超过总工作时间的20%、处理用户提交问题的时间不超过总工作时间的15%(包含回复问题)、处理企业制度变更等原因造成的信息不超过总工作时间的5%。这样管理员ABC可以更好的进行自我管理并平衡工作时间与信息量。
    一般来说,当处理信息的时间超过了自己的旧有评估指标时,很可能意味着系统中出现了新的问题,或者管理员采取的工作方法已经不适合当前的工作环境变化,这样管理员可以及时做出调整。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/18637/showart_1138806.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP