Wie können bestimmte private IP-Adressen über die SSH-Anmeldung (RSA-Schlüsselpaar) in Linux Server eingegeben werden?
/etc/ssh/sshd_config
Wie können bestimmte private IP-Adressen über die SSH-Anmeldung (RSA-Schlüsselpaar) in Linux Server eingegeben werden?
/etc/ssh/sshd_config
Antworten:
Sie können einschränken, welche Hosts eine Verbindung herstellen können, indem Sie TCP-Wrapper konfigurieren oder den Netzwerkverkehr (Firewalling) mithilfe von iptables filtern . Wenn Sie abhängig von der Client-IP-Adresse unterschiedliche Authentifizierungsmethoden verwenden möchten, konfigurieren Sie stattdessen den SSH-Dämon (Option 3).
Iptables-Regeln werden bis zur ersten Übereinstimmung nacheinander ausgewertet.
Zum Beispiel, um Datenverkehr vom Netzwerk 192.168.0.0/24 zuzulassen und andernfalls den Datenverkehr zu löschen (an Port 22). Die DROP
Regel ist nicht erforderlich, wenn Ihre iptables-Standardrichtlinie auf konfiguriert ist DROP
.
iptables -A INPUT -p tcp --dport 22 --source 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
Sie können vor der Drop-Regel weitere Regeln hinzufügen, um mehr Netzwerken / Hosts zu entsprechen. Wenn Sie viele Netzwerke oder Hostadressen haben , sollten Sie das ipset- Modul verwenden. Es gibt auch ein iprange- Modul, das die Verwendung eines beliebigen IP-Adressbereichs ermöglicht.
Iptables sind bei Neustarts nicht persistent. Sie müssen einen Mechanismus konfigurieren, um iptables beim Booten wiederherzustellen.
iptables
gilt nur für IPv4-Verkehr. Systeme, bei denen ssh IPv6-Adressen abhört, können die erforderliche Konfiguration vornehmen ip6tables
.
Sie können auch konfigurieren, welche Hosts mithilfe von TCP-Wrappern eine Verbindung herstellen können. Mit TCP-Wrappern können Sie neben IP-Adressen auch Hostnamen in Regeln verwenden.
Verweigern Sie standardmäßig alle Hosts.
/etc/hosts.deny
:
sshd : ALL
Dann liste erlaubte Hosts in hosts.allow auf. Zum Beispiel, um das Netzwerk 192.168.0.0/24 und localhost zuzulassen .
/etc/hosts.allow
:
sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]
Sie können den ssh-Daemon in sshd_config so konfigurieren, dass abhängig von der Clientadresse / dem Hostnamen unterschiedliche Authentifizierungsmethoden verwendet werden. Wenn Sie nur verhindern möchten, dass andere Hosts eine Verbindung herstellen, sollten Sie stattdessen iptables oder TCP-Wrapper verwenden.
Entfernen Sie zuerst die Standardauthentifizierungsmethoden:
PasswordAuthentication no
PubkeyAuthentication no
Fügen Sie dann nach a Match Address
am Ende der Datei die gewünschten Authentifizierungsmethoden hinzu . Das Platzieren Match
am Ende der Datei ist wichtig, da alle darauf folgenden Konfigurationszeilen bis zur nächsten Match
Zeile im bedingten Block stehen . Beispielsweise:
Match Address 127.0.0.*
PubkeyAuthentication yes
Andere Clients können weiterhin eine Verbindung herstellen, die Anmeldung schlägt jedoch fehl, da keine Authentifizierungsmethoden verfügbar sind.
Übereinstimmungsargumente und zulässige bedingte Konfigurationsoptionen sind in der Manpage sshd_config dokumentiert . Übereinstimmungsmuster sind in der Manpage ssh_config dokumentiert .
#ListenAddress ::
in /etc/ssh/sshd_config
den SSH-Server an, eingehende Daten von einem dieser Netzwerke zu akzeptieren. Ansonsten tu ListenAddress <ip address>
wo <ip address>
ist das von den NIC Ports die du haben willst erlaubt. Meine eth0
ist 192.168.3.4
daher ListenAddress 192.168.3.4
ergibt SSH nur auf Netzwerk 192.168.3.4 arbeiten , die auf eth0 ist; und eth1 eth2 eth3 wird verweigert.
Hier eine zusätzliche Konfiguration für den SSH-Daemon, um die vorherige Antwort zu erweitern:
Benutzerfilterung mit AllowUsers
Option in sshd_config
Datei hinzufügen:
AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2
Dies erlaubt johndoe und admin2 nur von 192.168.1.*
Adressen und otherid1 , otherid2 von überall.
Beschränken Sie einen ssh-Schlüssel oder einen ca-basierten Schlüssel auf eine Reihe von Adressen in der .ssh/authorized_keys
Datei des Basisverzeichnisses eines bestimmten Benutzers:
from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
In diesem Beispiel ist der öffentliche Schlüssel für Useralias nur ab angegebenen Adressen wirksam.