Просмотр IP-адреса гостей / анонимных посетителей?

Можно ли просмотреть IP-адреса анонимных пользователей / гостей?

И/или количество подключений от каждого из них?

Мой сайт в течение последних нескольких часов получает сотни и сотни просмотров страниц в минуту, загрузка процессора также достигла 100%.

Вы проверяли логи Nginx (или того, что вы используете)? Это боты и сканеры. Не обращайте внимания на IP-адреса — они меняются после нескольких попыток (IP-адреса в любом случае бесполезны, они всё равно постоянно меняются). Вам стоит начать использовать гео-блокировку (очень мало сайтов действительно глобальны) и блокировать множество user-agent на уровне сервера; по крайней мере, все совершенно ненужные и жадные SEO-скрейперы, боты, которые идентифицируют себя как IE5.x и т.д.

Если вы выполнили стандартную установку, то ограничение скорости должно быть в силе (и часть его уже встроена в Rails). Как вы устанавливали?

Как именно работает это ограничение скорости (нет, я не искал ответ). Оно срабатывает после определённого количества запросов за отрезок времени с одного IP?

В любом случае, когда возникает ситуация, похожая на DDoS, например, если URL упоминается в каком-то глупом списке, начинается поток запросов с IP из Китая, Пакистана, Ирана, Ирака, Вьетнама и России, плюс много с крупных VPS-сервисов, в основном из США, Франции и Германии. Когда они пытаются три раза и меняют IP, ограничение скорости не помогает особенно сильно.

В какой-то момент у меня было много глупых поисковых запросов. И много — это значит, что дроплет за 5 долларов от DigitalOcean упал, и у меня было почти ноль запросов от людей.

Это больше или меньше вопрос веб-сервера, а не Discourse. Эти «стучащие» должны быть остановлены до того, как попадут в приложение. Я знаю, что моя ситуация и решения гораздо проще, чем у OP или большинства веб-мастеров здесь, потому что я из Финляндии, и мой форум чисто финский — поэтому для меня возможно глобальное блокирование (хотя финны, живущие за пределами Финляндии, смотрят на это иначе ;))

Но независимо от ограничения скорости, по крайней мере, поддельные пользовательские агенты должны останавливаться сразу.

Как насчет SSH-стучащих? Они тоже потребляют ресурсы.

Если у вас проблемы с DDoS-атаками, я бы порекомендовал Cloudflare (что я делаю крайне редко). Убедитесь, что вы используете шаблон Cloudflare, а затем отключите оптимизации (или внимательно изучите их настройку).

Это не настоящий DDoS-атака. Но когда поступает много запросов одного типа, они действуют как DDoS, и результат тот же. Я использую Varnish, Fail2ban, а также гео-блокировку, и это помогает мне справляться с этой проблемой.

Да, я выполнил стандартную установку.

Сначала я подумал, что нас просто «забросали» ссылкой с Slashdot, но уже через 24 часа атаки продолжаются с прежней силой.

Быстрое временное решение — закрыть «фасад» и установить для сайта режим «требуется вход». Это сработало: загрузка процессора упала со 100% до 3% всего за 60 секунд.

Как только я снова открываю «фасад», страница /search мгновенно подвергается атаке бессмысленными запросами, например:

/search?q=dogs+order:latest&page=2
/search?q=cats+order:latest&page=2
/search?q=fly+order:latest&page=2

и так далее.

Это происходит в течение 60 секунд после повторного открытия сайта.

Мы — небольшая нишевая группа, не понимаю, зачем кто-то должен нас атаковать :roll_eyes:

Это лишь приблизительная оценка, но, согласно Google Analytics, у нас обычно 8–10 активных пользователей, а как только я снова открываю сайт для всех, это число за секунды взлетает до 1000+. Все подключения приходят из разных штатов США, все прямые, без рефереров.

Я оставлю сайт закрытым для членов сообщества на несколько дней, чтобы посмотреть, прекратится ли это, или попробую ограничить доступ к /search только для авторизованных пользователей. Если это не поможет, скорее всего, придётся подключить Cloudflare.

Спасибо всем :+1:t2:

Да. Это странно, но, думаю, так уж устроен интернет.

Ох. А какой user agent? Может, стоит добавить его в список blocked crawler user agents?

Отличный вопрос!

Посмотрю, смогу ли я найти это на странице отчётов Google Analytics :+1:t2:

Я думаю, вы также можете посмотреть в /var/discourse/shared/log/var-log/nginx/.... (или что-то очень похожее). Есть и другие настройки, например slow down crawler user agents, если искать в настройках по слову «agent».

