70 lines
2.4 KiB
Markdown
70 lines
2.4 KiB
Markdown
# Voraussetzungen
|
|
|
|
## Betriebssystem
|
|
|
|
- Debian 11+ (Bullseye oder neuer)
|
|
- Ubuntu 20.04+
|
|
- Andere Debian-basierte Distributionen sollten ebenfalls funktionieren
|
|
|
|
Architektur: x64 (amd64) und ARM (arm64/armhf) werden unterstützt.
|
|
|
|
## Abhängigkeiten
|
|
|
|
### Pflicht
|
|
|
|
| Paket | Zweck | Prüfung |
|
|
|---|---|---|
|
|
| `curl` | ntfy-Benachrichtigungen und Geo-Lookup | `command -v curl` |
|
|
|
|
> Das Installationsscript installiert fehlende Pflicht-Abhängigkeiten automatisch.
|
|
|
|
### Optional (für E-Mail)
|
|
|
|
Mindestens **eines** der folgenden Mail-Tools muss installiert und konfiguriert sein:
|
|
|
|
| Tool | Paket | Anmerkung |
|
|
|---|---|---|
|
|
| `mail` | `mailutils` oder `bsd-mailx` | Am weitesten verbreitet |
|
|
| `msmtp` | `msmtp` + `msmtp-mta` | Leichtgewichtig, gut für Relay |
|
|
| `sendmail` | `postfix` oder `sendmail` | Vollständiger MTA |
|
|
|
|
Das Script erkennt automatisch welches Tool verfügbar ist (Reihenfolge: mail → sendmail → msmtp).
|
|
|
|
### Optional (für Geo-Location)
|
|
|
|
Die Geo-Location nutzt die kostenlose API von [ip-api.com](http://ip-api.com). Dafür ist keine Registrierung oder API-Key nötig.
|
|
|
|
**Einschränkungen:**
|
|
- Maximal 45 Anfragen pro Minute
|
|
- Nur für nicht-kommerzielle Nutzung
|
|
- Funktioniert nur mit öffentlichen IPs (lokale IPs wie 192.168.x.x liefern kein Ergebnis)
|
|
|
|
Die Geo-Location kann in der `config.conf` deaktiviert werden (`GEO_LOOKUP=false`).
|
|
|
|
## Shell-Kompatibilität
|
|
|
|
Das Script wird über `/etc/profile.d/` eingebunden und bei jedem interaktiven Login ausgeführt.
|
|
|
|
| Shell | Unterstützt | Mechanismus |
|
|
|---|---|---|
|
|
| Bash | Ja | `/etc/profile.d/` wird nativ geladen |
|
|
| Zsh (oh-my-zsh) | Ja | `/etc/zsh/zprofile` sourct `/etc/profile` auf Debian/Ubuntu |
|
|
| Sh / Dash | Ja | `/etc/profile.d/` wird nativ geladen |
|
|
| Fish | Nein | Fish sourct `/etc/profile` nicht |
|
|
|
|
> **Hinweis:** Nur SSH-Verbindungen lösen eine Benachrichtigung aus. Lokale Logins, `su`, `sudo` und nicht-interaktive Verbindungen (SCP, SFTP, Monitoring-Tools wie PRTG) werden ignoriert.
|
|
|
|
## Funktionsweise
|
|
|
|
Das Installationsscript legt eine kleine Datei in `/etc/profile.d/` ab:
|
|
|
|
```bash
|
|
# /etc/profile.d/ssh-login-notify.sh
|
|
[ -n "$SSH_CONNECTION" ] && [ -x /opt/ssh-login-notifier/ssh-login-notify.sh ] && . /opt/ssh-login-notifier/ssh-login-notify.sh
|
|
```
|
|
|
|
Diese Zeile prüft:
|
|
1. Ist `$SSH_CONNECTION` gesetzt? (Nur bei SSH-Logins der Fall)
|
|
2. Ist das Hauptscript vorhanden und ausführbar?
|
|
3. Wenn ja → Hauptscript im Hintergrund ausführen (Login wird nicht verzögert)
|