[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

iptables, stato delle connesioni e pacchetti "dimenticati " o persi



ciao a tutti,

da un'analisi dei log del firewall vedo droppati alcuni pacchetti che
secondo me appartengono a connessioni lecite e permesse;

ad esempio:

TCP DROP IN=eth1 OUT=eth0 SRC=MIO_SERVER DST=XXX.XXX.XXX.XXX LEN=48 TOS=0x00 
PREC=0x00 TTL=63 ID=41830 DF PROTO=TCP SPT=110 DPT=1079 WINDOW=5840 RES=0x00 
ACK SYN URGP=0

in questo caso il firewall droppa un pacchetto con i flag SYN,ACK settati 
proveniente da un mio server verso un client...ossia un pacchetto di
risposta alla richiesta di una connessione lecita...

oppure:

TCP DROP IN=eth1 OUT=eth0 SRC=MIO_SERVER DST=XXX.XXX.XXX.XXX LEN=1420
TOS=0x00 PREC=0x00 TTL=63 ID=56632 DF PROTO=TCP SPT=80 DPT=37320
WINDOW=6564 RES=0x00 
ACK URGP=0

qui mi sega un ack su una connessione lecita dalla 80 del mio server


le connessioni sono gestita tramite lo stato delle connessioni di iptables

esempio generico:

iptables -A FORWARD -i $INT_LAN -o $INT_DMZ -p tcp -m state --state 
NEW,ESTABLISHED,RELATED -m multiport -d $WWW --dport 80,443,22 -j ACCEPT
iptables -A FORWARD -p tcp -m state --state ESTABLISHED,RELATED -m multiport 
-s $WWW --sport 80,443,22 -j ACCEPT

posso capire il drop di pacchetti con flag settati provenienti da internet e 
dovuti a probabili scansioni, ma questi pacchetti provenienti dai server 
dietro il firewall mi fanno pensare che iptables "dimentichi" o flushi ogni 
tanto lo stato delle connessioni perdendo così qualche pacchetto...

In internet ho trovato info circa il parametro ip_conntrack_max e circa 
hashsize parameter a lui direttamente collegato; dovrebbero gestire la 
dimensione di ram che il fw utilizza per mantenere lo stato delle 
connessioni...
Sul mio fw ci sono montati ben 2 Gb di ram e seguendo la formula trovata qui

http://www.wallfire.org/misc/netfilter_conntrack_perf.txt

ho ottenuto i valori di 131072 bytes per ip_conntrack_max e 16384 per
l'hashsize; 
tuttavia se ip_conntrack lo modifico tramite la sua voce in /proc/sys/.... o 
tramite sysctl non sono riuscito a capire come settare l'hashsize; se per un 
kernel modulare può essere passato come parametro al momento del caricamento 
del modulo, per un kernel monolitico come il mio come posso fare ?? esiste 
una voce in sysctl o in /proc che non ho trovato ??


Ultimo dubbio:
è normale trovare il flag PSH settato durante la chiusura di una connessione 
come in questo pacchetto droppato ??

TCP DROP IN=eth1 OUT=eth0 SRC=MIO_SERVER DST=XXX.XXX.XXX.XXX LEN=185
TOS=0x00 
PREC=0x00 TTL=63 ID=46996 DF PROTO=TCP SPT=80 DPT=1117 WINDOW=9648 RES=0x00 
ACK PSH FIN URGP=0

Se la combinazione di flag è corretta il pacchetto è stato droppato 
erroneamente come negli altri esempi sopra ??

Grazie !!

Marco



Reply to: