Wie Port-Knocking unter Linux (und Warum Sollten Sie nicht)

0
642
Photographee.eu/Shutterstock

Port knocking ist eine Möglichkeit, um einen server durch schließen von ports in der firewall—auch diejenigen, die Sie wissen, wird verwendet werden. Diese ports sind offen, auf verlangen, wenn—und nur wenn—die Verbindungsanforderung enthält die geheime klopfen.

Port Knocking Ist ein “Geheimes Klopfen”

In den 1920er Jahren, als das Verbot in vollem Gange war, wollte man in ein speakeasy, Sie mussten wissen, das Geheimnis, klopfen und Tippen Sie es richtig, um im inneren.

Port knocking ist ein modernes äquivalent. Wenn Sie wollen, dass Menschen Zugang zu Diensten auf Ihrem computer, aber nicht wollen, öffnen Sie Ihre firewall zum internet, können Sie mit port-knocking. Es ermöglicht das schließen der ports auf der firewall, die eingehende verbindungen erlauben und Sie öffnen sich automatisch, wenn einem vorher vereinbarten Muster der Verbindungsversuche gemacht wird. Die Reihenfolge der Verbindungsversuche an, die dient als das geheime klopfen. Ein Geheimnis, das klopfen schließt den Hafen.

Port knocking ist so etwas wie eine Neuheit, aber es ist wichtig zu wissen, dass es ein Beispiel von security through obscurity, und das Konzept ist grundlegend falsch. Das Geheimnis, wie man Zugriff auf ein system ist sicher, weil nur diejenigen, die in einer bestimmten Gruppe kennen. Aber sobald das Geheimnis gelüftet—entweder, weil es offenbart, beobachtet, gedacht, gearbeitet oder aus—Ihre Sicherheit ist nichtig. Du bist besser dran, die Sicherung Ihrer server in einem anderen, stärkeren Weise, wie das erfordern-key-basierte logins für einen SSH-server.

Die robuste Ansätze zur Cyber-Sicherheit sind vielschichtig, so, vielleicht ist port knocking sollte einer dieser Ebenen. Je mehr Schichten, desto besser, richtig? Allerdings könnte man argumentieren, dass port-knocking nicht viel hinzuzufügen (wenn überhaupt) an eine ordnungsgemäß gehärtet, Sicheres system.

Cybersecurity ist ein riesiges und kompliziertes Thema, aber Sie sollten nicht verwenden Sie die port-knocking als Ihre einzige form der Verteidigung.

RELATED: Wie zum Erstellen und Installieren von SSH-Schlüsseln Aus der Linux-Shell

Knockd installieren

Um zu demonstrieren, port-knocking, wir werden es verwenden, um den control-port 22, der SSH-port. Wir verwenden ein tool namens knockd. Die Verwendung von apt-get zu installieren Sie dieses Paket auf Ihrem system, wenn Sie Ubuntu oder eine andere Debian-basierte distribution. Auf anderen Linux-Distributionen, verwenden Sie Ihre Linux-distribution Paket-management-Werkzeug, statt.

Geben Sie den folgenden:

sudo apt-get install knockd

Sie haben wahrscheinlich schon die iptables-firewall auf Ihrem system installiert haben, aber müssen Sie möglicherweise installieren Sie die iptables-persistent-Paket. Es behandelt das automatische laden von gespeicherten iptable Regeln.

Geben Sie den folgenden, um es zu installieren:

sudo apt-get install iptables-persistent

Wenn die IPV4-Konfiguration Bildschirm erscheint, drücken Sie die Leertaste, um zu akzeptieren Sie die option “ja”.

Drücken Sie die Leertaste wieder in die IPv6-Konfiguration Bildschirm zu akzeptieren Sie die option “ja” und bewegen auf.

Das folgende Kommando iptables zu ermöglichen, etablierte und fortlaufende verbindungen weiter. Wir werden jetzt einen anderen Befehl zum schließen der SSH-port.

Wenn jemand verbunden ist, indem Sie SSH, wenn wir diesen Befehl ausgeben, die wir nicht wollen, dass Sie abgeschnitten werden:

sudo iptables -A INPUT-m conntrack –ctstate ESTABLISHED,RELATED-j ACCEPT

