- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Что делает скрипт?
Скрипт парсит логи nginx, берем IP адреса, у которых нет Useg-Agent'а, сортируем и сохраняем в black_list.
Сам скрипт:
#echo '' > /root/black_list
cat /var/log/nginx/access.log | awk ' match($0, /(\d*.\d*.\d*.\d*).*"-" "-"/) {print $1}' | sort | uniq >> /root/black_list
#echo '' > /var/log/nginx/access.log
Что необходимо доработать?
Необходимо из black_list брать ip адреса добавлять для ipset ( для iptables), что бы эти ip были заблокированы.
Скрипт будет запускатся по крону, каждые N минут.
Если у вас есть идеи как еще добавить дополнительно проверку для cookies, то был бы рад услышать.
Спасибо.
господибожемой
ну начните с выделения отдельного формата лога для такого случая
для отдельного if в каком-то локейшене
просто тупо туда пишите список IP.
по тому, как блокировать на iptables пачки ip - смотрите форум (поиск)
в том же if можно и проверку cookies сделать
всё не так просто, для начала стоит ли читать весь фаил логов?
cat /var/log/nginx/access.log
или лучше прочесть последних 1000 строк
tail -n 1000 /var/log/nginx/access.log
А вообще зачем это? Может просто на самом сайте проверить и куки и юзер агента и вывести 404 при несоответствии?
ну начните с выделения отдельного формата лога для такого случая
для отдельного if в каком-то локейшене
просто тупо туда пишите список IP.
на сервере не один веб сайт (разные домены и т.п), хотелось бы более простого решения.
если разговор о том что iptables будет тормозить от большого кол-ва ip забаненых.
так для этого я и хочу использовать ipset.
можно тут подробней?
Dimanych, если уж вообще парсить лог-файл - использовать что-то
типа logtail сразу. чтобы не читать несколько раз одно и тоже.
а уж потом на вывод logtail натравить tail -n XXX
но направление - верное. начать с конфига вебсервера.
А вообще зачем это? Может просто на самом сайте проверить и куки и юзер агента и вывести 404 при несоответствии?
наверно да, можно.
но хотелось бы от таких "посетителей" избавлятся и что бы на них уже ресурсы не уходили.
на сервере не один веб сайт (разные домены и т.п), хотелось бы более простого решения.
а в чем именно проблема?
если разговор о том что iptables будет тормозить от большого кол-ва ip забаненых.
так для этого я и хочу использовать ipset.
вы делаете exec на каждый ip. iptables-restore -n может подгружать это гораздо быстрее.
с другой стороны - скорость добавления новых ip обычно не критична.
а добавить по одному можно просто - man xargs, man iptables/ipset (примеры есть в форуме)
можно тут подробней?
как-то так:
if ($http_cookie ~* "id=([^;]+)(?:;|$)" ) {
}
а в чем именно проблема?
в отсутствии знаний как сделать правильно "формата лога для такого случая, что бы туда писало сразу IP"
вы делаете exec на каждый ip. iptables-restore -n может подгружать это гораздо быстрее.
с другой стороны - скорость добавления новых ip обычно не критична.
а добавить по одному можно просто - man xargs, man iptables/ipset (примеры есть в форуме)
ну добавлять надо не по одному ip, а наверно "пачками", так как скрипт к примеру запускатся будет каждые 5 минут, ну и наверно там (в black_list) не один ip будет.
как-то так:
if ($http_cookie ~* "id=([^;]+)(?:;|$)" ) {
}
если проверка по if ($http_cookie ~* "id=([^;]+)(?:;|$)" ) {
} не проходит то юзер получает - ошибку 504? как то так?
valsha добавил 08.12.2009 в 17:15
можно пример как сразу в nginx лог писать ip адреса тех у которых нет Useg-Agent'а ?
ну добавлять надо не по одному ip, а наверно "пачками", так как скрипт к примеру запускатся будет каждые 5 минут, ну и наверно там (в black_list) не один ip будет.
iptables/ipset все-равно запускается по одному на добавляемый IP. iptables-restore -n умеет "пачками". ищите в форуме.
если проверка по if ($http_cookie ~* "id=([^;]+)(?:;|$)" ) {
} не проходит то юзер получает - ошибку 504? как то так?
что настроите - то и получит
можно пример как сразу в nginx лог писать ip адреса тех у которых нет Useg-Agent'а ?
if ($http_user_agent = "") {
access_log /path/to/log ip;
}
логформат как-то так:
log_format ip "$request_address"
и действительно, зачем мучиться с iptables? достаточно условий nginx'a
сразу не подумал об этом))
и действительно, зачем мучиться с iptables? достаточно условий nginx'a
сразу не подумал об этом))
Умная мысля приходит опосля :)