Установка и настройка SSH-ловушек Kippo на сервере 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: , , , ,

Добавить комментарий