Abusemeldung erhalten

  • Mal ne blöde Frage: Warum macht ihr kein Port-Whitelisting um sicherzustellen, dass nur exakt die Ports aus dem Internet erreichbar sind, die ihr explizit freigegeben habt? Das würde nämlich verhindern, dass so ein blöder RPC-Dienst auf 0.0.0.0 lauscht && von außen erreichbar ist weil er entweder schon standardmäßig in der Distribution aktiviert war oder in der Zwischenzeit mit einem anderen Dienst mitinstalliert wurde, ohne dass ihr es gesehen habt. :)

  • Danke für den Tipp und den Link. Ich versuche das so zu konfigurieren :thumbsup:


    EDIT:
    Ich glaube es hat funktioniert. Gibt es eine Möglichkeit zu überprüfen, ob es geklappt hat?

  • EDIT:
    Ich glaube es hat funktioniert. Gibt es eine Möglichkeit zu überprüfen, ob es geklappt hat?


    Hi. Im Prinzip schon: Wenn du zum Beispiel nur den SSH-Port freigegeben hast könntest du gucken, ob Verbindungsversuche zu allen anderen Ports, die ein Dienst sonst noch nach außen hin aufgemacht hat (die aber jetzt durch das Whitelisting von außen nicht mehr erreichbar sind), noch funktionieren. Da alle Verbindungsversuche auf nicht-freigegebene Ports gedroppt werden solltest du keine Antwort mehr von irgendeinem anderen Port bekommen wenn du zum Beispiel nc hostname port von außerhalb ausführst.

  • Gute Idee, das versuche ich gleich.
    Wenn ich das Skript ein 2. mal ausführe, dann werden alle Whitelistening Regeln wieder entfernt, richtig?
    Tatsächlich sind jetzt aus meiner Sicht mehr Regeln gesetzt als ich in dem Skript definiert habe.



    iptables -S
    -P INPUT DROP
    -P FORWARD ACCEPT
    -P OUTPUT ACCEPT
    -N WHITELIST
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -j WHITELIST
    -A INPUT -s 192.168.1.0/24 -j ACCEPT
    -A WHITELIST -p tcp -m tcp --dport 22 -j ACCEPT
    -A WHITELIST -p tcp -m tcp --dport 80 -j ACCEPT
    -A WHITELIST -p tcp -m tcp --dport 443 -j ACCEPT
    -A WHITELIST -p tcp -m tcp --dport 8080 -j ACCEPT
    -A WHITELIST -p tcp -m tcp --dport 8445 -j ACCEPT
    -A WHITELIST -p tcp -m tcp --dport 5222 -j ACCEPT
    -A WHITELIST -p tcp -m tcp --dport 5269 -j ACCEPT
    -A WHITELIST -p udp -m udp --dport 9987 -j ACCEPT
    -A WHITELIST -p tcp -m tcp --dport 30033 -j ACCEPT
    -A WHITELIST -p tcp -m tcp --dport 10011 -j ACCEPT
    -A WHITELIST -p tcp -m tcp --dport 41144 -j ACCEPT


    Die Ports 22, 80, 443, 8080, 8445 habe ich im Skript in das WHITELISTENING Array geschrieben.


    Danke

  • Ja, das sieht richtig so aus. Wenn du allerdings die Beispielports für TeamSpeak und XMPP nicht geöffnet haben willst, dann entfernst du die natürlich aus dem WHITELISTING-Array. Da kommen nur die Ports rein, die du wirklich aufhaben willst. Die anderen Regeln sind dazu da, dass zum Beispiel Verbindungen auf das Loopback-Interface auf 127.0.0.1 nicht gedroppt werden. Das ist richtig so. Allerdings:


    Zitat

    -A INPUT -s 192.168.1.0/24 -j ACCEPT


    Dieses Subnetz könntest du noch ändern auf das von Netcup damit die Kommunikation mit dem Gateway und anderen Diensten im lokalen Netzwerk nicht gestört werden. Die Subnetzmaske(n) kannst du über ip addr show eth0 herausfinden.

  • Danke für die Hilfe.
    Es hat alles geklappt, ich konnte es auch testen.


    Ich war ganz fixiert auf die HTTP ports, deswegen hatte ich die übrigen Beispielports versehentlich noch drinnen gelassen - sorry :-)


    Ah, OK. Aber noch zu deiner anderen Frage, die ich vergessen habe zu beantworten:


    Wenn du das Skript erneut ausführst entfernt es nur temporär während der Skriptlaufzeit alle Regeln und Chains, nur um sie dann wieder hinzuzufügen. Es könnte ja sein, dass du zum Beispiel in Zukunft einen weiteren Port hinzufügen willst. Dann fügst du den Port zu dem WHITELISTING-Array hinzu, führst das Skript erneut aus, und der zusätzliche Port ist auf der Whitelist. Ich habe noch keinen automatischen Mechanismus zum Deinstallieren eingebaut (wollte ich schon seit längerer Zeit mal machen - ich glaub, ich mach das mal bald). Wenn du alles wieder entfernen willst kannst du dir ein kleines Reset-Skript schreiben:


  • Das wundert mich.
    Ich habe vorhin das Skript mit meinem + Beispielports laufen lassen. Anschließend habe ich die Beispielports entfernt und es wieder laufen lassen, dann waren nur die definierten Ports unter iptables -S zu sehen?


    Danke für das Skript, ich glaube aber es ging schon ohne.

  • Das wundert mich.
    Ich habe vorhin das Skript mit meinem + Beispielports laufen lassen. Anschließend habe ich die Beispielports entfernt und es wieder laufen lassen, dann waren nur die definierten Ports unter iptables -S zu sehen?


    Ja, genau so meinte ich es auch. Lies nochmal, vielleicht hast du es falsch verstanden. Das Reset-Skript wäre nur notwendig wenn du ALLES wieder entfernen willst.

  • hallo,

    das script funktioniert allerdings nicht bei den älteren vservern, da die keinen direkten iptables support haben! was dann? nur mühsam über vcp?

    Du kannst in deinen Mount-Optionen für NFS die Option "nolock" (https://www.centos.org/docs/5/…lient-config-options.html) hinzufügen. Anschließend kannst du den alle Services, die etwas mit RPC zu tun haben, maskieren bzw. deaktivieren, sodass sie nicht mehr starten. NFS benötigt diese Dienste nur für das remote locking. Beachte aber, dass du dann Probleme bekommen könntest, wenn du von mehreren Servern gleichzeitig auf den Storage zugreifst..

  • Ich habe es nach der Anleitung gemacht und es funktioniert hervorragen.

    Dumm nur, dass heute schon wieder eine abuse-Meldung eintraf :( Ich denke, dass Problem ist, dass der Dienst zwar nicht mehr korrekt 'funktioniert', der Scan vom BSI aber alleine auf open/closed/filtered testet. Und open wird anscheinend immer angemahnt. Dann muss also leider doch die iptables-Keule raus. Also her damit:


    Aktuellen Status von außen mit nmap testen:

    Nun fügen wir ein paar iptables Regeln hinzu, nämlich:

    1. UDP Pakete auf Port 111 kommentarlos ignorieren
    2. Lokale TCP-Pakete auf Port 111 verarbeiten
    3. TCP-Pakete auf Port 111 die nicht von unserer eigenen IP kommen kommentarlos ignorieren
    Shell-Script
    1. iptables -A INPUT -p udp --dport 111 -j DROP
    2. iptables -A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT
    3. iptables -A INPUT -p tcp ! -s aaa.bbb.ccc.ddd --dport 111 -j DROP


    Das Ergebnis der Bemühungen:

    Quelle: https://www.cyberciti.biz/faq/…th-iptables-tcp-wrappers/


    Hier noch ein paar Fragen die sich der eine oder andere Stellen mag:

    • Soll ich trotzdem hosts.allow bearbeiten?
      • Unbedingt! Wie im debian-Link meines ersten Postings angegeben, sollte eine firewall-Regel nur die erste Linie der Verteidigung sein. Falls diese Barriere aus irgendeinem Grund ausfällt, steht man mit heruntergelassenen Hosen da =O
    • Im Link ist eine andere iptables-Syntax für die Ausnahme-IP angegeben, welche ist korrekt?
      • MEINE! ;) Nein, im Ernst: Der Befehl aus dem Link scheint fehlerhaft zu sein. Das Ausrufezeichen muss vor die betreffende Regel. So wird es auch bei iptables -h angezeigt. Falls Ihr ein komplettes Netz 'freischalten' wollt, könnt Ihr natürlich auch gerne die verwendete CIDR-Notation verwenden.