Newsgroup: it.comp.sicurezza.windows
Titolo: wipfw: mi aiutate a configurarlo

Scaricato e mi sembra veramente ottimo e leggerissimo.
Ho scompattato l'archivio in una cartella temporanea e ho lanciato
install-deny.bat.
Sembra funzionare bene perché non riesco a collegarmi, da Internet,
al server FTP che gira sulla mia macchina.
A questo punto volevo disattivarlo, così ho arrestato il servizio
ipfw_helper dall'elenco dei servizi di Windows. La cosa strana è
che comunque il mio server FTP non è contattabile dall'esterno!!!
Sono sicuro che senza firewall attivo funziona!!
Come faccio se voglio disattivare temporaneamente il wipfw?
Un'altra domanda. Io sono dietro un router ADSL con firewall integrato
e ben configurato. Penso che un solo packet-filter anche stateful sia
poco utile, anche se non guasta.
Dovrei dotarmi anche di un Personal Firewall?

Ah, un'altra cosa.
Non capisco dove sia il file di configurazione con le regole.
Per ora vado a modificare il file rc.fw che si trova nella cartella
temporanea dove ho scompattato il software e rilancio install-deny.bat.
Ma è proprio così che si fa? Non esiste un rc.fw che viene letto all'avvio
del servizio?

Mi rispondo da solo.
Sembra che wipfw abbia due servizi, chiamati ip_fw e ipfw_helper.
Solo il secondo è visibile nell'elenco dei servizi di Windows, il primo
gira a livello kernel-mode ed è invisibile. E' per questo che, anche
disattivando l'ipfw_helper, il firewall rimane comunque attivo (non so
esattamente cosa faccia l'ipfw_helper).
Allora mi sono creato il batch stop.cmd:
   net stop /y ip_fw
che ferma il servizio ip_fw e si tira dietro anche ipfw_helper.
Per riattivare uso il barch start.cmd:
   net start /y ipfw_helper
che riattiva automaticamente anche l'ip_fw su cui si basa.
Per quanto riguarda lo startup, a differenza della versione BSD, viene eseguito
un determinato batch di Windows, normalmente quello chiamato config.cmd:
--
   @echo off
   echo Setting up firewall rules
   echo.
   cd bin
   sh ../rc.fw
   cd ..
--
Questo si limita ad eseguire, tramite una shell Unix compilata per Windows
(il programma sh.exe che si trova nella cartella bin), lo script Unix chiamato
rc.fw che contiene tutte le regole del firewall.
Per modificare le regole, bisogna modificare il file rc.fw e rilanciare
config.cmd per renderle immediatamente attive. Poiché config.cmd verrà
richiamato automaticamente anche all'avvio, le modifiche fatte saranno valide
per sempre.
Il firewall sembra estremamente veloce, anche se molto spartano (è tutto script
e file di testo). Fa esattamente quello che deve: packet filtering e stateful
inspection.
Può funzionare sia in modalità "permetti tutto", sia in modalità "nega tutto".
Io ho scelto la seconda modalità.
Se volete posso postare il mio file di configurazione con le regole così
possiamo cercare di fare un set di regole a "prova di bomba".
Agli amanti di Unix, dei firewall poco invasivi, ma efficaci e performanti,
consiglio caldamente di provarlo.

 possiamo cercare di fare un set di regole a "prova di bomba".
Perche' no?
Prova a riscrivere questo tuo post in modalita' "da manuale" o how-to,
(intendiamoci, gia' cosi' come e' adesso va bene) aggiungi le regole di
esempio, e postalo con un subject ben identificabile, a tutto vantaggio
dei futuri googlatori.
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 dei futuri googlatori.
Scusa, ma non avrei proprio tempo per organizzare una email "da manuale",
né avrei le capacità per farlo.
Se qualcuno ha voglia, possiamo discutere sul mio file di configurazione
che potete scaricare qui:
http://snaplab.altervista.org/_altervista_ht/rc.fw
Sono partito da un file di configurazione trovata su Internet e l'ho
modificata per la mia situazione, abbastanza tipica. Mi collego tramite
modem-router ADSL ad Internet. Il mio PC ha indirizzo IP fisso 192.168.1.33,
mentre il router ha indirizzo IP fisso 192.168.1.1. Ho disabilitato il DHCP
per minimizzare il traffico e eventuali problemi.
Sul PC ho anche un server FTP (Filezilla) che ascolta sulla porta 2121 ed
è configurato per funzionare in modalità passiva, utilizzando unicamente la
porta 2122 (lo utilizzo solo io, quindi non mi servono tante altre porte).
Ovviamente, per come è configurato il tutto, l'FTP server funziona *solo*
in modalità passiva e non in modalità attiva.
Come DNS utilizzo quelli di OpenDNS (a proposito, che ne pensate?)
Purtroppo ho dovuto abilitare la porta per il messenger (utilizzo il Trillian).
Naturalmente solo testo.
Funziona tutto alla grande a parte il fatto che nel file di log vengono aggiunte
numerose voci di questo tipo (prese a caso):
18:59:47.968	ipfw: 299 Deny TCP 
192.168.1.33:1631
 
209.85.133.111:995
 out via eth0
19:00:17.437	ipfw: 299 Deny TCP 
192.168.1.33:1645
 
193.204.184.35:80
 out via eth0
19:02:50.031	ipfw: 299 Deny TCP 
192.168.1.33:1688
 
75.126.23.102:80
 out via eth0
Sembra che alcuni pacchetti in uscita vengano bloccati dalla regola 299 (che 
provvede anche a inserire una riga nel log). La cosa strana, però, è che 
dovrebbero essere ammessi perché le porte 80 e 995 (negli esempi sopra) sono 
aperte da regole precedenti alla 299 (più esattamente dalle regole 200 e 232).
L'unica cosa che mi viene in mente è che sono pacchetti che sono fuori dallo 
stato della connessione TCP e quindi vengono eliminati dal firewall. Ma è 
comunque molto strano...
Qualcuno ha idea?

 regole 200 e 232).
