iptables - mehrere Ports für https freischalten

  • Hallo Gemeinde,


    Ich betreibe einen KVM-Server mit Debian 8.4 und i-MSCP v1.2.17 als Webserver. Jetzt habe ich ein Problem mit dem Öffnen eines zusätzlichen https-Ports in iptables. i-MSCP benutzt in seinen neueren Versionen standardmäßig den Port 4443 für seine verschlüsselten Admin-Logins.


    Ich benutze ein Firewall-Script mit folgender Funktion für https:

    Code
    function service_https {
    $IPT -A INPUT -p TCP -i eth0 --sport 1024: --dport 443 -m state --state NEW -j ACCEPT
    $IPT6 -A INPUT -p TCP -i eth0 --sport 1024: --dport 443 -m state --state NEW -j ACCEPT


    Einfügen wollte ich den zusätzlichen Port folgendermaßen:

    Code
    function service_https {
    $IPT -A INPUT -p TCP -i eth0 --sport 1024: --dport 443,4443 -m state --state NEW -j ACCEPT
    $IPT6 -A INPUT -p TCP -i eth0 --sport 1024: --dport 443,4443 -m state --state NEW -j ACCEPT


    Erhalte aber bei Einschalten der Firewall einen Fehler für https.
    Habe ich irgend was verpasst? Ich dachte immer, mehrere Ports (außer Port-Ranges) werden durch kommaseparierte Listen realisiert.?


    Ich habe es nun erst mal so geregelt, dass ich für jeden Port eine extra Rule erzeugt habe - nicht besonders elegant aber es funktioniert:

    Code
    function service_https {
    $IPT -A INPUT -p TCP -i eth0 --sport 1024: --dport 443 -m state --state NEW -j ACCEPT
    $IPT -A INPUT -p TCP -i eth0 --sport 1024: --dport 4443 -m state --state NEW -j ACCEPT
    $IPT6 -A INPUT -p TCP -i eth0 --sport 1024: --dport 443 -m state --state NEW -j ACCEPT
    $IPT6 -A INPUT -p TCP -i eth0 --sport 1024: --dport 4443 -m state --state NEW -j ACCEPT


    Aber es würde mich interessieren, worin mein Fehler in der ersten Variante liegt. Wäre schön, wenn mir hier jemand auf die Sprünge helfen könnte.


    Gruß, Curio

  • Wenn Du mehrere Ports bei --dport oder --sport angeben möchtest, musst Du das multiport Modul laden:


    Code
    $IPT  -A INPUT -p TCP -i eth0 -m multiport --sport 1024: --dport 443,4443 -m state --state NEW -j ACCEPT
    $IPT6 -A INPUT -p TCP -i eth0 -m multiport --sport 1024: --dport 443,4443 -m state --state NEW -j ACCEPT


    Ansonsten kennt IPTables nämlich nur Portbereiche, aber nicht die Variante mit Komma getrennt.



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Wow, das ging ja schnell, killerbees19. :)


    Hatte ich vergessen zu erwähnen. Exakt diese Variante von Dir habe ich auch getestet. Mit dem selben Ergebnis. Diese Firewall-Regel wurde ebenso als Fehler abgelehnt.


    Gruß, Curio

  • Welche Fehlermeldung erscheint denn genau?


    Führe den Befehl einmal direkt über SSH aus ($IPT und $IPT6 vorher mit iptables/ip6tables ersetzen) und berichte, ob ein Fehler auftaucht.



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Habe ich soeben durchgeführt:

    Code
    # iptables -A INPUT -p TCP -i eth0 -m multiport --sport 1024: --dport 443,4443 -m state --state NEW -j ACCEPT
    iptables v1.4.21: invalid port/service `' specified
    Try `iptables -h' or 'iptables --help' for more Information.


    Gruß, Curio

  • Lass den --sport weg, dann sollte es klappen. Der Teil ist sowieso unnötig.

    Code
    $IPT  -A INPUT -p tcp -i eth0 -m multiport --dport 443,4443 -m state --state NEW -j ACCEPT
    $IPT6 -A INPUT -p tcp -i eth0 -m multiport --dport 443,4443 -m state --state NEW -j ACCEPT



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Ja, das ist es. Vielen Dank für Deine Hilfe, Christian. :)
    Wie bist Du drauf gekommen? Durch Probieren? Ich habe nirgends eine brauchbare verbindliche Anleitung gefunden, wie man eine Regel für mehrere Ports erstellt. Alles nur sehr widersprüchlicher Kram.


    Gruß Curio

  • Ich verwende selbst diverse Multiport-Regeln, ist eigentlich ganz logisch aufgebaut. Der --sport Fehler war reines Rumprobieren:



    Und Schritt 4 war dann, den unnötigen Teil einfach ganz wegzulassen. Der Source-Port kann Dir bei eingehenden Anfragen normalerweise immer egal sein.



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Toll. :thumbup:
    Das nenne ich mal kompetente Hilfe. Und ich konnte dabei noch was lernen. Ich bedanke mich für Deine Mühe, Christian.


    Gruß, Curio