Pull to refresh
259
0
Alexander@simpleadmin

User

Send message
2 VBart
Валентин, пользуясь случаем задам вопрос:
http://nginx.org/ru/docs/http/ngx_http_core_module.html#location
Если location задан префиксной строкой со слэшом в конце и запросы обрабатываются при помощи proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass или memcached_pass, происходит специальная обработка. В ответ на запрос с URI равным этой строке, но без завершающего слэша, будет возвращено постоянное перенаправление с кодом 301 на URI с добавленным в конец слэшом. Если такое поведение нежелательно, можно задать точное совпадение URI и location, например:

Почему 301-й? Дело в том, что в связи с повсеместно используемой браузерами моделью Post/Redirect/Get при отправке POST-запроса клиент получит редирект и последующий GET без аргументов.
Может было бы разумнее в этом случае делать 307-й, чтобы сохранить метод?
$ ps afx | grep -w "[g]rep" | grep -vF "[g]rep"
в 1-м grep символьный класс [g] раскрывается в g, то есть поиск происходит по слову grep, а в список процессов попадает [g]rep. Вторым грепом мы его исключаем из списка, так как благодаря -F [g] не раскрывается.

$ ps afx | grep -w «grep» | grep -vE "(grep).*\1"
Здесь используется специальная конструкция \1 которая позволяет обратиться к уже найденной с помощью символов группировки подстроке, и данная строка использованием -v исключается из списка.

Всё это, конечно лучше делать с помощью pgrep и т.п. Вероятность накосячить в скриптах в таких конструкциях близка к 100%
Ну если уж принципиально не использовать квадратные скобки исключаем тривиальный вариант:
$ ps afx | grep -w "[g]rep" | grep -vF "[g]rep"
30596 pts/13 S+ 0:00 | \_ strace grep . /dev/random
30599 pts/13 S+ 0:00 | \_ grep . /dev/random

и делаем с круглыми:
$ ps afx | grep -w "grep" | grep -vE "(grep).*\1"
30596 pts/13 S+ 0:00 | \_ strace grep . /dev/random
30599 pts/13 S+ 0:00 | \_ grep . /dev/random

:)
вариант с двумя слешами иммунен к файлу

Ни в коем разе не придираюсь, но таки и этот вариант не безгрешен, например:
[alex@d /usr/home/Alex]$ touch ttyv1
[alex@d /usr/home/Alex]$ ps afx | grep ttyv1
3805 v1 Is+ 0:00.00 /usr/libexec/getty Pc ttyv1
43929 0 S+ 0:00.00 grep ttyv1
[alex@d /usr/home/Alex]$ ps afx | grep ttyv\\1
grep: Invalid back reference
[alex@d /usr/home/Alex]$ ps afx | grep "ttyv[1]"
3805 v1 Is+ 0:00.00 /usr/libexec/getty Pc ttyv1
[alex@d /usr/home/Alex]$

То есть луше всё-таки закавычивать.
то есть не `ps | grep asterisk` а `ps | grep [a]sterisk`

Добавлю ещё, что Николай ZyXI убедил меня (по крайней мере для Bash) брать часть содержащую раскрывающуюся символьный класс в кавычки. Аргументы:
Трюк пропадёт в никуда, если в каталоге есть файл XXXX

[alex@d /usr/home/Alex]$ ps afx | grep ntpd
656 - Ss 0:57.56 /usr/sbin/ntpd -c /etc/ntp.conf -p /var/run/ntpd.pid -f /var/db/ntpd.drift
38412 0 S+ 0:00.00 grep ntpd
[alex@d /usr/home/Alex]$ ps afx | grep [n]tpd
656 - Ss 0:57.56 /usr/sbin/ntpd -c /etc/ntp.conf -p /var/run/ntpd.pid -f /var/db/ntpd.drift
[alex@d /usr/home/Alex]$ touch ./ntpd
[alex@d /usr/home/Alex]$ ps afx | grep [n]tpd
656 - Ss 0:57.56 /usr/sbin/ntpd -c /etc/ntp.conf -p /var/run/ntpd.pid -f /var/db/ntpd.drift
38435 0 S+ 0:00.00 grep ntpd
[alex@d /usr/home/Alex]$ ps afx | grep "[n]tpd"
656 - Ss 0:57.56 /usr/sbin/ntpd -c /etc/ntp.conf -p /var/run/ntpd.pid -f /var/db/ntpd.drift
[alex@d /usr/home/Alex]$ rm ./ntpd
[alex@d /usr/home/Alex]$ ps afx | grep [n]tpd
656 - Ss 0:57.57 /usr/sbin/ntpd -c /etc/ntp.conf -p /var/run/ntpd.pid -f /var/db/ntpd.drift
[alex@d /usr/home/Alex]$
Разумеется борьба с ними не составляет проблем, но при этом всём такие атаки наблюдаю раз в неделю минимум. Причиной именно бесплатность решения, которая нивелирует остальные недостатки.
Вероятно, такие задачи только у спамеров бывают.
Если к спамерам и парсерам добавить ddos'еров, то, пожалуй, получим полный перечень пользователей такого решения :)
2. PRIVOXY для проксирования запросов (Можно взять nginx, varnish — я взял Privoxy)

Если парсится курлом, то это лишнее ресурсоёмкое звено. К tor'у можно напрямую цепляться через socks.
Не так то их и много
$ grep -cF " Exit " consensus.z
914

из них прилично работающих процентов 30.
При этом VAC OVH не справился с атакой и многие направления просто блокировались без фильтрации.
В данном случае совет только один, прежде чем писать почитайте, в частности по nginx читать:
— всё подряд от VBart
— действительно хорошие методы борьбы с флудом от kyprizel
— просто бест-практик от lexore — https://habrahabr.ru/post/231277/
и т.п.
Я, конечно, тоже использую хабр как записную книжку, но не до такой же степени.
Неужели заблаговременно в крупных организациях нельзя сделать систему блокировки ip, проявляющих подозрительную активность?

Если логика работы сайта не меняется, то можно. Неплохой пример(зачем-то запёрли на гиктаймс) — https://geektimes.ru/post/136237/
Но как универсальное решение не годится и если админ сделает «умную» защиту, а веб-мастер прикрутит новый аяксовый модуль делающий 100 запросов при обновлении страницы то «частотник» может сломаться.

«Более общее» решение — https://github.com/kyprizel/testcookie-nginx-module от kyprizel. Оно тоже не позволит решить вопросы при фулл-веб-стековых атаках, но 99% ботов отсечёт.
Убедили :) Сделал update статьи. Спасибо!
Согласен и с тем и с тем, но десятилетняя привычка и большая вольность с закавычиванием в c-шеллах делают свое дело.
Да, извините, Николай!
Павел, Ваша экспрессия «в никуда».
Я лишь усомнился, что Михаила заинтересовал "|" и ещё более сомнительно, что его заинтересовал man ps.
ps -p 6053 вам покажет данные только для процесса с PID 6053

Спасибо, конечно, но я тоже знаю о существании ключа "-p" у ps.
При этом много чаще пользуюсь именно символьным преобразованием, так как это универсальнее.
Если интересно, то как это работает:
https://habrahabr.ru/post/229501/#comment_7770191
Вилимо имелось ввиду преобразование символьного класса и исключение лишней строки из вывода grep

Information

Rating
Does not participate
Registered
Activity