Материал статьи ориентирован на бывалых администраторов, которые уже умеют пересобирать ядро linux 🙂
По сути модуль для 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
тогда все кто пытается соединиться не по вышеуказанным портам попадают в “ловушку”. Фактически для удаленной системы у вас открыты все порты. Что очень удивляет сканирующих 🙂
Удачи. Надеюсь у вас все получится..
Как сохранить настройки, iptables-save не предлагать не работает
Что значит не работает? Какую ошибку выдает команда?
А по другому введенные настройки не сохранить.. Либо написать команды iptables в виде отдельного файла и сделать файл исполняемым..
Да вроде работает, причём неплохо:
(Ubuntu Maverick)
sudo iptables-save
# Generated by iptables-save v1.4.4 on Fri Mar 18 18:24:28 2011
*filter
:INPUT ACCEPT [7141728:2251097090]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1639135:117065946]
-A INPUT -p tcp … -j …
…
COMMIT
# Completed on Fri Mar 18 18:24:28 2011
http://ruunix.ru/577-nastraivaem-zashhishhennyj-iptables.html#comment-15278
Спасибо большое за статью!
Ссылка на http://ruunix.ru/out.php?http://enterprise.bih.harvard.edu/pub/tarpit-updates/ не работает . Народ залейте патчи куда нибудь! Плз.!
да, поломалась 🙁 залил что у меня было в едином архиве на сайт. Доступно по ссылке
Спс. Дружище
А есть живые аналоги?
Да, есть. Набор патчей к iptables, где есть и TARPIT – http://xtables-addons.sourceforge.net/