Скрипт на bash для быстрого блокирования и разблокирования адресов

12
M2
На сайте с 11.01.2011
Offline
329
4274

Наваял скрипт на bash... Делает следующее:

1) блокировка / разблокировка единичного IP

2) блокировка / разблокировка IP из файла

3) проверка: если IP блокирован, будет сообщение об этом, то же самое, если IP нет в черном списке, а вы его пытаетесь разблокировать

4) подсчет блокированных IPv4 и IPv6

Скрипт пока работает только с IPv4, это первая версия... буду улучшать и дополнять.

Работает так:

blacklist -i 10.10.10.10 -a list

Блокирует IP 10.10.10.10

blacklist -i 10.10.10.10 -a delist

Разблокирует IP 10.10.10.10

blacklist -c

Подсчёт заблокированных адресов

Сам скрипт здесь: https://pastebin.com/LymZtuxY

------------------- Крутые VPS и дедики. Качество по разумной цене (http://cp.inferno.name/view.php?product=1212&gid=1) VPS25OFF - скидка 25% на первый платеж по ссылке выше
D
На сайте с 28.06.2008
Offline
1008
#1

Не совсем понял - зачем этот скрипт? Логика его работы какая?

M2
На сайте с 11.01.2011
Offline
329
#2

Dram,

Это оболочка вокруг ip route add blackhole / ip route del blackhole.

Кроме того, если есть необходимость банить подсетями, проще это делать из файла. Т.е. засунули в текстовик все CIDR, которые забанить нужно, а далее вызываем:


blacklist -f /root/banned_ips -a block

Скрипт по ссылке в стартпосте обновлен, теперь есть полноценная работа с IPv6, если вы ему подсунете недействительный IPv6 / IPv4 скрипт среагирует соответственно.

ВНИМАНИЕ: проверка на валидность IPv6 адреса ведется с помощью утилиты ipcalc, для корректной работы она должна быть у вас установлена.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#3

mark2011, в 159 строке вы имя файла закавычили, а вот в 164-й - нет, т.е. файлы с пробелом в имени будут выдавать ошибку. Обычная беда разработчиков скриптов.

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
M2
На сайте с 11.01.2011
Offline
329
#4

Оптимизайка, спасибо, поправил.

M2
На сайте с 11.01.2011
Offline
329
#5

Новая версия скрипта: blacklist v0.2 - добавлено логирование действий, а также настроен logrotate. Код на pastebin больше не будет обновляться, проект переезжает на гитхаб. Ссылка: https://github.com/mark2013/blacklist (да, это тоже я, цифры указывают на год регистрации))))))))

lonelywoolf
На сайте с 23.12.2013
Offline
151
#6

mark2011, лучше сделайте что-то аналогичное barf.pl для nginx или перепишите сам barf для тех случаев, когда пёрл не желателен.

Платный и бесплатный хостинг с защитой от DDoS (http://aquinas.su)
M2
На сайте с 11.01.2011
Offline
329
#7

Новая версия скрипта: 0.3

В новой версии добавлена мультиязычная поддержка. Пока доступен только русский язык.

---------- Добавлено 10.04.2019 в 11:28 ----------

Новая версия скрипта: 0.3

В новой версии добавлена мультиязычная поддержка. Пока доступен только русский язык.

D
На сайте с 28.06.2008
Offline
1008
#8

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

Я вбиваю в консоль

iptables -A INPUT -s 5.188.184.0/16 -j DROP

и все.

Так зачем нужен другой инструмент?

M2
На сайте с 11.01.2011
Offline
329
#9

Dram,

Dram:
Я вбиваю в консоль

Да, в случае единичного / единичных IP - всё верно.

Но бывают такие случаи, когда нужно массово банить. Пример - мой почтовый сервер (собственно, почему я и взялся за такую разработку). Лезут круглые сутки. Со всех концов света... у меня уже в бане десятки тысяч подсетей... и вся эта радость в iptables просто зависнет. Поэтому используется ip route add blackhole / ip route del blackhole.

Опять же, единичный IP вбить - не проблема. Но как вы поступите, если надо страну заблокировать? geoip нынче платный :( а тот, что бесплатный, уже не обновляется... я делаю так: скачиваю файл с зонами и делаю так:


blacklist -a block -f ao-aggregated.zone

всё, все IP забанены.

Если нужно разбанить:


blacklist -a unblock -f ao-aggregated.zone

Всё, разбанено. Дело 1 секунды. А сколько бы вы вручную возились?

Плюс в скрипте - логирование, logrotate настроен, а значит у вас лог не будет разрастаться до бесконечности. Т.е. всяко если встанет вопрос "а банил ли я IP такой-то" - можно будет отследить. Зачем? Другой вопрос, но такая функциональность присутствует.

M2
На сайте с 11.01.2011
Offline
329
#10

Новая версия 0.3.1

В новой версии:


11.04.2019
Версия 0.3.1
+ Из файла blacklist удалены все функции, которые перенесены в файл blacklist-libs
+ В инсталляционном файле сделана проверка на существование в системе программы ipcalc. Если её нет, происходит ее установка. Поддерживаются ОС Debian, Ubuntu, Centos, Gentoo
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий