SSH-Firewall-Durchgang

SSH-Firewall-Durchgang

Guten Tag. Ich arbeite an einem Projekt mit einem Ubuntu-Server und habe 3 VMs eingerichtet. Eine Firewall, einen Router und einen Client (1) für den Moment. Ich kann derzeit Putty verwenden, um per SSH auf die Firewall zuzugreifen, dann kann ich per SSH auf den Router zugreifen und schließlich kann ich per SSH auf den Client zugreifen und Code schreiben und kompilieren.

Ich möchte wissen, wie ich ohne zusätzliches SSH eine direkte SSH-Verbindung zum Client herstellen kann.

Vielen Dank, kbot

EDIT: Ausgabe von sudo iptables -t nat -v -x -n -Lder Firewall:

Chain PREROUTING (policy ACCEPT 1217 packets, 108875 bytes)
pkts bytes target prot opt in out source destination

Chain INPUT (policy ACCEPT 2 packets, 136 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 11 packets, 783 bytes)
pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 6 packets, 406 bytes)
pkts bytes target prot opt in out source destination
35 2218 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0

Antwort1

Zunächst würde ich vorschlagen, dass Sie die Firewall- und Router-Server zu einem einzigen Server zusammenführen, da die Firewall bereits die Router-Funktionalität implementiert.

Nehmen wir an, Sie möchten die Möglichkeit zum SSH-Zugriff auf die Firewall beibehalten, aber auch die Möglichkeit zum SSH-Zugriff von außen direkt auf Ihren Client hinzufügen. Sie müssen hierfür einen anderen Port verwenden, da dies die einzige Möglichkeit für Ihren iptables-Regelsatz ist, zu bestimmen, was Sie möchten. Ich verwende Port 2222, aber Sie können jeden beliebigen freien Port verwenden.

Sie benötigen eine PREROUTING-Regel in der NAT-Tabelle:

sudo iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 2222 -j DNAT --to $INTIP:22

Dabei gilt: $EXTIF ist der Name Ihrer externen Netzwerkschnittstelle. Ich glaube eth0. $INTIP ist Ihre interne IP-Adresse.

Sie müssen außerdem zulassen, dass der Datenverkehr Ihre FORWARD-Kette passiert, da Ihre Standardrichtlinie DROP ist und so lauten sollte:

sudo iptables -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 2222 -d $INTIP -m state --state NEW -j LOG --log-prefix "PFNEW2222:" --log-level info
sudo iptables -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 2222 -d $INTIP -m state --state NEW -j ACCEPT

Wobei: $INTIF der Name Ihrer internen Netzwerkschnittstelle ist. Ich denke, eth1.

Beachten Sie, dass es auch eine Protokollierungsregel gibt. Nur ein Vorschlag.

Ihr Rückweg sollte in Ordnung sein

Andere Vorschläge:

Sie benötigen Ihre aktuelle OUTPUT-Kettenregel nicht, da Ihre Standardrichtlinie ACCEPT ist.

Wenn Sie Ihre externe IP-Adresse kennen ($EXTIP unten), verwenden Sie SNAT statt MASQURADE:

sudo iptables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to $EXTIP

Wenn nicht, dann OK

Ich gehe davon aus, dass Sie die Weiterleitung bereits aktiviert haben:

$ cat /proc/sys/net/ipv4/ip_forward
1

verwandte Informationen