honeynet配置记录_johnathan的博客-程序员宅基地

技术标签: 防火墙……  date  output  脚本  uml  debian  ssh  

honeynet配置记录


创建时间:2003-04-04
文章属性:原创
文章提交: san (san_at_xfocus.org)

一、honeynet主机配置

Gen I是在三层用nat进行转换控制,配置相对比较方便一些,但是路由转发会消耗掉一个TTL。
Gen II是在二层用brige转发控制,配置相对稍微复杂一点,不消耗TTL,相对更隐蔽一些。

不想编译内核,使用Gen I。

1、主机系统配置

比较喜欢debian,由于user-mode-linux只在debian的testing和unstable里,所以就近选个快速的镜象站点作系统更新、软件安装。geekbone的mirror非常完整,而且速度不错,推荐。

# apt-get update
# apt-get upgrade

需要ssh来对主机进行管理:

# apt-get install ssh

去除一些不必要的服务:

# update-rc.d -f inetd remove
# update-rc.d -f ppp remove
# update-rc.d -f exim remove

2、安装user-mode-linux

# apt-get install user-mode-linux

debian的UML内核没有配mount DevFS,所以启动的时候要加上devfs=mount的参数。

系统镜象使用honeynet提供的redhat 7.2,可以从如下地址下载:

http://honeynet.xfocus.net/misc/files/root_fs.rh-7.2-server.pristine.20021012.gz

解压后使用这个文件系统启动UML:

# linux ubd0=root_fs.rh-7.2-server.pristine.20021012 eth0=tuntap,,00:90:0b:03:04:05,192.168.0.254 devfs=mount

如果文件系统映象文件名是root_fs,就不需加ubd0=,eth0=tuntap,,00:90:0b:03:04:05,192.168.0.254的意思是在eth0上用TUN/TAP绑定/dev/tap0,IP为192.168.0.254,前面的mac地址是指定UML网卡的mac地址,否则默认是FE:FD:00:00:00:00。

这个系统的用户名和口令都是root。

3、数据控制

数据控制使用honeynet提供的rc.firewall脚本,可以从如下地址下载:

http://honeynet.xfocus.net/papers/honeynet/tools/rc.firewall

作一些轻微的修改:

rc.firewall默认使用2层的bridging模式,修改为:

MODE="nat"

需要配置虚拟系统对外的IP,可以指定多个用空格隔开:

PUBLIC_IP="192.168.7.144"

配置虚拟系统真实的IP,可以指定多个用空格隔开,注意和PUBLIC_IP对应:

HPOT_IP="192.168.0.144"

配置主机管理接口:

MANAGE_IFACE="eth0"

主机真实IP:

MANAGE_IP="192.168.7.99"          # IP of management Interface
MANAGE_NETMASK="255.255.255.0"     # Netmask of management Interface

允许访问的端口,可以多个用空格隔开:

ALLOWED_TCP_IN="22"

允许访问的来源IP,可以用any:

MANAGER="192.168.7.9/24"

数据控制接口:

LAN_IFACE="tap0"

rc.firewall默认允许9个TCP连接,20个UDP连接,50个ICMP连接和10个其它IP连接。当然可以修改脚本里这几个参数。

4、数据捕获

安装snort:

# apt-get install snort

去掉它的自动启动:

# update-rc.d -f snort remove

使用了honeynet提供的snort.conf和启动脚本,下载地址:

http://honeynet.xfocus.net/papers/honeynet/tools/snort.conf
http://honeynet.xfocus.net/papers/honeynet/tools/snort-start.txt

snort.conf有些错误,作如下修改:

var HOME_NET 192.168.7.99/24

output alert_full: /data/snort/snort_full
output alert_fast: /data/snort/snort_fast

snort-start.txt启动脚本稍微修改:

PID=/var/run/snort_tap0.pid
DIR=/data/snort
SNORT=/usr/sbin/snort

$SNORT -d -D -c /etc/snort/snort.conf -i vmnet1 -l $DIR/$DATE not host yyy.yyy.yyy.yyy

其中yyy.yyy.yyy.yyy是自己客户端的IP,这样忽略记录自己的IP,避免了自己在虚拟honeypot上的连接特别是文件传输等不被记录,使得日志不会因为自己的操作变得巨大,增加干扰信息。当然前提是自己客户端的IP是固定的,否则就算了。

