LINUX.ORG.RU
ФорумAdmin

iptables Patch-o-Matic


1

2

Здравствуйте.Изучая Iptables столкнулся с трудностями: 1.Поясните пожалуйста как подгружать модули Patch-o-Matic. 2.Во многих мануалах говориться что нужно качать исходники iptables c офф сайта netfilter, но я не пойму зачем они надо если iptables уже предустановлен в Linux. 3.Зашел на сайт netfilter «FTP» в папку Patch-o-Matic - там я как понял версии... но мне например надо модуль TARPIT и как мне его подгрузить.

Заранее благодарю за ответы ...

Перемещено Pinkbyte из security

ИМХО:

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

Короче проще и надёжнее собрать. Не бойся - если всё грамотно сделаешь - отделаешься легким испугом - просто установкой модуля. Т.е. ни ядро ни модуль iptables тебе переустанавливать не придётся.

подписался :)

ziemin ★★ ()
Ответ на: комментарий от ziemin

Ан нет - прогулялся по жуглю. По первой ссылке оказывается это реально патчи. Так что придётся всё ребилдить.

Кстати там пишут, что уже не поддерживается и рекомендуют какие-то xtables-addons.

ziemin ★★ ()

Расширения iptables состоит из двух частей.

Одна часть используется в команде ″iptables″ для того, чтобы распарсить опции командной строки (допустим ″-j SNAT --to-source″) и сформировать правило в виде двоичной структуры. Эти ″модули″ раньше лежали в ″/lib/iptables″, потом ″/lib/xtables/″ (или вместо ″/lib/″ может быть ″/usr/lib″ или ″/usr/local/lib″).

Другая часть это модуль в ядре, который применяет данные условия на каждый ip-пакет. Они находятся в ″/lib/modules/ВЕРСИЯ_ЯДРА/kernel/net/netfilter/″.

В дистрибутив входя не все возможные модули iptables, а только те, которые создатили дистрибутива посчитали нужными. Один выкинуты так как устарели, другие ещё сыроваты. Если захочется чего-то, чего нет в дистрибутиве, тогда и нужно идти на сайт iptables, качать патчи, патчить исходники ядра и iptables и пересобирать. Причём не факт, что желаемое расширение iptables будет поддерживаться для дистрибутивной версии ядра.

А так для ряда дистрибутивов дополнения к iptables идут отдельными паетами, иногда из стороних репозитариев, допустим для centos 6 вот этот пакет http://centos.alt.ru/repository/centos/6/x86_64/xtables-addons-1.41-1.el6.x86... содержит среди прочего и TARPIT.

mky ★★★★★ ()
Ответ на: комментарий от mky

/lib/modules/ВЕРСИЯ_ЯДРА/kernel/net/netfilter/

у меня в каталоге «modules» еще 4 каталога ))) и какой из них ? 3.2.0-23-generic-pae,

3.2.0-26-generic-pae,

3.2.0-33-generic-pae,

3.2.0-35-generic-pae, ___________________________________________-

Я не понимаю просто как патчить исходники ядра и пересобирать их .

Paulra ()
Ответ на: комментарий от Paulra

apt-get install xtables-addons-dkms

Добрые мейнтейнеры уже всё сделали до Вас.

AITap ★★★★★ ()
Ответ на: комментарий от Paulra

у меня в каталоге «modules» еще 4 каталога

Тот, который совпадает с работающий в данный момент ядром, узнаётся комадной ″uname -r″.

Вот нормальное руководство по пересборке ядра под ubunt'ой: http://pingvinus.ru/note/linux-kernel-compile Прежде чем патчить ядро научитесь просто его собирать с изменённым конфигом, устанавливать и загружать с ним систему. Руководство о том, как запретить автоматическое обновление ядра (чтобы всегда грузилось с самосборного) нужно искать отдельно.

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

Установите пакет ″xtables-addons-common″ — это файлы для команды ″iptables″. Установите пакет ″xtables-addons-dkms″ — это файлы для компиляции модулей для ядра.

Скомпилируйте модули для ядра:

# module-assistant build xtables-addons

Если сборка пройдёт успешно, в конце будет дано имя пакета, который нужно установить через ″dpkg -i″.

Если сборка будет с ошибками, пишите.

P.S. Я не знаю как в ubuntu происходит обновление ядра при наличии модулей, собранных через ″module-assistant″. Вполне может оказатся, что при обновлении системы к новому ядру не найдутся модуль для TARPIT и ваши правила iptables не будут загружены.

mky ★★★★★ ()
Ответ на: комментарий от mky

1.установил пакеты

sudo apt-get install xtables-addons-common sudo apt-get install xtables-dkms

2.по моему установил

sudo apt-get install module-assistant

3.далее в консоле

module-assistant build xtables-addons

и вот что я получаю в ответ

//--module assistant, interactive mode--//

build of the package xtables-adons-source failed! How do you wish to proceed?

__________________________________________________________

VIEW----------Examine the build log file

CONTINUE-----skip and continue with the next operation

STOP ---------stop processing the build commands

--------------<OK>-------------------<Cancel>-------------

___________________________________________________________

Paulra ()
Ответ на: комментарий от Paulra

Прошу прощения, я вас запутал. Это раньше надо было ставить ″xtables-addons-source″ и компилировать их через ″module-assistant″. В свежих убунтах компиляция нужных модулей ядра должна происходить при установке -dkms пакета. Так что после

sudo apt-get install xtables-addons-dkms

у вас должны появится нужные модули ядра и ″-j TARPIT″ в iptables заработает.

mky ★★★★★ ()
Ответ на: комментарий от mky

После ввода

iptables -A INPUT -s 111.1.1.1 -j TARPIT

пакет установил

sudo apt-get install xtables-addons-dkms

выдает

[ 3416.909347] x_tables: ip_tables: TARPIT target: only valid for protocol 6 iptables: Invalid argument. Run 'dmesg' for more information.

Paulra ()
Ответ на: комментарий от mky

Вроде бы заработало. Я так понимаю с установкой пакета появилась не только команда TARPIT? как посмотреть весь функционал?

Paulra ()
Ответ на: комментарий от Paulra

Весь добавленный функционал должен быть описан в ″man xtables-addons″. Можно посмотреть список файлов пакета:

dpkg -L xtables-addons-common

Всё что в этом списке заканчивается на '.so' — это расширения iptables, например, libxt_geoip.so добавляет geoip (-m geoip).

mky ★★★★★ ()
Ответ на: комментарий от mky

А вот на Ubuntu 10.04 так легко не получилось )))там нужно делать как было описано вами в 1 варианте

# module-assistant build xtables-addons ?

Paulra ()
Ответ на: комментарий от mky

Блин выяснилось что у меня вообще не работают мои правила которые я писал на ubuntu 12.04 iptables v1.4.14 -или v.1.4.12(точно не помню)

сейчас на выделенной машине стоит ubuntu 10.04 iptables v1.4.4

