Firewall - nur VPN erlauben

berlin10

Benutzer
Mitglied seit
24. Jun 2011
Beiträge
236
Punkte für Reaktionen
0
Punkte
16
Wie konfiguriere ich die Firewall, wenn ich die Dockercontainer absichern möchte, sprich man kommt nur über die VPN Verbindung oder LAN an die entsprechenden Container?
Überall lese ich, dass ich any-any-DE einstellen soll. Das ist ja ok, aber ich möchte auch nicht, dass jemand aus DE darauf zugreift, wenn er nicht über VPN verbunden ist.
any-any-idea?
1-3 zuerst LAN (192.168...), dann Docker (172.16...), dann VPN (10...)
4 dann VPN Server (IPSEC) erlauben für alle
5 dann DE erlauben für alle
6 dann alles deny
Kann ich 5 irgendwie umgehen?
 

Kachelkaiser

Benutzer
Sehr erfahren
Mitglied seit
22. Feb 2018
Beiträge
1.977
Punkte für Reaktionen
791
Punkte
134
und wenn du 5 einfach weglässt?
 

berlin10

Benutzer
Mitglied seit
24. Jun 2011
Beiträge
236
Punkte für Reaktionen
0
Punkte
16
dann kommt:" Ihr Computer wurde durch die neue Firewall-Konfiguration blockiert...."
 

Janüscht

Benutzer
Mitglied seit
13. Sep 2020
Beiträge
147
Punkte für Reaktionen
40
Punkte
28
Ich glaube, du hast die Einstellung nicht ganz verstanden. Deine gesättigten Einstellungen sind soweit richtig, wenn die DiskStation den VPN-Server stellt. Ich würde Punkt 4 & 5 zusammenfassen:

1. LAN (192.168...)
2. Docker (172.16...)
3. VPN (10...)
4. VPN Server (IPSEC) erlauben für DE
5 dann alles deny

Das bedeute: Alle VPN Verbindungen aus Deutschland dürfen sich in das Netz einwählen und haben dann keine Beschränkungen für Anwendungen und Ports. Die Portfreigabe für VPN muss auf dem Router freigegeben sein.

Besser wäre es, wenn der VPN Server auf den Router läuft. Das ist in vielen Routern möglich, wie z.B. bei der Fritz!Box. Wenn es zusätzlich zum IPSEC noch WireGuard gibt, wird es noch ein bisschen "runder". Dann bräuchte man nur folgende Einstellungen:
,
1. LAN (192.168...)
2. Docker (172.16...)
3. VPN (10...)
4 dann alles deny

Generell ist VPN am Netzwerkeingang (Router) zu empfehlen und nicht innerhalb des Netzwerkes. Das heißt aber nicht das es nicht geht!

Ich hoffe, es ist ein bisschen verständlicher.
 

berlin10

Benutzer
Mitglied seit
24. Jun 2011
Beiträge
236
Punkte für Reaktionen
0
Punkte
16
Ok, vielleicht verkompliziere ich das, weil ich noch reverse Proxys eingebaut habe, auf die ich zugreifen will. Ja mit IP Adresse und Port ginge es auch, aber reverse proxy lässt sich einfacher merken. Ok, ich will, dass auf die Adresse nas.meinedomain.de nur über VPN zugegriffen werden kann, anderenfalls soll der Zugang geblockt werden. Das klappt derzeit nur, wenn ich die vom Provider zugewiesene IP Adresse als allow eintrage. Das möchte ich natürlich nicht alle paar Tage ändern.
Danke schon mal
 

Janüscht

Benutzer
Mitglied seit
13. Sep 2020
Beiträge
147
Punkte für Reaktionen
40
Punkte
28
Was hat die IP jetzt mit den Firewallregeln zu tun? Die Regeln 1-3 besagen ja nur das es keine Einschränkungen in den Netzwerken gibt. Mit der Regel 4 wirst du leben müssen, wenn deine DS den VPN-Server spielt. Ziehe dein VPN auf einen Router um z.B. Fritz!Box und du hast es genauso wie du es willst. Reverse Proxy etc. haben damit nicht zu tun. Du stellst ja eine Verbindung aus dem Internet (außen) über VPN her. Diese ist aktuell nur für DE zugelassen und nur für den VPN-Dienst. Also alle anderen werden geblockt, wenn du meinen ersten Eintrag umsetzt.

Ich denke, dir fehlt noch ein bisschen Verständnis für dich Sache.
 

berlin10

