Ci si può configurare da soli il firewall di X?

Fino al 10.1 per configurare il firewall incorporato di X bisognava utilizzare utility di terze parti. Dal 10.2 c'è un apposito pannello delle preferenze di sistema, ma le possibilità di configurazione sono limitate. Ad esempio non è possibile filtrare il traffico UDP, non è possibile specificare indirizzi IP nelle regole e non c'è modo di sapere se dei pacchetti sono stati filtrati. Inoltre, un errore presente nella configurazione crea problemi se si intende abilitare il server FTP interno e si vuole permettere a chi si collega al nostro computer di utilizzare la modalità "passive".

Quindi, se ci si vuole configurare da soli il firewall, la procedura da seguire è questa:

Da "Preferenze di Sistema | Condivisione | Firewall" assicurarsi che il firewall NON sia attivo.

Creare una nuova directory dal nome ipfw in /Library/StartupItems. Per farlo, nel Terminale digitare:

sudo mkdir -p /Library/StartupItems/ipfw

Se la directory /Library/StartupItems non esiste, verrà creata automaticamente.

Lanciare TextEdit coi privilegi di root, digitando nel Terminale:

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit

aprire un nuovo documento, selezionare "Formato | Converti in formato Testo" e incollare quanto segue:

#!/bin/sh
/usr/sbin/sysctl -w net.inet.ip.fw.verbose=1
/usr/sbin/sysctl -w net.inet.ip.fw.verbose_limit=500
/sbin/ipfw -q /etc/ipfw.conf

Salvare con nome ipfw, senza l'estensione .txt, dentro /Library/StartupItems/ipfw scegliendo dal menu Formato Testo "Unicode (UTF-8)". Se TextEdit dovesse salvare il file con l'estensione .txt, digitare nel Terminale:

sudo mv /Library/StartupItems/ipfw/ipfw.txt /Library/StartupItems/ipfw/ipfw

Sempre con TextEdit, aprire un nuovo documento, selezionare "Formato | Converti in formato Testo" e se si sta usando Panther (10.3), incollare quanto segue:

{
Description = "ipfw firewall";
Provides = ("Firewall");
Requires = ("Super Server");
OrderPreference = "None";
Messages =
{
start = "Sto avviando il firewall";
stop = "Sto disattivando il firewall";
};
}

Se invece si sta usando Jaguar (10.2), incollare questo:

{
Description = "ipfw firewall";
Provides = ("Firewall");
Requires = ("Resolver");
OrderPreference = "None";
Messages =
{
start = "Sto avviando il firewall";
stop = "Sto disattivando il firewall";
};
}

Salvare con nome StartupParameters.plist dentro /Library/StartupItems/ipfw scegliendo dal menu Formato Testo "Unicode (UTF-8)".

Ancora con TextEdit, aprire un nuovo documento, selezionare "Formato | Converti in formato Testo" e incollare quanto segue:

# Permettere il traffico locale
add 900 allow ip from any to any via lo*

#Vietare il traffico non locale che cerca di sfruttare il localhost
add 901 deny log ip from 127.0.0.0/8 to any
add 902 deny log ip from any to 127.0.0.0/8

#Vietare il traffico in uscita verso un indirizzo specifico
#add 950 deny log ip from any to 10.0.0.1 out

## Permettere il traffico in uscita
add 1001 allow ip from any to any out

# Permettere il traffico di risposta a connessioni iniziate da noi
add 1002 allow tcp from any to any established
add 1003 allow ip from any to any frag

# Permettere il traffico ICMP
# (togliere 8 dagli icmptypes se non si vuole che il computer risponda ai ping)
add 1004 allow icmp from any to any icmptypes 0,3,8,11,12,14,16,18 in

# Permettere il traffico IGMP
# (può servire per la gestione dei gruppi multicast)
#add 1005 allow 2 from any to any

# Permettere la sincronizzazione Network Time
#add 3001 allow udp from any 123 to any 1024-65535 in

# Permettere il DNS
add 3003 allow udp from any 53 to any 1024-65535 in

# Permettere il DNS multicast
#add 3002 allow udp from any 5353 to 224.0.0.0/24 5353 in

# Permettere il DHCP
#add 3000 allow udp from any 67 to any 68 in

# Se sul vostro computer e' attivo il server WEB
#add 3999 allow tcp from any to any 80 in

