Установка и настройка SSH-ловушек Kippo на сервере Ubuntu
Python, SSH, Ubuntu | Комментировать запись
Kippo – это SSH-ловушка (или honeypot), написанная на Python, которая может регистрировать атаки brute force и вредоносные взаимодействия с системной оболочкой. Данное руководство поможет установить Kippo, а также настроить данный инструмент для предотвращения brute force атак.
Основные функции Kippo:
- Создание поддельной файловой системы с возможностью добавления и удаления файлов (включая полную подделку файловой системы Debian 5.0);
- Добавление поддельного содержимого в файлы (можно не беспокоиться, что злоумышленник просмотрит содержимое конфиденциальных файлов, например /etc/passwd);
- Хранение логов в UML-совместимом формате для удобного воспроизведения оригинального тайминга.
- Как и Kojoney, Kippo сохраняет файлы, загруженные с помощью wget,для последующего осмотра
- Обман злоумышленников (ложные SSH-подключения, ложный выход и т.д.).
Примечание: Более подробную информацию о Kippo можно получить по этой ссылке.
Требования
- Сервер Ubuntu (данное руководство выполнено на сервере Ubuntu 12.10 x32);
- Root-доступ к серверу.
1: Подготовка сервера
Подключитесь к облачному серверу:
ssh root@YOUR_IP_HERE
Чтобы обновить индекс и пакеты системы, введите:
apt-get update
apt-get upgrade
2: Изменение порта SSH
Kippo регистрирует все данные, поступившие через порт 2222. Однако большинство инструментов, используемых хакерами, настроено на порт 22. Потому рекомендуется изменить стандартный порт SSH. Кроме того, это повысит безопасность сервера.
Примечание: В дальнейшем нужно использовать этот порт для взаимодействия с другими программами.
Откройте в текстовом редакторе следующий файл:
vi /etc/ssh/sshd_config
В нём можно изменить порт SSH. Для этого найдите следующую строку и замените 22 новым номером порта (например, 8925):
# What ports, IPs and protocols we listen for
Port 8925
Сохраните и закройте файл. Перезапустите SSH:
reload ssh
3: Установка зависимостей
Теперь нужно установить зависимости ловушки Kippo. Для этого запустите команду:
apt-get install python-dev openssl python-openssl python-pyasn1 python-twisted
Загрузите Kippo:
:-$ apt-get install subversion
4: Создание пользователя Kippo
Теперь нужно создать пользователя, подготовить его домашний каталог (/home/kippo), настроить стандартную оболочку (/bin/bash) и передать ему права sudo.
useradd -d /home/kippo -s /bin/bash -m kippo -g sudo
5: Настройка порта 22
В системах linux только пользователь root имеет право использовать порты ниже 1024. Однако запускать Kippo при помощи пользователя root не рекомендуется из соображений безопасности. Для этого можно обратиться к AuthBind.
Примечание: Если у вас есть другие соображения на этот счёт, просто воспользуйтесь своим методом и переходите к разделу 6.
Установите AuthBind:
apt-get install authbind
Создайте новый файл:
touch /etc/authbind/byport/22
Передайте права на файл пользователю Kippo:
chown kippo /etc/authbind/byport/22
Измените права доступа к файлу:
:-$ chmod 777 /etc/authbind/byport/22
6: Загрузка и установка Kippo
Итак, теперь можно приступать к установке программы. Перейдите в сессию пользователя Kippo:
su kippo
Откройте его домашний каталог:
cd
Загрузите SVN для Kippo:
svn checkout http://kippo.googlecode.com/svn/trunk/ ./kippo
Откройте загруженный каталог:
cd kippo
Измените номер порта (стандартный порт Kippo 2222 на 22). Переместите и переименуйте конфигурационный файл:
mv kippo.cfg.dist kippo.cfg
Откройте файл: в редакторе:
vi kippo.cfg
Отредактируйте в нём следующий фрагмент:
# Port to listen for incoming SSH connections.
#
# (default: 2222)
ssh_port = 2222
Замените номер порта:
# Port to listen for incoming SSH connections.
#
# (default: 2222)
ssh_port = 22
Сохраните и закройте файл.
7: Сценарий запуска Kippo
Теперь нужно настроить сценарий запуска Kippo для использования нового порта. Откройте сценарий:
vi start.sh
В файле будет такой код:
#!/bin/sh
echo -n "Starting kippo in background..."
twistd -y kippo.tac -l log/kippo.log --pidfile kippo.pid
Замените строку:
twistd -y kippo.tac -l log/kippo.log --pidfile kippo.pid
Строкой:
authbind --deep twistd -y kippo.tac -l log/kippo.log --pidfile kippo.pid
Сохраните и закройте файл.
Запустите сценарий.
./start.sh
Теперь программа будет регистрировать события в /home/kippo/kippo/log/.
8: Логирование Kippo
Без дополнительной настройки Kippo добавляет в логи неавторизованный доступ (например, попытки подключиться к серверу на неправильный порт SSH).
Пока запущен сценарий start.sh, события будут регистрироваться в /home/kippo/kippo/log/kippo.log. Откройте этот файл в текстовом редакторе и просмотрите его содержимое:
vi kippo.log
На экране появится лог-файл. Давайте разберём его содержимое по частям:
2013-05-09 00:34:55+0000 [-] Log opened.
2013-05-09 00:34:55+0000 [-] twistd 12.2.0 (/usr/bin/python 2.7.3) starting up.
2013-05-09 00:34:55+0000 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2013-05-09 00:34:55+0000 [-] HoneyPotSSHFactory starting on 22
2013-05-09 00:34:55+0000 [-] Starting factory
Kippo может вносить дополнения в открытый файл. Вторая строка включает окружение python. Третья строка определяет цикл обработки событий (подробнее об этом здесь). Четвёртая строка указывает порт (22). Последняя строка инициирует окружение Kippo.
Следующий фрагмент отображает список злоумышленников, зарегистрированных на порте 22; в списке можно найти информацию о пользователе и данные, введённые в окно терминала.
2013-05-09 00:35:21+0000 [kippo.core.honeypot.HoneyPotSSHFactory] New connection: 176.255.34.109:47908 (198.211.109.193:22) [session: 0]
2013-05-09 00:35:21+0000 [HoneyPotTransport,0,176.255.34.109] Remote SSH version: SSH-2.0-OpenSSH_6.1p1 Debian-4
2013-05-09 00:35:21+0000 [HoneyPotTransport,0,176.255.34.109] kex alg, key alg: diffie-hellman-group1-sha1 ssh-rsa
2013-05-09 00:35:21+0000 [HoneyPotTransport,0,176.255.34.109] outgoing: aes128-ctr hmac-md5 none
2013-05-09 00:35:21+0000 [HoneyPotTransport,0,176.255.34.109] incoming: aes128-ctr hmac-md5 none
2013-05-09 00:35:26+0000 [HoneyPotTransport,0,176.255.34.109] NEW KEYS
2013-05-09 00:35:26+0000 [HoneyPotTransport,0,176.255.34.109] starting service ssh-userauth
Как видите, программа Kippo зарегистрировала SSH-соединение, установленное злоумышленником. Kippo вносит в лог вредоносный IP-адрес и порт
Исходящие и входящие трансмиссии пары ключей передаются от сервера на клиент. Затем принимается новый ключ и запускается сервис ssh-userauth. На данный момент эти данные добавлены в раздел лог-файла:
2013-05-09 00:35:26+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] root trying auth none
2013-05-09 00:35:26+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] root trying auth keyboard-interactive
2013-05-09 00:35:42+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] login attempt [root/chccbcaqkyoz] failed
2013-05-09 00:35:42+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] root failed auth keyboard-interactive
2013-05-09 00:35:42+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] unauthorized login:
2013-05-09 00:35:42+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] root trying auth keyboard-interactive
2013-05-09 00:35:44+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] login attempt [root/chccbcaqkyoz] failed
2013-05-09 00:35:44+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] root failed auth keyboard-interactive
2013-05-09 00:35:44+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] unauthorized login:
2013-05-09 00:35:44+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] root trying auth keyboard-interactive
2013-05-09 00:35:45+0000 [HoneyPotTransport,0,176.255.34.109] connection lost
Как видите, злоумышленник постоянно пытается установить подключение, но сервер сбрасывает его. Атакующий вводит пароль root-пользователя, chccbcaqkyoz.
Заключение
Существует множество инструментов для создания ловушек. Можно долго экспериментировать с ними. Однако всегда следует помнить о защите облачного сервера. безопасность сервера – превыше всего.
Рекомендуется сменить стандартные порты и проверять исходный код программ.
Tags: honeypot, Kippo, Python, SSH, Ubuntu 12.10