Benutzer
Mitglied seit
24. Jun 2011
Beiträge
236
Punkte für Reaktionen
0
Punkte
16
Also nun ist die FB mit Wireguard zuständig für VPN.
Was ich möchte ist folgendes:
subdomain1.meinedomain.de ist nur über VPN erreichbar
subdomain2.meinedomain.de ist auch ohne VPN erreichbar, aber nur aus DE
Beide subdomains sind docker Container und laufen auf der DS.
Beide subdomains laufen auf Port 443 als reverse Proxy und werden dann auf einen entsprechenden Port auf der DS weitergeleitet.
Ich habe gesehen, dass ich für die Webstation Zugangsregeln erstellen kann, allerdings bringt das auch nichts.
Das Problem ist folgendes:
Ich rufe die subdomain mit https://subdomain1.meinedomain.de auf. Der Aufruf erfolgt an Port 443 und wird über den reverse Proxy auf zB 5555 umgeleitet. So weit, so gut. Wenn ich nun in das Protokoll schaue, dann sehe ich, dass der Zugriff nicht über ein VPN Netz geht (10....) sondern es sich um die IP Adresse handelt, mit der die DS im Internet ist (über DDNS). Sprich die Regeln gelten alle nicht.
Was kann ich tun? Tipps are welcome.
 

Benie

Benutzer
Contributor
Sehr erfahren
Mitglied seit
19. Feb 2014
Beiträge
8.521
Punkte für Reaktionen
3.526
Punkte
344
Um welche Container handelt es sich denn bei Dir?
Bzw. was ist der Grund nicht beide über VPN zu nutzen?
 

berlin10

Benutzer
Mitglied seit
24. Jun 2011
Beiträge
236
Punkte für Reaktionen
0
Punkte
16
ich möchte paperless zB nur intern (über VPN oder local), aber mit "schönem" Namen aufrufen und nicht mit 192...:1234
Dagegen möchte ich auf linkding einfach so Zugriff haben, ohne VPN.
 

Janüscht

Benutzer
Mitglied seit
13. Sep 2020
Beiträge
147
Punkte für Reaktionen
40
Punkte
28
Die Fritz!Box vergibt eine IP für das VPN in Ihrem Netzbereich. Das VPN-Gerät bekommt also eine genz normale IP z.B. 192.168..178.66.

Du hast also für dein Phone eine IP im WLAN und eine andere für VPN. Schau unter Netzwerk in der Fritz!Box ;). Beide liegen aber im ersten Adressbereich. Somit benötigst du nur noch die Regel:
1. LAN (192.168...)
2. Docker (172.16...)
3 dann alles deny

Welche Container du nutzt und was du im reverse Proxy eingegeben ist unerheblich, solange das Ziel richtig antwortet!
 

Janüscht

Benutzer
Mitglied seit
13. Sep 2020
Beiträge
147
Punkte für Reaktionen
40
Punkte
28
Wenn du den 2. Container, Webseite Reverse Proxy über das Internet ohne VPN erreichbar machen willst, musst du natürlich die Portfreigabe auf der Fritz!Box 443 > DS freigeben. Natürlich brauchst du auch eine Regel für die Firewall, dort gibst du als Dienst den Reverse Proxy an und begrenzt das ganze auf Deutschland. Dazu am besten noch das Update-Blocklist-Script von @geimist. Beachte aber, dass ein Blocken von falschen Logins in Docker nicht funktioniert. Dieses muss anders mit z.B. fail2ban abgesichert werden.

Deine Regel sollte so aussehen:
1715602504047.png

Der Reverse Proxy beantwortet die Frage, welcher Dienst geöffnet werden muss. Die 2. Subdomain muss natürlich bei deinem Cyndis-Anbieter hinterlegt sein. Dort hinterlegt du alles Subdomain, die nicht über das VPN und öffentlich zugänglich sein sollen.

Was ich aber nicht verstehe: ist, warum du auf einmal doch eine Freigabe haben willst, obwohl du im Eingangsthread unbedingt alles über VPN laufen lassen wolltest.
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Die subdomain die nur per VPN erreichbar sein soll, darf nicht auf deine öffentliche IP auflösen, sondern auf deinen Reverse Proxy. Ich habe das bei mir so eingerichtet, dass ich *.example.de habe und *.intern.example.de. Alles was unter *.intern.example.de läuft ist von außen nicht erreichbar. Alles was unter *.example.de läuft ist von extern normal erreichbar. Dazu brauchst du aber einen kleinen DNS Server. z.B. dnsmasq. Der blockt aber keinen Traffic wie Adgaurd oder Pi-Hole. Die *.example.de löst auf meine öffentliche IP auf und *.intern.example.de löst auf 0.0.0.0 auf. (Das Beispiel bezieht sich nur auf IPv4. Für IPv6 muss man natürlich die richtigen Records setzen). Der interne DNS Server löst dann die IPs wieder auf deine interne IP vom Reverse Proxy auf. Das wars auch schon....
 
  • Like
Reaktionen: Benie

berlin10

Benutzer
Mitglied seit
24. Jun 2011
Beiträge
236
Punkte für Reaktionen
0
Punkte
16
könnte man das auch mit dem DNS auf der DS machen oder kann ich meinem Pi-Hole sagen, dass er das auf die DS routet?

