Tracker in der config.xml



  • In der Konfigurationsdatei der pfSense (config.xml) befindet sich nach einer Neuinstallation lediglich die Regeln, welche per Default gesetzt werden. Das sieht so aus:

    <rule>
    			<type>pass</type>
    			<ipprotocol>inet</ipprotocol>
    			<descr><![CDATA[Default allow LAN to any rule]]></descr>
    			<interface>lan</interface>
    			<tracker>0100000101</tracker>
    			<source>
    				<network>lan</network>
    			</source>
    			<destination>
    				<any></any>
    			</destination>
    		</rule>
    		<rule>
    			<type>pass</type>
    			<ipprotocol>inet6</ipprotocol>
    			<descr><![CDATA[Default allow LAN IPv6 to any rule]]></descr>
    			<interface>lan</interface>
    			<tracker>0100000102</tracker>
    			<source>
    				<network>lan</network>
    			</source>
    			<destination>
    				<any></any>
    			</destination>
    		</rule>
    

    Dazu eine Frage: Die tracker ID bezieht sich auf das Interface, oder als eindeutige (?) ID auf die Regel?

    Wenn ich nun eine Regel über die GUI einpflege, erweitert sich die config.xml um folgendes:

    <rule>
    			<id></id>
    			<tracker>1545912394</tracker>
    			<type>pass</type>
    			<interface>lan</interface>
    			<ipprotocol>inet</ipprotocol>
    			<tag></tag>
    			<tagged></tagged>
    			<max></max>
    			<max-src-nodes></max-src-nodes>
    			<max-src-conn></max-src-conn>
    			<max-src-states></max-src-states>
    			<statetimeout></statetimeout>
    			<statetype><![CDATA[keep state]]></statetype>
    			<os></os>
    			<protocol>tcp</protocol>
    			<source>
    				<any></any>
    			</source>
    			<destination>
    				<any></any>
    			</destination>
    			<descr><![CDATA[TEST]]></descr>
    			<updated>
    				<time>1545912394</time>
    				<username>admin@10.0.1.120 (Local Database)</username>
    			</updated>
    			<created>
    				<time>1545912394</time>
    				<username>admin@10.0.1.120 (Local Database)</username>
    			</created>
    		</rule>
    

    Hier ist ein klarer Unterschied gegenüber den beiden default Regeln zu erkennen.
    Zunächst die Frage, wieso sich der Aufbau gänzlich von den anderen beiden unterscheidet? Auch, wenn ich eine Beschreibung der Regel vergebe, sieht dieser Block nicht annähernd so aus, als die beiden anderen Blöcke, welche die beiden Default regeln beinhalten.

    Dann die Frage, welche Rolle die tracker-nummer bei der neu gesetzten Regel spielt?
    Ist das ebenfalls eine eindeutige Nummer für die Regel?

    Danke und beste Grüße :)



  • Hallo,

    der Aufbau der beiden Regeln unterscheidet sich nich wirklich gänzlich. Beides feinsäuberliches XML, lediglich haben eigene Regeln einige zusätzliche Parameter, auch wenn diese gar nicht spezifiziert wurden.
    In den Default-Regeln wurden diese eben einfach vorweg weggelassen.
    Die Default-Regeln kommen aus der initialen Konfigurationsdatei, die beim Installieren der pfSense geschrieben wird, worauf der User keinenn Einfluss nehmen kann. Man kann sie aber hinterher löschen.

    Die Tracker-ID ist eine eindeutige ID der Regel für das interne Handling. Sie wird offenbar mithilfe der Erstellungszeit generiert.
    Das zutreffende Interface steht in einem XML-Abschnitt der Regel.

    Grüße



  • @viragomann said in Tracker in der config.xml:

    Die Tracker-ID ist eine eindeutige ID der Regel für das interne Handling

    Für welches Handling denn? Diese ID wird definitiv jedesmal bei der Erstellung erzeugt? Und, wenn eine Regel geändert wurde? Ändert sich diese ID dann? Oder lediglich der timestamp weiter unten im Block?

    Wobei ich mich Frage, wie der Timestamp aufgebaut ist:

    <time>1545912394</time>
    

    So, wie ich das verstanden habe, werden seit dem 01.01.1970 die Sekunden gezählt? Kann ich nun aus diesen Angaben was raus lesen, oder muss ich das erst umrechnen?



  • Die Tracker-ID wird bspw. zum Abarbeiten des Regelsatzes in der richtigen Reihenfolge und für das Logging verwendet (es wird nur der Tracker ins Log geschrieben, die Beschreibung wird in der GUI bei Anzeige hinzugefügt).
    Soweit ich weiß, wird diese bei der Erstellung erzeugt und ändert sich beim Editieren nicht.

    Zum Timestamp habe ich mir noch keine Gedanken gemacht. Ja, ist vermutlich eine absolute Zeit, deren Zählung irgendwann gestartet wurde.
    In humaner Form werden die Zeiten wieder in der GUI angezeigt, im Editiermodus.



  • Gibt es denn eine Möglichkeit, Regeln per config.xml einzubinden statt über die GUI?
    Habe es versucht, erhalte jedoch einen Fatal Error. Ich mein, davon bin ich ausgegangen. Aber eventuell gibt es ja einen Weg, die Konfiguration per .xml zu bearbeiten?



  • Die Regeln stehen vermutlich auch in der config.xml, aber versucht habe ich das noch nicht.

    Ich kenne nur die Variante über easyrule: https://www.netgate.com/docs/pfsense/firewall/adding-rules-with-easyrule.html
    Dies kann bspw. auch via SSH-Session ausgeführt werden und damit von jedem anderen Rechner aus und automatisiert. Die Möglichkeiten sind aber gegenüber der GUI bescheiden.


  • LAYER 8 Moderator

    @sessa45 said in Tracker in der config.xml:

    Gibt es denn eine Möglichkeit, Regeln per config.xml einzubinden statt über die GUI?

    Ja, allerdings sollte man dann fließend PHP und XML sprechen können und sich relativ gut bis sehr gut mit dem Config.XML Schema auskennen. Dann ist es durchaus möglich per pfSSH Developer Shell Aliase oder Regeln per SSH einzutragen, da sollte man aber sein Regelrohgerüst schon recht gut fertig haben, damit man keine Fehler einbaut. Hängt aber stark davon ab, WAS genau man einpflegen will. Eine richtige API oder CLI in der Form gibt es in dieser Version noch nicht.



  • Möchte noch hinzufügen: Nach einer Regelanpassung in der config.xml müsste auch noch ein Filter Reload ausgeführt werden, automatisch macht die pfSense das nicht.


  • LAYER 8 Moderator

    Stimmt. Bei dem Weg über die pfSSH wird ebenfalls ein save/reload und exit command benötigt.



  • @jegr said in Tracker in der config.xml:

    Eine richtige API oder CLI in der Form gibt es in dieser Version noch nicht.

    Das ist aber in Planung?

    easyrule ist eine gute Alternative. Mal schauen, ob das schon genügt.
    Viele Dank!


  • LAYER 8 Moderator

    @sessa45 said in Tracker in der config.xml:

    Das ist aber in Planung?

    In der Tat, ist es.

    easyrule ist eine gute Alternative. Mal schauen, ob das schon genügt.

    Wenn nicht, kann man sich auch pfSSH anschauen, die pfSense Developer Shell. Nicht sehr schön API-like und durchdesigned, sondern eher ein "rohes" Werkzeug um das Config XML direkt(er) zu editieren, aber damit Regeln oder Aliase zu erstellen oder modifizieren ist relativ gut machbar.