LINUX.ORG.RU
ФорумAdmin

iptables: блокировка ботов перебирающих порты

 ,


0

2

Тема такова: пытаюсь блокировать ботов, создал правила

-A INPUT -p tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ports_tcp
-A INPUT -p udp -j ports_udp

-A ports_tcp -p tcp -m multiport --dports 80,443,25 -j ACCEPT
-A ports_tcp -j LOG --log-prefix "TCP connection to forbidden port"
-A ports_tcp -j SET --add-set bots_tcp src

-A ports_udp -p udp -m multiport --dports 53 -j ACCEPT
-A ports_udp -j LOG --log-prefix "UDP connection to forbidden port"
-A ports_udp -j SET --add-set bots_udp src


В логи пишется, в ipset добавляется нормально. Но пока просто информативно. Хочу блочить их (воткнуть потом правило ipset), но для подстраховки, чтобы не с 1 раза, а например с 3 раза. Пока не знаю как реализовать

UDP
За пол часа в ipset добавилось 170 TCP-адресов и 17 UDP. Есть ли смысл их блокировать постоянно или достаточно просто DROP? В основном это хостинги всякие

censys.com
googleusercontent.com
censys-scanner.com
pfcloud.io
shadowserver.org
DigitalOcean

И ещё такая особенность, пара адресов бомбили сервер по UDP больше месяца. Какой в этом смысл? Для чего это все делается?

★★★★

Последнее исправление: gobot (всего исправлений: 1)
Ответ на: комментарий от anc

Впрочем посмотрел, за 15 минут в ipset добавилось 130 адресов. Блокировать их постоянно, не знаю даже, если ли смысл? Сделал пока просто DROP, чтобы сервер RST не посылал боту

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

Сделал пока просто DROP, чтобы сервер RST не посылал боту

А вот это очень верно! Точнее только так и нужно делать. Профит не только лишь в ненужной отсылке пакетов с вашей стороны, но и в зависших соединениях на той стороне.

anc ★★★★★
()

Скриптом!!!

fail2ban не блокирует при неудачных попытках sshd (комментарий)

Тут только часть … блокировка по SSH порт 22…

Но у меня он блокирует и порты 21, 80, 443, 990, 143, 587

http://togusak.ddnss.de/block.txt

-:)))

demo13
()
Последнее исправление: demo13 (всего исправлений: 1)
Ответ на: комментарий от gobot

Ну на той стороне тоже не дураки наверное, timeout по любому мизерный делают.

Личная практика показывает что дураки, отваливаются пачками.

Хотя если ботнет какой то с реальными устройства, то да...

Так уж лет 15 в основном только такое и есть. Создателям ботнетов на подобное наплевать, они в подавляющем большинстве не учитывают такие нюансы, это в векторной атаке будут подбирать вручную и учитывать нюансы, но для вектора надо сильно постараться стать заинтересованным в нем, не дешевое все-таки удовольствие.
Хотя иногда встречаются умники с наверное таймаутами, но крайне редко и все равно палятся.

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

Личная практика показывает что дураки, отваливаются пачками.

да что-то не отваливаются. Список только растет, уже 500 TCP \ 50 UDP адресов за 2 часа. В принципе можно собрать статистику за месяц и блокировать уже подсети, хотя они тоже немаленькие, если ASN брать. Не знаю даже стоит ли с ними возиться

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

В принципе можно собрать статистику за месяц и блокировать уже подсети, хотя они тоже немаленькие, если ASN брать. Не знаю даже стоит ли с ними возиться

Делаю изредка такое, причем не за месяц, а нескольких дней достаточно. Смотрю кому принадлежат и если это что-то от всяких бразилий и других дядюшек ляо с африками, то отправляю всю сеть. Иногда бывает что им принадлежит несколько соседних, тогда и их на всякий случай туда же, Это тоже из практики, забанил сеть и на следующий день или через день из соседней посыпалось, вобщем решил к вопросу превентивно подходить.

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

Какие чисилки? Нет я пока никого не блокирую, просто собираю в кучку. Но в целом то они и так DROP получают, если не открытый порт лезут. Я как понимаю они все порты отсканируют и на этом все. Потом наверное вторые боты приползут уже которые с открытыми портами будут работать, я пока не знаю всех нюансов

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

Кстати нет, с 3 стран вообще ни одного ИП не видел. В основном крупные хостинги европейские, американские. А вот ДДОС - там да, Китай, Индия, Бразилия и прочее

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

иии...долго ты с этим возишься?

Та не, лет 15.

Есть какая то автоматика или так вручную?

Вручную.

Какой списочек из сетей уже?

Уже совсем небольшой, 8 сетей всего. «Уже» это потому, что из моего хозяйства ушло основное скопление разбросанных по миру и посмотреть сколько там за годы скопилось я не могу. Точнее у меня есть их бэкапы, но ради такой ерунды неохото в них лезть.

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

Какие чисилки? Нет я пока никого не блокирую, просто собираю в кучку.

А, понял. Я уж было испугался, что это у вас после того как все сделали.

Я как понимаю они все порты отсканируют и на этом все.

Не обязательно. Вот представьте себе, что вы запустили ботнет которому поручили отсканить весь инет. Вы же не будете распределять «одна машинка» - «один диапазон», машинка же может и сдохнут. Надеюсь понятно объяснил.
Ну или другой вариант, на одной машинке может быть больше одного ботнета, один закончил, второй начал :)

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

В основном крупные хостинги европейские, американские.

Этих я только поштучно баню. Понятно же что какой-то нерд от сохи поднял очередную VPS/VDS/наклепал-сайтег/etc вот теперь оно и «шлет гуталин кому попало» (с) Матроскин.
Да и вариант почти одновременного из одной подсети крупного хостера даже если и бывал, то на прямо текущий момент я об этом не помню, а напрягать память из-за этого мне пока все ещё лень :)
Вот мелких банил подсетями, когда например с десяток разных IP, именно разных по диапазону, из какого-нидь ДЦ в какой-нидь Польше выплывают и ты понимаешь, что вот это вот ниразу не уперлось твоему клиенту в его бизнесе, то просто отправляешь в бан всю ц-ку. Сбоев в таком предугадывании не случалось :)

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

Ну понятно, но это только лишь догадки. Сценариев куча. Но я как понимаю цель тупо взлом и добавление ещё одного бота в ботнет, ну а конечная цель ботнета уже от заказчика зависит. Либо ДДОС, либо что-то социальное (реги, лайки, фишинг), майнинг (уж не знаю это наверное уже не актуально), ну и тупо почтовая рассылка(тоже не знаю насколько это уже актуально), ну что там ещё можно выжать с машины

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

Ну понятно, но это только лишь догадки. Сценариев куча. Но я как понимаю цель тупо взлом

Любой НСД это взлом. Даже если например цель единственный конкретный пользователь.

и добавление ещё одного бота в ботнет

Вот это совсем не обязательно.

ну а конечная цель ботнета уже от заказчика зависит.

Именно так!

Либо ДДОС

А вот это отдельная тема. Люто отдельная.

ну и тупо почтовая рассылка(тоже не знаю насколько это уже актуально)

Судя по кол-ву спама всё ещё актуальна. А судя по реакциям «неокрепших умом» и даже иногда «окрепших» вполне себе актуально.

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

Тогда делить опытом. Есть списочек там уже почти 3000 адресов. Я думаю нужен какой то скрипт, который бы эту кучку разбивал на сети, лучше конечно сразу искать в базе ASNы и их подсети блокировать.

Вот есть список

91.196.152.105
91.196.152.113
91.196.152.120
91.196.152.121
91.196.152.122
91.196.152.123
91.196.152.125
91.196.152.126
91.196.152.127
91.196.152.161
91.196.152.179
91.196.152.182
91.196.152.184
91.196.152.185
91.196.152.186
91.196.152.188
91.196.152.189
91.196.152.190
91.196.152.191
91.196.152.211
91.196.152.216
91.196.152.217
91.196.152.218
91.196.152.219
91.196.152.221
91.196.152.222
91.196.152.223
91.196.152.225


Лезу на https://ipinfo.io/

ASN AS213412 - ONYPHE SAS

Netblock	Company	Num of IPs
195.184.76.0/24	FR ONYPHE	256
91.196.152.0/24	FR ONYPHE	256
91.230.168.0/24	FR ONYPHE	256
91.231.89.0/24	FR ONYPHE	256


и по моей логике нужно именно эти 4 сети заносить в блок. Или как ты делаешь?

Нужен полюбому какой то скрипт с автоматикой делать. Ну и удалять бы тоже надо, хотя бы через месяц.

gobot ★★★★
() автор топика
Последнее исправление: gobot (всего исправлений: 1)

Я встречал такое решение, без логов, чисто правилами фаервола: есть три ipset. Провинился один раз - оказываешься в первом на 5 минут, за повтор фаервол тебя переместит во второй, на день, но тоже без блокировок. А после третьего айпи переносят в третий список, для которого уже всё закрыто на месяцок-другой.

Собственно, на микротике однажды именно так и сделал, ибо туда свои по ssh не ходят. На линуксе не делал, ограничился fail2ban по логам nginx и sshd.

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

PS В ipset у каждой записи есть срок действия, можно вручную за этим не следить.

legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 2)
Ответ на: комментарий от anc

для торможения соединений давно придуман TARPIT. он соединение не дропает, но отвечает о ч е н ь м е д л е н н о.

только им и пользуюсь, если часовой бан фейл2бана на особо оголтелых ботов не действует.

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

Вот есть список
91.196.152.*

В вашем выхлопе я бы сократил до /25 и неиимеет.

и по моей логике нужно именно эти 4 сети заносить в блок.

Вот так никогда не загрублял и вам не советую. Например другие сети могут относится совсем к другим услугам за которыми хостер следит более пристально или вообще для его личного использования.

Нужен полюбому какой то скрипт с автоматикой делать.

Наверное надо... или не надо... это же уже постфактум, connlimit и так всё за тебя сделал. Но если такая дребедень каждый! день, то однозначно надо. И так же зависит от количества, когда например у вас ежедневно цифирки в виде 10000, 100000, 200000 на каждый ip и эти ip из разных сетей, то тут сработает обычная лень, всмысле самому захочется автоматизировать. :)

Ну и удалять бы тоже надо, хотя бы через месяц.

Кажется писал выше, вроде никогда не удалял.

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

Я встречал такое решение, без логов, чисто правилами фаервола: есть три ipset. Провинился один раз - оказываешься в первом на 5 минут, за повтор фаервол тебя переместит во второй, на день, но тоже без блокировок. А после третьего айпи переносят в третий список, для которого уже всё закрыто на месяцок-другой.

Годная идея! Одобряю.

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

Польза вполне себе есть. Представьте себе, что это не китайский какер подбирающий по словарю, а вполне себе русский Ваня подбирающий перебором всех символов, русский Ваня никуда не торопиться, как закончится, так закончится.

PS В ipset у каждой записи есть срок действия, можно вручную за этим не следить.

Но надо не забывать о выгрузке и загрузке.

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

для торможения соединений давно придуман TARPIT. он соединение не дропает, но отвечает о ч е н ь м е д л е н н о.

А зачем мне хоть и «о ч е н ь м е д л е н н о» отвечать на 100500700 соединений? Это как бэ тоже трафик который забивает канал, к чему например DDOS-ры в том числе и стремятся.

anc ★★★★★
()

Не надо придумывать тралейбус из сайки хлеба. Файл2бан уже как умеет банить по итерациям. Сейчас не вспомню, первый бан, сколько-то минут, если попытки повторяются, то перманентный. Выше все уже расписали. И да, он читает лог иптаблицы и на основании лога строит правила блокировки, по ИП, порту, сервису, все зависит как настроил и что тебе треба.

julixs ★★★
()
Последнее исправление: julixs (всего исправлений: 1)
Ответ на: комментарий от gobot

Оказывается нет такого фильтра, пришлось самому делать

filter.d/iptables-log.conf

[INCLUDES]
before = common.conf
[Definition]
logtype = file
failregex = ^%(__prefix_line)sscanner IN=\S+ OUT= MAC=\S+ SRC=<HOST> DST=\S+ .*$



и

[scanner]
enabled = true
backend = systemd
filter = iptables-log
journalmatch = SYSLOG_IDENTIFIER="kernel"
banaction = iptables-allports[name=scanner, protocol=all, blocktype=DROP]
maxretry = 5
findtime = 3600
bantime = 86400

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

Кстати бот нападает сразу роем. Тобишь до 30 конектов сразу. Если поставить вышеупомятое правило то бот пока все конекты не отработает то не отсоединится. Проверял. Значит Инет свободен от вреда примерно 3 минуты.

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

Конечно, ведь бот строго однопоточный, блокирующийся.

(по большому секрету) этот бот живет на сотнях тысяч ваших кинетиков, десятках тысяч ваших ВыПыЭс для ВыПыэН, настроенных по инструкции от Васяна с ютуба, и даже в ваших «умных» холодильниках. И этому боту вооооооооот настолько похрен на то, что одна единственная впс настроенная чуть-чуть не по дефолту ответит ему нетипично медленно.

anonymous
()