# JPKCom Hide Login — Anleitung & Tipps

> Wie du mit JPKCom Hide Login die WordPress-Login-URL umbenennst, Brute-Force-Schutz aktivierst und IPs per Whitelist absicherst — Installation, Konfiguration und WP-CLI.

Source: https://www.jpkc.com/db/guides/jpkcom-hide-login/

JPKCom Hide Login ersetzt die Standard-Login-URL `wp-login.php` durch einen frei wählbaren Slug und bringt zusätzlich Brute-Force-Schutz mit IP-Blocking und eine IP-Whitelist mit. Automatisierte Bots, die `/wp-login.php` scannen, bekommen nur noch einen 404 — ohne Hinweis, wo der Login tatsächlich liegt.

## Anleitung

### Voraussetzungen

- WordPress **6.9** oder neuer (getestet bis 7.0)
- PHP **8.3** oder neuer
- Multisite wird voll unterstützt (das Plugin ist netzwerkfähig)
- WooCommerce 8.0+ ist kompatibel

Das Plugin modifiziert **keine** Core-Dateien — es arbeitet ausschließlich über WordPress-Hooks und -Filter. WordPress-Updates bleiben damit unkritisch.

### Installation

1. Lade die Plugin-ZIP von GitHub herunter.
2. Im Admin-Bereich: **Plugins → Installieren → Plugin hochladen**, ZIP wählen, **Jetzt installieren**.
3. Klicke auf **Plugin aktivieren**.

Alternativ per FTP: den Ordner `jpkcom-hide-login` nach `/wp-content/plugins/` hochladen und über das **Plugins**-Menü aktivieren.

**Direkt nach der Aktivierung:**

1. Eine Erfolgsmeldung zeigt deine neue Login-URL (Standard: `https://deine-domain.de/jpkcom-login/`).
2. **Speichere dir diese URL sofort als Lesezeichen!**
3. Öffne **Einstellungen → Hide Login**, um alles anzupassen.
4. Optional deine eigene IP zur Whitelist hinzufügen, um dich nicht versehentlich auszusperren.

### Konfiguration

Alle Einstellungen liegen unter **Einstellungen → Hide Login**.

#### Eigener Login-Slug

Trage im Feld **Custom Login URL Slug** deinen Wunsch-Slug ein. Verbotene Slugs sind `login`, `admin`, `dashboard`, `wp-admin` und `wp-login`; außerdem darf der Slug nicht mit einer bestehenden Seiten- oder Beitrags-URL kollidieren. Nach **Save Changes** lautet deine Login-URL `https://deine-domain.de/dein-slug/`.

#### Brute-Force-Schutz

Der Schutz ist automatisch aktiv. Voreingestellt blockt das Plugin eine IP nach **5 fehlgeschlagenen Logins** innerhalb von **60 Sekunden** für **10 Minuten**. Maximale Versuche (1–100), Zeitfenster (1–3600 s) und Sperrdauer (1–86400 s) sind frei konfigurierbar. Aktuell gesperrte IPs siehst du im Abschnitt **Currently Blocked IPs**; **Clear All Blocked IPs** hebt alle Sperren manuell auf.

#### IP-Whitelist

Vertrauenswürdige IPs werden nie geblockt. Im Abschnitt **IP Whitelist** trägst du eine einzelne IP (`192.168.1.100`) oder einen CIDR-Bereich (`192.168.1.0/24`, `10.0.0.0/8`) ein und klickst auf **Add to Whitelist**. Deine aktuelle IP wird zur Orientierung angezeigt; Einträge lassen sich jederzeit per **Remove** löschen.

#### Multisite

Unter **Netzwerk-Admin → Einstellungen → Hide Login (Network)** kannst du einen netzwerkweiten Slug für alle Sites setzen. Bleibt das Feld leer, darf jede Site ihren eigenen Slug wählen. Ein gesetzter Netzwerk-Slug hat Vorrang vor den Einstellungen der einzelnen Site.

### Verwaltung per WP-CLI

Das Plugin bringt vollständigen WP-CLI-Support mit:

```bash
# Status und Konfiguration anzeigen
wp jpkcom-hide-login status

# Slug auslesen / setzen
wp jpkcom-hide-login get-slug
wp jpkcom-hide-login set-slug my-secure-login

# Whitelist verwalten (CIDR möglich)
wp jpkcom-hide-login whitelist list
wp jpkcom-hide-login whitelist add 192.168.1.0/24
wp jpkcom-hide-login whitelist remove 192.168.1.100

# Gesperrte IPs verwalten
wp jpkcom-hide-login blocked list
wp jpkcom-hide-login blocked clear

# Schwellenwerte setzen
wp jpkcom-hide-login protection max-attempts 10
wp jpkcom-hide-login protection attempt-window 120
wp jpkcom-hide-login protection block-duration 1800

# Abgelaufene Login-Versuchsdaten aufräumen (läuft auch täglich per WP-Cron)
wp jpkcom-hide-login cleanup
```

## Tipps & Tricks

- **Notfall-Zugang konfigurieren:** Hast du die Login-URL vergessen, kannst du in `wp-config.php` einen Slug erzwingen — `define( 'JPKCOM_HIDE_LOGIN_DEFAULT_SLUG', 'emergency-login' );`. Im äußersten Fall sperrt das Umbenennen des Plugin-Ordners per FTP das Plugin aus.
- **Aus IP-Sperre befreien:** Die Sperre läuft nach 10 Minuten (bzw. deiner Sperrdauer) von selbst ab. Schneller geht es per SQL — etwa `DELETE FROM wp_options WHERE option_name = 'jpkcom_hide_login_blocked_ips';` oder das Eintragen der eigenen IP in `jpkcom_hide_login_ip_whitelist`.
- **Eigene Optionsnamen:** Über die Konstanten `JPKCOM_HIDE_LOGIN_OPTION` und `JPKCOM_HIDE_LOGIN_NETWORK_OPTION` (in `wp-config.php`) lassen sich die Optionsnamen für Per-Site- und Netzwerk-Slug überschreiben.
- **REST API & AJAX bleiben unberührt:** Das Plugin erkennt REST-, `admin-ajax.php`- und WooCommerce-AJAX-Anfragen und blockt nur den direkten Browser-Zugriff auf `wp-login.php` und `wp-admin` für nicht eingeloggte Nutzer.
- **WooCommerce-kompatibel:** My-Account-Login, Login-/Logout-Redirects und der Checkout-Login funktionieren weiter; Passwort-Reset-Mails nutzen automatisch die neue Login-URL.
- **Keine Doppelungen mit anderen Security-Plugins:** Schalte bei Wordfence, iThemes Security oder All-in-One WP Security die jeweils eigene „Login-URL ändern"-Funktion ab, damit sich die Verfahren nicht ins Gehege kommen.
- **Saubere Deinstallation:** Bei Deaktivierung werden alle Optionen und Transients restlos entfernt — keine Datenbank-Rückstände.

## Weiterführende Informationen

- Quellcode auf GitHub: <https://github.com/JPKCom/jpkcom-hide-login>
- [Changelog dieses Projekts](https://www.jpkc.com/db/changelog/jpkcom-hide-login/)

