Защита Admin URL: больше, чем просто сменить '/admin/'
Смена admin/ на случайный путь — это шаг ноль, а не стратегия безопасности. Атакующие используют автоматические сканеры, но целенаправленный атакующий найдёт вашу админку через логи или неправильно настроенный sitemap.
Уровень 1: Сетевые ограничения
Самая эффективная защита — вообще не выставлять админку в публичный интернет.
# nginx.conf — ограничение по IP
location /your-secret-admin/ {
allow 10.0.0.0/8;
allow 192.168.1.0/24;
deny all;
proxy_pass http://django:8000;
}
Уровень 2: Rate Limiting с django-axes
# settings.py
INSTALLED_APPS += ['axes']
AUTHENTICATION_BACKENDS = [
'axes.backends.AxesStandaloneBackend',
'django.contrib.auth.backends.ModelBackend',
]
AXES_FAILURE_LIMIT = 5
AXES_COOLOFF_TIME = timedelta(minutes=30)
Уровень 3: Двухфакторная аутентификация
С django-otp и TOTP (Google Authenticator):
from django_otp.admin import OTPAdminSite
admin.site.__class__ = OTPAdminSite
Одна строка заменяет стандартный логин на двухэтапный: пароль, затем TOTP-код.
Чек-лист безопасности
- URL админки нестандартный и не в
robots.txt - IP-фильтрация или VPN
- Rate limiting на попытки входа
- 2FA для всех staff-пользователей
- CSP-заголовки на страницах админки
- SSL/TLS обязателен (
SECURE_SSL_REDIRECT = True)
forum Обсуждение
Комментарии скоро будут доступны. Следите за обновлениями!