Blocklist script läuft, danke dafür!

Welches docker image für das fail2ban? das von linuxserver?
 
Zuletzt bearbeitet von einem Moderator:

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
PiHole kann keine Wildcard Domain Resolver. Das heißt du musst jeder Domain einzeln umleiten, aber das geht auch damit. Siehe z.B. hier. Ich würde nicht den DNS Server der DS dafür nutzen. Ist auch nicht nötig.
Welches Image du nutzt ist dir überlassen. LinuxServer ist aber immer eine gute Quelle.
 

Janüscht

Benutzer
Mitglied seit
13. Sep 2020
Beiträge
147
Punkte für Reaktionen
40
Punkte
28
Das kannst du deinen Pi-Hole sagen. Alternativ kannst du auch den Synology DNS-Server nutzen oder AdGuard Home.

Für Fail2ban nutze ich das Image von crazy-max, Das Image ist am meisten verbreitet (Pulls).
1715610159916.png
https://hub.docker.com/r/crazymax/fail2ban

Grundsätzlich leite ich allen Anfragen intern in AdGuard um. AdGuard kann aber im Gegensatz Wildcard umleite. Bei Pi-Hole muss man jede Adresse manuelle einpflegen.
 

berlin10

Benutzer
Mitglied seit
24. Jun 2011
Beiträge
236
Punkte für Reaktionen
0
Punkte
16
danke. installiert, läuft. ähm, hast du zufällig ne klitzekleine mini Anleitung für mich?
Und nen Pi-Hole Beispiel?
Das wäre total nett. Danke schon mal!
 
Zuletzt bearbeitet von einem Moderator:

Janüscht

Benutzer
Mitglied seit
13. Sep 2020
Beiträge
147
Punkte für Reaktionen
40
Punkte
28
Fail2ban muss ein Log haben (Anwendung, Docker, Webseite etc.). In diesem Log wird nach bestimmten Kriterien gesucht und anschließend die IP gesperrt. Das funktioniert auch auf der DS sehr gut. Ich kann dir später ein Beispiel für Vaultwarden geben.
Oft findest du in den Anleitungen zu den Anwendungen bereits die nötigen Einstellungen zu fail2ban. Such einfach dazu nach z.B. "Vaultwarden fail2ban" in einer Suchmaschine deiner Wahl.

Zu Pi-Hole: du kannst grundsätzlich alle deine Domain & Subdomains im Netzwerk umschreiben. Eine Kommunikation nach draußen findet dann nicht mehr statt, weil Pi-Hole die Anfrage bearbeitet. Alle "unbekannten" Anfragen werden dann ins Internet gesendet.

1715614882911.png
 

berlin10

Benutzer
Mitglied seit
24. Jun 2011
Beiträge
236
Punkte für Reaktionen
0
Punkte
16
puh also fail2ban ist ja nicht ohne zu konfigurieren, da findet man auch einiges im Netz.
Also ich fasse mal zusammen:
1. fail2ban bekommt eine eigenen docker container, unabhängig von der zu überwachenden Anwendung
2. der Pfad zur Logdatei der zu überwachenden Anwendung wird in der yml gemounted als /überwachteanwendung:ro
3. die Datei überwachteanwendung.conf oder .local (?) kommt in das Verzeichnis fail2ban/jail.d
4. die Datei überwachteanwendung.conf kommt in das Verzeichnis fail2ban/filter.d
5. in der Datei von 3. steht eine Variable logpath, soll die auf das in 2 gemountete Verzeichnis verweisen oder soll hier der komplette Pfad /volume1/.../überwachteanwendung.log rein?
Wenn ich fail2ban starte, dann überprüfe ob der Service läuft kommt sorry but the jail überwachteanwendung daoesnt exist.
Ihr könnte ja mal schreiben, was hier nicht stimmt. Danke!
 

Janüscht

Benutzer
Mitglied seit
13. Sep 2020
Beiträge
147
Punkte für Reaktionen
40
Punkte
28
Ich mounte das Logfile als ro gleich mit in den Container. Einen .yaml brauche ich nicht dafür.
Die Daten, die angeben sind, müssen natürlich vorhanden sein, ansonsten gibt es eine Fehlermeldung.

Für welchen Container willst du denn fail2ban einsetzen?

Mein fail2ban Container mit Vaultwarden sie so aus:
Code:
docker run -d --name=fail2ban \
-v /volume1/docker/fail2ban/data:/data \
-v /volume1/docker/vaultwarden/data/vaultwarden.log:/log/vaultwarden.log:ro \
-e F2B_DB_PURGE_AGE=30d \
-e TZ=Europe/Berlin \
--restart always \
--net=host \
--cap-add NET_ADMIN \
--cap-add NET_RAW \
crazymax/fail2ban:latest
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat