Как блокировать ботов через IPTABLES? - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB90.7493
BTC/USD70776.2195
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 21.03.2016, 23:34   #1
Bazzinga
never mind
 
Аватар для Bazzinga
 
Регистрация: 26.07.2013
Сообщений: 1,381
Бабло: $188090
Отправить сообщение для Bazzinga с помощью ICQ Отправить сообщение для Bazzinga с помощью Skype™
Question Как блокировать ботов через IPTABLES?

Есть множество разных ботов, типа Baiduspider, который при попытках проиндексировать неск. млн страниц создает натуральный ddos. Попытка блокировать его через nginx провалилась и это вообще в принципе неудобно - приходится инклудить правила для каждого нового домена, а когда их сотни? По словам тех. поддержки сервера: "Nginx пропускал данного бота, такое иногда бывает". Поэтому они заблокировали его через iptables.

Как это делать самостоятельно? Мануалов в формате "для чайников" не нашел.
Кто-нибудь может на пальцах объяснить как блочить ботов прямо по списку сразу для всего сервера, чтобы потом никуда не дергаться при добавлении новых доменов?
__________________
VDS сервера: cкидки + офигенная тех.поддержка.
Bazzinga вне форума  
Старый 22.03.2016, 01:03   #2
веломан
сыроед
 
Аватар для веломан
 
Регистрация: 01.10.2015
Сообщений: 15,844
Бабло: $1858825
По умолчанию

тема про ботов
в iptables получится только IP-ы загнать
но можно и сетку целиком
-A INPUT -s 192.168.0.0/16 -j DROP
веломан вне форума  
Старый 22.03.2016, 01:17   #3
Bazzinga
never mind
 
Аватар для Bazzinga
 
Регистрация: 26.07.2013
Сообщений: 1,381
Бабло: $188090
ТС -->
Отправить сообщение для Bazzinga с помощью ICQ Отправить сообщение для Bazzinga с помощью Skype™
автор темы ТС По умолчанию

Цитата:
Сообщение от веломан Посмотреть сообщение
в iptables получится только IP-ы загнать
но можно и сетку целиком
-A INPUT -s 192.168.0.0/16 -j DROP
Не только - там можно делать правила блокировки по юзерагенту. Может кто-нибудь подскажет корректную команду.
__________________
VDS сервера: cкидки + офигенная тех.поддержка.
Bazzinga вне форума  
Старый 22.03.2016, 02:26   #4
Bazzinga
never mind
 
Аватар для Bazzinga
 
Регистрация: 26.07.2013
Сообщений: 1,381
Бабло: $188090
ТС -->
Отправить сообщение для Bazzinga с помощью ICQ Отправить сообщение для Bazzinga с помощью Skype™
автор темы ТС По умолчанию

Решение найдено:

# iptables -I INPUT 1 -m string --algo kmp --string "SemrushBot" --to 65535 -j DROP
# service iptables save (это CentOS, для Debian/Ubuntu: # iptables-save )
# service iptables restart

Посмотреть что там насохранялось:
# iptables -vnL --line-numbers

Команда также показывает статистику по сэкономленному бот-трафику.
__________________
VDS сервера: cкидки + офигенная тех.поддержка.
Bazzinga вне форума  
Старый 22.03.2016, 02:43   #5
Bazzinga
never mind
 
Аватар для Bazzinga
 
Регистрация: 26.07.2013
Сообщений: 1,381
Бабло: $188090
ТС -->
Отправить сообщение для Bazzinga с помощью ICQ Отправить сообщение для Bazzinga с помощью Skype™
автор темы ТС По умолчанию

Баш скрипт. У меня на CentOS не заработал, ругается на кавычки, кто-нибудь может поправить?

#!/bin/bash
bots="msnbot
bingbot
BLEXBot
Nigma.ru";
bots=`echo $bots | sed ':a;N;$!ba;s/\n//g'`;
for i in $bots ; do
iptables -I INPUT 1 -m string --algo kmp --string $i --to 65535 -j DROP
echo "$i has banned.."
done

Как запускать:
1. Сделать текстовой файл, поместить туда код, переименовать расширение в .sh
2. Залить в home директорию
3. Находясь в одной директории со скриптом - сделать его исполняемым: chmod +x test.sh
4. Запустить: sh test.sh или ./test.sh
__________________
VDS сервера: cкидки + офигенная тех.поддержка.
Bazzinga вне форума  
Старый 22.03.2016, 02:44   #6
den2099
Senior Member
 
Аватар для den2099
 
Регистрация: 25.06.2011
Сообщений: 1,804
Бабло: $371785
По умолчанию

Цитата:
Сообщение от Bazzinga Посмотреть сообщение
Решение найдено:


Команда также показывает статистику по сэкономленному бот-трафику.
ahrefs таким же образом можно заблокировать?
den2099 вне форума  
Старый 22.03.2016, 03:27   #7
Bazzinga
never mind
 
Аватар для Bazzinga
 
Регистрация: 26.07.2013
Сообщений: 1,381
Бабло: $188090
ТС -->
Отправить сообщение для Bazzinga с помощью ICQ Отправить сообщение для Bazzinga с помощью Skype™
автор темы ТС По умолчанию

Цитата:
Сообщение от den2099 Посмотреть сообщение
ahrefs таким же образом можно заблокировать?
Конечно, любого бота, у которого есть в запросе идентифицирующий его признак, который можно использовать в параметре string.
Запрет действует на весь сервер и больше не надо возиться с nginx.
Хотя их лучше совмещать - в nginx всех мелких и не особо докучающих ботов, а в iptables - самых критичных: BaiduSpider, Ahrefs, MJ12bot и т.п.
__________________
VDS сервера: cкидки + офигенная тех.поддержка.

Последний раз редактировалось Bazzinga; 22.03.2016 в 03:35.
Bazzinga вне форума  
Старый 24.03.2016, 12:55   #8
Hector
hustle
 
Аватар для Hector
 
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
Отправить сообщение для Hector с помощью Jabber
По умолчанию

Не совсем по теме но про ботов.
Есть некоторый левый траф с хостов compute.amazonaws.com
Боты не выполняют яваскрипт, юзерагенты разные. Я так понял это обычные парсеры? Как их банить? Сразу по хосту? Или не банить?
Hector вне форума  
Старый 24.03.2016, 13:36   #9
jkloks
Member
 
Регистрация: 02.01.2016
Сообщений: 63
Бабло: $19790
По умолчанию

Вот блокировка по странам, перекрой нах не нужные страны. Китай, например, с него много ботов идет.
http://www.cyberciti.biz/faq/block-e...sing-iptables/
jkloks вне форума  
Старый 24.03.2016, 13:41   #10
веломан
сыроед
 
Аватар для веломан
 
Регистрация: 01.10.2015
Сообщений: 15,844
Бабло: $1858825
По умолчанию

Цитата:
Сообщение от Hector Посмотреть сообщение
Боты не выполняют яваскрипт, юзерагенты разные. Я так понял это обычные парсеры? Как их банить? Сразу по хосту? Или не банить?
testcookie_module
веломан вне форума