Вернуться   Форум об интернет-маркетинге > >
Ответ
 
Опции темы
Старый 07.04.2019, 14:23   #1
Академик
 
Регистрация: 11.01.2011
Адрес: Internet
Сообщений: 2,141
Репутация: 10127
Социальные сети Профиль в ВКонтакте

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

Наваял скрипт на 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
__________________
-------------------
Мир отелей
Мой канал Дзен
mark2011 вне форума   Ответить с цитированием
Сказали спасибо:

Реклама
Старый 07.04.2019, 14:39   #2
Dram
Академик
 
Регистрация: 28.06.2008
Сообщений: 6,897
Репутация: 390201

По умолчанию Re: Скрипт на bash для быстрого блокирования и разблокирования адресов

Не совсем понял - зачем этот скрипт? Логика его работы какая?
Dram вне форума   Ответить с цитированием
Старый 07.04.2019, 14:49   #3
mark2011
Академик
 
Регистрация: 11.01.2011
Адрес: Internet
Сообщений: 2,141
Репутация: 10127
Социальные сети Профиль в ВКонтакте

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

Dram,
Это оболочка вокруг ip route add blackhole / ip route del blackhole.
Кроме того, если есть необходимость банить подсетями, проще это делать из файла. Т.е. засунули в текстовик все CIDR, которые забанить нужно, а далее вызываем:

Цитата:
blacklist -f /root/banned_ips -a block
Скрипт по ссылке в стартпосте обновлен, теперь есть полноценная работа с IPv6, если вы ему подсунете недействительный IPv6 / IPv4 скрипт среагирует соответственно.

ВНИМАНИЕ: проверка на валидность IPv6 адреса ведется с помощью утилиты ipcalc, для корректной работы она должна быть у вас установлена.
mark2011 вне форума   Ответить с цитированием
Старый 07.04.2019, 16:23   #4
Оптимизайка
Академик
 
Аватар для Оптимизайка
 
Регистрация: 11.03.2012
Адрес: 127.0.0.1
Сообщений: 4,347
Репутация: 600912

По умолчанию Re: Скрипт на bash для быстрого блокирования и разблокирования адресов

mark2011, в 159 строке вы имя файла закавычили, а вот в 164-й - нет, т.е. файлы с пробелом в имени будут выдавать ошибку. Обычная беда разработчиков скриптов.
__________________
BotGuard ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
Оптимизайка вне форума   Ответить с цитированием
Старый 07.04.2019, 17:22   #5
mark2011
Академик
 
Регистрация: 11.01.2011
Адрес: Internet
Сообщений: 2,141
Репутация: 10127
Социальные сети Профиль в ВКонтакте

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

Оптимизайка, спасибо, поправил.
mark2011 вне форума   Ответить с цитированием
Сказали спасибо:
Старый 09.04.2019, 19:39   #6
mark2011
Академик
 
Регистрация: 11.01.2011
Адрес: Internet
Сообщений: 2,141
Репутация: 10127
Социальные сети Профиль в ВКонтакте

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

Новая версия скрипта: blacklist v0.2 - добавлено логирование действий, а также настроен logrotate. Код на pastebin больше не будет обновляться, проект переезжает на гитхаб. Ссылка: https://github.com/mark2013/blacklist (да, это тоже я, цифры указывают на год регистрации))))))))
mark2011 вне форума   Ответить с цитированием
Старый 09.04.2019, 22:31   #7
lonelywoolf
Профессор
 
Аватар для lonelywoolf
 
Регистрация: 23.12.2013
Сообщений: 672
Репутация: 29667
Отправить сообщение для lonelywoolf с помощью ICQ

По умолчанию Re: Скрипт на bash для быстрого блокирования и разблокирования адресов

mark2011, лучше сделайте что-то аналогичное barf.pl для nginx или перепишите сам barf для тех случаев, когда пёрл не желателен.
lonelywoolf вне форума   Ответить с цитированием
Старый 10.04.2019, 12:28   #8
mark2011
Академик
 
Регистрация: 11.01.2011
Адрес: Internet
Сообщений: 2,141
Репутация: 10127
Социальные сети Профиль в ВКонтакте

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

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

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

Новая версия скрипта: 0.3
В новой версии добавлена мультиязычная поддержка. Пока доступен только русский язык.
mark2011 вне форума   Ответить с цитированием
Старый 10.04.2019, 12:54   #9
Dram
Академик
 
Регистрация: 28.06.2008
Сообщений: 6,897
Репутация: 390201

По умолчанию Re: Скрипт на bash для быстрого блокирования и разблокирования адресов

Все равно не понимаю, вот нужно забанить мне айпи или подсеть.
Я вбиваю в консоль
Цитата:
iptables -A INPUT -s 5.188.184.0/16 -j DROP
и все.
Так зачем нужен другой инструмент?
Dram вне форума   Ответить с цитированием
Старый 10.04.2019, 18:37   #10
mark2011
Академик
 
Регистрация: 11.01.2011
Адрес: Internet
Сообщений: 2,141
Репутация: 10127
Социальные сети Профиль в ВКонтакте

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

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 такой-то" - можно будет отследить. Зачем? Другой вопрос, но такая функциональность присутствует.
mark2011 вне форума   Ответить с цитированием
Ответ



Опции темы

Быстрый переход


Регистрация Справка Календарь Поддержка Все разделы прочитаны