SQL erweitert, neu: ansible, Linux umd passwd und shadows erweitert
This commit is contained in:
+488
-2
@@ -346,7 +346,7 @@ Diese Variante ist oft einfacher und ebenso effizient.
|
||||
|
||||
**MIB wird nicht geladen**
|
||||
|
||||
- MIB liegt nicht in einem durchsuchten Verzeichnis. Prüfen mit `net-snmp-config --default-mibdirs`; übliche Pfade sind `~/.snmp/mibs`, `/usr/share/snmp/mibs`.
|
||||
- MIB liegt nicht in einem durchsuchten Verzeichnis. Prüfen mit `net-snmp-config --default-mibdirs`; übliche Pfade sind `~/.snmp/mibs`, <mark>`/usr/share/snmp/mibs</mark>`.
|
||||
- MIB nicht per `-m` oder Konfiguration aktiviert. Test: `snmpwalk -m ALL ...` oder in `~/.snmp/snmp.conf` bzw. `/etc/snmp/snmp.conf`: `mibs +MEIN-MIB`.
|
||||
- net-snmp lädt standardmäßig nur ein Minimalset. `mibs :` deaktiviert alles.
|
||||
|
||||
@@ -529,4 +529,490 @@ openssl req -new -days 1095 -key dlsea3tim01.server.key -out dlsea3tim01.server.
|
||||
|
||||
##### Zertifikatsrequest ansehen
|
||||
|
||||
openssl req -text -in dlsea3tim01.server.csr|less
|
||||
openssl req -text -in dlsea3tim01.server.csr|less
|
||||
|
||||
|
||||
|
||||
Bei Apache/mod_ssl ist der Unterschied:
|
||||
|
||||
- **`SSLCertificateFile`** → enthält das **öffentliche Zertifikat** des Servers. Darin stecken u. a. der öffentliche Schlüssel, Domainname und die Signatur der CA. Dieses Zertifikat wird beim TLS-Handshake an den Client geschickt.
|
||||
- **`SSLCertificateKeyFile`** → enthält den dazugehörigen **privaten Schlüssel**. Er bleibt ausschließlich auf dem Server und darf **niemals veröffentlicht** werden.
|
||||
|
||||
# SCP
|
||||
|
||||
```bash
|
||||
scp [Optionen] [Quelle] [Ziel]
|
||||
```
|
||||
|
||||
### Optionen
|
||||
|
||||
Dies sind optionale Flags, die das Verhalten des SCP-Befehls verändern. Sie können verschiedene Optionen verwenden, um den Übertragungsprozess individuell zu gestalten. Hier sind einige gängige Optionen:
|
||||
|
||||
**-r:** Kopiert Verzeichnisse und deren Inhalte rekursiv.
|
||||
**-p:** Behält die Berechtigungen, Zeitstempel und Modi der Originaldatei bei.
|
||||
–**P**: Gibt die Portnummer für die SSH-Verbindung an.
|
||||
–**i**: Gibt die private Schlüsseldatei für die SSH-Authentifizierung an.
|
||||
**-C:** Verwenden Sie die Komprimierung, um die Datenübertragung zu beschleunigen.
|
||||
**-l:** Begrenzen Sie die für die Übertragung verwendete Bandbreite (in Kbit/s).
|
||||
**-v:** Ausführlicher Modus – zeigt Debugging-Meldungen während der Übertragung an.
|
||||
**-o:** Übergibt eine Option an den SSH-Client. Sie kann verwendet werden, um die strenge Prüfung des Hostschlüssels zu deaktivieren.
|
||||
|
||||
|
||||
|
||||
# Linux: `/etc/passwd` und `/etc/shadow`
|
||||
|
||||
Unter Linux werden Benutzerinformationen hauptsächlich in den Dateien `/etc/passwd` und `/etc/shadow` gespeichert.
|
||||
|
||||
- `/etc/passwd` enthält allgemeine Informationen über Benutzerkonten.
|
||||
|
||||
- `/etc/shadow` enthält sensible Informationen zur Passwort- und Accountverwaltung.
|
||||
|
||||
---
|
||||
|
||||
## 1. `/etc/passwd`
|
||||
|
||||
Die Datei `/etc/passwd` enthält pro Benutzer eine Zeile.
|
||||
|
||||
### Beispiel
|
||||
|
||||
```text
|
||||
max:x:1001:1001:Max Mustermann:/home/max:/bin/bash
|
||||
```
|
||||
|
||||
Die einzelnen Felder werden durch einen Doppelpunkt (`:`) getrennt.
|
||||
|
||||
```text
|
||||
max:x:1001:1001:Max Mustermann:/home/max:/bin/bash
|
||||
|
||||
│ │ │ │ │ │ │
|
||||
|
||||
│ │ │ │ │ │ └─ Login-Shell
|
||||
|
||||
│ │ │ │ │ └─ Home-Verzeichnis
|
||||
|
||||
│ │ │ │ └─ Kommentar / GECOS
|
||||
|
||||
│ │ │ └─ primäre GID
|
||||
|
||||
│ │ └─ UID
|
||||
|
||||
│ └─ Passwort-Platzhalter
|
||||
|
||||
└─ Benutzername
|
||||
```
|
||||
|
||||
### Aufbau
|
||||
|
||||
| Feld | Beispiel | Bedeutung |
|
||||
|
||||
|---|---|---|
|
||||
|
||||
| 1 | `max` | Benutzername |
|
||||
|
||||
| 2 | `x` | Passwort-Platzhalter |
|
||||
|
||||
| 3 | `1001` | UID – User ID |
|
||||
|
||||
| 4 | `1001` | GID – primäre Group ID |
|
||||
|
||||
| 5 | `Max Mustermann` | Kommentar / GECOS |
|
||||
|
||||
| 6 | `/home/max` | Home-Verzeichnis |
|
||||
|
||||
| 7 | `/bin/bash` | Login-Shell |
|
||||
|
||||
### Feld 1 – Benutzername
|
||||
|
||||
```text
|
||||
max
|
||||
```
|
||||
|
||||
Der eindeutige Name, unter dem der Benutzer im System bekannt ist.
|
||||
|
||||
---
|
||||
|
||||
### Feld 2 – Passwort-Platzhalter
|
||||
|
||||
```text
|
||||
x
|
||||
```
|
||||
|
||||
Das `x` bedeutet, dass sich die eigentlichen Passwortinformationen in `/etc/shadow` befinden.
|
||||
|
||||
Historisch konnten Passwort-Hashes direkt in `/etc/passwd` gespeichert werden. Das wäre heute problematisch, da `/etc/passwd` normalerweise für alle Benutzer lesbar sein muss.
|
||||
|
||||
---
|
||||
|
||||
### Feld 3 – UID
|
||||
|
||||
```text
|
||||
1001
|
||||
```
|
||||
|
||||
Die **UID (User ID)** ist die numerische Kennung des Benutzers.
|
||||
|
||||
Linux arbeitet intern an vielen Stellen mit der UID und nicht mit dem Benutzernamen.
|
||||
|
||||
Beispielsweise besitzt `root` normalerweise die UID:
|
||||
|
||||
```text
|
||||
0
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Feld 4 – GID
|
||||
|
||||
```text
|
||||
1001
|
||||
```
|
||||
|
||||
Die **GID (Group ID)** gibt die primäre Gruppe des Benutzers an.
|
||||
|
||||
Weitere Gruppenzugehörigkeiten werden normalerweise über `/etc/group` bzw. entsprechende Benutzerverwaltungsdienste bestimmt.
|
||||
|
||||
---
|
||||
|
||||
### Feld 5 – GECOS / Kommentar
|
||||
|
||||
```text
|
||||
Max Mustermann
|
||||
```
|
||||
|
||||
Dieses Feld kann zusätzliche Informationen über den Benutzer enthalten, beispielsweise:
|
||||
|
||||
- vollständiger Name
|
||||
|
||||
- Raumnummer
|
||||
|
||||
- Telefonnummer
|
||||
|
||||
- sonstige Informationen
|
||||
|
||||
---
|
||||
|
||||
### Feld 6 – Home-Verzeichnis
|
||||
|
||||
```text
|
||||
/home/max
|
||||
```
|
||||
|
||||
Das Home-Verzeichnis des Benutzers.
|
||||
|
||||
Nach einem normalen Login befindet sich der Benutzer üblicherweise in diesem Verzeichnis.
|
||||
|
||||
---
|
||||
|
||||
### Feld 7 – Login-Shell
|
||||
|
||||
```text
|
||||
/bin/bash
|
||||
```
|
||||
|
||||
Die Shell, die nach einem Login gestartet werden soll.
|
||||
|
||||
Beispiele:
|
||||
|
||||
```text
|
||||
/bin/bash
|
||||
|
||||
/bin/sh
|
||||
|
||||
/bin/zsh
|
||||
```
|
||||
|
||||
Bei Systemkonten findet man häufig auch:
|
||||
|
||||
```text
|
||||
/usr/sbin/nologin
|
||||
```
|
||||
|
||||
oder:
|
||||
|
||||
```text
|
||||
/bin/false
|
||||
```
|
||||
|
||||
Damit soll normalerweise ein interaktiver Login verhindert werden.
|
||||
|
||||
---
|
||||
|
||||
# 2. `/etc/shadow`
|
||||
|
||||
Die Datei `/etc/shadow` enthält die sensiblen Passwort- und Ablaufinformationen eines Benutzers.
|
||||
|
||||
Sie ist deshalb im Gegensatz zu `/etc/passwd` normalerweise nur für `root` bzw. entsprechend privilegierte Prozesse lesbar.
|
||||
|
||||
### Beispiel
|
||||
|
||||
```text
|
||||
max:$6$...:20680:0:99999:7:::
|
||||
```
|
||||
|
||||
Eine Zeile besteht aus **9 Feldern**:
|
||||
|
||||
```text
|
||||
max:$6$...:20680:0:99999:7:::
|
||||
|
||||
│ │ │ │ │ │ │ │ │
|
||||
|
||||
│ │ │ │ │ │ │ │ └─ reserviert
|
||||
|
||||
│ │ │ │ │ │ │ └─ Account-Ablauf
|
||||
|
||||
│ │ │ │ │ │ └─ Inaktivität
|
||||
|
||||
│ │ │ │ │ └─ Warnzeit
|
||||
|
||||
│ │ │ │ └─ maximales Passwortalter
|
||||
|
||||
│ │ │ └─ minimales Passwortalter
|
||||
|
||||
│ │ └─ letzte Passwortänderung
|
||||
|
||||
│ └─ Passwort-Hash / Passwortstatus
|
||||
|
||||
└─ Benutzername
|
||||
```
|
||||
|
||||
## Aufbau
|
||||
|
||||
| Feld | Bedeutung |
|
||||
|
||||
|---|---|
|
||||
|
||||
| 1 | Benutzername |
|
||||
|
||||
| 2 | Passwort-Hash / Passwortstatus |
|
||||
|
||||
| 3 | Letzte Passwortänderung |
|
||||
|
||||
| 4 | Minimales Passwortalter |
|
||||
|
||||
| 5 | Maximales Passwortalter |
|
||||
|
||||
| 6 | Warnzeit vor Passwortablauf |
|
||||
|
||||
| 7 | Inaktivitätszeit |
|
||||
|
||||
| 8 | Ablaufdatum des Accounts |
|
||||
|
||||
| 9 | Reserviert |
|
||||
|
||||
---
|
||||
|
||||
## 3. Benutzername
|
||||
|
||||
Das erste Feld muss zum entsprechenden Benutzerkonto passen.
|
||||
|
||||
Beispiel:
|
||||
|
||||
```text
|
||||
max
|
||||
```
|
||||
|
||||
Damit können die Informationen aus `/etc/passwd` und `/etc/shadow` demselben Benutzer zugeordnet werden.
|
||||
|
||||
---
|
||||
|
||||
## 4. Passwort-Hash / Passwortstatus
|
||||
|
||||
Das zweite Feld ist besonders wichtig.
|
||||
|
||||
Ein Eintrag könnte beispielsweise folgendermaßen aussehen:
|
||||
|
||||
```text
|
||||
$6$salt$hash
|
||||
```
|
||||
|
||||
Dabei steht `$6$` bei klassischen `crypt`-Passwörtern für **SHA-512**.
|
||||
|
||||
Auf modernen Linux-Systemen können auch andere Verfahren eingesetzt werden, beispielsweise **yescrypt**, das häufig an einem Präfix wie `$y$` erkennbar ist.
|
||||
|
||||
Das Passwort selbst wird nicht gespeichert. Stattdessen wird ein daraus berechneter Hash gespeichert.
|
||||
|
||||
---
|
||||
|
||||
## 5. Besondere Werte im Passwortfeld
|
||||
|
||||
Das zweite Feld kann auch Werte enthalten, die keinen gültigen Passwort-Hash darstellen.
|
||||
|
||||
### Übersicht
|
||||
|
||||
| Eintrag | Typische Bedeutung |
|
||||
|
||||
|---|---|
|
||||
|
||||
| `$6$...` | Passwort-Hash, z. B. SHA-512 |
|
||||
|
||||
| `$y$...` | Passwort-Hash, z. B. yescrypt |
|
||||
|
||||
| `!$6$...` | Passwort gesperrt, ursprünglicher Hash noch vorhanden |
|
||||
|
||||
| `!!` | Kein verwendbares Passwort gesetzt / Passwort-Login gesperrt |
|
||||
|
||||
| `*` | Passwort-Authentifizierung nicht möglich |
|
||||
|
||||
| leer | Potenziell kein Passwort erforderlich – sicherheitskritisch |
|
||||
|
||||
---
|
||||
|
||||
# 6. Was bedeutet `!!`?
|
||||
|
||||
Beispiel:
|
||||
|
||||
```text
|
||||
max:!!:20680:0:99999:7:::
|
||||
```
|
||||
|
||||
Hier steht im zweiten Feld:
|
||||
|
||||
```text
|
||||
!!
|
||||
```
|
||||
|
||||
`!!` ist **kein gültiger Passwort-Hash**.
|
||||
|
||||
Es bedeutet typischerweise:
|
||||
|
||||
> Für diesen Benutzer ist kein verwendbares lokales Passwort gesetzt. Eine Authentifizierung über dieses Passwortfeld ist daher nicht möglich.
|
||||
|
||||
Das sieht man beispielsweise bei neu angelegten oder bewusst für Passwort-Logins gesperrten Accounts.
|
||||
|
||||
Wichtig ist dabei:
|
||||
|
||||
**Ein gesperrtes Passwort ist nicht automatisch dasselbe wie ein vollständig gesperrter Benutzeraccount.**
|
||||
|
||||
Abhängig von der Systemkonfiguration könnten andere Authentifizierungsverfahren weiterhin funktionieren, beispielsweise:
|
||||
|
||||
- SSH Public Keys
|
||||
|
||||
- Kerberos
|
||||
|
||||
- LDAP / zentrale Authentifizierung
|
||||
|
||||
- SSO
|
||||
|
||||
- andere PAM-basierte Verfahren
|
||||
|
||||
Vereinfacht:
|
||||
|
||||
```text
|
||||
max:!!:20680:0:99999:7:::
|
||||
|
||||
^^
|
||||
|
||||
│
|
||||
|
||||
└── kein gültiger Passwort-Hash
|
||||
|
||||
→ lokale Passwortauthentifizierung nicht möglich
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 7. Passwortalter und Ablauf
|
||||
|
||||
Die restlichen Felder von `/etc/shadow` steuern unter anderem die Gültigkeitsdauer eines Passworts.
|
||||
|
||||
Beispiel:
|
||||
|
||||
```text
|
||||
max:$6$...:20680:0:99999:7:::
|
||||
```
|
||||
|
||||
Hier bedeuten die Werte:
|
||||
|
||||
```text
|
||||
20680 : 0 : 99999 : 7
|
||||
|
||||
│ │ │ │
|
||||
|
||||
│ │ │ └─ Warnung vor Ablauf
|
||||
|
||||
│ │ └─ maximales Passwortalter
|
||||
|
||||
│ └─ minimales Passwortalter
|
||||
|
||||
└─ letzte Passwortänderung
|
||||
```
|
||||
|
||||
Die Datumswerte werden grundsätzlich als Anzahl der **Tage seit dem 01.01.1970** angegeben.
|
||||
|
||||
---
|
||||
|
||||
# 8. Warum gibt es zwei Dateien?
|
||||
|
||||
Der Grund für die Trennung ist hauptsächlich die Sicherheit.
|
||||
|
||||
`/etc/passwd` muss von vielen Programmen gelesen werden können.
|
||||
|
||||
Beispielsweise müssen Programme herausfinden können:
|
||||
|
||||
```text
|
||||
UID 1001 → Benutzer max
|
||||
```
|
||||
|
||||
Daher ist `/etc/passwd` normalerweise für alle Benutzer lesbar.
|
||||
|
||||
Passwort-Hashes sollen dagegen geschützt werden.
|
||||
|
||||
Deshalb wurden sie in die stärker geschützte Datei `/etc/shadow` ausgelagert.
|
||||
|
||||
---
|
||||
|
||||
# 9. Zusammenhang von `/etc/passwd` und `/etc/shadow`
|
||||
|
||||
Für denselben Benutzer könnten die Einträge beispielsweise so aussehen:
|
||||
|
||||
### `/etc/passwd`
|
||||
|
||||
```text
|
||||
max:x:1001:1001:Max Mustermann:/home/max:/bin/bash
|
||||
```
|
||||
|
||||
### `/etc/shadow`
|
||||
|
||||
```text
|
||||
max:!!:20680:0:99999:7:::
|
||||
```
|
||||
|
||||
Beide Einträge gehören über den Benutzernamen `max` zusammen.
|
||||
|
||||
Zusammengefasst:
|
||||
|
||||
```text
|
||||
/etc/passwd
|
||||
|
||||
│
|
||||
|
||||
├── Benutzername
|
||||
|
||||
├── UID
|
||||
|
||||
├── GID
|
||||
|
||||
├── Home-Verzeichnis
|
||||
|
||||
└── Login-Shell
|
||||
|
||||
|
||||
|
||||
/etc/shadow
|
||||
|
||||
│
|
||||
|
||||
├── Benutzername
|
||||
|
||||
├── Passwort-Hash / Passwortstatus
|
||||
|
||||
├── Passwortalter
|
||||
|
||||
├── Warnzeit
|
||||
|
||||
└── Account-Ablauf
|
||||
```
|
||||
|
||||
## Merksatz
|
||||
|
||||
> **`/etc/passwd` beschreibt den Benutzer, `/etc/shadow` beschreibt vor allem seinen Passwort- und Ablaufstatus.**
|
||||
Reference in New Issue
Block a user