当然针对需要捕获何种数据可以再细调snort规则。

5、安装vmware

使用的是vmware-gsx-2.5,商业软件照者安装就行。安装的时候要注意,网络要安装成host only模式,设置的IP就是网关地址,这些可以在安装后用vmware-config.pl来修改。在网络修改那里使用editor不要使用wizard。

关于数据控制和数据捕获与上面UML的一样,就是相应的接口由tap0改为vmnetX。

6、注意事项

清空iptables规则不能简单的来个iptables -F,因为rc.firewall脚本把INPUT和FORWARD的策略都设为DROP,如果这样撤销rc.firewall的话所有网络都不通了。用如下的一个小脚本:

#!/bin/sh
#-----------------------------------------
# stop-firewall.sh
#-----------------------------------------
# safely stop rc.firewall

/sbin/iptables -F
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -X icmpHandler
/sbin/iptables -X otherHandler
/sbin/iptables -X tcpHandler
/sbin/iptables -X udpHandler

echo "honeynet rc.firewall safely stoped!"

#EOF

很遗憾,UML和vmware不能同时用,它们使用的接口不一样,也许改rc.firewall可以实现。然后就把机器托管到IDC去,你要开几个虚拟机就再需要几个外部IP,不要告诉IDC你到底做什么,要不然别人可能会感觉不爽,你还得解释半天。

二、数据分析

1、honeynet主机日志

为了减少honeynet主机的负担,snort只是简单记录所有日志,所以其实使用tcpdump也是可以。如果可能的话可以装一个商业的IDS探测器,一来检验IDS漏报误报的情况,二来可以实时观察honeynet主机的情况,这点商业IDS一般都做的非常漂亮。

另外安装了fwanalog对防火墙日志进行分析:

# apt-get install fwanalog

安装完后会有一些配置。然后给crontab写个shell脚本用于每天日志打包:

#!/bin/sh
#-----------------------------------------
# BackupData.sh
#-----------------------------------------

cd /data/snort
DIR=`ls -F|grep /$`
DM=`date +%Y%m%d`

#fwanalog
cd /var/log
tar czf fwanalog-$DM.tar.gz fwanalog
mv fwanalog-$DM.tar.gz /data/snort/$DIR/

/usr/bin/killall snort

cd /data/snort
tar czf data-$DM.tar.gz $DIR
rm -rf /data/snort/$DIR

/root/vmware/snort-start.sh

#EOF
crontab里定时运行了两个程序:

0 8 * * * /usr/sbin/fwanalog
30 8 * * * /root/vmware/BackupData.sh

2、日志传输

日志通过ssh传输,通过ssh-keygen生成一对key,就可以在脚本里无需口令使用scp传输文件。

linux/unix下:

$ ssh-keygen -d

在出现提示的时候全部直接回车,这样在$HOME/.ssh/下会生成id_dsa和id_dsa.pub两个文件。把id_dsa.pub上传到服务器端(honeynet主机)一个用户的$HOME/.ssh/authorized_keys,这样在客户端就可以用这个用户无需口令使用ssh、scp等命令了。

windows下的putty:

用puttygen生成一对key,使用SSH2 DSA,生成的时候要用鼠标在空白部分不停的动以生成随机数。同样,把生成的public key上传到服务器端(honeynet主机)一个用户的$HOME/.ssh/authorized_keys,在putty的Connection -> SSH -> Auth下选择生成的private key文件,保存这个session,就可以无需口令登陆了。
pscp可以使用-i指定生成的private key文件,无需口令传输文件,如:

pscp -i private.ppk file [email protected]:/tmp

3、客户端分析日志

由于日志是使用snort记录tcpdump格式的数据,所以数据传过来后还得用snort分解一下,并且可以配合SnortSnarf生成简报。另外数据导入数据库以便以后用acid做分析统计。但是由于找不到固定的linux机器,只能吭哧吭哧在自己winxp的工作机装了snort、mysql、apache、php、acid、perl、SnortSnarf。由于每天都会有很多工作,每天的粗略分析想尽可能少占时间,从tk那里要来一个sh.exe,形成如下的bt脚本:

#!/bin/sh
#-----------------------------------------
# daily_get.sh
#-----------------------------------------
# 注意,里面使用的date/tar/gzip/rm都是
# GNU的windows下相应软件。
#-----------------------------------------

