Security Guard

Limit password attempts at the GLPI login and stop brute force

Security Guard protects GLPI against brute-force attacks on the web login, the REST API, API v2, CalDAV and password recovery. It counts failed password attempts and, when a rule goes over its limit, temporarily blocks new attempts (HTTP 429) from the user, the IP or the combination of both. It is free and works on GLPI 10, GLPI 11 and GLPI 12.

Free

Features

Each rule has its own window, failure limit and lockout duration, and can apply only to certain networks or countries. Exemptions by user, group, profile, network or country, with a validity period, are never blocked. The Dashboard shows the attempts of the last 24 hours and the 10 IPs, users and countries with the most failures over the week; the Test tab simulates an attempt without saving anything.

Behind a reverse proxy or Cloudflare, the user's real IP is only read through the proxies you declare, and the "This request's IP" card shows the result before you turn protection on. Protection ships disabled and the sample rules inactive. The username is never stored in clear text: only an HMAC for correlation and a mask on screen. Each rule chooses the channels where it counts: on password recovery every request counts, by IP or by e-mail; on CalDAV only wrong passwords become events. The GLPI 11 and 12 MFA code shows up in the events and keeps GLPI's own limit; SSO is out of scope.

Temporary lockout (HTTP 429) by user, IP or user+IP, with its own window, failure limit and duration in each rule

Protects the web login, the REST API, GLPI 11 and 12 API v2, CalDAV and password recovery, and each rule chooses the channels where it counts

Exemptions by user, group, profile, network (CIDR) or country, with a validity period, that are never blocked

GeoIP with the MaxMind GeoLite2 Country database, which you download for free and upload: rules and exemptions by country

Dashboard with the last 24 hours of attempts by result and the top 10 IPs, users and countries by failures over 7 days

Manual release and manual block, with the full block history and a separate permission for each action

Real IP behind a reverse proxy or Cloudflare, with a button that adds the CDN's official ranges

Username stored only as an HMAC and shown masked, with configurable event retention

IP resolution and login attempt simulators that save nothing

How it works

Step 1

Set up the trusted proxies

Enter the network of the reverse proxy in front of GLPI and, if you use Cloudflare, add the CDN ranges in one click. In the "This request's IP" card, check that the resolved IP is the user's.

Step 2

Turn on a rule

The module ships with two inactive sample rules: User + IP (5 failures in 15 minutes block for 15 minutes) and IP (30 failures in 15 minutes block for 30 minutes). Turn on the one that fits, choose the channels (web login, API, CalDAV, password recovery) and add the exemptions you need, such as the network of a system integrated through the API.

Step 3

Switch protection on and follow up

Protection ships disabled: switch it on in the Settings tab. From then on, the Dashboard and the Events tab show the classified attempts, and anyone with permission can release a block before it ends.

See it in action

A quick tour of what the plugin does in practice.

Video demo coming soon.

Image gallery

Check GLPI's vulnerabilities too

Protecting the login is part of the job. CVE Scan shows whether your GLPI version has known CVEs and what to adjust on the server, with a score from 0 to 100.

Discover CVE Scan

Start using Security Guard

View available plans or read the full article about this module.

View plans Read full article Download on GitHub
Need help?