[LatinaLUG] Progetto interessante e buchi per la sicurezza

Enrico Bassetti enrico.bassetti@q4q5.it
Gio 7 Ago 2008 18:03:27 CEST


Enrico Bassetti ha scritto:
> 
> Altre idee?
> 
> Enrico

Un'altra cosa: dovrei impedire l'inizio di nuove connessioni da sto coso 
virtuale all'esterno, tranne ovviamente per l'IP della macchina "host" 
che ha sopra un servizio che deve comunicare con questo virtuale. Ora, 
visto che il pc "host" è anche router di questa "immensa rete virtuale" 
(qemu con il pc virtuale <-> host), e visto che non sono un grande mago 
di iptables, vi chiedo lumi.

Da quanto ho capito, quando si inizia una connessione il pc invia un 
pacchetto con il flag SYN per dire che vuole iniziare una comunicazione 
con l'altro PC. Ora, se io non faccio passare 'sto pacchetto, la 
comunicazione non avviene (mi pare ovvio...). Quindi la regola dovrebbe 
essere qualcosa tipo:

Se PcDestinazione = Locale Allora
     Consenti tutto
Altrimenti
     Consenti solo pacchetti != SYN
Fine

Il mio dubbio è: CUPS non dovrà mai inviare un pacchett con SYN vero? (o 
meglio, non dovrà mai fare connessioni all'esterno, vero?)

Il dubbio è questo: il pacchetto "ci sono e sono pronto alla 
comunicazione" (aka: SYN/ACK), se io tronco tutti quelli con SYN mi 
tronca anche quello? Quindi prima di quella regola devo inserire 
"Accetta gli ack" ? Cioè:

Se PcDestinazione = Locale Allora
      Consenti tutto
Altrimenti
      Se pacchetto Contiene ACK Allora
            Accetta
      Altrimenti Se contiene SYN
            Tronca
      Altrimenti
            Accetta
      Fine
Fine

Che possiamo semplificare (grazie ad un parametro di iptables "--syn") come:

Se PcDestinazione = Locale Allora
      Consenti tutto
Altrimenti
      Se pacchetto Contiene SYN Ma Non ACK Allora
            Tronca
      Altrimenti
            Accetta
      Fine
Fine

Che si traduce in:

iptables -A INPUT --in-interface tap0 -p tcp --destination 172.16.1.1 \
          -j ACCEPT

iptables -A INPUT --in-interface tap0 -p tcp --syn -j DROP
iptables -A INPUT --in-interface tap0 -j ACCEPT

Giusto secondo voi?


Altra domanda: cups usa solo TCP (almeno per le connessioni IPP tramite 
HTTP) ? Perché se si potrei troncare tutto il resto (non serve udp, 
icmp, $protocolloDelCacchio). Cioè:

iptables --A INPUT --in-interface tap0 --protocol ! tcp -j DROP

E secondo voi, se invece di troncare subito i pacchetti, mi faccio 
inviare una notifica via email (e poi li tronco ovviamente), credete che 
l'hd da 40 (che ricordo essere un LVM su tanti hd da qualche giga) ne 
risentirà per l'eccessiva quantità di posta?

E tutto questo per casa...

PS: oggi il server ha superato per ben due volte il livello di guardia 
per la temperatura... sarà che un ubuntu server e un windows 2003 server 
virtuali non gli piacciono? Devo attaccare il raffreddamento a liquido 
(aka: immergere il PC nel serbatorio-riserva d'acqua)...

Enrico


Maggiori informazioni sulla lista latina