Не работают правила в iptables

Изображение пользователя buggy.

Всем здравствуйте!
Суть моей проблемы такова: почему-то не срабатывают правила, которые я добавляю в iptables.
А теперь подробнее:
у меня в коридоре на антресолях стоит сервер из старого Pentium III, на котором крутится игровой сервер "World Of Padman" (игруля такая на движке Quake III). Роль роутера у меня исполняет примерно такой-же компьютер, на котором установлен IPFIRE. Работает, кстати, очень хорошо и надежно, уже много лет. На роутере у меня проброшен порт 27960 на сервер.
С недавних пор я обнаружил паразитный трафик на игровом сервере - игроков на нем нет, а светодиод на свитче и на сетевухе сервера активно и непрерывно мигает. Стал разбираться и обнаружил, что среверу извне, с периодически меняющихся адресов, почти постоянно посылается команда "getstatus". Кто знает, эта команда позволяет получить статистику игрового сервера, не подключаясь к нему. Но всякие сайты, которые мониторят игровые сервера (типа http://gametracker.com/) делают это интелигентно, не более одного-двух раз в минуту, а тут - десятки раз в секунду, да еще и с разных IP. Чтобы это пресечь, я написал простейший скрипт на перле, который отлавливает появление такого трафика. Этот скрипт должен также добавлять в таблицы iptables записи, блокирующие трафик с ip-адресов-источников этого трафика. Я никогда ранее не пробовал работать с iptables, поэтому решил сначала попробовать выполнять команды добавления правил вручную. Для ручного редактирования в IPFIRE предусмотрена специальная таблица CUSTOMINPUT в которую можно вносить правила блокировки трафика с тех или иных ip-адресов.
Я выполнял команды такого типа:
iptables -A CUSTOMINPUT -i red0 -s 93.115.210.160 -j DROP
В списке правил новое правило появлялось, но трафик с этого IP не прекращался. В веб-интерфейсе роутера можно посмотреть правила iptables, там оно есть, но число пакетов, попавших в него - нулевое.
Пробовал добавлять это правило прямо в таблицу INPUT - результат тот-же. :(
Если есть мастера в iptables - просветите меня пожалуйста, что я делаю неправильно?

0
dyug - 18 Декабрь, 2014 - 15:51

указанные задачи решаются fail2ban который есть в репах уже давно.
и писать свое - ну я не вижу смысла.

0
buggy - 18 Декабрь, 2014 - 17:42
Изображение пользователя buggy.

Если я не ошибаюсь, fail2ban занимается анализом логов, а не трафика непосредственно. Поэтому в данном случае его применить не удастся.

0
dyug - 18 Декабрь, 2014 - 18:24

очень ошибаешься. ибо как он иначе у меня банит любителей лазить на ссх?
Точнее, он конечно занимается анализом логов, и на основе их генерит правила запрета, согласно указаниям в конфиге.
Заодно там можно посмотреть как правильно сгенерить правила запрета входящего трафика.

+1
buggy - 18 Декабрь, 2014 - 18:19
Изображение пользователя buggy.

Как-как? Читает и разбирает лог отказов ssh и банит, добавляя правила в iptables.

0
dyug - 18 Декабрь, 2014 - 15:57

вопрос на другую тему - а кто такой red0? что это такое?

что-то так погуглить попытался, нет внятной информации.

0
buggy - 18 Декабрь, 2014 - 17:48
Изображение пользователя buggy.

red0 - внешний интерфейс, выставленный в роутере наружу (в роутерах еще именуется wan). Разработчики IPFIRE так назвали внешний кабельный интерфейс, WIFI они назвали blue0, локальную сеть - green0 и т. д. Но это не принципиально, как я понимаю...

0
dyug - 18 Декабрь, 2014 - 18:17

ага понятно, извращенцы. :-)
просто там есть обычные eth, или они их всех переделали?

0
buggy - 18 Декабрь, 2014 - 18:20
Изображение пользователя buggy.

А зачем? Так понятнее, ибо интерфейсов может быть много, и так нагляднее, какую сеть обслуживает интерфейс.

0
Chibiko - 18 Декабрь, 2014 - 18:22
Изображение пользователя Chibiko.

Ага, сеть красных.. сеть голубых...
iptables-persistent не пробовали ставить? И через него настраивать?

0
buggy - 18 Декабрь, 2014 - 18:28
Изображение пользователя buggy.

Даже оранжевые есть! :)
Там довольно ограниченный список пакетов, которые можно поставить - свой список, свой формат.

0
dyug - 18 Декабрь, 2014 - 18:30

нуу... тут уж я ничего не подскажу.
впрочем f2b по моему не требует компиляции, его можно ручками развернуть, если питон(ежели мне склероз не изменяет) стоит, или можно поставить.

0
buggy - 18 Декабрь, 2014 - 18:36
Изображение пользователя buggy.

Дык в общем-то у меня вопрос-то был про iptables, почему не работает, а не про f2b.
Но все равно спасибо за неравнодушие! :)

0
dyug - 18 Декабрь, 2014 - 18:44

шашечки, или ехать? нужна реализация защиты или как оно по твоим мыслям должно работать? :-)

0
buggy - 18 Декабрь, 2014 - 18:38
Изображение пользователя buggy.

И потом, если я правильно понял, интерфейс можно и не указывать, тогда должен блокироваться весь трафик со всех интерфейсов на этот IP и с него на любой интерфейс.

0
Flameflower - 18 Декабрь, 2014 - 21:26
Изображение пользователя Flameflower.

Ну я так, из любопытства.
IPFire?
А вообще у тебя нет простого понимания работы iptables.

0
buggy - 18 Декабрь, 2014 - 22:03
Изображение пользователя buggy.

Да я и не спорю, что нет понимания. Если бы были знания - я бы не спрашивал.
А чем IPFIRE не катит?

+2
Flameflower - 19 Декабрь, 2014 - 10:17
Изображение пользователя Flameflower.

Ну почему не катит?
Вполне себе рабочая штука. Забросил только из за того, что не умеет работать с 2-мя операторами (на тот момент когда пользовался).
А так запомни, что если твой пакет попал под какое то правило то он выходит из дальнейшей обработки, если только не указано обратное(-j RETURN).
Т.е. из этого следует, что в iptables очень важен порядковый номер правила в цепочке. Так же важна и таблица, а за ней цепочка, в которой обрабатывается трафик.
Т.е., к примеру, зарубив трафик в таблице mangle в цепочке PREROUTING или FORWARD в таблице filter ты его уже не получишь.

+1
dyug - 19 Декабрь, 2014 - 11:44

О. точно, склероз... :-(
Автору нужно не
iptables -A CUSTOMINPUT -i red0 -s 93.115.210.160 -j DROP
что является добавлением Append
а
iptables -I CUSTOMINPUT -i red0 -s 93.115.210.160 -j DROP
что являться вставкой, INSERT в начало, если, конечно, мне не изменяет мой склероз.
Самому рыться сейчас лень, но автор поста, я думаю, сам прочтет мануал по iptables без моей помощи. :-)

0
buggy - 19 Декабрь, 2014 - 12:39
Изображение пользователя buggy.

Большое спасибо!
Честно говоря, я уже нашел это-же решение вчера вечером, просто я не успел его проверить и отписаться об этом здесь.
Еще раз, всем большое спасибо за участие! :)

0
buggy - 20 Декабрь, 2014 - 23:10
Изображение пользователя buggy.

Однако, все на тех-же позициях. :( Так и не заработало.

+3
Flameflower - 21 Декабрь, 2014 - 01:05
Изображение пользователя Flameflower.

Ну тут, на самом деле, какой вопрос таков и ответ.
iptables --insert INPUT 1 -s 93.115.210.160 -j DROP
Смотреть на картинку до полного просветления:

И заметь, что это еще без bridge table.
0
buggy - 21 Декабрь, 2014 - 09:25
Изображение пользователя buggy.

Еще не проверял, но просветление, похоже, наступило на 2-й секунде созерцания - блокировать надо в цепочке FORWARD, а иначе получается, что форвардинг пакетов на другой сетевой интерфейс происходит, а с самого роутера доступ на блокируемый IP пропадает. :)
Огромное спасибо за классную схему, Flameflower! :)

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры