且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

利用开源工具实现轻量级上网行为审计(来源ispublic.com)

更新时间:2022-08-14 20:21:49

来源ispublic.com

Google上貌似找不到利用开源软件实现上网行为审计的文章——这也难怪,开源在国内并不流行,而上网行为审计在国外也不流行。不过这并不代表不能实现,IS in Public通过本文提供一种利用开源嗅探工具与脚本实现轻量级上网行为审计的思路与方法。

实施条件:
服务器一台:
流量越大性能要求要高,远程管理需要双网卡,若果有大量的数据必须写入磁盘,建议RAID0/RAID10;

交换机镜像口:
存在条件将所有需要审计的网络流向镜像给行为审计服务器;

软件环境:
操作系统             CentOS5.5-i386
审计工具             Justniffer0.5.7
依赖关系             boost1.33.1
                             libpcap0.9.4
                             libnet1.1.2.1
                             libnids1.24
                             gcc4.1.2(仅在编译时有用)

实施步骤
1.安装操作系统:
为日志保存路径建立分区,若数据量较大且条件允许,***能做RAID0或者RAID10;
仅需安装以下组件:
        Applications
                 Editors
                 Text-based Internet
        Development
                 Development Libraries
                 Development Tools
        Base System
                 Base

2.安装libpcap

#yum -y install libpcap-devel

若编译安装

#./configure
#make
#make install

3.安装libnet

#yum -y install libnet

若编译安装

#./configure
#make
#make install

4.安装justniffer

#tar zxvf justniffer_0.5.7.tar.gz
#cd justniffer-0.5.7
#./configure
#make
#make install

假定镜像口连接到eth0,执行以下命令看是否能抓到包:

#justniffer -i eth0 -r

如果屏幕有信息显示则说明安装成功。

开始审计
Justniffer目前支持的协议有: HTTP, JDBC, RTSP, SIP, SMTP, IMAP, POP, LDAP。对我们最有价值的可能是HTTP和SMTP,即网页浏览与邮件发送。至于IM信息,不建议过多考虑,毕竟大多数IM软件(如QQ)都已自行加密,而且MSN也有MSNSHELL和各种插件。

如果仅仅需要监视员工浏览了哪些URL,建议使用命令:

#justniffer -i eth0 -p "port 80" -l "%request.timestamp(%F %T) %source.ip /
%dest.ip %request.header.host %request.url %request.header.referer%newline"/
>> /var/log/httpmonitor

如果需要监视包括员工发帖记录在内的一些详细信息,建议使用命令:

#justniffer -i eth0 -p "port 80" -l "%request.timestamp(%F %T) %source.ip /
%dest.ip%newline%request" >> /var/log/httpmonitor

如果需要监视员工发送的邮件(不包括邮件收取和web访问方式),可使用命令:

#justniffer -i eth0 -p "port 25" -r >> /var/log/mailmonitor

详细的justniffer命令参数请参考官方网站

中文问题
一个比较令人头疼的问题是中文的编码问题,不过像百度贴吧、天涯这些网站对发帖中的中文都使用了URI编码。一个用perl将URI编码的参数转换成中文的例子:

#!/usr/bin/perl
  1. #From Tsing of ispublic.com
  2. use URI::Escape;
  3. $content=uri_unescape($ARGV[0]);
  4. print "$content/n";

先写到这,之后有空再写几个用于大型企业部署的脚本。