TARPIT – ловушка в iptables

Материал статьи ориентирован на бывалых администраторов, которые уже умеют пересобирать ядро linux 🙂

NetfilterПо сути модуль для iptables – TARPIT, открывает у вас на компьютере TCP/IP порт, который ведет в никуда. Если какая-то система соединяется с таким портом, то закрыть такое соединение быстро не получится. Соединение будет висеть до тех пор, пока не прервется само по таймауту. Причем компьютер который инициировал соединение будет тратить свои системные ресурсы, а ваш компьютер просто будет останавливать попытки передачи данных, что практически не расходует ресурсов.

Зачем нужен этот TARPIT?
В основном, чтобы сымитировать открытые порты в системе и ввести хакеров в заблуждение, можно открывать порт для тестов и смотреть есть соединение или нет, можно попробовать от DDOS отбиться.

Единственное замечание к разработчикам этого замечательного модуля, это медленная поддержка новых ядер. Для последних ядер вы не найдете патча TARPIT и придется подождать.

Что нам нужно? Я буду полагать, что все уже перешли на ядро 2.6, так что буду рассказывать для него, для ядра 2.4 немного было по другому.
Нам надо модуль ядра – xt_TARPIT и поддержка TARPIT в iptables – библиотека libipt_TARPIT.so.
Если у вас эти файлы есть в системе, то можете смело переходить к изменению конфига iptables и пробовать.
Но как показывает практика и вопросы в google у кого-то что-то из компонентов есть, или вообще про TARPIT ни слова в системе.

Приступим. Идем на сайт разработчиков TARPIT и скачиваем патчи для вашего ядра и своей версии iptables. К сожалению на конец 2011 года там были патчи для ядер только 2.6.29, когда уже версия ядер перевалила за 2.6.35..
Если сайт не открывается, то скачайте патчи для тех ядер что у меня есть tarpit iptables patch для 2.6.24, 2.6.27 и 2.6.29.

Настройка ядра

В пример я приведу как я пропатчил уже далеко не современную систему на ядре 2.6.27, но сути это не меняет.
Копируем патч в директорию исходников ядра и накладываем патч.


#/usr/src/linux# patch -p1 < ./tarpit-2.6.27.patch
patching file drivers/char/random.c
patching file net/netfilter/Kconfig
patching file net/netfilter/Makefile
patching file net/netfilter/xt_TARPIT.c

Теперь выполняем make menuconfig или что вам удобней и включаем сборку модуля TARPIT по пути


Networking support -> Networking Options ->
Network packet filtering framework (Netfilter)  -> Core Netfilter Configuration ->
"TARPIT" target support

Собираем его модулем или встроенным в ядро это на ваше усмотрение. В принципе с ядром все, можно его собирать и загружаться на этом ядре.

Настройка iptables

Скачиваем или берем исходники из дистрибутива точно такой же версии, что и установлены у вас в системе (можно не точно такой-же, но тогда придется заменить весь пакет iptables вашей системы).
У меня была версия iptables 1.4.2. Я скопировал патч в директорию с исходниками iptables и пропатчил iptables.


#/usr/src/iptables-1.4.2# patch -p1 < ./iptables-1.4.2-tarpit.diff
patching file extensions/libipt_TARPIT.c
patching file extensions/libipt_TARPIT.man

К слову сказать этот патч подходит и для iptables версии 1.4.3.2.
Затем


#./configure
#make

make install делать не недо (вы же не хотите полностью переустановить iptables?).
В каталоге исходников iptables в папке extensions вы должны увидеть новую библиотеку – libipt_TARPIT.so. Просто копируете этот файл в папку системы к остальным библиотекам iptables. У меня путь в системе где лежат все библиотеки iptables – /usr/libexec/xtables.

Правка конфига iptables

Теперь можно и править конфиг вашего брандмауэра. Например открываем порт 443 для пустых соединений.


iptables -A INPUT -i eth0 -p tcp -m tcp --destination-port 443 -j TARPIT

iptables должен обработать эту строку безо всяких ошибок. Если ошибки есть значит какой-то модуль ядра или библиотека не работают. Еще раз внимательно все проверьте и посмотрите начиная от накладывания патчей. Там ошибок быть не должно..

Можно указать список портов через multiport.


iptables -A INPUT -i eth0 -p tcp -m tcp -m mport --dports 135,139,1025 -j TARPIT

А если у вас все соединения к вам прописаны в брандмауэре, например как в моей статье Настраиваем защищенный iptables, то в конце такого конфига можно прописать строку


iptables -A INPUT -p tcp -m tcp -j TARPIT

тогда все кто пытается соединиться не по вышеуказанным портам попадают в “ловушку”. Фактически для удаленной системы у вас открыты все порты. Что очень удивляет сканирующих 🙂

Пример сканирования компьютера с TARPIT

Удачи. Надеюсь у вас все получится..

Запись опубликована в рубрике Firewall, iptables с метками , , , . Добавьте в закладки постоянную ссылку.

9 комментариев TARPIT – ловушка в iptables

  1. Kuper говорит:

    Как сохранить настройки, iptables-save не предлагать не работает

  2. Zabava говорит:

    Спасибо большое за статью!
    Ссылка на http://ruunix.ru/out.php?http://enterprise.bih.harvard.edu/pub/tarpit-updates/ не работает . Народ залейте патчи куда нибудь! Плз.!

  3. Zabava говорит:

    Спс. Дружище

  4. lexfrei говорит:

    А есть живые аналоги?

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *