идея хороша всем, кроме необходимости заносить в whitelist кучу IP,
с которых идут "хорошие" боты.
ну и пользователей достает еще. т.е. минимум - просить надо капчу не при
"первом запросе", а после того как запросы с данного IP стали "подозрительны".
и обходится она, было бы желание у ddos-еров ;) просто такая защита еще не популярна.
это можно поправить if-ом внутри location со статикой.
в лог /var/www/httpd-logs/mysite.ru.access.log - 404 ошибка попадает _дважды_: один раз
пишет nginx (именно со статусом 404) - другой раз - апач, которому в итоге
проксировали запрос (статус может и другим быть).
Brut, скорее всего "оптимизация" с раздачей статики вам нафиг не сдалась
и проще все сразу отправить на бакенд (оставить только "location /").
так через nginx трафик все-равно идет. что мешает логгировать _все_ там?
идею писать в один лог-файл _разными_ демонами - умной назвать нельзя.
Brut, судя по конфигу - у вас именно случай, о котором писал Himiko.
кстати, да. одна из идиотских идей в ISPManager :D
ну может nginx просто проксирует запросы к апачу?
конфиг nginx показать можно?
как отличите в iptables HTTP GET от HTTP POST - так и поговорим.
от самого бота интеллекта много не нужно. думаю, определяющим фактором цены является размер ботнета. а так - достаточно обычная схема.
увы, нет. только не блокируя сразу на файерволе. реально - в бан
nginx-а попадают и нормальные пользователи, поэтому хорошо предусмотреть
способ занесения IP таких в whitelist (например, через капчу на 403/50x страничке).
плюс - limi_rate/conn обычно мало, используется куча эвристик под конкретную атаку.
reuse && recycle для time_wait есть и в линукс:
/proc/sys/net/ipv4/tcp_tw_reuse
/proc/sys/net/ipv4/tcp_tw_recycle
ага, совсем немножко :D
в общем, ТС стоит забить на это, если сокетов в таком состоянии
не слижком уж много. а если много (порядка
/proc/sys/net/ipv4/ip_local_port_range) - еще можно раскидать сайты
по нескольким IP-адресам. плюс - включить reuse&recycle.
изменяет.
так это фича апача - Listen 80 слушает на _всех_ ip, в том числе и ipv6 (настройки
reuse/recycle отдельной для ipv6-сокетов нет).
если нафиг не нужно IPv6 - советую прописать в Listen явно слушаемые IP-адреса.
это ладно, когда просто индекс дергают (хотя и тут ваш файервол курит в сторонке - ведь
про URI он _ничего_ не знает). а ведь бот умный пошел - сымитировать
нагрузку от реальных пользователей умеет. зашел на индекс, прошелся по паре ссылок,
статику потянул - ума тут большого ему не надо.
нельзя резать такие вещи на уровне файервола - он ничего о прикладном
протоколе не знает.
а масштабирование поможет, конечно, до какой-то
степени (пачка балансеров, пачка прокси, пачка бакендов - вот только
делать все это исключительно для защиты от ddos - бросать деньги на ветер).
уверен, что не адаптирует. HTTP и, например, SMTP - очень разные прикладные
протоколы. то, что годится для одного - с трудом переносится на другой.
в сухом остатке (на то, "что уже написано") - будет что-то типа
статистики соединений с нашим сервером для каждого клиента.