Dieser Befehl fügt eine Regel auf der firewall, die besagt, dass:

  • -A: fügen Sie die Regel auf der firewall-Regeln zu Tisch. Das ist, fügen Sie es auf den Boden.
  • INPUT: Dies ist in der Regel über die eingehende verbindungen.
  • -m conntrack: Firewall-Regeln handeln bei Netzwerk Datenverkehr (Pakete), die mit den Kriterien übereinstimmen, die in der Regel. Der parameter-m bewirkt, dass iptables zu verwenden extra packet matching-Module—in diesem Fall, den man rief conntrack arbeitet mit der Netzwerk-Verbindung-tracking-Funktionen des Kernels.
  • –cstate ETABLIERT,BEZUG: Diese gibt den Typ der Verbindung, auf die die Regel gelten soll, nämlich ETABLIERT und VERWANDTE verbindungen. Eine Verbindung ist eine, die bereits im Gange ist. Eine Verwandte Verbindung ist eine, die durch eine Aktion aus einer etablierten Verbindung. Vielleicht jemand, der verbunden ist, will eine Datei herunterladen; das kann geschehen über eine neue Verbindung initiiert durch den Gastgeber.
  • -j ACCEPT: Wenn der traffic, der Regel entspricht, springe zu AKZEPTIEREN, den Gegner in der firewall. In anderen Worten, der Verkehr ist akzeptiert und darf die firewall passieren.

Jetzt können wir den Befehl, um den port schließen:

sudo iptables -A INPUT-p tcp –dport 22 -j REJECT

Dieser Befehl fügt eine Regel auf der firewall, die besagt, dass:

  • -A: fügen Sie die Regel auf der firewall-Regeln Tisch, D. H., fügen Sie es auf den Boden.
  • INPUT: Diese Regel ist über eingehende verbindungen.
  • -p tcp: die Regel gilt für Datenverkehr, der nutzt das Transmission Control Protocol.
  • –dport 22: Diese Regel gilt insbesondere für den TCP-Datenverkehr, die Ziele port 22 (SSH-port).
  • -j REJECT: Wenn der Verkehr mit der Regel, springen, um die REJECT-target in der firewall. Also, wenn der Verkehr ist abgelehnt, es ist nicht erlaubt durch die firewall.

Wir müssen starten Sie den netfilter-persistent daemon. Wir können dies mit diesem Befehl tun:

sudo systemctl start netfilter-persistent

Wir wollen netfilter-persistent zu speichern und reload-Zyklus, so dass es lädt und steuert die iptable Regeln.

Geben Sie die folgenden Befehle:

sudo netfilter-persistent speichern

sudo netfilter-persistent reload

Sie haben nun installiert die Dienstprogramme, und der SSH port geschlossen ist (hoffentlich, ohne dass dadurch jemand die Verbindung). Jetzt ist es Zeit, zu konfigurieren, das Geheimnis zu klopfen.

Konfiguration von knockd

Es gibt zwei Dateien, die Sie Bearbeiten, konfigurieren knockd. Die erste ist die folgende knockd-Konfiguration-Datei:

sudo gedit /etc/knockd.conf

Der gedit-editor öffnet sich mit dem knockd Konfigurationsdatei geladen.

Wir werden diese Datei Bearbeiten, um unsere Bedürfnisse. Die Abschnitte, die wir interessiert sind “openSSH” und “closeSSH.” Die folgenden vier Einträge sind in jedem Abschnitt:

  • Reihenfolge: Die Reihenfolge der Anschlüsse muss jemand Zugang zu öffnen oder zu schließen-port 22. Die Standard-ports 7000, 8000 und 9000, um es zu öffnen, – und 9000, 8000, 7000, um es zu schließen. Sie können diese ändern oder weitere hinzufügen-ports auf der Liste. Für unsere Zwecke, wir ‘ ll stick mit den Standardeinstellungen.
  • seq_timeout: Der Zeitraum, innerhalb dessen jemand hat, um auf die ports zugreifen, um es zu lösen, zu öffnen oder zu schließen.
  • Befehl: Der Befehl gesendet werden, um die iptables-firewall, wenn das öffnen oder schließen Aktion ausgelöst wird. Diese Befehle entweder fügen Sie eine Regel auf der firewall den port zu öffnen), oder nehmen Sie es aus (auf den port schließen).
  • tcpflags: Der Typ des packet-jeder port muss in die richtige Reihenfolge. Ein SYN (synchronize) Paket ist die erste in einer TCP-Verbindungsanforderung, eine sogenannte drei-Wege-handshake.

