feat(security): 添加fail2ban集成防止暴力破解登录
- 新增fail2ban过滤器和监狱配置文件 - 修改登录视图记录客户端IP和认证失败日志 - 更新日志配置添加syslog处理器用于fail2ban检测 - 在README中添加fail2ban配置和使用文档
This commit is contained in:
@@ -196,13 +196,16 @@ LOGGING = {
|
||||
'format': '[%(asctime)s] [%(levelname)s] [%(process)d] [%(module)s] %(message)s',
|
||||
'datefmt': '%Y-%m-%d %H:%M:%S'
|
||||
},
|
||||
'syslog': { # syslog格式(用于fail2ban检测)
|
||||
'format': '%(name)s: %(levelname)s %(message)s'
|
||||
},
|
||||
},
|
||||
'handlers': {
|
||||
'file': { # 日志写入文件的处理器
|
||||
'level': 'INFO', # 日志级别:INFO及以上都记录(ERROR/WARNING/INFO)
|
||||
'class': 'logging.handlers.RotatingFileHandler', # 日志轮转,防止文件过大
|
||||
# ✅ 核心:pathlib对象转字符串,logging只接收字符串路径,必转!
|
||||
'filename': str(LOG_DIR / 'all_in_one.log'),
|
||||
'filename': str(LOG_DIR / 'all_in_one.log'),
|
||||
'maxBytes': 1024 * 1024 * 100, # 单个日志文件最大100MB
|
||||
'backupCount': 10, # 最多保留10个日志备份
|
||||
'formatter': 'standard', # 使用上面定义的统一格式
|
||||
@@ -213,6 +216,22 @@ LOGGING = {
|
||||
'class': 'logging.StreamHandler',
|
||||
'formatter': 'standard'
|
||||
},
|
||||
'syslog': { # syslog处理器(用于fail2ban检测登录失败)
|
||||
'level': 'WARNING',
|
||||
'class': 'logging.handlers.SysLogHandler',
|
||||
'address': '/dev/log', # Linux系统日志socket
|
||||
'facility': 'local0',
|
||||
'formatter': 'syslog',
|
||||
},
|
||||
'auth_file': { # 认证日志文件处理器(备选方案)
|
||||
'level': 'WARNING',
|
||||
'class': 'logging.handlers.RotatingFileHandler',
|
||||
'filename': str(LOG_DIR / 'auth.log'),
|
||||
'maxBytes': 1024 * 1024 * 50, # 50MB
|
||||
'backupCount': 5,
|
||||
'formatter': 'standard',
|
||||
'encoding': 'utf-8',
|
||||
},
|
||||
},
|
||||
# 所有日志器配置和原配置完全一致,无需任何修改
|
||||
'loggers': {
|
||||
@@ -226,6 +245,11 @@ LOGGING = {
|
||||
'level': 'INFO',
|
||||
'propagate': True,
|
||||
},
|
||||
'django.security.login': { # 登录安全日志(用于fail2ban)
|
||||
'handlers': ['syslog', 'auth_file'],
|
||||
'level': 'WARNING',
|
||||
'propagate': False,
|
||||
},
|
||||
'celery': { # Celery客户端日志(Django中提交任务的日志)
|
||||
'handlers': ['file'],
|
||||
'level': 'INFO',
|
||||
|
||||
Reference in New Issue
Block a user