Dieser Artikel beschreibt, wie Sie den SSH-Zugriff auf Ihren Server sichern, indem Sie die folgenden Aktionen ausführen:
- Verhindere Anmeldeversuche für bestimmte IP-Adressen in der permissiven Konfiguration
- Zugriff für bestimmte IP-Adressen in der restriktiven Konfiguration zulassen
Zulässige Konfiguration
Die permissive Konfiguration erlaubt allen Zugriff, außer der verweigerten IP-Adresse. Sie können den Zugriff auf bestimmte IP-Adressen auf folgende Weise verweigern:
TCP-Wrapper
Nehmen Sie diese Konfiguration in der Datei /etc/hosts.deny vor indem Sie die folgende Regel hinzufügen:
# vi /etc/host.deny
Legen Sie auf eine der folgenden Arten eine Verweigerungsregel fest:
sshd: Bad_IP_address
sshd: 192.168.0.8
sshd: Bad_Segment/CIDR
sshd: 192.168.0.0/24
sshd: Bad_IP_address, Bad_IP_address
sshd: 192.168.0.3, 192.168.0.4
iptables
Diese Konfiguration befindet sich in der Konfiguration der Firewall-Regeln des Betriebssystems.
# iptables -A INPUT -s "BAD_IP" -p tcp --dport SSH_Port -j DROP
IP-Adresse blockieren :
# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j DROP
Segment blockieren :
# iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j DROP
Einschränkende Konfiguration
Diese Konfiguration erlaubt nur den Zugriff auf bestimmte IP-Adressen und verwirft anderen eingehenden Datenverkehr.
TCP-Wrapper
Verweigern Sie zunächst den gesamten eingehenden Datenverkehr zu SSH in /etc/hosts.deny Datei:
# vi /etc/hosts.deny
sshd: ALL
Erlauben Sie dann den Zugriff für vertrauenswürdige IP-Adressen:
# vi /etc/hosts.allow
sshd: Trusted_IP_address
sshd: 192.168.0.8
sshd: Trusted_Segment/CIDR
sshd: 192.168.0.0/24
sshd: Trusted_IP_address, Trusted_IP_address
sshd: 192.168.0.3, 192.168.0.4
iptables
Bei IP-Tabellen ist die Reihenfolge, in der Sie die Regeln platzieren, sehr wichtig. Aus diesem Grund müssen Sie zuerst die Zulassungsregeln und dann die Verweigerungsregel konfigurieren.
# iptables -A INPUT --source Trusted_IP -p tcp --dport SSH_PORT -j ACCEPT
Datenverkehr von einer IP akzeptieren:
# iptables -A INPUT --source 192.168.0.8 -p tcp --dport 22 -j ACCEPT
Traffic von einem Segment akzeptieren:
# iptables -A INPUT --source 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
Festlegen der Sperrregel:
iptables -A INPUT -p tcp --dport 22 -j DROP
So verbessern Sie die Änderungen
Sie können Ihre Änderungen überprüfen, indem Sie je nach restriktiver oder permissiver Konfiguration die folgenden Befehle ausführen:
# cat /etc/hosts.deny
# cat /etc/hosts.allow
# iptables -L
Hinweis: Einige Distributionen enthalten Standard-Firewall-Software, wie UFW für Debian® und das Ubuntu®-Betriebssystem und abgeleitete Versionen, Firewalld für Red Hat® Enterprise Linux® 7 und abgeleitete Versionen.
Konfiguriere ufw, um bestimmte IPs, Portnummern und Protokolle zu verweigern
Zum Sperren einer IP-Adresse an TCP-Port 22:
# ufw deny proto tcp from 192.168.0.8 to any port 22
Zum Blockieren eines Subnetzes:
# ufw deny proto tcp from 192.168.0.0/24 to any port 22
Zum Auflisten der konfigurierten Regeln:
# ufw status numbered
Konfigurieren Sie firewalld so, dass eine bestimmte IP-Adresse, Portnummer und ein bestimmtes Protokoll abgelehnt werden
Auf Firewalld können Sie eine IP-Adresse oder ein Segment sperren, aber es wird keine Art von Verbindung zugelassen:
Eine IP-Adresse blockieren:
# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.0.8' reject"
Segment blockieren:
# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.0.0/24' reject"
Aus diesem Grund können Sie vertrauenswürdige IP-Adressen auf die Whitelist setzen, um eine Verbindung zum SSH-Port herzustellen:
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.20" port protocol="tcp" port="22" accept'
Sie müssen die Firewall-Konfiguration neu laden:
# firewall-cmd --reload
Listen Sie die auf der Firewall konfigurierten Regeln auf:
# firewall-cmd --list-all