У меня есть сайт, который работает только с клиентами из определенных регионов.
В последнее время мой балансировщик нагрузки забивается запросами из Филиппин / России / Китая. Почтовые боты, атаки методом перебора и т. Д.
Есть ли простой способ заблокировать доступ этих трех стран к моему сайту? (Блок кода страны?) Я много вижу об использовании таблиц IP, однако я использую Firewalld на моем балансировщике нагрузки CentOS7.
Есть рекомендации?
Спасибо Крис
Я бы не стал так сильно беспокоиться о том, в каких странах, но взглянул бы на фактические IP-адреса и IP-блоки, которые вызывают нежелательное поведение.
Попытка заблокировать страны проблематична и чревата ошибками. Вы бы пытались отследить конкретных интернет-провайдеров в каждой стране и их блоки IP-адресов.
Я бы использовал журналы и другие источники, чтобы составить списки некорректных IP-адресов, объединить их в подсети, а затем заблокировать эти подсети. Периодически пересматривайте.
Определенно, эта работа лучше подходит для брандмауэров и балансировщиков нагрузки, но iptables или firewalld могут это сделать, но ваш хост должен будет видеть и обрабатывать трафик, а не блокировать его дальше вверх по течению.
Думайте больше как fail2ban (http://www.fail2ban.org/wiki/index.php/Main_Page) и меньше вроде "блокировать Китай"
У меня была эта проблема, и, как заявил tep, управление блоками IP может быть сложной задачей. Однако я нашел место, которое собирает и управляет списками IP-блоков для каждой страны с использованием BGP (основной протокол интернет-маршрутизации), и я нашел их очень точными.
Затем, чтобы облегчить себе жизнь, я написал сценарий, который извлекает определенный пользователем список стран с указанного выше сайта, объединяет и форматирует IP-адреса и вставляет их в ваш любимый пакет межсетевого экрана. В настоящее время он поддерживает pf, ipfw, iptables, ipset и теперь заменяет iptables nftables. Вы можете скачать его с github здесь:
https://github.com/KaiLoi/update-fw-BC
Я просто запускаю его из cron, и после того, как я выбрал 10 лучших стран для взлома в своих списках, хаки против моих серверов в значительной степени испарились. fail2ban на моем сервере вылетает из своего дерева. ;)
Вы будете наказывать целые страны за кучку плохих парней. И что еще хуже, вам будет не хватать плохих парней из других стран.
Как говорит теп, Fail2Ban идеально для этого подходит. Также убедитесь, что у вас есть WAF, например mod_security или naxsi. Затем добавьте репозиторий в смесь для хорошей оценки, и у вас будет не только защита на основе сигнатур атак, но и мониторинг на основе поведения / репутации.
Если вы действительно хотите заблокировать страны, но боретесь с маршрутом брандмауэра, посмотрите, может ли ваш веб-сервер сделать это, как Nginx.
Маршрутизация нежелательных стран в менее дорогое приложение: https://www.digitalocean.com/community/tutorials/how-to-use-nginx-as-a-global-traffic-director-on-debian-or-ubuntu
Блокировка нежелательных стран: http://nginxlibrary.com/ip-based-country-blocking/
Желательно не блокировать законных пользователей из этих стран! Это может быть американский / европейский / любой целевой рынок, на котором вы находитесь в деловой поездке или на отдыхе.
Раньше я использовал для этого брандмауэр. Попытаться сделать это на CentOS или выделенном веб-сервере сложно, так как это скорее проблема сети.
Я бы изучил решения брандмауэра и таким образом блокировал диапазоны IP-адресов. Я знаю, что на самом деле это не дает прямого ответа на ваш вопрос, просто передаю то, что я делал в прошлом.