Das ist mein /etc/sysconfig/iptables
:
Es hat zwei offene Ports 80 Apache und 22 für SSH.
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Für Port 22 (SSH) möchte ich sicherstellen, dass niemand außer einer bestimmten IP-Adresse eine Verbindung zu diesem Port herstellen kann.
Beispiel IP:
1.2.3.4
Bitte ignorieren Sie jegliche Versehen / Bedenken, was passiert, wenn sich meine IP ändert und ich kein SSH mehr auf meinen Server kann.
iptables
die Inversion mit dem Bang-Operator unterstützt wird, falls Sie eine gezielte Aktion durchführen möchtenDROP
. Beispiel:iptables -I INPUT -p tcp ! -s <permittedIP> -j DROP
DROP
sind auch nicht wirklich erforderlich. Sie können einfach die Standardrichtlinie für die Firewall festlegeniptables -P INPUT DROP
und loslassen. Wahrscheinlich möchten Sie sie auch als Append ausführen, wenn Sie sie auf diese Weise ausführen, da sonst der gesamte Datenverkehr vom abgefangen wirdDROP
und niemals IhreACCEPT
Regel erreicht.iptables -I INPUT 3 -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
undiptables -I INPUT 3 -p udp -s 0.0.0.0/0 --dport 53 -j DROP
Die "3" nach INPUT bedeutet Einfügen als INPUT-Regel # 3 (vorausgesetzt, Sie fügen zwei ACCEPTS ein, andernfalls, wenn nur ein ACCEPT vorhanden ist, verwenden Sie "2" für INPUT.-I
fügt die neuen iptables-Regeln oben ein. Als solches könnten Sie Ihren Tropfen vor Ihrer Erlaubnis einsetzen. Ich schlage vor,-A
stattdessenObwohl ich die Verwendung von SSH-Schlüsseln empfehle, gebe ich Ihnen eine Erklärung.
Sie müssen IPtables nicht für das verwenden, was Sie erreichen möchten. Es gibt mehrere Möglichkeiten. Dies ist der IPtables-Weg:
[YOUR_HOME_IP]
= Ihre IP-Adresse zu Hause (ziemlich unkompliziert)[SSH_PORT]
= Der Port, auf dem Sie SSH ausführen (standardmäßig 22)Dies stellt sicher, dass sich niemand außer Ihrer IP bei SSH anmelden kann.
Es gibt einen anderen Weg, der darin besteht, dem einen oder anderen etwas hinzuzufügen
sshd_config
.Fügen Sie Folgendes hinzu:
Auf diese Weise können Sie sich
root
von Ihrer IP- Adresse aus bei SSH als Benutzer anmelden, ohne nach einem Kennwort zu fragen.Bitte beachten Sie, dass ein Cronjob mit
ist möglicherweise klug, damit Sie nicht mit SSH von Ihrem Server ausgeschlossen werden (der Cronjob setzt IPtables zurück, damit Sie wieder Zugriff erhalten). Wenn Sie noch Zugriff haben, können Sie den Cronjob entfernen und Ihre IPtables erneut einrichten.
quelle
iptables
? Irgendeine Form des Außerbandzugriffs ist die übliche Methode.knockd
ist ein anderer.at
tut das.Without-Password
Kennwortauthentifizierung nicht zulässig ist, sodass Sie stattdessen die SSH-Schlüsselauthentifizierung verwenden müssen. Es ist in der Tat eine etwas unklare Bezeichnung für diese Authentifizierungsmethode. Dies bedeutet jedoch nicht, dass Sie kein Passwort benötigen, um sich als root anzumelden. Eine sicherere Methode ist es jedoch,PermitRootLogin no
ein anderes sudo-Konto für die AnmeldungAndere Antworten werden
iptables -I
in ihren Beispielen verwendet, was häufig nicht das ist, was Sie verwenden sollten.iptables führt die erste übereinstimmende Regel aus, daher ist die Reihenfolge der Regeln sehr wichtig.
-I
ist der Befehl "Einfügen" und sollte mit einem Indexparameter verwendet werden, um anzugeben, wo in der Liste eine bestimmte Regel hingehört.-A
ist der Befehl "Anhängen", mit dem die Regel am Ende der Liste hinzugefügt wird.In einigen Distributionen (möglicherweise allen)
-I
wird die Regel durch die Verwendung eines Indexparameters zu einem Index hinzugefügt, wodurch sie zur ersten überprüften Regel wird. Wenn in diesem Szenario der letzte von Ihnen ausgeführte Befehliptables -I INPUT -s tcp 0.0.0.0/0 -j DROP
iptables ist, wird der gesamte Datenverkehr gelöscht, unabhängig davon, ob SieACCEPT
später in der Kette Regeln haben oder nicht .Hier ist ein Beispiel für das Einrichten einer Regel, die nur SSH von einer einzelnen IP aus zulässt:
Ohne Regeln starten:
Fügen Sie eine neue Regel "SSH ab 1.2.3.4 zulassen" hinzu:
#>iptables -A INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT
Blockiere SSH von allen anderen IPs:
#>iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
Jetzt sieht Ihre INPUT-Kette folgendermaßen aus:
Wenn Sie später eine zweite IP-Adresse auf die Whitelist setzen müssen, können Sie sie mit dem
-I
Parameter vor die Blacklist-Regel setzen.#>iptables -I INPUT 2 -p tcp -s 4.3.2.1 --dport 22 -j ACCEPT
Beachten Sie, dass Sie
-I INPUT 2
die neue Regel als Regel Nummer 2 hinzugefügt und die DROP-Regel an Nummer 3 angehängt haben.quelle