Uhm .. io ti consiglierei di partire con un ruleset più ridotto e procedere
poi aggiungendo un pochino di regole alla volta in modo da essere in
grado di "tarare" il filtraggio per benino ed evitare problemi; considera
inoltre che, se hai installato il "deny" driver; in assenza di regole allow
il traffico verrà droppato; in pratica se il file "rc.fw" non contenesse
alcuna regola il firewall sarebbe "tutto chiuso"; questo significa che
le regole "deny" all'interno di rc.fw in questo caso potrebbero non
essere necessarie e basterà semplicemente creare delle opportune
regole "allow"
ciao

 regole "allow"
Hai ragione e questo era venuto in mente anche a me.
Probabilmente il tipo che ha redatto il file originale, ha pensato di agire in
un modo più sottile.
Dopo aver accettato *tutto* il traffico in/out sulla rete 
192.168.1.0/8
 (la mia
LAN), c'è l'apertura di tutte le connessioni/porte in out. In effetti, qui
ci sono solo gli allow e quello che non è esplicitamente aperto (parliamo sempre
di connessioni in out), dovrebbe essere chiuso. A parte l'ultima regola (sempre
della sezione out) che è:
---
# deny and log everything else that.s trying to get out.
# This rule enforces the block all by default logic.
$cmd 00299 deny log all from any to any out via $pif
---
In pratica, nega tutto il resto in uscita, facendo log. I commenti dicono che
questa regola rinforza il blocco di default... mbah! Secondo me è più utile
solo per il log e capire quali connessioni in uscita vengono tagliate dal
firewall.
La sezione in dovrebbe, come al solito, procedere con una serie di allow.
Però inizia con un po' di espliciti deny:
---
# Deny all inbound traffic from non-routable reserved address spaces
$cmd 00300 deny log all from 
192.168.0.0/16
 to any in via $pif
$cmd 00301 deny log all from 
172.16.0.0/12
 to any in via $pif
$cmd 00302 deny log all from 
10.0.0.0/8
 to any in via $pif
$cmd 00303 deny log all from 
127.0.0.0/8
 to any in via $pif
$cmd 00304 deny log all from 
0.0.0.0/8
 to any in via $pif
$cmd 00305 deny log all from 
169.254.0.0/16
 to any in via $pif
$cmd 00306 deny log all from 
192.0.2.0/24
 to any in via $pif
$cmd 00307 deny log all from 
204.152.64.0/23
 to any in via $pif
$cmd 00308 deny log all from 
224.0.0.0/3
 to any in via $pif
---
In pratica ci si assicura subito di scartare connessioni in ingresso che
non sono comunque valide. Per esempio, le connessioni in ingresso provenienti
dall'indirizzo 192.168.5.10.
Se dovesse arrivarmi (sinceramente non so se è possibile) un pacchetto TCP
sulla porta 2121 (porta che io ho aperto successivamente perché ho il mio
server FTP) con indirizzo sorgente 192.168.5.10, senza di queste regole
deny poste all'inizio, il firewall lo lascerebbe passare.
Sinceramente non so qual è l'utilità delle ultime 4 regole... sono indirizzi
non instradabili su Internet? Boh!
Lo stesso discorso dicasi per la seguente regola:
---
# Deny any late arriving packets
$cmd 00330 deny log all from any to any frag in via $pif
---
Evidentemente, per non correre il rischio di accettarli dopo da qualche
regola allow, questi pacchetti (in ritardo? boh!) vengono subito eliminati.
Lo stesso per quest'altra regola:
---
# Deny ACK packets that did not match the dynamic rule table
$cmd 00332 deny log tcp from any to any established in via $pif
---
Ho uploadato, sempre nel solito posto, il nuovo file di configurazione.

 sottile.
beh .. dipende; non esiste un "ruleset universale" altrimenti tutti i
packet filters sarebbero configurati allo stesso modo :) il tizio che
ha redatto quel ruleset lo ha fatto per rispondere a determinate
SUE esigenze; che poi alcune regole possano essere generalizzate
mi sta bene; ma da qui a prendere "in toto" quel ruleset...
ripeto; secondo me potresti partire con un ruleset più semplice e poi
estenderlo man mano anche aiutandoti con i "drop" che troverai nel
logfile
ciao

 logfile
Vabbè, riproverò... però non ti arrabbiare se riposto con i miei problemi
se non riesco a risolvere da solo.