как обновить Iptables/ (((?

Paulra ()
Ответ на: комментарий от mky

вот что мне пишет мой iptables (((( На строки которые я закомментирование

FATAL: Could not load /lib/modules/2.6.32-042stab068.8/modules.dep: No such file or directory FATAL: Could not load /lib/modules/2.6.32-042stab068.8/modules.dep: No such file or directory iptables: No chain/target/match by that name.

#! /bin/sh iptables -F

iptables -X

iptables -A INPUT -s xxx.xxx.xx.83 -j ACCEPT

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -p icmp -j DROP --icmp-type 8

iptables -A INPUT -p udp --dport 5555 -j DROP

iptables -A INPUT -p udp --dport 9999 -j DROP

iptables -A INPUT -p tcp --dport 5555 -m connlimit --connlimit-above 3 -j DROP

iptables -A INPUT -p tcp --dport 9999 -m connlimit --connlimit-above 3 -j DROP

#iptables -A INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset

#iptables -A INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP

#iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -N baza

#iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 3306 -j baza

iptables -I baza -p tcp -s XXX.XX.XX.83 --dport 3306 -j ACCEPT

iptables -I baza -p tcp -s XX.XX.XX.82 --dport 3306 -j ACCEPT

iptables -A baza -p tcp --dport 3306 -j DROP

iptables -N ssh_brut

#iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 22 -j ssh_brut

#iptables -A ssh_brut -p tcp --dport 22 -s XXX.XX.XX.83 -j ACCEPT

#iptables -A ssh_brut -p tcp --dport 22 -s XXX.XX.XX.82 -j ACCEPT

#iptables -A ssh_brut -p tcp --dport 22 -j DROP

iptables -N logins

#iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 5555 -j logins

#iptables -A logins -m conntrack --ctstate NEW -m recent --update --seconds 240 --hitcount 3 -j DROP

iptables -A logins -m recent --set -j ACCEPT

iptables -N ls_game_s

iptables -N gameserver

#iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 9999 -j gameserver

iptables -A gameserver -m recent --rcheck --seconds 60 --hitcount 3 -j RETURN

iptables -A gameserver -m recent --rcheck --seconds 10 -j ls_game_s

#iptables -A ls_game_s -m conntrack --ctstate NEW -p tcp --dport 5555 -m recent --set

#iptables -A ls_game_s -m conntrack --ctstate NEW -p tcp -m multiport --dport 27519,27521 -m recent --remove

iptables -P INPUT DROP

Paulra ()
Ответ на: комментарий от Paulra

Тех поддержка что то сделала . теперь работает. Но только без:

iptables -P INPUT DROP

Если же прописываю то и ssh драпает и вообще только ребут помогает.

И еще 1 вопрос правильно ли я написал проверку на стук...? хотел чтобы порт 5555 открывался только после стука в порт 9999. Вот кусок

iptables -N ls_game_s

iptables -N gameserver

#iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 9999 -j gameserver

iptables -A gameserver -m recent --rcheck --seconds 60 --hitcount 3 -j RETURN

iptables -A gameserver -m recent --rcheck --seconds 10 -j ls_game_s

#iptables -A ls_game_s -m conntrack --ctstate NEW -p tcp --dport 5555 -m recent --set

#iptables -A ls_game_s -m conntrack --ctstate NEW -p tcp -m multiport --dport 27519,27521 -m recent --remove

iptables -P INPUT DROP

Заранее благодарю за ответы ... Ведь если не Вы то Windows всех поработит.Хочется не спрашивать а почитать самому. Но видите как получается прочитал вики учебник (на 1.4.12 Iptables все работает ) а на ниже версиях уже проблемы и описания нету ни где ... ну и английский хромает конечно же

Paulra ()
Ответ на: комментарий от Paulra

Обновить iptables новее, чем есть в репозитории можно только компилированием и (по хорошему) упаковкой в пакет ″.deb″. Но это достаточно сложно. Я точно не помню, но, вроде, в 1.4.12 нечего такого особо важного по сравнению с 1.4.4 не появилось.

Для сборки xtables-addons через module-assistant вам нужно будет установить пакет ″xtables-addons-source″.

Если у вас была ругань на все правила iptables содержащие ″-m conntrack″, то нужно разбиратся почему. Подобные правила работают практически во всех дистрибутивах и в старых и в новых.

В приведённом вами сообщении об ошибке говорилось, что нет файла ″/lib/modules/2.6.32-042stab068.8/modules.dep″. Это файл используется командой загрузки модулей ″modprobe″. Эта команда вызывается, среди прочего, и командной ″iptables″. Это достаточно странное сообщение об ошибке, так как фактически оно означало неработоспособность команды ″modprobe″, и в нормальном дистрибутиве система без этой команды не рабочая, там всё модулями, например, драйвера сетёвки. Возможно, что у вас ядро не «родное», а скомпилинной этой самой техподдержкой.

Возможно, что после вашего обращения это файл создан (командой ″depmod -a″) и ваши правила загрузятся.

То, что с ″-P INPUT DROP″ вас не пускает по ssh (да и сервисы по другим портам не должно работать) это понятно. Раз вы убрали правила, отправляющие первый пакет в соотв. цепочку (допустим -j ssh_brut), то этот пакет не найдёт правила ″-j ACCEPT″, дойдёт до конца цепочки ″INPUT″ и к нему будет применена политика, а она ″-P DROP″.

Вам лучше всего добавить одним из первых правило наподобие

iptables -A INPUT -s XXX.XX.XX.83 -j ACCEPT

если это ваш личный (доверенный) ip-адрес. И не удалять его, а если это правило будет мешать отлаживать стук в порт, то отлаживать с другого адреса, или на компьютере с ubuntu 12.04, а на сервер переносить готовые правила.

----------------------------------------

Правила для стука в порт написаны неправильно. Если нужно открывать порт 5555, а стучать в 9999, то пакет на порт 9999 нужно в ″-m recent --set″, а пакет на порт 5555 в ″-m recent --check/rcheck″.

P.S. Обычно в дистрибутиве ″man iptables″ содержит описание, актуальное именно для дистрибутивной версии команды iptables. Его особо читать не надо, просто просматривать в случае чего, есть ли в этой версии iptables нужные вам правила и нужные вам опции этих правил.

mky ★★★★★ ()
Ответ на: комментарий от mky

iptables -N ssh_knock

# Создаем цепочку для проверки попыток соединений на защищаемый порт

# Если за последние 60 секунд было 2 и более стука — блокируем, на всякий случай

iptables -A ssh_knock -m recent --rcheck --seconds 60 --hitcount 2 -j RETURN

# Если за последние 10 секунд стук в нужный порт был — разрешить соединение

iptables -A ssh_knock -m recent --rcheck --seconds 10 -j ACCEPT

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Разрешаем пакеты по установленным соединениям # Все попытки открыть новое соединение по SSH направляем на проверку

iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 22 -j ssh_knock

# Здесь мы добавляем правило для регистрации стука

iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 27520 -m recent --set

# Опять же на всякий случай — при стуке в соседние порты закрываем SSH

iptables -A INPUT -m conntrack --ctstate NEW -p tcp -m multiport --dport 27519,27521 -m recent --remove

iptables -P INPUT DROP # Что не разрешено — то запрещено

ВОТ что я хотел сделать ... это с вики учебника ... Только хотел не для 22 порта а для своего. Вас если честно не понял ... Если можно пример моего правила скинуть ...

Paulra ()
Ответ на: комментарий от Paulra

а по поводу iptables -P INPUT -j DROP оно отключает все ... это было понятно когда не работали правила conntrack , а после того как сапорт исправил мне ошибку правила работают. И по цепочкам идут только вот дописываю последнюю строчку и меня отключает )))

Paulra ()
Ответ на: комментарий от Paulra

Честно говоря мне лень писать столько правил. Сделайте замены:

--dport 22 => --dport 5555
--dport 27520 => --dport 9999
27519,27521 => 9998,10000
ssh_knock => game_knock

Еще ко всем правилам с ″-m recent″, относящимся к стуку для игры лучше добавить ″--name game″, чтобы этот список ip-адресов не пересекался с другими. У вас ведь в цепочке logins реализуется другое условие проверки, поэтому нужны разные списки — разные имена.

При добавлении ″-P INPUT -j DROP″ в любом случае соединения, уже установленные на момент добавления этого правила, не должны обрываться, ведь у вас есть:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Кроме того, есть правило:

iptables -A INPUT -s xxx.xxx.xx.83 -j ACCEPT

Посмотрите вывод ″iptables -L INPUT -n -v -x″ там для кажого правило будет указан счётчик сработок в байтах/пакетах. «xxx.xxx.xx.83» — это ведь тот ip-адрес, с которого вы устанавливаете соединение по ssh?

mky ★★★★★ ()
Ответ на: комментарий от mky

Ценю ваше время, и ваши советы... поэтому проверьте меня ... писал аналогию для портов (стук в 2106 открывать на 10 сек 7777)

iptables -A game_knock

iptables -A game_knock -m recent --name game --rcheck --seconds 60 --hitcount 2 -j RETURN

iptables -A game_knock -m recent --name game --rcheck --seconds 10 -j ACCEPT

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 7777 -j game_knock

iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 2106 -m recent --name game --set

iptables -A INPUT -m conntrack --ctstate NEW -p tcp -m multiport --dport 2105,2107 -m recent --remove

iptables -P INPUT DROP

Paulra ()
Ответ на: комментарий от Paulra

В правиле

--dport 2105,2107 -m recent --remove

не хватает ″--name game″. В принципе это правило не обязательно, это такая защита на случай, если будет проведён скан всех портов подряд.

Я надеюсь, что в этих правилах для портов 7777/2106 цепочка ″game_knock″ и ″--name game″ уникальны и не используются в других местах (для портов 5555/9999).

mky ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.