Die “openSSH” – Abschnitt kann gelesen werden als “eine TCP-Verbindungsanforderung gestellt werden muss, um die ports 7000, 8000 und 9000—in dieser Reihenfolge und innerhalb von 5 Sekunden—für den Befehl zum öffnen von port 22 gesendet, um die firewall.”

Die “closeSSH” Abschnitt kann gelesen werden als “eine TCP-Verbindungsanforderung gestellt werden muss-ports 9000, 8000, 7000—in dieser Reihenfolge und innerhalb von 5 Sekunden—für den Befehl zum schließen port 22 gesendet, um die firewall.”

Der Firewall-Regeln

Die “Befehl” – Einträge in der openSSH und closeSSH Abschnitte bleiben die gleichen, außer für einen parameter. Dies ist, wie Sie sich gehören:

  • -A: fügen Sie die Regel auf der Unterseite der firewall-Regeln-Liste (für die openSSH-Befehl).
  • -D: den Befehl Löschen aus der firewall-Regeln-Listen (für die closeSSH-Befehl).
  • INPUT: Diese Regel befasst sich mit eingehenden Netzwerkverkehr.
  • -s %IP%: Die IP-Adresse des Geräts eine Verbindung anfordert.
  • -p:- Netzwerk-Protokoll; in diesem Fall ist es TCP.
  • –dport: Der Ziel-port, in unserem Beispiel ist es der port 22.
  • -j ACCEPT: Springe zu akzeptieren, den Gegner innerhalb der firewall. In anderen Worten, lassen Sie das Päckchen fallen durch den rest der Regeln, ohne auf ihn einwirkenden.

Der knockd Konfigurationsdatei Bearbeitet

Die änderungen werden wir an der Datei sind unten rot hervorgehoben:

Wir verlängern die “seq_timeout” um 15 Sekunden. Das ist großzügig, aber wenn jemand manuell auslösen in Verbindung anfordert, könnte er brauche dies viel Zeit.

In die “openSSH” – Abschnitt, ändern wir das -A (append) option im Befehl -I (insert). Dieser Befehl fügt eine neue firewall-Regel an der Spitze der firewall-Regel-Liste. Wenn man die -A option, wird der firewall-Regel-Liste und legt es auf den Boden.

Eingehender Verkehr wird getestet gegen jede firewall-Regel in der Liste von oben nach unten. Wir haben bereits eine Regel, schließt port 22. Also, wenn der eingehende traffic geprüft wird gegen diese Regel vor sieht es die Regel, die den Datenverkehr, wird die Verbindung abgelehnt wird, wenn es sieht, diese neue Regel zuerst die Verbindung erlaubt ist.

Der close-Befehl entfernt die Regel Hinzugefügt von openSSH aus der firewall-Regeln. SSH-Verkehr ist einmal mehr behandelt, indem die bereits bestehenden “port 22 geschlossen” – Regel.

Nachdem Sie diese änderungen vornehmen, speichern Sie die Konfigurationsdatei.

RELATED: Wie zum Bearbeiten von Text-Dateien Grafisch auf Linux Mit gedit

Der knockd Control-Datei Bearbeitet

Der knockd-Steuerelement-Datei ist insgesamt einfacher. Bevor wir Tauchen Sie ein und Bearbeiten Sie, dass, obwohl, müssen wir wissen, den internen Namen für unser Netzwerk-Verbindung, um es zu finden, geben Sie folgenden Befehl ein:

ip addr

Die Verbindung, die diese Maschine verwendet, um die Forschung in diesem Artikel wird als enp0s3. Notieren Sie den Namen Ihrer Verbindung.

Der folgende Befehl ändert den knockd-control-file:

sudo gedit /etc/default/knockd

Hier ist der knockd-Datei in gedit.

Die paar änderungen, die wir vornehmen müssen, sind rot hervorgehoben:

Wir änderten die “START_KNOCKD=” Eintrag von 0 auf 1.

Wir werden auch entfernt, den hash von der # start des “KNOCKD_OPTS=” – Eintrag, und ersetzt “eth1” mit dem Namen unserer Netzwerk-Verbindung, enp0s3. Natürlich, wenn die Verbindung zum Netzwerk ist eth1, du wirst es nicht ändern.

Der Beweis Ist in den Pudding

