eigentlich will ich ja auch nur das interface tun0 limitieren, alles andere was vom internen netz auf den Server zugreifen möchte, das wollte ich ja gar nicht mit iptables begrenzen.
Kann man das irgendwie so einstellen, das die Iptableregeln nur das Interface tun0 betreffen?
Und das alles was über eth0 rein und raus geht, das soll nicht geblockt werden.
Openvpn Zugriff im Netzwerk mit IPtables beschränken
Re: Openvpn Zugriff im Netzwerk mit IPtables beschränken
Das könnte man alles mit einem Regelsatz erschlagen.ddtobi hat geschrieben:Ich habe ja noch eine Firewall die das gesamte Netzt nach ausen schützt, da ist natürlich nur www zum Webserver und vpn zugelassen.
Dafür sind aber nicht die OUTPUT-Regeln da sondern die INPUT-Regeln und/oder die FORWARD-Regeln.Aber ich möchte natürlich im INTERNEN Netzt diverse Dienste auf dem Server erreichen, deshalb habe ich das da in die IPtables mit rein genommen.
Wenn die Clients, die sich per VPN mit dem Server verbinden, dann weiter ins Internet wollen, also z.B. http://www.google.com via VPN durch deinen Server aufrufen wollen, muß man eine entsprechende Regel dafür definieren.Welche Forward regeln fehlen deiner Meinung nach noch?
Man kann, besonders sinnvoll wäre das aber nicht. Eine Firewall sollte nach dem Whitelisting-Prinzip funktionieren, also alles verbieten ausser das, was wiklich nötig ist. Und nicht nach dem Blacklisting-Prinzip, bei dem alles erlaubt ist ausser das, was man explizit verbietet. Blacklisting bedeutet immer, daß wenn es links nicht geht, macht man einen Umweg rechts um den Häuserblock und kommt dann trotzdem dahin, wo man eigentlich nicht hin dürfte.Kann man das irgendwie so einstellen, das die Iptableregeln nur das Interface tun0 betreffen?
Und das alles was über eth0 rein und raus geht, das soll nicht geblockt werden.
Ganz konkret wäre es unsinig, SSH via tun0 (also OpenVPN) zwar nur für eine IP-Adresse zuzulassen, wenn man mit SSH ohne VPN via eth0 auf die Kiste käme.
Es wäre (für mich) leichter, wenn du aufzählen würdest, welche Dienste über welche Schnittstelle erreichbar sein sollen, dann kann man dazu auch ein deutlich lesbareres Regelskript verfassen.
-
- Beiträge: 19
- Registriert: 17.02.2012 07:16:20
- Lizenz eigener Beiträge: GNU General Public License
Re: Openvpn Zugriff im Netzwerk mit IPtables beschränken
Danke für deine Denkanstöse.
Prinzipiell hast du ja recht mit dem Whitelistingprinzip aber das mache ich ja schon an meiner Äusseren Firewall. Die Firewall auf dem Server brauche ich ja nur, damit die VPN Nutzer nicht in mein Internes Netzwerk kommen aber denn noch ins Internet können. Und weiterhin nur ein festgelegter Rechner IM VPN Netz SSH auf ALLE VPN Clients machen kann.
Der Server an sich, auf dem der OpenVpn Server läuft, bietet im Internen Netzwerk (eth0: 192.168.111.0/24) folgende Dienste an:
- Webserver (80,8080,443)
- SSH (22)
- Icinga2 (5665)
- Samba
- Logserver
hilft das weiter?
Gruß Tobi
Prinzipiell hast du ja recht mit dem Whitelistingprinzip aber das mache ich ja schon an meiner Äusseren Firewall. Die Firewall auf dem Server brauche ich ja nur, damit die VPN Nutzer nicht in mein Internes Netzwerk kommen aber denn noch ins Internet können. Und weiterhin nur ein festgelegter Rechner IM VPN Netz SSH auf ALLE VPN Clients machen kann.
Der Server an sich, auf dem der OpenVpn Server läuft, bietet im Internen Netzwerk (eth0: 192.168.111.0/24) folgende Dienste an:
- Webserver (80,8080,443)
- SSH (22)
- Icinga2 (5665)
- Samba
- Logserver
hilft das weiter?
Gruß Tobi
Re: Openvpn Zugriff im Netzwerk mit IPtables beschränken
Moin
Weil ich mich auch gerade erstmalig mit den Iptables beschäftige habe ich mir mal Dein Monsterscript angesehen und mich gefragt, welcher Nicht-Fachmann kann da noch den Überblick behalten? Müsste das nicht viel einfacher gehen..... mit wenigen kurzen Regeln...
- Regel 1 erlaubt den Clients aus dem VPN-Netz/24 den FORWARD auf den LAN-Router(-IP) für den Internetzugang
- Regel 2 erlaubt den Clients aus dem -s VPN/24 den FORWARD auf den -d Server(-IP)
- Regel 3 erlaubt der MAC aus Berlin den FORWARD auf alle Clients des -d VPN-Netzes/24
- Regel 4 erlaubt der MAC aus Berlin den Zugriff auf alle Clients des -d LAN/24
- Regel 5 DROP't -s VPN/24 -d LAN/24
- Regel 6 DROP't -s VPN/24 -d VPN/24
Dazu noch MASQUERADE für NAT und eigentlich müsste das dann doch wie gewollt funktionieren Im Moment, bei dem was ich bisher (glaub ich) verstanden habe, braucht es doch für diesen speziellen Zweck gar keine INPUT- oder OUTPUT-Regeln, da es sich hier doch immer um geroutete Pakete handelt, also alles, was mit der FORWARD-Chain gehandelt wird.
Weil ich mich auch gerade erstmalig mit den Iptables beschäftige habe ich mir mal Dein Monsterscript angesehen und mich gefragt, welcher Nicht-Fachmann kann da noch den Überblick behalten? Müsste das nicht viel einfacher gehen..... mit wenigen kurzen Regeln...
- Regel 1 erlaubt den Clients aus dem VPN-Netz/24 den FORWARD auf den LAN-Router(-IP) für den Internetzugang
- Regel 2 erlaubt den Clients aus dem -s VPN/24 den FORWARD auf den -d Server(-IP)
- Regel 3 erlaubt der MAC aus Berlin den FORWARD auf alle Clients des -d VPN-Netzes/24
- Regel 4 erlaubt der MAC aus Berlin den Zugriff auf alle Clients des -d LAN/24
- Regel 5 DROP't -s VPN/24 -d LAN/24
- Regel 6 DROP't -s VPN/24 -d VPN/24
Dazu noch MASQUERADE für NAT und eigentlich müsste das dann doch wie gewollt funktionieren Im Moment, bei dem was ich bisher (glaub ich) verstanden habe, braucht es doch für diesen speziellen Zweck gar keine INPUT- oder OUTPUT-Regeln, da es sich hier doch immer um geroutete Pakete handelt, also alles, was mit der FORWARD-Chain gehandelt wird.
Re: Openvpn Zugriff im Netzwerk mit IPtables beschränken
Ich habe mir dein Problem noch einmal von einer anderen Seite überlegt.
Wenn ich das richtig verstehe, willst du ja eigentlich nur, daß deine Benutzer keine interaktive Loginshell bekommen. Das kann man sehr einfach erreichen, in dem du deinen Nutzern keine Loginshell wie bash gibts sondern sie in der /etc/passwd aud /bin/false setzt. Für Dienste wie FTP oder .htaccess können sich deine Benutzer dann immer noch autentifizieren, bekommen aber kein Login mehr. Ein SSH-Login wird dann automatisch auch unmöglich. Ein paar Benutzer, du und deine Admins, darfst du natütlich nich aussperren, die brauchen weiterhin eine Loginshell (/bin/bash).
Eine weitere Sicherheitsmaßname kann eine Beschränkung des SSH-Dienstes sein. Du könntest z.B. das Paßwort-Login verbieten und nur Login über Schlüssel zulassen. Der entsprechende Eintrag in der /etc/ssh/ssd_config lautet:
Auch Root-Login läßt sich sperren:
Der SSH-Dienst läßt sich auch auf bestimmte Benutzer beschränken:
oder auch noch restrictiver, nur User von einer bestimmten IP-Adresse:
Natürlich könnte man mit iptables auch einiges ausrichten. Da du aber eine "äußere" Firewall hast, über die ich kein Urteil abgeben kann, müßten oben genannte Maßnahmen reichen, deinen VPN-Server ausreichend abzusichern.
Wenn ich das richtig verstehe, willst du ja eigentlich nur, daß deine Benutzer keine interaktive Loginshell bekommen. Das kann man sehr einfach erreichen, in dem du deinen Nutzern keine Loginshell wie bash gibts sondern sie in der /etc/passwd aud /bin/false setzt. Für Dienste wie FTP oder .htaccess können sich deine Benutzer dann immer noch autentifizieren, bekommen aber kein Login mehr. Ein SSH-Login wird dann automatisch auch unmöglich. Ein paar Benutzer, du und deine Admins, darfst du natütlich nich aussperren, die brauchen weiterhin eine Loginshell (/bin/bash).
Eine weitere Sicherheitsmaßname kann eine Beschränkung des SSH-Dienstes sein. Du könntest z.B. das Paßwort-Login verbieten und nur Login über Schlüssel zulassen. Der entsprechende Eintrag in der /etc/ssh/ssd_config lautet:
Code: Alles auswählen
PasswordAuthentication no
Code: Alles auswählen
PermitRootLogin no
Code: Alles auswählen
AllowUser user1 user2
Code: Alles auswählen
AllowUsers = User@192.168.123.45