Initial Commit
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
# Konfiguration
|
||||
|
||||
Die Konfigurationsdatei befindet sich unter:
|
||||
|
||||
```
|
||||
/opt/ssh-login-notifier/config.conf
|
||||
```
|
||||
|
||||
Nach der Installation kann sie jederzeit bearbeitet werden:
|
||||
|
||||
```bash
|
||||
sudo nano /opt/ssh-login-notifier/config.conf
|
||||
```
|
||||
|
||||
Änderungen werden **sofort** beim nächsten SSH-Login wirksam — kein Neustart nötig.
|
||||
|
||||
## Benachrichtigungsmethoden
|
||||
|
||||
| Schlüssel | Werte | Beschreibung |
|
||||
|---|---|---|
|
||||
| `NOTIFICATION_METHODS` | `email`, `ntfy`, `email,ntfy` | Kommasepariert für mehrere Methoden |
|
||||
|
||||
## E-Mail Einstellungen
|
||||
|
||||
| Schlüssel | Beschreibung | Beispiel |
|
||||
|---|---|---|
|
||||
| `EMAIL_RECIPIENT` | Empfänger-Adresse | `admin@example.com` |
|
||||
| `EMAIL_FROM` | Absender-Adresse | `noreply@example.com` |
|
||||
| `EMAIL_SUBJECT_PREFIX` | Betreff-Prefix (Hostname wird angehängt) | `SSH Login` |
|
||||
|
||||
> Voraussetzung: Ein funktionierender Mail-Versand auf dem System (siehe [Voraussetzungen](prerequisites.md)).
|
||||
|
||||
## ntfy Einstellungen
|
||||
|
||||
| Schlüssel | Beschreibung | Beispiel |
|
||||
|---|---|---|
|
||||
| `NTFY_SERVER` | Server-URL (ohne `/` am Ende) | `https://ntfy.example.com` |
|
||||
| `NTFY_TOPIC` | Topic-Name | `ssh-login` |
|
||||
| `NTFY_PRIORITY` | Priorität (1–5) | `3` |
|
||||
| `NTFY_TAGS` | Emoji-Tags, kommasepariert | `warning,computer` |
|
||||
| `NTFY_AUTH_TOKEN` | Bearer-Token (leer = keine Auth) | `tk_abc123` |
|
||||
|
||||
### ntfy Prioritäten
|
||||
|
||||
| Wert | Bedeutung |
|
||||
|---|---|
|
||||
| `1` | Minimum |
|
||||
| `2` | Niedrig |
|
||||
| `3` | Standard |
|
||||
| `4` | Hoch |
|
||||
| `5` | Maximum (dringend) |
|
||||
|
||||
## Erweiterte Einstellungen
|
||||
|
||||
| Schlüssel | Werte | Beschreibung |
|
||||
|---|---|---|
|
||||
| `GEO_LOOKUP` | `true` / `false` | IP-Standort über ip-api.com abfragen |
|
||||
|
||||
## Beispielkonfigurationen
|
||||
|
||||
### Nur ntfy (einfachste Variante)
|
||||
|
||||
```conf
|
||||
NOTIFICATION_METHODS=ntfy
|
||||
NTFY_SERVER=https://ntfy.example.com
|
||||
NTFY_TOPIC=ssh-alerts
|
||||
NTFY_PRIORITY=4
|
||||
NTFY_TAGS=warning,skull
|
||||
NTFY_AUTH_TOKEN=tk_dein_token
|
||||
GEO_LOOKUP=true
|
||||
```
|
||||
|
||||
### Nur E-Mail
|
||||
|
||||
```conf
|
||||
NOTIFICATION_METHODS=email
|
||||
EMAIL_RECIPIENT=admin@example.com
|
||||
EMAIL_FROM=server@example.com
|
||||
EMAIL_SUBJECT_PREFIX=SSH Login
|
||||
GEO_LOOKUP=true
|
||||
```
|
||||
|
||||
### Beides kombiniert
|
||||
|
||||
```conf
|
||||
NOTIFICATION_METHODS=email,ntfy
|
||||
EMAIL_RECIPIENT=admin@example.com
|
||||
EMAIL_FROM=server@example.com
|
||||
EMAIL_SUBJECT_PREFIX=SSH Login
|
||||
NTFY_SERVER=https://ntfy.example.com
|
||||
NTFY_TOPIC=ssh-alerts
|
||||
NTFY_PRIORITY=3
|
||||
NTFY_TAGS=warning,computer
|
||||
NTFY_AUTH_TOKEN=
|
||||
GEO_LOOKUP=false
|
||||
```
|
||||
@@ -0,0 +1,69 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user