Es ist Zeit, um zu sehen, ob das funktioniert. Wir beginnen den knockd-daemon mit folgendem Befehl:

sudo systemctrl start knockd

Nun, wir werden springen, auf einem anderen Rechner, und versuchen zu verbinden. Wir installierten den knockd-tool auf dem computer, auch nicht, weil wir möchten, port-knocking, aber da das knockd Paket bietet ein weiteres Werkzeug namens knock. Wir verwenden diese Maschine, um das Feuer in unsere geheime Sequenz und tun das klopfen für uns.

Verwenden Sie den folgenden Befehl ein, und senden Sie uns Ihre geheimen Abfolge von Verbindungs-Anfragen an die ports auf dem port-knocking host-computer mit der IP-Adresse 192.168.4.24:

klopfen 192.168.4.24 7000 8000 9000 -d 500

Dieser erzählt klopfen Ziel der computer mit der IP-Adresse 192.168.4.24 und Feuer eine connection-request auf die ports 7000, 8000 und 9000, die wiederum mit einem -d (delay) von 500 Millisekunden zwischen Ihnen.

Ein user namens “dave” macht dann eine SSH Anfrage an 192.168.4.24:

ssh dave@192.168.4.24

Seine Verbindung akzeptiert, gibt er sein Passwort und seine remote-Sitzung beginnt. Seine Eingabeaufforderung ändert sich von dave@nostromo zu dave@howtogeek. Abmelden von der remote-computer, tippt er:

beenden

Sein Befehl prompt wieder zurück auf seinen lokalen computer. Er verwendet klopfen, einmal mehr, und diesmal, Ihr Ziel sind die Häfen in umgekehrter Reihenfolge schließen Sie den SSH-port auf dem remote-computer.

klopfen 192.168.4.24 9000 8000 7000 -d 500

Zugegeben, das war nicht besonders ergiebig remote-Sitzung sein, aber es zeigt das öffnen und schließen des Ports über port-knocking und passt in einen einzigen screenshot.

So, was hat das Aussehen von der anderen Seite? Der system-administrator die port-knocking-host verwendet den folgenden Befehl, um neue Einträge kommen in die system-log:

tail-f /var/log/syslog

  • Sie sehen drei openSSH-Einträge. Diese werden ausgelöst, da jeder port ist durch die gezielte remote-knock-Dienstprogramm.
  • Wenn alle drei Phasen des trigger-Sequenz erfüllt sind, wird ein Eintrag, der sagt “SESAM ÖFFNE dich” angemeldet ist
  • Der Befehl zum einfügen der Regeln in die iptables-Regeln-Liste gesendet wird. Es ermöglicht den Zugriff über SSH auf port 22 von der spezifischen IP-Adresse des PC, der hat die richtigen secret knock (192.168.4.23).
  • Der Benutzer “dave” verbindet für ein paar Sekunden nur, und dann die Verbindung trennt.
  • Sie sehen drei closeSSH Einträge. Diese werden ausgelöst, da jeder port ist durch die gezielte remote-knock-Dienstprogramm—es erzählt die port-knocking-host zu schließen-port 22.
  • Nachdem alle drei Stufen ausgelöst werden, erhalten wir das “SESAM-ÖFFNE-dich” – Nachricht wieder. Der Befehl gesendet, um die firewall zu entfernen, die Regel. (Warum nicht “in der NÄHE SESAM”, wenn es geschlossen ist der port? Wer weiß?)

Nun ist die einzige Regel in die iptables-Regeln-Liste über port 22 ist der, den wir eingegeben am Anfang zu schließen, dass die port. So, port 22 ist nun wieder geschlossen.

Klopfen Sie auf dem Kopf

Das ist port knocking ist salontrick. Behandeln Sie es als eine Ablenkung und nicht zu tun, es in der realen Welt. Oder, wenn es sein muss, verlassen Sie sich nicht auf ihn als Ihre einzige form von Sicherheit.

LESEN SIE WEITER

  • “Was Ist ein “Hot-Nehmen” und Woher der Satz Kommt?
  • “Wie Windows 7 “Extended Security Update” Arbeiten
  • › Windows 10 Anrufe Unterstützt Alle Android-7+ – Handys
  • › Was Ist Patchday für Windows, und Wenn Ist Es?
  • › Wie zu Deaktivieren, Interaktive Pop-Up-Anzeigen auf Ihrem Roku-TV