在 Ubuntu Linux 上部署 Kippo SSH 蜜罐
您是否感觉有人正在尝试访问您的服务器?为了找到答案,您可以在系统中部署一个蜜罐,通过确认或驳回您最初的信念来帮助您缓解偏执。例如,您可以启动 Kippo SSH 蜜罐,它允许您监控暴力尝试,收集当前的漏洞和恶意软件。 Kippo 还会自动记录黑客的 shell 会话,您可以重播该会话以探索各种黑客技术,然后使用这些收集到的知识来强化您的生产服务器。安装蜜罐的另一个原因是分散生产服务器的注意力。在本教程中,我们将展示如何在 Ubuntu 服务器上部署 Kippo SSH 蜜罐。
Kippo SSH 蜜罐是一个基于 python 的应用程序。因此,我们需要先安装python库:
$ sudo apt-get install python-twisted
通常您会在默认端口 22 上运行 sshd 服务侦听。将此端口用于 SSH 蜜罐是有意义的,因此如果您已经运行 SSH 服务,我们需要将默认端口更改为其他端口数字。我建议不要使用替代端口 2222,因为它的用途已众所周知,并且可能会破坏您的伪装。让我们选择一些随机的 4 位数字,例如 4632。打开 SSH /etc/ssh/sshd_config 配置文件并更改 Port 指令:
Port 22
到
Port 4632
完成后重新启动 sshd:
$ sudo service ssh restart
您可以使用 netstat 命令确认您已正确更改端口:
$ netstat -ant | grep 4632
tcp 0 0 0.0.0.0:4632 0.0.0.0:* LISTEN
此外,Kippo 需要运行非特权用户,因此最好创建一些单独的用户帐户并在此帐户下运行 Kippo。创建一个新用户 kippo:
$ sudo adduser kippo
Kippo 不需要任何繁琐的安装。需要做的就是下载一个 gzip 压缩包并将其解压到 kippo 的目录中。首先,登录或更改用户为 kippo,然后下载 Kippo 的源代码:
kippo@ubuntu:~$ wget http://kippo.googlecode.com/files/kippo-0.5.tar.gz
提取它:
kippo@ubuntu:~$ tar xzf kippo-0.5.tar.gz
这将创建一个名为 kippo-0.5 的新目录。
导航到 Kippo 的目录后,您将看到:
kippo@ubuntu:~/kippo-0.5$ ls
data dl doc fs.pickle honeyfs kippo kippo.cfg kippo.tac log start.sh txtcmds utils
这里最值得注意的目录和文件是:
dl – 这是 kippo 存储黑客使用 wget 命令下载的所有恶意软件和漏洞利用程序的默认目录
honeyfs – 该目录包含一些文件,这些文件将呈现给攻击者
kippo.cfg – kippo 的配置文件
log – 记录攻击者与 shell 交互的默认目录
start.sh – 这是启动 kippo 的 shell 脚本
utils – 包含各种 kippo 实用程序,其中最著名的是 playlog.py,它允许您重放攻击者的 shell 会话
Kippo 预先配置了端口 2222。这主要是因为 kippo 需要以非特权用户身份运行,而非特权用户无法打开任何低于 1024 的端口。为了解决这个问题,我们可以使用 iptables “PREROUTING”和“REDIRECT”指令。这不是最好的解决方案,因为任何用户都可以打开 1024 以上的端口,从而创造了利用的机会。
打开 Kippo 的配置文件并将默认端口号更改为任意数字,例如 4633。之后,在端口 4633 上创建从端口 22 到 kippo 的 iptables 重定向:
$ sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 4633
文件系统
接下来,您可能希望配置文件系统,一旦攻击者登录我们的蜜罐,该文件系统就会呈现给攻击者。默认情况下,Kippo 带有自己的文件系统,但它可以追溯到 2009 年,而且看起来不再合理。您可以使用 Kippo 的实用程序 utils/createfs.py 克隆自己的文件系统,而无需透露任何信息。使用 root 权限执行以下 linux 命令来克隆文件系统:
# cd /home/kippo/kippo-0.5/
# utils/createfs.py > fs.pickle
Doing stuff
操作系统名称
Kippo 还允许您更改位于 /etc/issue 文件中的操作系统名称。假设我们使用 Linux Mint 14 Julaya。当然,你会使用一些真实可信的东西。
$ echo "Linux Mint 14 Julaya \n \l" > honeyfs/etc/issue
密码文件
编辑 Honeyfs/etc/passwd 并使其更加合理和有趣。
替代 root 密码
Kippo 附带预设密码“123456”。您可以保留此设置并添加更多密码,例如:pass、a、123、password、root
kippo@ubuntu:~/kippo-0.5$ utils/passdb.py data/pass.db add pass
kippo@ubuntu:~/kippo-0.5$ utils/passdb.py data/pass.db add a
kippo@ubuntu:~/kippo-0.5$ utils/passdb.py data/pass.db add 123
kippo@ubuntu:~/kippo-0.5$ utils/passdb.py data/pass.db add password
kippo@ubuntu:~/kippo-0.5$ utils/passdb.py data/pass.db add root
现在,攻击者将能够使用上述任何密码以 root 身份登录。
创建新命令
此外,Kippo 允许您配置存储在 txtcmds/ 目录中的其他命令。要创建新命令,例如 df,我们只需将实际 df 命令的输出重定向到 txtcmds/bin/df:
# df -h > txtcmds/bin/df
上面是一个简单的静态文本输出命令,但它会让攻击者忙碌一段时间。
主机名
编辑配置文件 kippo.cfg 并将主机名更改为更有吸引力的名称,例如:
hostname = accounting
如果到目前为止您按照上述说明进行操作,那么现在您应该已经使用以下设置配置了 SSH 蜜罐:
监听端口4633
iptables 端口转发从 22 -> 4633
主机名:会计
多个 root 密码
现有系统的最新 Honeyfs 克隆
操作系统:Linux Mint 14 Julaya
现在让我们启动 Kippo SSH 蜜罐。
$ pwd
/home/kippo/kippo-0.5
kippo@ubuntu:~/kippo-0.5$ ./start.sh
Starting kippo in background...Generating RSA keypair...
done.
kippo@ubuntu:~/kippo-0.5$ cat kippo.pid
2087
从上面的内容中,您可以看到 Kippo 已启动,并且它创建了 SSH 通信所需的所有 RSA 密钥。此外,它还创建了一个名为 kippo.pid 的文件,其中包含正在运行的 Kippo 实例的 PID 号,您可以使用该文件通过 kill 命令终止 kippo。
现在,我们应该能够在默认 ssh 端口 22 上登录到新的 ssh 服务器别名 ssh 蜜罐:
$ ssh root@server
The authenticity of host 'server (10.1.1.61)' can't be established.
RSA key fingerprint is 81:51:31:8c:21:2e:41:dc:e8:34:d7:94:47:35:8f:88.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server,10.1.1.61' (RSA) to the list of known hosts.
Password:
accounting:~#
accounting:~# cd /
accounting:/# ls
var sbin home srv usr
mnt selinux tmp vmlinuz initrd.img etc
root dev sys lost+found proc
boot opt run media lib64 bin
lib
accounting:/# cat /etc/issue
Linux Mint 14 Julaya \n \l
看起来很熟悉?我们完了
Kippo 附带多个其他选项和设置。其中之一是使用 utils/playlog.py 实用程序重放存储在 log/tty/ 目录中的攻击者的 shell 交互。此外,Kippo 允许 MySQL 数据库存储日志文件。有关其他设置,请参阅配置文件。
需要提及的一件事是,建议将 Kipps 的 dl 目录配置到某个单独的文件系统。该目录将保存攻击者下载的所有文件,因此您不希望应用程序因磁盘空间不足而挂起。
Kippo 似乎是一个很好且易于配置的 SSH 蜜罐替代品,可以替代完整的 chroot 蜜罐环境。 Kippo 提供的功能比本指南中描述的功能更多。请阅读 kippo.cfg 以熟悉它们并调整 Kippo 的设置以适合您的环境。