Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
nginx:ограничение_доступа_средствами_nginx [2011/10/29 11:42] – внешнее изменение 127.0.0.1 | nginx:ограничение_доступа_средствами_nginx [2019/09/26 16:07] (текущий) – mirocow | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | {{tag> | ||
+ | |||
====== Ограничение доступа средствами Nginx ====== | ====== Ограничение доступа средствами Nginx ====== | ||
Строка 6: | Строка 8: | ||
В конфигурационном файле, в папке, которую хотим закрыть надо только указать файл, где хранятся пароли. | В конфигурационном файле, в папке, которую хотим закрыть надо только указать файл, где хранятся пароли. | ||
Вот два примера для закрытия папки с файлами: | Вот два примера для закрытия папки с файлами: | ||
- | | + | |
+ | <code nginx> | ||
root / | root / | ||
autoindex | autoindex | ||
Строка 14: | Строка 17: | ||
access_log | access_log | ||
} | } | ||
+ | </ | ||
+ | |||
и админовской части c дополнительным ограничением по IP: | и админовской части c дополнительным ограничением по IP: | ||
- | | + | <code nginx> |
fastcgi_pass unix:/ | fastcgi_pass unix:/ | ||
include | include | ||
Строка 25: | Строка 30: | ||
access_log | access_log | ||
} | } | ||
+ | </ | ||
Добавить пользователя можно с помощью стандартной утилиты от apache: | Добавить пользователя можно с помощью стандартной утилиты от apache: | ||
htpasswd -b passwords NewUser NewPassword | htpasswd -b passwords NewUser NewPassword | ||
Строка 33: | Строка 39: | ||
Вести лог неудачных попыток подбора пароля и скриптом раз в минуту проверять лог и заносить IP адреса в iptables | Вести лог неудачных попыток подбора пароля и скриптом раз в минуту проверять лог и заносить IP адреса в iptables | ||
Для первого варианта достаточно создать правила: | Для первого варианта достаточно создать правила: | ||
+ | |||
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW | iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW | ||
-m recent --name bhttp --set | -m recent --name bhttp --set | ||
Строка 39: | Строка 46: | ||
--hitcount 360 -j DROP | --hitcount 360 -j DROP | ||
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -j ACCEPT | iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -j ACCEPT | ||
+ | | ||
Можно вместо DROP использовать TARPIT, чтобы усложнить жизнь ломателям :) | Можно вместо DROP использовать TARPIT, чтобы усложнить жизнь ломателям :) | ||
Для второго варианта надо добавить в конфиг: | Для второго варианта надо добавить в конфиг: | ||
+ | <code nginx> | ||
location /401.html { | location /401.html { | ||
root / | root / | ||
access_log | access_log | ||
} | } | ||
+ | </ | ||
+ | |||
Формат error401, у меня например такой: | Формат error401, у меня например такой: | ||
log_format error401 | log_format error401 | ||
' | ' | ||
+ | |||
Теперь все неправильные попытки будут записываться в отдельный лог, который мы можем обрабатывать по cron-у: | Теперь все неправильные попытки будут записываться в отдельный лог, который мы можем обрабатывать по cron-у: | ||
- | | + | <code bash> |
+ | | ||
например, | например, | ||
Есть какие-либо идеи, мысли? | Есть какие-либо идеи, мысли? |