DM=`date +%Y%m%d`

# 由于打包目录使用的是前一天的目录,这个由gnu date实现就比较好了。
DA=`date -d yesterday +%b_%d`

pscp -i ssh.PPK [email protected]:/data/snort/data-$DM.tar.gz logs

# 日志文件里如果有codered等扫描,norton会把日志删除
net stop "Norton AntiVirus 客户端"

# 解压,windows下tar的z参数好像不能找到gzip,所以用这个笨办法。
gzip -d logs/data-$DM.tar.gz
tar xf logs/data-$DM.tar -C daily/

# 开mysql
net start mysql

# 用snort分析日志,并且生成警告日志到log目录以及导入数据库,以便总体统计分析。这个需要配置snort
cd //snort
rm -rf log
mkdir log
bin//snort -c etc//snort.conf -r //working//honeynet//daily//$DA//*-snort.log

# 重新开启norton
net start "Norton AntiVirus 客户端"

# 用snortsnarf生成每日汇总日志。先清空前一天的东西
cd //working//honeynet//tmp
rm -rf snortsnarf
mkdir snortsnarf

cd //working//honeynet//snortsnarf
perl snortsnarf.pl ..//..//..//Snort//log//alert.ids -d ..//tmp//snortsnarf

cd ..//tmp//snortsnarf
"C:/Program Files/Internet Explorer/iexplore.exe" "D:/working/honeynet/tmp/snortsnarf/index.html"

# 看看fwanalog的日志
cd //working//honeynet//daily//$DA
gzip -d fwanalog-$DM.tar.gz
tar xf fwanalog-$DM.tar
"C:/Program Files/Internet Explorer/iexplore.exe" D://working//honeynet//daily//$DA//fwanalog//today.html

#EOF

再写一个批处理,ft.bat:

sh -x daily_get.sh

在计划任务里加上每天9点运行ft.bat,以后9点的时候硬盘淅沥哗啦一阵响后跳出IE窗口,如果没有什么有兴趣的攻击的话,随便看看就行了,感兴趣的话就需要手工分析tcpdump日志,找出别人在honeypot里做什么,也许能发现许多好玩的。一般如果日志突然增大很多就肯定受到过攻击或者网上又蠕虫泛滥有大规模的扫描,比如最近的CodeRed II就像非典型性肺炎一样流行,每天都有无数的机器来扫描你。

上面的bt脚本都是使用GNU的工具,如果使用linux当作桌面平台,一切就更简单了。

参考资料:
http://honeynet.xfocus.net/papers/uml/
http://honeynet.xfocus.net/papers/vmware/
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/johnathan/article/details/81303

智能推荐

docker免root权限登陆_sky_jiangcheng的博客-程序员宅基地

初次使用docker命令的时候会报权限问题Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.37/containers/json?all=1: dial u...

C++ 优先级队列(priority_queue)_sole_cc的博客-程序员宅基地

