From de9646d0969e22a4de41615a21e0a2554521199e Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Fri, 18 Nov 2022 05:57:57 -0800 Subject: [PATCH] 10653 log failed login attempts on INFO (#10843) * 10653 log failed login attempts on INFO * 10653 use signal to log failed login attempts * 10653 use signal to log failed login attempts * Update netbox/users/signals.py Co-authored-by: Jeremy Stretch * Update netbox/users/apps.py Co-authored-by: Jeremy Stretch Co-authored-by: Jeremy Stretch --- netbox/users/apps.py | 8 ++++++++ netbox/users/signals.py | 10 ++++++++++ netbox/users/views.py | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 netbox/users/apps.py create mode 100644 netbox/users/signals.py diff --git a/netbox/users/apps.py b/netbox/users/apps.py new file mode 100644 index 000000000..b8d67f1c3 --- /dev/null +++ b/netbox/users/apps.py @@ -0,0 +1,8 @@ +from django.apps import AppConfig + + +class UsersConfig(AppConfig): + name = 'users' + + def ready(self): + import users.signals diff --git a/netbox/users/signals.py b/netbox/users/signals.py new file mode 100644 index 000000000..8915af1dc --- /dev/null +++ b/netbox/users/signals.py @@ -0,0 +1,10 @@ +import logging +from django.dispatch import receiver +from django.contrib.auth.signals import user_login_failed + + +@receiver(user_login_failed) +def log_user_login_failed(sender, credentials, request, **kwargs): + logger = logging.getLogger('netbox.auth.login') + username = credentials.get("username") + logger.info(f"Failed login attempt for username: {username}") diff --git a/netbox/users/views.py b/netbox/users/views.py index 33ef3fadd..c688d6b4f 100644 --- a/netbox/users/views.py +++ b/netbox/users/views.py @@ -106,7 +106,7 @@ class LoginView(View): return self.redirect_to_next(request, logger) else: - logger.debug("Login form validation failed") + logger.debug(f"Login form validation failed for username: {form['username'].value()}") return render(request, self.template_name, { 'form': form,