Für diejenigen, die sich selbst und ihren Lieben von überall auf der Welt über SSH/RDP/andere, ein kleines RTFM/Spur, Zugriff auf ihre Server ermöglichen müssen.
Wir müssen auf VPN und anderen Schnickschnack verzichten, von jedem Gerät aus.
Und damit Sie nicht zu viel mit dem Server trainieren müssen.
Alles, was Sie dafür brauchen, ist
„Alles ist im Internet“, natürlich (sogar auf
Wir üben am Beispiel von Fedora/CentOS, aber das spielt keine Rolle.
Der Sporn ist sowohl für Anfänger als auch für Experten in dieser Angelegenheit geeignet, daher wird es Kommentare geben, diese werden jedoch kürzer sein.
1. Server
-
Knock-Server installieren:
yum/dnf install knock-server
-
Konfigurieren Sie es (zum Beispiel auf SSH) - /etc/knockd.conf:
[options] UseSyslog interface = enp1s0f0 [SSHopen] sequence = 33333,22222,11111 seq_timeout = 5 tcpflags = syn start_command = iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT cmd_timeout = 3600 stop_command = iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT [SSHclose] sequence = 11111,22222,33333 seq_timeout = 5 tcpflags = syn command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Der „Öffnungs“-Teil ist so eingestellt, dass er sich nach 1 Stunde automatisch schließt. Man weiß nie...
-
/etc/sysconfig/iptables:
... -A INPUT -p tcp -m state --state NEW -m tcp --dport 11111 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22222 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 33333 -j ACCEPT ...
-
nach vorne:
service iptables restart service knockd start
-
Sie können RDP zum darin rotierenden virtuellen Windows-Server hinzufügen (/etc/knockd.conf; ersetzen Sie den Schnittstellennamen nach Ihrem Geschmack):
[RDPopen] sequence = 44444,33333,22222 seq_timeout = 5 tcpflags = syn start_command = iptables -t nat -A PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2 cmd_timeout = 3600 stop_command = iptables -t nat -D PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2 [RDPclose] sequence = 22222,33333,44444 seq_timeout = 5 tcpflags = syn command = iptables -t nat -D PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2
Mit dem Befehl verfolgen wir alle unsere Kicks vom Client auf dem Server
iptables -S
.
2. Anleitung zu Rechen
knockd.conf:
Das Mana enthält auch alles (das ist aber ungenau), aber Knockd ist ein Freund, der mit Nachrichten ziemlich geizig ist, also muss man sehr vorsichtig sein.
- Version
In den Fedora/CentOS-Repositories beträgt der aktuellste Knockd für heute 0.63. Wer UDP möchte, sucht nach 0.70-Paketen. - Schnittstelle
In der Standardkonfiguration von Fedora/CentOS ist diese Zeile kein. Mit den Händen hinzufügen, sonst klappt es nicht. - Timeout
Hier können Sie ganz nach Ihrem Geschmack wählen. Es ist notwendig, dass der Client genügend Zeit für alle Kicks hat – und der Port-Scanner-Bot wird zusammenbrechen (und 146 % scannen). - Start/Stopp/Befehl.
Wenn es einen Befehl gibt, dann command, wenn es zwei gibt, dann start_command+stop_command.
Wenn Sie einen Fehler machen, bleibt knockd stumm, funktioniert aber nicht. - deshalb
Theoretisch kann UDP verwendet werden. In der Praxis habe ich TCP und UDP gemischt, und der Kunde vom Strand auf Bali konnte das Tor erst zum fünften Mal öffnen. Weil TCP bei Bedarf ankam, UDP jedoch keine Tatsache ist. Aber das ist wiederum Geschmackssache. - Reihenfolge
Der implizite Rake besteht darin, dass sich die Sequenzen nicht überschneiden sollten ... wie soll ich das sagen ...
Zum Beispiel:
open: 11111,22222,33333
close: 22222,11111,33333
Von Kick 11111 XNUMXh geöffnet wartet auf den nächsten Kick bei 22222. Nach diesem Kick (22222) beginnt es jedoch zu funktionieren schließen und alles wird kaputt gehen. Dies hängt auch von der Verspätung des Kunden ab. Solche Dinge ©.
iptables
Wenn in /etc/sysconfig/iptables dies ist:
*nat
:PREROUTING ACCEPT [0:0]
Es stört uns nicht wirklich, also hier ist es:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Es stört.
Da knockd am Ende der INPUT-Kette Regeln hinzufügt, erhalten wir eine Ablehnung.
Und diese Ablehnung auszuschalten bedeutet, das Auto allen Winden zu öffnen.
Um nicht in iptables verloren zu gehen, was vor was eingefügt werden soll (so
- Standard auf CentOS/Fedora erste die Regel („Was nicht verboten ist, ist erlaubt“) wird durch das Gegenteil ersetzt,
- und wir entfernen die letzte Regel.
Das Ergebnis sollte sein:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
Sie können natürlich auch REJECT anstelle von DROP ausführen, aber mit DROP macht das Leben für Bots mehr Spaß.
3. Kunde
Dieser Ort ist (aus meiner Sicht) der interessanteste, da man nicht nur von jedem Strand, sondern auch von jedem Gerät aus arbeiten muss.
Grundsätzlich sind eine Reihe von Kunden auf gelistet
Bei der Auswahl eines Clients müssen Sie sicherstellen, dass dieser die Verzögerungsoption zwischen Paketen unterstützt. Ja, es gibt Unterschiede zwischen den Stränden und 100 Megabit garantieren nie, dass Pakete von einem bestimmten Ort in der richtigen Reihenfolge zur richtigen Zeit ankommen.
Und ja, beim Einrichten eines Clients müssen Sie die Verzögerung selbst auswählen. Zu viel Timeout – Bots werden angreifen, zu wenig – der Client hat keine Zeit. Zu viel Verzögerung – der Client schafft es nicht rechtzeitig oder es kommt zu einem Idiotenkonflikt (siehe „Rechen“), zu wenig – die Pakete gehen im Internet verloren.
Mit Timeout=5s, Verzögerung=100..500ms ist eine völlig funktionierende Option
Windows
So lustig es auch klingen mag, es ist keineswegs trivial, einen Clear-Klopf-Client für diese Plattform zu googeln. So dass die CLI Verzögerung, TCP unterstützt – und das ohne Bögen.
Als eine Option können Sie es versuchen
Linux
Hier ist es ganz einfach:
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
Am einfachsten ist es, den Port von Homebrew aus zu installieren:
brew install knock
und zeichnen Sie die notwendigen Batchdateien für Befehle wie:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333
iOS
Eine funktionierende Option ist KnockOnD (kostenlos im Store).
Android
„An die Häfen klopfen“ Keine Werbung, aber es funktioniert einfach. Und die Entwickler reagieren sehr schnell.
PS-Abschlag für Habré, natürlich, Gott segne ihn eines Tages ...
UPD1.: Dank an
UPD2.: noch eins
Source: habr.com