Firwalld Service erstellen

Hinweis: In dem Thema Firwalld Service erstellen gibt es 8 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Hallo,


    Ich benutze eine Software, die mir es zu Hause in Frankreich ermöglicht fernzusehen.

    Ich habe dafür einige umfassende-Regeln (rich-rules) geschrieben, nämlich diese:

    Code
    linux-5bj8:/home/thierry # firewall-cmd --zone=home --add-rich-rule='rule family='ipv4' protocol value="udp" source address='212.27.38.253' accept'
    success
    linux-5bj8:/home/thierry # firewall-cmd --zone=home --add-rich-rule='rule family='ipv4' protocol value="udp" source address='192.168.1.15' accept'
    success
    linux-5bj8:/home/thierry # firewall-cmd --zone=home --add-rich-rule='rule family='ipv4' protocol value="udp" destination address='228.67.43.91' accept'
    success

    und dann

    Code
    linux-5bj8:/home/thierry # firewall-cmd --runtime-to-permanent
    success
    linux-5bj8:/home/thierry # firewall-cmd --reload
    success


    # Mein Ziel:


    Ich möchte nun meinen eigenen Dienst erstellen und ihn einfach wie z.B. den Dienst mDNS benutzen.

    Ich habe eine xml-Datei erstellt, also freetuxtv.xml, und sie im /etc/firewalld/services gespeichert:

    XML
    <?xml version="1.0" encoding="utf-8"?>
    <service>
    <short>FreetuxTV</short>
    <description>permet d'utiliser le logiciel FreetuxTV</description>
    <port protocol="udp"/>
    <destination ipv4="228.67.43.91"/>
    <source ipv4="212.27.38.253"/>
    <source ipv4="192.168.1.15"/>
    </service>

    Wahrscheinlich ist diese Quelle fehlerhaft.

    Dazu sehe ich diesen Dienst 'freetuxtv' nicht in der Liste von Diensten.


    Kann jemand bitte mir Hilfe leisten ?


    Danke,

    Denebe.

    Für den Inhalt des Beitrages 278530 haftet ausdrücklich der jeweilige Autor: denebe

  • Müsste in etwa so aussehen:

    Code
    firewall-cmd --permanent --new-service-from-file=freetuxtv.xml --name=freetuxtv

    Anschl. noch den FW-Dienst neu starten.


    PS:

    Wenn eine Service.xml Datei schon fertig konfiguriert existiert, wäre dieser Befehl angebracht:

    Code
    firewall-cmd --permanent --new-service-from-file=freetuxtv.xml

    Und noch:

    Code
    firewall-cmd --reload

    Dann sollte es laufen :)

    2 Mal editiert, zuletzt von sterun ()

    Für den Inhalt des Beitrages 278531 haftet ausdrücklich der jeweilige Autor: sterun

  • Danke.


    Ich habe den Befehl ausgeführt:

    Code
    linux-5bj8:/home/thierry # firewall-cmd --permanent --new-service-from-file=/etc/firewalld/services/freetuxtv.xml --name=FreetuxTV
    Error: 'port'
    linux-5bj8:/home/thierry #

    Ich habe die xml-Code so Korrigiert:

    Code
    <protocol value="udp"/>

    ich bekomme dann

    Code
    linux-5bj8:/home/thierry # firewall-cmd --permanent --new-service-from-file=/etc/firewalld/services/freetuxtv.xml --name=FreetuxTV
    Failed to load service file '/etc/firewalld/services/freetuxtv.xml': PARSE_ERROR: destination: Unexpected attribute address
    linux-5bj8:/home/thierry #

    Die Art die Address einzugeben ist falsch.


    Ich brauche alle Porte dieser Quelle 212.27.38.253 und dieser Quelle 192.168.1.15 zu öffnen.

    Ich brauche auch alle Porte nach diesem Ziel 228.67.43.91 zu öffnen.

    Mit dem Protokoll 'udp'.

    Einmal editiert, zuletzt von denebe ()

    Für den Inhalt des Beitrages 278535 haftet ausdrücklich der jeweilige Autor: denebe

  • Schritt 1:

    Erstelle einen neuen Service - hier sehr gut beschrieben:

    https://www.centlinux.com/2019…lld-service-centos-7.html


    Schritt 2:

    Konfiguriere deinen neuen Service und auch deine Zone - hier sehr gute Beispiele:

    https://unix.stackexchange.com…-ip-addresses-in-centos-7


    Wenn du dann noch Fragen hast, kannst du gerne deine neue config hier posten und wir werden dann zusammen versuchen, deine Fehler zu korrigieren.

    Für den Inhalt des Beitrages 278536 haftet ausdrücklich der jeweilige Autor: sterun

  • Ja, ich habe diese Seiten schon gelesen, in Firefox gespeichert.

    Ich fasse nun zusammen:


    1) Ich habe geschafft, danke 'rich-rules' die Software 'freetuxtv' zu benutzen. Also es klappt, ich kann fernsehen. Konkret gibt es drei rich-Rules.

    Es geht darum:

    1a) zwei IP-Quellen mit dem Protokoll 'udp' immer zu erlauben (zulassen).

    1b) ein IP-Ziel mit dem Protokoll 'udp' immer zu erlauben.

    Die rich-Rules sind unten zu sehen...


    2) Ich möchte dasselbe tun mit einem von mir geschriebenen Dienst. Das heißt, ich möchte einen einzelnen Dienst benutzen anstatt drei rich-Rules.


    Die drei rich-Rules: (um das Ziel deutlich zu verstehen)

    Code
    linux-5bj8:/home/thierry # firewall-cmd --zone=home --add-rich-rule='rule family='ipv4' protocol value="udp" source address='212.27.38.253' accept'
    success
    linux-5bj8:/home/thierry # firewall-cmd --zone=home --add-rich-rule='rule family='ipv4' protocol value="udp" source address='192.168.1.15' accept'
    success
    linux-5bj8:/home/thierry # firewall-cmd --zone=home --add-rich-rule='rule family='ipv4' protocol value="udp" destination address='228.67.43.91' accept'
    success


    Die datei /etc/firewalld/services/freetuxtv.xml :

    XML
    <?xml version="1.0" encoding="utf-8"?>
    <service>
    <short>FreetuxTV</short>
    <description>permet d'utiliser le logiciel FreetuxTV</description>
    <protocol value="udp"/>
    <destination ipv4="228.67.43.91"/>
    <source ipv4="212.27.38.253" />
    <source ipv4="192.168.1.15"/>
    </service>

    Es ist möglich eine Range von IP zuzulassen: mit /24 z.B.

    Ich vermute, es ist denn auch möglich diese drei oben beschriebenen IP mithilfe eines einzelnen Dienstes zuzulassen. (Protokoll 'udp' ; alle Porte) -> Vielleicht nein, unmöglich ?


    Die sich im Internet befundenen Beispiele sind immer mit einer IP, nicht drei oder zwei...


    Zurzeit ist meine xml-Datei fehlerhaft:

    Code
    linux-5bj8:/home/thierry # firewall-cmd --permanent --new-service-from-file=/etc/firewalld/services/freetuxtv.xml --name=FreetuxTV
    Failed to load service file '/etc/firewalld/services/freetuxtv.xml': PARSE_ERROR: Unexpected element source
    linux-5bj8:/home/thierry #

    Für den Inhalt des Beitrages 278538 haftet ausdrücklich der jeweilige Autor: denebe

  • Grundsätzlich kannst du auch einen fertigen Service nehmen und diesen anpassen.

    Z.B.

    Code
    cp /usr/lib/firewalld/services/vdsm.xml /etc/firewalld/services/mynewservice.xml

    "mynewservice.xml" anschl. bearbeiten / anpassen.

    Es ist möglich eine Range von IP zuzulassen: mit /24 z.B.

    Ich vermute, es ist denn auch möglich diese drei oben beschriebenen IP mithilfe eines einzelnen Dienstes zuzulassen. (Protokoll 'udp' ; alle Porte) -> Vielleicht nein, unmöglich ?

    Dazu melde ich mich später wieder, wenn ich Zugang zu meinem Linux-Rechner habe :)

    Für den Inhalt des Beitrages 278549 haftet ausdrücklich der jeweilige Autor: sterun

  • Ich habe jetzt viel getestet und bin zu folgendem Entschluss gekommen:

    Ich würde einfach eine ganz neue Firewall-Zone erstellen (z.B. freetuxtv_zone) und diese konfigurieren.

    Entweder mit 3x rich-rules (muss ja nur einmal gemacht werden), wie es ja jetzt funktioniert hat oder über Yast - Firewall.

    Da sich dann diese Konfiguration nur auf diese eine bestimmte Firewall-Zone (freetuxtv_zone) bezieht, kannst du bei Bedarf ganz einfach und schnell die Firewall-Zone wechseln (z.B. von freetuxtv_zone zu home) und alles ist wieder wie vorher.

    Das ist der einfachste Weg und diese Zone kannst du auch auf andere Rechner kopieren und es läuft auch dort sofort (/etc/firewalld/zones/freetuxtv_zone) - siehe hier:

    firewalld-Basics in der Konsole


    Falls du dich doch weiter mit eigenen Services befassen möchtest - siehe hier:

    https://firewalld.org/document…es/firewalld.service.html


    Gruß nach Paris :)

    Für den Inhalt des Beitrages 278558 haftet ausdrücklich der jeweilige Autor: sterun

  • Hallo,


    Ich füge was hinzu. Die drei rich-rules kann ich nach Bedarf einfach eingeben, es funktioniert einwandfrei. Ich probiere durch diese Suche, Ermittlung mit den Diensten zu spielen. Das Lernen steht im Hintergrund, das Lernen ist ein Grundbedarf.


    Die Erzeugung von einer Zone 'freetuxtv_zone'und deren Umstellen, also /etc/firewalld/zone/freetuxtv_zone.xml, ist eine gute Idee. Ich habe diese Regeln in meiner home-zone ausgeführt. Die genannten Regeln stehen wie du gesagt hast drin.


    Übrigens, ich habe auch ein bisschen weiter gesucht und die Datei gefunden: /usr/lib/firewalld/xmlschema/service.xsd

    Ich vermute, du kennst es schon. Es geht darunter um Tage, Attribute, nämlich wie sie in einer service geschrieben werden müssen.

    Der Inhalt deines Links https://firewalld.org/document…es/firewalld.service.html entspricht eins zu eins dem Inhalt der Datei /usr/lib/firewalld/xmlschema/service.xsd


    Man findet als erlaubte Tage:

    Code
    <xs:element name="short" type="xs:string" minOccurs="0"/>
    <xs:element name="description" type="xs:string" minOccurs="0"/>
    <xs:element name="port" type="porttype" minOccurs="0" maxOccurs="unbounded"/>
    <xs:element name="source-port" type="porttype" minOccurs="0" maxOccurs="unbounded"/>
    <xs:element name="protocol" type="prototype" minOccurs="0" maxOccurs="unbounded"/>
    <xs:element name="module" type="nametype" minOccurs="0" maxOccurs="unbounded"/>
    <xs:element name="destination" type="desttype" minOccurs="0"/>


    Keine Spur von 'source' als Tag ist zu finden. Es existiert einfach heute nicht. Also zum Schluss, die einzige Lösung ist mit rich-rules.


    Danke sehr sterun für deine Teilnahme und deine schlüssigen Antworten.


    Tschüssy :)

    Einmal editiert, zuletzt von denebe ()

    Für den Inhalt des Beitrages 278560 haftet ausdrücklich der jeweilige Autor: denebe