#!/bin/bash
SLEEP_TIME=5
while true; do
awk '{print "ipset -A dropip " $1}' /tmp/bad_request.log | sort -u | sh;
cat /dev/null > /tmp/bad_request.log
sleep $SLEEP_TIME;
done
и в предыдущем каталоге есть скрипты подобного содержания:
#!/bin/bash
./scripts/ban_by_ip.sh &
#!/bin/bash
killall ban_by_ip.sh 2>&1>/dev/null
В bad_request.log идут айпишники, которые получили 444.
Увидел, что есть 1 айпишник в логе. Посмотрел, в списке бана его нет. Занес его сам через команду ipset -A dropip *IP*, потом гляжу логи, но там всё равно айпишник этот есть. В чем проблема?
ТС помог с одной проблемкой, быстро пофиксил. Советую.
Может не хватает
?
iptables v1.4.7: unknown option `--dport'
Вроде куда-то нужно tcp вписать, не?
У меня форум, в .htaccess есть не только реврайты.
Долго искать не нужно. nginx + php-fpm
Ну вот я поставлю эту связку. Будет рост в производительности, с ддосом будет легче бороться?
Какие подводные камни?
Дак там прокси обычные. Буржуйские, русские и прочие. А если будет реальный ддос, т.е. ботнет. Что я буду делать?
Вообще, найти бы мне пример отказа от апача.
Стоит скрипт:
и в предыдущем каталоге есть скрипты подобного содержания:
В bad_request.log идут айпишники, которые получили 444.
Увидел, что есть 1 айпишник в логе. Посмотрел, в списке бана его нет. Занес его сам через команду ipset -A dropip *IP*, потом гляжу логи, но там всё равно айпишник этот есть. В чем проблема?
Ну например так:
awk '{print "ipset -A dropip " $1}' /tmp/ban_location.log | sort -u | sh;Спасибо вам, разжевываете мне)
Ну так сделайте второй и не нужно тогда искать коды ответа 444, а лочить всех. Просто чтение файла и лок.
Хорошо.
Тогда как будет выглядеть новый скрипт без поиска 444?
Первый вариант.
В кроне где-то ошибка была, один человек помог вынести в bash скрипт и запускать раз в 5 секунд
---------- Добавлено 09.03.2014 в 11:23 ----------
/tmp/ban_location.log
откуда там вообще берутся записи.
если это лог локейшена который отдает 444 то проверять код ответа вообще не нужно.
можно вообще сразу скармливать на бан.
Да я же вам вроде говорил. Это access_log из локейшена.