# Se sul vostro computer e' attivo il server FTP...
#add 4000 allow tcp from any to any 21 in
#...e se volete che possa ricevere connessioni in modalità passive
#add 4001 allow tcp from any to any 49152-65535 in

# Se è attiva la Condivisione Documenti
#add 4002 allow tcp from any to any 427,548 in

# Se è attiva la Condivisione Documenti Windows
#add 4003 allow tcp from any to any 139 in

# Se è attivo il login remoto
#add 4004 allow tcp from any to any 22 in

# Se è attiva la Condivisione Stampante
#add 4005 allow tcp from any to any 631 in

# Se sono attivi gli Apple Event remoti
#add 4006 allow tcp from any to any 3031 in

# Per connettersi ad un server FTP in modalità active
#add 4010 allow tcp from any 20 to any 1024-65535 in

# Permettere connessioni OpenNap in entrata
#add 5010 allow tcp from any to any 6699 in

# Permettere connessioni Gnutella in entrata
#add 5011 allow tcp from any to any 6346 in

## Vietare tutto il resto
add 53005 deny log ip from any to any

Nota bene. Alcune regole in questa configurazione sono disattivate (ovvero sono precedute da #). Dove necessario, togliete # per attivarle, ovviamente lasciando i # che stanno davanti ai relativi commenti.
Il file deve essere salvato con nome ipfw.conf scegliendo dal menu Formato Testo "Unicode (UTF-8)" e messo dentro la cartella invisibile /etc: chi sta usando Panther (10.3), dopo aver scelto "Registra con nome...", può premere la combinazione di tasti shift+mela+g e scrivere /etc nel campo della finestra "Vai alla cartella:". Chi sta usando Jaguar può parcheggiare momentaneamente il file sotto /Libreria e poi spostarlo dentro /etc digitando nel Terminale:

sudo mv /Library/ipfw.conf /etc/ipfw.conf

Sempre nel Terminale inserire i seguenti comandi:

sudo chgrp wheel /Library/StartupItems/ipfw/ipfw
sudo chgrp wheel /Library/StartupItems/ipfw/StartupParameters.plist
sudo chgrp wheel /etc/ipfw.conf
sudo chmod 750 /Library/StartupItems/ipfw/ipfw
sudo chmod 750 /Library/StartupItems/ipfw/StartupParameters.plist
sudo chmod 750 /etc/ipfw.conf

Per avviare subito il Firewall, sempre nel Terminale, inserite:

sudo /Library/StartupItems/ipfw/ipfw

Ad ogni avvio comunque il firewall sarà attivato automaticamente. I pacchetti filtrati saranno riportati nel registro di sistema /var/log/system.log. Il modo più comodo per controllarli, con Panther, è lanciare il programma /Applicazioni/Utility/Console, cliccare su "Resoconti", selezionare "system.log" e scrivere Deny nel campo "Filtro". Con Jaguar il modo più comodo è digitare nel Terminale:

grep "Deny" /var/log/system.log

In qualsiasi momento vogliate modificare la configurazione, potete farlo aprendo il file /etc/ipfw.conf con TextEdit, che però deve essere aperto coi privilegi di root. Le regole per la configurazione le trovate con man ipfw nel Terminale. La cosa importante da tenere a mente è che le regole vengono eseguite secondo il numero, dalla più bassa alla più alta e non appena un pacchetto risponde ai criteri di una regola, questa viene applicata indipendentemente dalle regole successive. Quindi se volete acconsentire o vietare un tipo di traffico specifico dovete assicurarvi che non ci sia un'altra regola con numero d'ordine più basso che stabilisce il contrario.

Nota bene. Le modifiche apportate al file di configurazione non saranno attive fino a quando non viene eseguito lo script d'avvio. Quindi, una volta salvato il file ipfw.conf, bisogna prima di tutto disattivare momentaneamente il firewall. Per farlo, digitare nel Terminale:

sudo ipfw flush

Poi bisogna riavviarlo in modo che carichi la nuova configurazione. Per farlo, digitare nel Terminale:

sudo /Library/StartupItems/ipfw/ipfw

In qualsiasi momento vogliate controllare la configurazione attiva:

sudo ipfw list

[ Home | Elenco delle FAQ | Forum | Segnalazioni | Risorse | Feed RSS ]