Kaptan85
Anmeldungsdatum: 17. Dezember 2018
Beiträge: 20
|
Hallo. Auf meinem Raspberry Pi (3B+) mit Raspbian, habe ich damals iptables eingerichtet, was auch bis heute wunderbar funktioniert, aber auf einen neuen Server (Intel Computer) mit Ubuntu (Server), funktioniert es leider nicht wie gewünscht. Ich bekomme keine Verbindung (wird blockiert). Ziel: Ich habe einen Webserver (Anbieter) und einen Homeserver. Der Webserver darf auf meinen Homeserver zugreifen und ich darf (Lokal) auf meinen Homeserver zugreifen. Alles andere soll blockiert werden. Folgendermaßen habe ich es eingerichtet: 1
2
3
4
5
6
7
8
9
10
11
12
13
14 | SSH@user: su -
SSH@root: apt-get install iptables
SSH@root: apt-get install iptables-persistent
SSH@root: reboot
SSH@user: su -
SSH@root: iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
SSH@root: iptables -A INPUT -p tcp -s MEINE-IP-LOKAL --dport PORTNUMMER-HOMESERVER -j ACCEPT
SSH@root: iptables -A INPUT -p tcp --dport PORTNUMMER-HOMESERVER -j DROP
SSH@root: iptables -A INPUT -p tcp -s WEBSERVER-IP --dport 80 -j ACCEPT
SSH@root: iptables -A INPUT -p tcp --dport 80 -j DROP
SSH@root: iptables-save > /etc/iptables/rules.v4
SSH@root: reboot
|
Mache ich einen Fehler? PS: Ich bin Anfänger.
Moderiert von DJKUhpisse: verschoben ins Netzwerk-Forum
|
DJKUhpisse
Supporter, Wikiteam
Anmeldungsdatum: 18. Oktober 2016
Beiträge: 17583
Wohnort: in deinem Browser, hier auf dem Bildschirm
|
Was erwartest du von deiner Firewall?
Gegen was willst du dich schützen? Das sind Fragen, die vorher geklärt werden müssen.
|
Kaptan85
(Themenstarter)
Anmeldungsdatum: 17. Dezember 2018
Beiträge: 20
|
Vielen Dank für die Antwort!
1. Web-Server: Auf diesen läuft PHP 2. Home-Server: Auf diesen läuft PHP
Wenn sich Benutzer auf meiner Website aufhalten, sind sie auf meinem Web-Server unterwegs. In manchmal Fällen, wird aber auch der Home-Server benötigt. Dieser wird dann von PHP zu PHP "geholt" (z.B. Include). Das wars eigentlich schon.
Die Firewall auf meinem Home-Server soll folgendes zulassen: - Der Web-Server soll darauf zugreifen dürfen (PHP) - Ich möchte darauf zugreifen dürfen (Lokal) mit SSH (Putty und WinSCP)
Die Firewall auf meinem Home-Server soll folgendes blockieren: - Alles andere
Der Home-Server soll für niemanden zugänglich sein, außer für den Web-Server (mit seiner festen IP + Zugangsdaten die ich einprogrammiert habe).
Ziel: Maximale Sicherheit für den Home-Server.
|
DJKUhpisse
Supporter, Wikiteam
Anmeldungsdatum: 18. Oktober 2016
Beiträge: 17583
Wohnort: in deinem Browser, hier auf dem Bildschirm
|
Die Firewall auf meinem Home-Server soll folgendes blockieren: - Alles andere
Schlechte Idee, bedenke dass z.B. ICMP benötigt wird für Path MTU Discovery oder das Neighbor-Discovery-Protocol. Zur Info:
Wenn auf einem TCP-Port nichts läuft und ein TCP-SYN kommt, wird ein RST geschickt, es wird keine Verbindung aufgebaut.
Wenn auf einem UDP-Port ne Anfrage kommt, wird ein ICMP Destination unreachable Port unreachable geschickt.
Das ist eigentlich der Soll-Zustand. Die FW würde dir nur helfen, dort laufende Dienste zu schützen.
|
Kaptan85
(Themenstarter)
Anmeldungsdatum: 17. Dezember 2018
Beiträge: 20
|
Ich möchte den Home-Server von der Außenwelt abschotten. Seine einzige Aufgabe ist es, dem Web-Server zu dienen, wer er für eine bestimmte Aufgabe gebraucht wird.
Auf dem Raspberry Pi funktioniert das seit über 1 Jahr problemlos.
Kannst Du mir etwas vorschlagen?
|
DJKUhpisse
Supporter, Wikiteam
Anmeldungsdatum: 18. Oktober 2016
Beiträge: 17583
Wohnort: in deinem Browser, hier auf dem Bildschirm
|
Du kannst den nicht komplett abschotten.
Wenn, dann musst du SPI machen, damit überhaupt normaler ausgehender Traffic erlaubt ist.
Das soltle bei dir schon passen.
Nun wäre die Fragen, von welcher IP auf welche IP (hier IPv4 und IPv6 beachten) das soll und welche Ports genutzt werden.
Dann ggf. Regel für Regel einrichten und dann die finden, die was blockiert, und wie gesagt ICMP nicht blockieren.
|
Kaptan85
(Themenstarter)
Anmeldungsdatum: 17. Dezember 2018
Beiträge: 20
|
Ich habe es mal so probiert.
| iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables --append INPUT --protocol tcp --src 142.250.220.0 --sport 80 --jump ACCEPT
iptables --append INPUT --protocol tcp --src 192.168.178.2 --sport 3850 --jump ACCEPT
iptables --append INPUT --protocol tcp --sport 3850 --jump DROP
iptables --append INPUT --protocol tcp --sport 80 --jump DROP
|
Ich glaube die Regeln graifen nicht.
|
DJKUhpisse
Supporter, Wikiteam
Anmeldungsdatum: 18. Oktober 2016
Beiträge: 17583
Wohnort: in deinem Browser, hier auf dem Bildschirm
|
Was passiert denn, wenn du die Regeln alle entfernst?
|
Kaptan85
(Themenstarter)
Anmeldungsdatum: 17. Dezember 2018
Beiträge: 20
|
Dann funktioniert alles.
Aber dann kann ich auch von überall auf den Home-Server zugreifen, was ich unbedingt vermeiden möchte.
Einzig der Web-Server soll mit meinem Server kommunizieren (nur via PHP) und ich natürlich mit meiner lokalen IP + Port (SSH).
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13894
|
Kaptan85 schrieb: Mache ich einen Fehler?
Wie sind jetzt die Ausgaben von:
systemctl status netfilter-persistent
sudo iptables -nvx -L
?
|
Kaptan85
(Themenstarter)
Anmeldungsdatum: 17. Dezember 2018
Beiträge: 20
|
Das kann ich leider nicht mehr sagen, weil ich das ganze wieder verändert habe (bevor ich deinen Beitrag gelesen habe), weil es nicht funktionierte.
Aktuell ist es so:
| iptables -A INPUT -p tcp -s Web-Server-IP --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -s Web-Server-IP --dport 3850 -j ACCEPT
iptables -A INPUT -p tcp -s Lokal-IP-PC --dport 3820 -j ACCEPT
iptables -P INPUT DROP
|
Das scheint zu funktionieren. SSH und WinSCP funktionieren. Das Skript ist im Browser (direkt) nicht mehr aufrufbar, aber als Include funktiniert es bestens.
Die Regeln (mit meinen Worten) als Text: 1. Web-Server-IP darf via Port 80 rein 2. Web-Server-IP darf via Port 3850 rein 3. Lokal-IP-PC darf via Port 3850 rein 4. Alles andere darf nicht rein!
Sieht das für euch Profis richtig aus?
|
DJKUhpisse
Supporter, Wikiteam
Anmeldungsdatum: 18. Oktober 2016
Beiträge: 17583
Wohnort: in deinem Browser, hier auf dem Bildschirm
|
ICMP vergessen. Teste, ob das durchgeht, speziell Packet too big.
|
Kaptan85
(Themenstarter)
Anmeldungsdatum: 17. Dezember 2018
Beiträge: 20
|
Was habe ich vergessen? Ich bin (leider) totaler Anfänger, auch wenn ich das Zeug habe, dass ganze mit der Zeit zu lernen.
Wie soll ich testen?
|
DJKUhpisse
Supporter, Wikiteam
Anmeldungsdatum: 18. Oktober 2016
Beiträge: 17583
Wohnort: in deinem Browser, hier auf dem Bildschirm
|
ICMP, u.A. wegen Path MTU Discovery.
Teste es mal damit: http://www.letmecheck.it/mtu-test.php
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13894
|
Kaptan85 schrieb: Das kann ich leider nicht mehr sagen, weil ich das ganze wieder verändert habe (bevor ich deinen Beitrag gelesen habe), weil es nicht funktionierte.
Aktuell ist es so:
| iptables -A INPUT -p tcp -s Web-Server-IP --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -s Web-Server-IP --dport 3850 -j ACCEPT
iptables -A INPUT -p tcp -s Lokal-IP-PC --dport 3820 -j ACCEPT
iptables -P INPUT DROP
|
Das sind aber nicht die _aktuellen_ Ausgaben von:
systemctl status netfilter-persistent
sudo iptables -nvx -L
|