iptables soll nur VPN erlauben

  • Hallo,

    ich habe keine Ahnung von iptables vielleicht kann mir da wer helfen, ich würde gerne jeglichen traffic blockieren (ein und ausgehenden) ausgenommen er geht über die VPN Verbindung, geht das ?
    Lokale IPs würde ich gerne weiterhin alle erlauben und einige Ports würde ich jedoch auch noch ein und ausgehenden traffic erlauben.

    Kann mir da wer helfen ?

  • Zitat von "ruedigerp" pid='291700' dateline='1500555545'


    Was ist das für ein VPN? Wenn IPSec sag dem Client in der Server Config er soll jeden Traffic über IPSec senden.

    OpenVPN.
    Zu der Config: Was ist wenn mal ein Verbindungsunterbrechung ist, ich will das da alles blockiert und er nicht mehr wieder aufbauen kann außer eine neue VPN Verbindung.

    Einmal editiert, zuletzt von djkobi (20. Juli 2017 um 15:19)

  • Zitat von "djkobi" pid='291699' dateline='1500555427'


    ... jeglichen traffic blockieren (ein und ausgehenden) ...

    ... einige Ports würde ich jedoch auch noch ein und ausgehenden traffic erlauben.

    Welche "einige Ports" wären das?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Ich gehe jetzt mal davon aus das auf dem PI der VPN Client läuft und da dann die genannten Ports raus dürfen + lokales Netz + Fallback für SSH falls an den Regeln etwas nicht passt und man trotzdem noch drauf kommt.
    OpenVPN Port habe ich jetzt mal 1194 genommen. Vorsichtshalber mal bei TCP und UDP gesetzt, stand ja nirgenwo ob Du jetzt UDP oder TCP benutzt und auf welchen Port Du den laufen hast.

  • Danke das sieht schon mal Gut aus, bevor ich es eingebe mächte ich mich noch vergewissern das ich dann gleich noch Zugang habe, darum noch ein paar Fragen:
    1. Meine lokale IP fängt mit 10.0.0.* an soll ich das abändern ?
    2.Das sind ganz normale Kommandos die ich ausführe oder ? das wird nicht in eine Konfi geschrieben, sorry das ich frage habe noch nie mit iptables gearbeitet.
    3. Das Fallback habe ich noch nicht ganz verstanden, warum fügt man den SSH Port nicht so wie die anderen Ports auch hinzu, warum wird das gesondert mit -I gemacht, wo ist der Unterschied von Fallback und ganz normal einen Port akzeptieren ?
    4. So müsste das jetzt eigentlich funktionieren oder fehlt da noch ein wichtiger Port damit eine Verbindung zustande kommt, es sollte eine VPN Verbindung aufbauen können und wenn diese besteht soll man ganz normal alle Internet Services nutzen können, da es ja über OpenVPN geht oder muss ich noch was hinzufügen ?
    5. Ist der DNS Port überhaupt notwendig ?

    Danke für die Antwort

    Einmal editiert, zuletzt von djkobi (20. Juli 2017 um 16:38)

  • 1. Ja Netz musst du dann anpassen. 10.0.0.0/24
    2. Ja normale Commands. Kannst du dann später auch in ein Script packen. Oder iptables-save und iptables-restore benutzen.
    3. Ich packe mir gerne als erste Rule immer eine Zeile ein mit der ich wenigstens mit ssh auf die Kiste komme. Falls man sich vertippt oder sonst wie falsch macht sperrt man sich halt nicht aus.
    4. Da dann noch eine Role machen die alle Services über das VPN Interface erlaubt.

  • Danke für die Antwort.

    Zu
    2: iptables Einstellungen sind konstant oder muss man es nach jedem restart neu eingeben ?
    4. Wie würde so eine Role aussehen ? wie gesagt keine Ahnung von iptables : (
    5.Ist der DNS Port überhaupt notwendig, oder sollte das eigentlich nicht eh über VPN laufen, oder wird es zum verbinden benötigt ?

  • Zitat von "ruedigerp" pid='291731' dateline='1500561737'


    4. Da dann noch eine Role machen die alle Services über das VPN Interface erlaubt.

    Wie würde so etwas funktionieren ?
    Weil momentan kann es sich zwar mit der VPN verbinden, jedoch komme ich dann drotzem nicht mit raus ins Internet.

  • Du blockierst ja gerade alles dementsprechend kommst du nur VPN rein so wie es ja sein soll, dementsprechend müsste auch dein Outbound gesperrt sein, den musst du einfach wieder freigeben.

    Code
    iptables -P OUTPUT ACCEPT

    EDIT:

    OK vergiss es, hab jetzt erst richtig gelesen das du acuh traffic nach außen sperren willst


    EDIT 2:
    ist dein router mit freigegeben?

    Einmal editiert, zuletzt von xRay33 (22. Juli 2017 um 22:14)

  • Zitat von "xRay33" pid='292022' dateline='1500753951'


    Du blockierst ja gerade alles dementsprechend kommst du nur VPN rein so wie es ja sein soll, dementsprechend müsste auch dein Outbound gesperrt sein, den musst du einfach wieder freigeben.

    Code
    iptables -P OUTPUT ACCEPT

    EDIT:

    OK vergiss es, hab jetzt erst richtig gelesen das du acuh traffic nach außen sperren willst


    EDIT 2:
    ist dein router mit freigegeben?


    Ja ist freigegeben, momentan bekomme ich mit oder auch ohne den iptables settings diese Meldung wenn ich zmb einen Ping mache: ping: sendmsg: Operation not permitted
    Wie schafe ich das der komplette Traffic über die VPN geht, um das gehts auch, es soll der Traffic nur über die VPN oder die paar freigeschaltenen Ports gehen.

  • Zitat von "djkobi" pid='292023' dateline='1500754611'


    Wie schafe ich das der komplette Traffic über die VPN geht, ...

    BTW: Der "komplette" Traffic kann nicht über die VPN gehen. Denn es wird z. B. auch ein gateway/Route außerhalb des VPN benötigt, um das VPN überhaupt zu ermöglichen bzw. herzustellen. ... und der Traffic ins (W)LAN muss auf nicht über das VPN gehen.

    Wenn Du den Internettraffic über das VPN leiten willst, dann brauchst Du eine default route mit dem VPN-Interface (tunx ?) als gateway.

    Du hast dich noch nicht dazu geäußert, ob den PI der VPN-Client ist. Wenn ja, wie ist auf deinem PI, die Ausgabe von:

    Code
    route -n


    , bei vorhandener VPN-Verbindung zum VPN-Server?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Zitat von "rpi444" pid='292025' dateline='1500755977'


    Du hast dich noch nicht dazu geäußert, ob den PI der VPN-Client ist. Wenn ja, wie ist auf deinem PI, die Ausgabe von:

    Code
    route -n


    , bei vorhandener VPN-Verbindung zum VPN-Server?


    Der Pi ist der VPN-Cleint und so sieht route -n bei aktivierter VPN Verbindung aus:

    0.0.0.0 10.3.126.254 0.0.0.0 UG 0 0 0 tun0
    10.0.0.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
    10.3.126.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
    *VPN-IP* 10.0.0.138 255.255.255.255 UGH 0 0 0 eth0

  • Zitat von "djkobi" pid='292036' dateline='1500761032'


    Der Pi ist der VPN-Cleint und so sieht route -n bei aktivierter VPN Verbindung aus:

    Code
    0.0.0.0         10.3.126.254    0.0.0.0         UG    0      0        0 tun0
    10.0.0.0        0.0.0.0         255.255.255.0   U     202    0        0 eth0
    10.3.126.0      0.0.0.0         255.255.255.0   U     0      0        0 tun0
    *VPN-IP*     10.0.0.138      255.255.255.255 UGH   0      0        0 eth0

    Die default route über das tun0-Interface ist vorhanden. Funktioniert jetzt von deinem PI (als VPN-Client), ein Ping bzw. ein Scan ins Internet, über das tun0-Interface?

    Code
    sudo tcpdump -c 40 -vvveni tun0 host 8.8.8.8 and tcp port 53 or icmp
    Code
    ping -c 3 -W 2 8.8.8.8
    nc -zv 8.8.8.8 53


    ... und die Ausgabe von:

    Code
    sudo iptables -nvx -L


    ?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Zitat von "rpi444" pid='292051' dateline='1500797264'


    Die default route über das tun0-Interface ist vorhanden. Funktioniert jetzt von deinem PI (als VPN-Client), ein Ping bzw. ein Scan ins Internet, über das tun0-Interface?

    Code
    sudo tcpdump -c 40 -vvveni tun0 host 8.8.8.8 and tcp port 53 or icmp
    Code
    ping -c 3 -W 2 8.8.8.8
    nc -zv 8.8.8.8 53


    ... und die Ausgabe von:

    Code
    sudo iptables -nvx -L


    ?

    Zu tcpdump: es ist am listening aber es kommt nichts zurück.
    Zu ping -c 3 -W 2 8.8.8.8: "ping: sendmsg: Operation not permitted", gleiches Ergebnis auch mit sudo

    Zu: nc -zv 8.8.8.8 53 "Connection to 8.8.8.8 53 port [tcp/domain] succeeded"

    Zu iptables: https://hastebin.com/ugirurijor.nginx

    Vielen Dank für eine Antwort

    Einmal editiert, zuletzt von djkobi (6. August 2017 um 17:44)

  • Zitat von "djkobi" pid='294259' dateline='1502034196'


    Zu tcpdump: es ist am listening aber es kommt nichts zurück.

    Zu: nc -zv 8.8.8.8 53 "Connection to 8.8.8.8 53 port [tcp/domain] succeeded"

    Da tcpdump für das tun0-Interface nichts anzeigt, geht der Scan zum Port 53 im Internet, z. Zt. nicht über das tun0-Interface.

    Zitat von "djkobi" pid='294259' dateline='1502034196'

    Keine Anzeige bzw. der Link ist nicht brauchbar. Evtl. im spoiler, hier posten.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Dazu braucht es kein iptables, das kann OpenVPN von Haus aus.

    Was du ausschalten möchtest nennt sich Split Tunneling.
    Du möchtest allen Traffic über das VPN routen, also keinen Split Tunneling.
    Dazu reicht ein
    push "redirect-gateway def1"
    in der OpenVPN Server Config.
    Damit wird jedweder Traffic über das VPN geroutet.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!