C++ 优先级队列(priority_queue)  优先级队列顾名思义是根据元素的优先级被读取,接口和queues非常相近。程序员可以通过template参数指定一个排序准则。缺省的排序准则是利用operator如果同时存在若干个数值最大的元素,无法确知究竟哪一个会入选。头文件:在文件 中,class priority_queue 定义如下:namespace std { 

信通学院论文分享会_新奥尔良仙的博客-程序员宅基地

一、论文1、文献研读:文献查找网址:(1)http://libw.cuc.edu.cn/(2)https://sci-hub.shop/(3)https://www.researchgate.net/(4)http://www.4243.net/(5)APP:时间规划:(1)精读(打印→注释→笔记): 1-3篇/周(2)泛读/浏览:4-6篇/周2、论文撰写:结构:注意事项:(1)科研文章措辞要谦虚谨慎,可以说文献[XX]没有做哪方面工作/没有考虑XX因素等等,不能说[X

知识付费_浅_白色的博客-程序员宅基地

虽然现在是知识付费的年代,CSDN的做法是不是有点过...

mindmanager2021思维导图利器有效序列号秘钥_CoCo玛奇朵的博客-程序员宅基地

我们大多数人羡慕并向往着天才的大脑,不只一次的想过,我们如果能够掌握并使用天才们的思考模式,快速搭建左脑和右脑连接的桥梁,顺畅而又快速的执行任务时,我们会怎样,必定会激发我们大脑更多的潜能,让我们更快的实力好各项工作,给我们的人生带来戏剧性的变化。20世纪60年代,由英国大脑基金会总裁,世界脑力竞标赛创始人、有世界大脑先生之称的东尼·巴赞先生在研究大脑的力量和潜能的过程中,经历多年的 研究发现,像达芬奇这样伟大的天才艺术家,在他们的笔记中都使用了许多图画、代号的连线,通过图文并茂的方式来记录他的思想。东

我的arm_linux移植笔记_517Thorn果的博客-程序员宅基地

一、     uboot 1.2.0移植移植环境:VMware5.5.2+redhat9开发板:SKY_2440B_V5.0或者V3.0编译器:cross3.2(下载地址ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain/cross3.2.tar.gz)Uboot:u-boot-1.2.0(下载地址:ftp://ftp.denx.de

随便推点

Java比较两个数字或者三个数字之间的大小_StevenXuW的博客-程序员宅基地

public int max(int a, int b) {        return (a > b) ? a : b;    }    public double max(double d1, double d2) {        return (d1 > d2) ? d1 : d2;    }    public double max(double d1,

WP Rocket激活版 WordPress优化插件 v3.7.3_普通网友的博客-程序员宅基地_wp rocket已激活版 ———————————————— 版权声明:本文为eswink「小

介绍:WP Rocket是被WordPress专家公认为功能最强大的缓存插件,它帮助提高页面加载速度并减少服务器负载。较高的下载速度反过来会降低跳出率,提高转化率,并有助于增加Google搜索结果中的排名。我们早就知道,该因素被认为是排名中最重要的因素之一。最少的配置,即时的结果不要因为复杂的插件设置而浪费时间。WP Rocket在激活后启动。页面缓存缓存可产生超快的加载时间,这对于改善搜索引擎优化和增加转化至关重要。当您打开WP Rocket时,将立即激活页面缓存。缓存预加载由于我们的搜寻

VMware虚拟机下Hadoop启动不起来,ssh报22端口拒绝访问( Centos6.8系统)_6饼的博客-程序员宅基地

之前在VMware下搭建了3节点的Hadoop集群,先配置了一台机器,然后克隆两台从节点,启动Hadoop集群,没问题。但是系统坏了,把虚拟机拷出来,重装了系统,再导入这3台机器。发现我在bigdata003(Master节点)输入ssh bigdata001,联不上从节点了,经过一系列测试,ssh已经启动,防火墙也已经关闭,22端口也开起来了,reboot过了。ssh localhost可以,但...

java继承与实现的_Java之继承和实现_西江月 xiyue手绘的博客-程序员宅基地

用过Java的人都知道,Java有一个特点就是单继承、多实现(这一点跟C++不一样,C++是可以多继承的),那么为什么会是这样子的呢?让我们来一探究竟!老规矩,打开IDE工具,我们还是用例子来试试看:首先我们定义一个最简单的类B,如下:public class B {private String name;public void setName(String name) {this.name = ...

IDEA 商业版本激活码获取流程(学生专用),需要教育邮箱_zzzzzzBIUBIU的博客-程序员宅基地

一、学生授权申请方式JetBrains开发工具免费提供学生和教师使用。取得授权后只需要使用相同的 JetBrains 帐号就可以激活其他产品,不需要重复申请。开始申请前请先到https://www.jetbrains.com/zh/student/阅读免费学生授权的介绍和常见问题,再依照下方流程进行申请。(1.)到https://www.jetbrains.com/zh/stu...

项目经理如何有效地进行项目沟通?_turingbooks的博客-程序员宅基地_如何与项目合作人沟通

项目沟通的重要性  项目沟通很重要,不仅因为要一直让项目干系人适当地了解项目的状态、进度和影响——这个原因大家都知道,还因为项目沟通是整个项目成功与否的关键决定因素。为什么是这样?主要原因有以下几点。  管理期望 我们会在下一章更详细地讨论管理期望,不过现在我们要说,沟通的质量和效率会大大地影响项目干系人对项目和你的领导角色的认知。  管理项目团队 你的沟通能力是影响你管理和领导核心项目团队的主要因素。  减少冲突 在执行项目的过程中因受到惯例时间、财政因素以及资源限制的影响,要想减少一些不

推荐文章

热门文章

相关标签