iptables Überprüfung meiner Config

  • Hallo liebes Forum,

    ich bin neu hier und habe seit kurzem einen RPi2 und nutze raspbian als Betriebssystem. Auf meinem System läuft eine Cloud und MPD. Ich bin Linux Neuling.

    Da ich nach einiger Frickelei alles eingerichtet bekommen habe, wollte ich mein System jetzt absichern. Dazu habe ich eine Anleitung aus dem Netz für iptables genutzt.

    Könnt ihr als Profis meine iptables Config überprüfen? Ich wollte Port 80,443,1600 und 6600 von außen zugänglich machen und alles schädliche draußen halten.

    Die Ausgabe meiner iptables -L lautet zur Zeit:

    Es kommt mir so vor als wäre zumindest der letzte Eintrag doppelt, aber eigentlich habe ich den nicht selbst eingerichtet. Denke der kommt direkt von fail2ban um mein SSH Zugriff abzusichern.

    Ich hoffe ihr könnt euch das mal ansehen.

    Grüße,
    sonic


  • ... alles schädliche draußen halten.

    ..., aber eigentlich habe ich den nicht selbst eingerichtet. ...

    Das "Schädliche" könnte aber über die Ports kommen, die Du von außen zugänglich gemacht hast. M. E. ist es nicht gut wenn man ein iptables-Script aus dem Internet benutzt und nicht weiß wie iptables funktioniert bzw. nicht weiß wie dieses Script funktioniert. Besser wäre es, wenn man sich auf die Konfiguration der Server (... die für den Zugang aus dem Internet freigegeben sind,) konzentriert. Ich denke es gibt hier im Forum (... und im Internet) entsprechende Tutorials (... und auch Hilfe über einen Thread), für solche Konfigurationen und Absicherungen der Server. Wenn das erledigt ist, dann kann man auch fail2ban und einige iptables-Regeln (wenn es sein muss) einrichten.

    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

    Einmal editiert, zuletzt von rpi444 (9. April 2015 um 14:04)

  • Da hast du natürlich Recht. Die Owncloud und MPD sind aber eigentlich gemäß den Tutorials, die ich gelesen habe, entsprechend eingerichtet. Den SSH Zugriff über das Netz brauche ich nur, solange ich noch bei der Einrichtung bin, da ich nicht immer direkt vor Ort bin. Port 80 wird zur Zeit eigentlich nicht genutzt von außen und sollte daher eigentlich auch bald rausgenommen werden.

    Ich habe mir erhofft, mit dieser Config erstmal nicht ganz ungeschützt unterwegs zu sein und nur die Ports offen zu haben, die ich benötige.


  • Ich habe mir erhofft, mit dieser Config erstmal nicht ganz ungeschützt unterwegs zu sein und nur die Ports offen zu haben, die ich benötige.

    OK. Schau mal auf deinem Pi, z. B. mit:

    Code
    sudo netstat -tulpen


    welche Ports aus dem Internet erreichbar sind und vergleiche diese (offenen) Ports mit den Ports die Du benötigst.

    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

  • ...OK. Schau mal auf deinem Pi, z. B. mit:

    Code
    sudo netstat -tulpen


    welche Ports aus dem Internet erreichbar sind und vergleiche diese (offenen) Ports mit den Ports die Du benötigst.

    Wäre wohl besser einen Kumpel von extern den Test durchführen zu lassen, denn der TE hat sicherlich noch einen Router mit FW davor ... oder nicht sonic123 :-/

  • Code
    ACCEPT     all  --  anywhere             anywhere

    Danach ist der Drops gelutscht und alle Ports offen.

    Zeig mal das Script welches den Netfilter konfiguriert.
    sollte so aussehen :

    EDIT:
    Wenn du den PI hinter einem Router hast brauchst du die iptables nicht.
    Fail2Ban ist eine gute Idee, wenn du Owncloud laufen hast kannst du auch eine Regel für OC in Fail2Ban erstellen.

    ** Für OC 7.0.4 **
    sudo nano /etc/fail2ban/jail.conf
    dort einfügfen :

    Code
    [owncloud]
    enabled = true
    filter = owncloud
    port = http,https
    action = iptables-multiport[blocktype="REJECT –reject-with icmp-port-unreachable", name="owncloud", port="80,443", protocol="tcp", chain="INPUT"]
    logpath= /var/www/owncloud/data/owncloud.log
    maxretry = 3
    bantime = 180

    sudo nano /etc/fail2ban/filter.d/owncloud.conf

    Code
    #
    #
    #
    [Definition]
    failregex={.*"app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>', X-Forwarded-For: '.*'\)","level":2,"time":".*"}
    Ignoreregex=

    Fail2ban neu starten und fertig ;)

    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.

    Einmal editiert, zuletzt von Der_Imperator (10. April 2015 um 08:14)


  • Wäre wohl besser einen Kumpel von extern den Test durchführen zu lassen, ...

    Aber es geht doch um evtl. offene Ports seines Pi und nicht seines Routers.

    Was passiert hier wenn die default policy der OUTPUT chain auf DROP ist? Da kommt doch nichts mehr aus dem Pi raus.

    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

    Einmal editiert, zuletzt von rpi444 (10. April 2015 um 08:17)

  • Aber es geht doch um evtl. offene Ports seines Pi und nicht seines Routers.

    netstat bringt hier gar nix.
    Zeigt dir nur die Ports von Programmen, nicht den Status der Firewall.
    Du musst schon von einem externen Rechner aus versuchen.
    Entweder aus dem LAN oder gleich aus dem WAN.

    Auch mit aktivem DROP auf port 80 siehst du im Netstat das der Apache auf 80 lauscht.

    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.


  • Zeigt dir nur die Ports von Programmen, nicht den Status der Firewall.

    Un genau das will ich sehen, die offenen Ports der Programme und nicht den Status der Firewall. Ich hab einen Pi direkt im Internet, ohne iptables. Wo nicht gelauscht wird ist auch nichts offen und wo nichts offen ist, muss ich mit iptables auch nichts blocken.

    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


  • Was passiert hier wenn die default policy der OUTPUT chain auf DROP ist? Da kommt doch nichts mehr aus dem Pi raus.

    Stimmt, mein Fehler.
    War aus einem FORWARD Script. Sorry.

    So wird es was :

    Un genau das will ich sehen, die offenen Ports der Programme und nicht den Status der Firewall. Ich hab einen Pi direkt im Internet, ohne iptables. Wo nicht gelauscht wird ist auch nichts offen und wo nichts offen ist, muss ich mit iptables auch nichts blocken.

    Schön.

    Ich habe meine Server z.B. hinter einer Firewall.
    Da ist nur 443 offen, 80 geht nur im LAN.

    Und nu ?

    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.

    Einmal editiert, zuletzt von Der_Imperator (10. April 2015 um 08:26)


  • Ich habe meine Server z.B. hinter einer Firewall.
    Da ist nur 443 offen, 80 geht nur im LAN.

    Und nu ?

    Mein 2. Pi ist auch an einer FritzBox.
    Nichts gegen iptables bzw. gegen Firewalls und auch nichts gegen das Absichern (blocken) von Ports auf denen nicht gelauscht wird. Dann wird der nicht lauschende Port, nach außen evtl. (je nach Firewall) nicht als closed sondern als filtered angezeigt. ;)
    Ich meinte nur, dass man sich hauptsächlich auf die (richtige) Konfiguration der "immer offenen Ports" konzentrieren sollte und nicht meinen soll, "alles Schädliche bleibt draußen", weil man jetzt mit iptables nicht lauschende Ports "gesperrt/geblockt" hat.

    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

    Einmal editiert, zuletzt von rpi444 (10. April 2015 um 08:57)

  • Hier das Ergebnis von netstat -tulpen:

    Port 80 habe ich vorher aus der iptables Config rausgenommen. Den brauche ich bisher von außen nicht.

    Das ganze läuft hinter einer FritzBox, Portforwarding für Port 443, 1600 und 6600 sind eingerichtet.

    Meint ihr ich kann mir die iptables sparen, wenn ich ein richtig konfiguriertes fail2ban nutze oder nicht?

    Sind die Eingaben meiner Config grundsätzlich falsch und es würde doch alles durch kommen? WG "Drops geputscht"?

    Schon mal Danke für eure Antworten :)

    Grüße, Sonic


  • Port 80 habe ich vorher aus der iptables Config rausgenommen. Den brauche ich bisher von außen nicht.

    Kannst Du den Port 80 deines Pi, jetzt aus dem (W)LAN noch erreichen (... mit der default policy der INPUT chain auf DROP)? Wenn nicht dann nicht rausnehmen. Evtl. brauchst Du in der INPUT chain (... wenn die default policy auf DROP) auch die Regel:

    Code
    /sbin/iptables -I INPUT 1 -m state --state ESTABLISHED,RELATED -j ACCEPT


    damit der dhclient, ntpd und evtl. auch dns (je nach Konfiguration) eine Antwort bekommen können.


    Das ganze läuft hinter einer FritzBox, ...

    BTW: Hast Du die "Befehlsgewalt" über diese FritzBox? Bei mir herrscht Routerzwang. Beim letzten FB-Bug hat mein Provider 3 Wochen gewartet (gebraucht), bis er die neue Firmware geflasht hat. Da war mein Pi, der direkt im Internet hängt, schon lange auf dem neuesten Stand. D. h., Router ist nicht gleich Router.

    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

    Einmal editiert, zuletzt von rpi444 (10. April 2015 um 09:42)


  • ...Port 80 über LAN...

    Müsste ich von zuhause aus nachher mal testen. Brauche ich diesen denn zwingend offen? Wollte nur die Ports für SSH 1600, MPD 6600 und Owncloud 443 öffnen, da ich dachte das genügt.


    BTW: Hast Du die "Befehlsgewalt" über diese FritzBox?

    Also es ist meine FritzBox und ich habe auch den Zugriff darauf. Oder meinst du etwas anderes?

    Einmal editiert, zuletzt von sonic123 (10. April 2015 um 10:26)


  • Oder meinst du etwas anderes?

    Nein nein, das war auch nur eine Frage/Hinweis am Rande, betr. die "Sicherheit" hinter einem Router.


    Brauche ich diesen denn zwingend offen?

    Wie meinst Du das jetzt? Als lauschender Port des Servers oder geöffnet mit iptables? Wenn als Server, dann solltest Du es ja wissen, warum Du diesen Server so konfiguriert hast.

    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

    Einmal editiert, zuletzt von rpi444 (10. April 2015 um 10:27)


  • Wie meinst Du das jetzt? Als lauschender Port des Servers oder geöffnet mit iptables? Wenn als Server, dann solltest Du es ja wissen, warum Du diesen Server so konfiguriert hast.

    Da ich davon ausgehe, dass ich Port80 für SSH, MPD und Owncloud nicht brauche, wollte ich ihn nicht öffnen. Ist doch richtig oder?

    Zeig mal das Script welches den Netfilter konfiguriert.
    sollte so aussehen

    Folgendes Einstellungen werden per pre-up beim Neustart geladen:

    Einmal editiert, zuletzt von sonic123 (10. April 2015 um 10:58)


  • Da ich davon ausgehe, dass ich Port80 für SSH, MPD und Owncloud nicht brauche, wollte ich ihn nicht öffnen. Ist doch richtig oder?

    Lt. deiner Ausgabe von "sudo netstat -tulpen", lauscht auf deinem Pi, lighttpd (richtigerweise) auf Port 80 (www). Wie und warum (... Owncloud?) Du lighttpd installiert hast bzw. von wo bzw. wie lighttpd erreichbar sein soll, musst Du wissen.

    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

    Einmal editiert, zuletzt von rpi444 (10. April 2015 um 11:20)

  • Sieht doch gut aus.
    ich denke dass das $ in dieser Zeile nur reingerutscht ist ?
    Ansonsten bitte das $ entfernen.

    Code
    $-A INPUT -p udp -m conntrack --ctstate NEW -j UDP


    Du brauchst dur die Ports zu öffnen welche du auch benötigst.
    Wenn dein Webserver auf 80 & 443 hört, du 80 aber nicht brauchst, dann lass ihn einfach zu.

    Du brauchst die iptables allerdings nur wenn dein PI direkt am Internet hängt oder in deinem Router als Exposed Host (DMZ) eingetragen ist.
    Wenn du den PI hinter deinem Router hast und im Router die Ports weiterleitest benötigst du iptabels normalerweise nicht. Das macht dann der Router für dich.

    Schaden tut es jedenfalls nicht ;)

    Du kannst auch Ports nur für das Heimnetz öffnen.
    Das würde dann so aussehen :

    Code
    -A TCP -p tcp -m tcp --src 192.168.178.0/24 --dport 80 -j ACCEPT

    Dann werden nur IP's mit der Adresse aus dem 192.168.178.0/24 Netz durchgelassen.

    Lies dir das mal durch, das ist einfach geschrieben und sehr leicht zu verstehen ;)
    http://64-bit.de/dokumentatione…BLES-HOWTO.html

    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!