I servizi

5.1. Introduzione

Abbiamo già visto in precedenza che Turtle Firewall utilizza regole basate sui servizi (http, ftp, ecc.). Questi sono dei servizi predefiniti contenuti nel file /etc/turtlefirewall/fwservices.xml.

E' comunque possibile definire i propri servizi da affiancare a quelli predefiniti. Per definire nuovi servizi non esiste interfaccia web, bisogna quindi operare direttamente sul file /etc/turtlefirewall/fwuserdefservices.xml, riservato alla definizione dei servizi personalizzati.

Ora vedremo come definire i nostri servizi per poterli poi attivare nel Firewall. Il file fwuserdefservices.xml deve essere scritto seguendo una codifica XML che permette di definire le caratteristiche che ogni pacchetto tcp/ip deve possedere per essere considerato valido per lo specifico servizio. La logica da seguire per definire un servizio è simile a quella usata per definire una regola del firewall. In sostanza si tratta di dichiarare un certo numero di filtri che permettono il passaggio dei pacchetti, se un pacchetto non è conforme a alcun filtro verrà respinto.

Il file XML di definizione dei servizi deve avere il tag radice services (<services>) che contiene al suo interno i tags service che definiscono il singolo servizio. Il tag service ha gli attributi name e description per definire rispettivamente il nome e una breve descrizione del servizio. All'interno del tag service vanno posti filtri filter che indicano come vengono selezionati i pacchetti validi per il servizio.

Il tag filter. Il tag filter possiede una serie di attributi che vengono usati per definire le caratteristiche che il pacchetto deve possedere per essere considerato valido. Se il paccetto non rientra nei parametri definiti dal filtro allora il controllo passa al filto successivo e così via fino all'ultimo filtro. Se nessun filtro risulta verificato il pacchetto viene respinto.

Attributi:

Nota

Se come sport o dport si indica "PORT" allora la porta verrà impostata durante la generazione dello script al valore indicato dall'attributo port del tag rule della regola del firewall. In questo modo si possono definire servizi parametrizzabili.

Sintassi:

<filter direction="go/back" p="tcp/udp/icmp" sport="nPortaSrc" dport="nPortaDst"
  icmptype="tipoMsgIcmp" jump="ACCEPT/DROP/BACK/ICMP-ACC"/>

Esempio 5-1. Definizione di 3 servizi

<services>
  <service name="http" description="Servizio www o http">
    <filter direction="go" p="tcp" dport="www"/>
    <filter direction="back" p="tcp" sport="www"/>
  </service>

  <service name="tcp" description="Servizio TCP generico">
    <filter direction="go" p="tcp" dport="PORT"/>
    <filter direction="back" p="tcp" sport="PORT"/>
  </service>

  <service name="ping" description="icmp message echo-request and echo-reply">
    <filter direction="go" p="icmp" ICMPTYPE="echo-request"/>
    <filter direction="back" p="icmp" ICMPTYPE="echo-reply"/>
  </service>
</services>