SSH, OpenSSH usw.
sichere, verschlüsselte Verbindungen mit UNIX
A. Absicherung step-by-step
Folgende Vorgaben sollten umgesetzt werden:
- Kein ROOT-Login von außen
- nur normaler Benutzer!
- Aber auch dieser nur mit Zertifikat!
- bei Bedarf: Zugriff auf bestimmte IP-Adressen begrenzen
1. ROOT-Zugang sperren
Grundlegendes Prinzip ist, den ROOT-Zugang per SSH von außen zu blockieren. Nachstehend wird die Vorgehensweise für debian behandelt, wo ein ROOT-Konto grundsätzlich existiert und per su - jederzeit aufgerufen werden kann (Thema SUDO wird also nicht behandelt):
2. Anmeldung mit Zertifikaten ermöglichen
Die Anmeldung mit Zertifikat ist zu empfehlen... Auch wenn künftig eine Umstellung auf Teleportiert angestrebt wird, ist grundlegende Sicherheit nur über Zertifikate auch vorübergehend wichtig...
Dafür sind insgesamt folgende Schritte notwendig:
4. Zugriff auf bestimmte Adressen begrenzen
Der Zugriff kann über die hosts gesteuert werden (deny|allow)
Grundlegendes Prinzip ist, den ROOT-Zugang per SSH von außen zu blockieren. Nachstehend wird die Vorgehensweise für debian behandelt, wo ein ROOT-Konto grundsätzlich existiert und per su - jederzeit aufgerufen werden kann (Thema SUDO wird also nicht behandelt):
# Benutzer hinzufügen und ihm Möglichkeit der Anmeldung einräumen
adduser [myusername]
# dann Passwörter etc. auch eingeben
----
# Datei "/etc/ssh/sshd_config" bearbeiten:
nano /etc/ssh/sshd_config
# => darin muss folgende Zeile enthalten sein:
PermitRootLogin no
# Server neu starten
systemctl reload sshd
adduser [myusername]
# dann Passwörter etc. auch eingeben
----
# Datei "/etc/ssh/sshd_config" bearbeiten:
nano /etc/ssh/sshd_config
# => darin muss folgende Zeile enthalten sein:
PermitRootLogin no
# Server neu starten
systemctl reload sshd
2. Anmeldung mit Zertifikaten ermöglichen
Die Anmeldung mit Zertifikat ist zu empfehlen... Auch wenn künftig eine Umstellung auf Teleportiert angestrebt wird, ist grundlegende Sicherheit nur über Zertifikate auch vorübergehend wichtig...
Dafür sind insgesamt folgende Schritte notwendig:
a. Einfache Variante (nicht immer möglich)
b. Ältere, meist aber zuverlässigere Variante
Jetzt funktioniert der login folgendermaßen:
ssh username@ip-des-anderen-rechners
3. Anmeldung mit Passwort verhindern# auf dem Client-Rechner (Linux oder Mac)
ssh-keygen
# für höchste Sicherheit auch Passphrase angeben / für komfortable bzw. für Zugriff über Skripte ohne
# Schlüssel auf Server kopieren:
ssh-copy-id [-i pfad/id_rsa.pub] user@server
ssh-keygen
# für höchste Sicherheit auch Passphrase angeben / für komfortable bzw. für Zugriff über Skripte ohne
# Schlüssel auf Server kopieren:
ssh-copy-id [-i pfad/id_rsa.pub] user@server
b. Ältere, meist aber zuverlässigere Variante
# Schlüssel generieren - wie oben (einfache Variante):
ssh-keygen
# (kein Passwort bei Nachfrage eingeben, wenn remote-Zugriff erwünscht)
# komplexere Variante
ssh-keygen -t dsa -b 1024 -f /pfad/dateiname-schlüssel
# über Fernzugriff Schlüssel auf dem zweiten Rechner installieren
ssh name-des-benutzers-auf-dem-entfernten-rechner@ip-des-anderen-rechners mkdir -p .ssh
#... password:
#(hier pwd eingeben, weil dies Login ist)
# dann geht es weiter:
cat /pfad/dateiname-schlüssel.pub | ssh name-des-benutzers-auf-dem-entfernten-rechner@ip-des-anderen-rechners 'cat >> .ssh/authorized_keys'
#... password:##
# (letztes mal pwd eingeben)
ssh-keygen
# (kein Passwort bei Nachfrage eingeben, wenn remote-Zugriff erwünscht)
# komplexere Variante
ssh-keygen -t dsa -b 1024 -f /pfad/dateiname-schlüssel
# über Fernzugriff Schlüssel auf dem zweiten Rechner installieren
ssh name-des-benutzers-auf-dem-entfernten-rechner@ip-des-anderen-rechners mkdir -p .ssh
#... password:
#(hier pwd eingeben, weil dies Login ist)
# dann geht es weiter:
cat /pfad/dateiname-schlüssel.pub | ssh name-des-benutzers-auf-dem-entfernten-rechner@ip-des-anderen-rechners 'cat >> .ssh/authorized_keys'
#... password:##
# (letztes mal pwd eingeben)
Jetzt funktioniert der login folgendermaßen:
ssh username@ip-des-anderen-rechners
# Datei "/etc/ssh/sshd_config" bearbeiten:
nano /etc/ssh/sshd_config
# => darin muss folgende Zeile enthalten sein:
PasswordAuthentication no
ChallengeResponseAuthentication no
# Server neu starten
systemctl reload sshd
nano /etc/ssh/sshd_config
# => darin muss folgende Zeile enthalten sein:
PasswordAuthentication no
ChallengeResponseAuthentication no
# Server neu starten
systemctl reload sshd
4. Zugriff auf bestimmte Adressen begrenzen
Der Zugriff kann über die hosts gesteuert werden (deny|allow)
touch /etc/hosts.{allow,deny}
nano /etc/hosts.deny
# eingeben:
sshd: ALL
-
nano /etc/hosts.allow
sshd: 10.111.0.2
nano /etc/hosts.deny
# eingeben:
sshd: ALL
-
nano /etc/hosts.allow
sshd: 10.111.0.2
Achtung! Da im RasPI die o. g. Beschreibung nicht funktionierte, hier einige Hinweise aus der Beschreibung bei Thomas Krenn:
ssh-keygen -b 4096
ssh-copy-id -i .ssh/key_rsa.pub user@IP-to-my-Machine
Auf dieser Seite sind keine Kommentare vorhanden