Как заблокировать доступ к ресурсу для конкретного региона?
Здравствуйте!
У меня на хостинге (linux) развёрнут сайт. Недавно проверял состояние сервера и заметил в логах много неудачных попыток входа на сервер (В основном через ssh), похоже на brute force. В основном всё делается с Индии и подобных IP. Как я могу полностью заблокировать доступ к серверу и самому сайту для конкретного региона?
ну смотри - сумел заблочить Индию... и посыпались и ******стана ...
и тут вопрос - а кому ты интересен?
если кому то конкретному, он просто поменяет vpn и продолжит шуршать..
это так, к размышлению ;))
1. Nginx должен включать модуль ngx_http_geoip_module.
2. Качаем БД GeoLite2 Country.
3. Пример конфига (nginx.conf), с отправкой всех из Индии в 403 лес:
http {
geoip_country /path/to/GeoLite2-Country.mmdb;
map $geoip_country_code $allowed_country {
default yes;
IN no; # banned india
}
}
server {
if ($allowed_country = no) {
return 403;
}
}
Рабочий вариант, не полагающийся на разной степени редко обновляемые географические базы IP-адресов - закрыть SSH совсем и ходить только из локальной сети, например через впн.
С веб-сервером сложнее - тут без подключения посторонних сервисов выбор невелик - модуль geoip или ручное перечисление диапазонов релевантных стран.