Iptables-Regeln abhängig vom Netzwerk, mit dem verbunden ist

498
Nisalon

Ich habe um etwas herum gekämpft, das ich gerne einsetzen würde. Ich verwende meinen ubuntu 18.04-Laptop bei der Arbeit und zu Hause.

Ich möchte, dass meine iptables alle eingehenden Verbindungen abbricht (mit Ausnahme der etablierten Verbindungen), wenn ich nicht zu Hause bin. Dies würde jedoch den Zugriff auf Port 22 zum Beispiel ermöglichen, wenn ich zu Hause bin.

Ich bin wirklich nicht sicher, wie ich mit diesem Problem umgehen soll, da ich nicht weiß, wie ich in einer iptables-Regel direkt zu Hause bin. Ich dachte über den Versuch nach, ein Skript auszuführen, wenn ein Netzwerk verbunden ist, einen entfernten Server anpingen, um meine öffentliche IP-Adresse zu erhalten, und dann iptables zu leeren / neue Regeln festzulegen. Ich mag diese Lösung nicht, weil sie nicht sauber ist und ich einige Ports für einige Sekunden geöffnet habe (kurz nach der Verbindung / vor Erhalt der externen IP-Adresse), was mir nicht gefällt

Hast du eine Idee, wie ich damit umgehen kann?

Vielen Dank

1

1 Antwort auf die Frage

0

Sie können "Zuhause" anhand Ihrer Netzwerkadresse identifizieren und tun:

# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT # iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT # iptables -A INPUT -p tcp --dport 22 -j DROP 

Wo tauschen Sie die 192.168.0.0/24 mit der Adresse Ihres lokalen Netzwerks zu Hause aus. Dadurch wird der Port immer noch geöffnet, wenn Sie sich in einem Netzwerk mit derselben Netzwerkadresse und demselben Subnetz wie Ihr Heimnetzwerk befinden. Wählen Sie daher einen Port aus, der nicht sehr üblich ist.

Dies war jedoch nur zur Beantwortung Ihrer Frage, wie Sie "Zuhause" identifizieren können. Dies ist weder eine richtige noch eine sichere Methode, auf die Sie sich beim Sichern eines SSH-Servers verlassen sollten (denken Sie an IP-Spoofing). Befolgen Sie besser die bewährten Sicherheitsrichtlinien, z. B. 2FA, Ändern allgemeiner Ports, Verwenden der Schlüsselauthentifizierung, Deaktivieren von Stammanmeldungen, Blockieren fehlgeschlagener Versuche usw.

Siehe dies: https://blog.devolutions.net/2017/04/10-steps-to-secure-open-ssh

Der von Ihnen vorgeschlagene Ansatz würde mit IPv6 viel besser funktionieren. Es ist immer noch nicht völlig narrensicher, aber in Kombination mit einer ordnungsgemäßen Sicherung des SSH-Servers wäre dies durchaus sinnvoll. Das Identifizieren von localhost-Verkehr anhand der IP-Adresse ist wahrscheinlich nicht der beste Weg, dies zu tun. Ich hätte stattdessen mit einer Regel begonnen, in der "A INPUT -i lo -j ACCEPT" steht. kasperd vor 5 Jahren 0
Das ist genau das, was ich gesagt habe, es ist ein schlechter Weg und absolut nicht sicher. Ich habe nur die Frage beantwortet und dann meine 2 Cent auf das gegeben, was besser wäre. Vielen Dank für das Downvote. vor 5 Jahren 0