Weisen Sie socat an, Verbindungen von einer einzelnen IP-Adresse abzuhören

8
socat TCP-LISTEN:22,fork TCP:192.168.0.15:5900

Wie kann ich feststellen socat, dass Port 22 nur von der Remote-IP-Adresse 8.8.8.8 als vertrauenswürdig eingestuft wird und keine Verbindungen von anderen IP-Adressen akzeptieren sollte? Dies ist auf einem Linux-Server.

Gilles 'SO - hör auf böse zu sein'
quelle
4
Beachten Sie, dass IP-Adressen ausdrücklich für die Verwendung in Beispielen reserviert sind . 8.8.8.8 ist Google.
Stéphane Chazelas

Antworten:

13

Sie können die rangeOption zur Socat-Abhöradresse hinzufügen :

socat TCP-LISTEN:22,fork,range=8.8.8.8/32 TCP:192.168.0.15:5900

Oder Sie können die tcpwrap=vnc_forwardOption hinzufügen und globale Regeln für diesen vnc_forwardDienst gemäß hosts_access (5) definieren .

Das verhindert nicht, dass die Verbindungen erreicht werden socat, socatignoriert sie jedoch (mit einer Warnung), wenn sie nicht aus 8.8.8.8 stammen.

Stéphane Chazelas
quelle
WOW - das löst mein Problem. Vielen Dank!!
5

So etwas funktioniert für mich, damit Socat nur auf localhost hört.

socat TCP-LISTEN:22,fork,bind=127.0.0.1 TCP:192.168.0.15:5900

Sie können dies also versuchen.

socat TCP-LISTEN:22,fork,bind=8.8.8.8 TCP:192.168.0.15:5900
adrelanos
quelle
Ihr zweites Beispiel beantwortet die Frage nicht. Das OP möchte die Clientadressen einschränken, die eine Verbindung zum Server herstellen dürfen. Mit bind=8888dem socat-Server würde versucht, an die lokale Schnittstelle 8.8.8.8 zu binden - die auf der Serverseite nicht existiert. So range=in der verwendeten akzeptierten Antwort ist der Weg zu gehen.
Maxschlepzig
Dies liegt daran, dass der Titel der Frage falsch ist: Es listen connections from a single IP addressmacht keinen Sinn, Sie hören nicht auf eine IP-Adresse, die Sie nicht besitzen.
Xorax
3

Die meisten Leute benutzen dafür Firewalls. Schauen Sie sich an iptables, um den Verkehr auf Port 22 zu beschränken, dh:

iptables -I INPUT -p tcp '!' -s 8.8.8.8 --dport 22 -j REJECT

Wenn die Firewall bereits restriktiv ist, lassen Sie nur eine Adresse zu:

iptables -A INPUT -p tcp -s 8.8.8.8 --dport 22 -j ACCEPT

Bitte beachten Sie, dass dies keine vollständige Konfiguration für eine iptables-Firewall ist. Sie müssen zuerst eine ordnungsgemäße Konfiguration einrichten, bevor Sie die oben genannten verwenden können.

Lambert
quelle
Vielen Dank. Wenn ich iptables verwenden kann, werde ich es auch verwenden. Aber denken Sie daran, warum ich Mikroprozessoren erwähnt habe, die alle Tools wie IPTables, SELinux usw. entfernen, weil sie Mikro-Embedded-Geräte sind. Infolgedessen haben Sie nur noch wenige Tools wie beispielsweise socat. Aber danke.
2
Ich verstehe, dass auf einigen Geräten nicht alle Tools standardmäßig verfügbar sind. In diesem Fall würde ich Ihnen jedoch empfehlen, stattdessen die Border Firewall / den Router zu konfigurieren, um DDoS-Angriffe zu vermeiden. Ich mag die Antwort von @ Stéfane, dass es möglich ist, Sitzungen zu ignorieren, die aus anderen Quellen stammen, aber dass Ihr Mikroprozessor noch etwas verarbeiten muss.
Lambert
1
@YumYumYum - das sind keine Tools - das sind eingebaute Kernel-Hooks. Wenn Sie keinen Netfilter im Kernel haben und Ihr Problem ein Gerät mit geringem Stromverbrauch und die Erkennung / den Schutz von Eindringlingen betrifft, können Sie darauf wetten, dass diese Arbeit im Benutzerbereich dieses kleine Gerät viel mehr verletzt als in Kernel-Space. Sie sollten einen Kernel erstellen, der besser zu Ihnen passt.
Mikeserv
0

Wenn Ihr primäres Ziel die Sicherheit ist und Sie den Client-Computer steuern, ist die Verbindung zu Ihrem Socat-Server über einen SSL-Tunnel sicherer. Der Server überprüft das Client-Zertifikat, bevor er Verbindungen akzeptiert.

Ich habe dies kürzlich durchlaufen und versucht, ein Synergie-Client / Server-Setup zu sichern.

Dieses Tutorial erklärt das Setup klar

http://www.dest-unreach.org/socat/doc/socat-openssltunnel.html

Eine Abweichung von den Anweisungen, die ich gefunden habe, ist, dass Ihre Client-SSL-Bibliothek den Serverschlüssel aufgrund des Patches für Logjam standardmäßig ablehnen sollte

Wenn Sie Folgendes an die Server-PEM anhängen, funktioniert alles

openssl dhparam 2048 >> "$FILENAME".pem

Dieser schlüsselbasierte Austauschmechanismus ist wesentlich maßgeblicher für die Validierung von Hosts über IP-basierte Authentifizierung.

Erick J.
quelle