Найдено в: /var/discourse/shared/standalone/log/var-log/nginx/access.log

(сейчас скачиваю локально)

Спасибо, @pfaffman, посмотрю, не бросится ли мне что-нибудь в глаза.

Быстрый обзор, похоже, показывает разнообразную смесь пользовательских агентов.

Это также заставляет меня подозревать атаку, а не эффект Слэшдота :confused:

[12/Jan/2022:13:26:20 +0000] "greyarro.ws" 184.174.102.229 "GET /search?q=cats+order%3Alatest&page=2 HTTP/2.0" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.57 Safari/537.36" "search/show" 302 1117 "-" 0.012 0.009 "-" "-" "-" "-" "-" "-" "-"

[12/Jan/2022:13:27:22 +0000] "greyarro.ws" 173.211.78.162 "GET /search?q=cats+order%3Alatest&page=2 HTTP/2.0" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.9390.0.4430.212 Safari/537.36" "search/show" 302 1117 "-" 0.012 0.009 "-" "-" "-" "-" "-" "-" "-"

[12/Jan/2022:13:30:46 +0000] "greyarro.ws" 66.78.24.176 "GET /search?q=cats+order%3Alatest&page=2 HTTP/2.0" "Mozilla/5.0 (X11; Linux x86_64; rv:89.0.2) Gecko/20100101 Firefox/89.0.2" "search/show" 302 1117 "-" 0.020 0.019 "-" "-" "-" "-" "-" "-" "-"

[12/Jan/2022:16:10:32 +0000] "greyarro.ws" 38.18.59.158 "GET /search?q=cats+order%3Alatest&page=2 HTTP/2.0" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.86 Safari/537.36" "search/show" 302 1117 "-" 0.008 0.011 "-" "-" "-" "-" "-" "-" "-"

[12/Jan/2022:16:10:57 +0000] "greyarro.ws" 108.62.69.249 "GET /search?q=cats+order%3Alatest&page=2 HTTP/2.0" "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:88.0.1) Gecko/20100101 Firefox/88.0.1" "search/show" 302 1117 "-" 0.008 0.009 "-" "-" "-" "-" "-" "-" "-"

и:

[12/Jan/2022:16:11:07 +0000] "greyarro.ws" 38.18.49.252 "GET /search?q=dogs+order%3Alatest&page=2 HTTP/2.0" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.78 Safari/537.36" "search/show" 302 1117 "-" 0.012 0.011 "-" "-" "-" "-" "-" "-" "-"
[12/Jan/2022:16:28:08 +0000] "greyarro.ws" 206.180.185.39 "GET /search?q=dogs+order%3Alatest&page=2 HTTP/2.0" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0" "search/show" 302 1117 "-" 0.016 0.012 "-" "-" "-" "-" "-" "-" "-"

[12/Jan/2022:16:28:08 +0000] "greyarro.ws" 38.18.55.132 "GET /search?q=dogs+order%3Alatest&page=2 HTTP/2.0" "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.57 Safari/537.36" "search/show" 302 1117 "-" 0.008 0.009 "-" "-" "-" "-" "-" "-" "-"
[12/Jan/2022:16:28:10 +0000] "greyarro.ws" 184.174.54.113 "GET /search?q=dogs+order%3Alatest&page=2 HTTP/2.0" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.69 Safari/537.36" "search/show" 302 1117 "-" 0.012 0.011 "-" "-" "-" "-" "-" "-" "-"
[12/Jan/2022:16:28:14 +0000] "greyarro.ws" 184.174.72.90 "GET /search?q=dogs+order%3Alatest&page=2 HTTP/2.0" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0.1) Gecko/20100101 Firefox/89.0.1" "search/show" 302 1117 "-" 0.016 0.017 "-" "-" "-" "-" "-" "-" "-"

Боюсь, мы немного отклонились от исходной темы, но ценю помощь, спасибо :slight_smile:

Все эти настройки помогают только в том случае, если бот соблюдает ограничения и рекомендации. Даже Googlebot не всегда это делает, а плохие боты — никогда. Вот одна из причин, почему файл robots.txt так бесполезен.

И дисклеймер: я не знаю, использует ли Discourse какие-либо другие технологии для замедления.

Нет, не отклонились. Потому что ваш вопрос был немного не по делу :wink: Вы хотели узнать одну мелкую деталь, тогда как следовало спросить: «что делать, если мой Discourse подвергся атаке ботов/DDoS».