Sei sulla pagina 1di 4

PROTEZIONE DI UNA SERVER-FARM UTILIZZANDO LE IPTABLES DI LINUX

di Gennari Alessandro MegaB !e Sis!e"i In#or"a!i$i % &en!o 'Fe(

Credo sia doveroso un ringraziamento a Fulvio Ricciardi per l'ottimo e stabile prodotto che con tanta pazienza ha creato e messo a disposizione della comunit. In questo documento, illustro ci che ho attuato, partendo dalla versione 1. beta !, giungendo in tutta tranquillit alla attuale versione 1. beta 1", decisamente a##idabile. Il progetto iniziale, prevedeva di proteggere una serie di server aziendali, collocati in server$#arm e collegati ad essa con rete locale a 1 mbit%s &ora siamo collegati ad 1 '(%s). Come primo step #u acquistato un #ire*all hard*are, di marca nota e notevolmente di##uso, con buone prestazioni &promesse) che integrasse in s+ anche il controllo antispam ed antivirus a licenze rinnovabili annualmente. ,n disastro. -e prestazioni, se attivati antispam ed antivirus erano degne di una connessione isdn, ma se disattivati, le cose miglioravano notevolmente, quindo ho optato per la disattivazione di questi comunque onerosi servizi e per questi sono andato avanti per altre strade. .a vi #u un momento dove il tra##ico *eb, sommato al tra##ico di posta si #ece sentire parecchio ed anche l/ &parliamo di un tra##ico costante di 0 $" mbit%s costanti...) il #ire*all andava praticamente in blocco, congelando l'accesso ai server, che diventavano 1intermittenti2. 3uesta la goccia che mi ha #atto de#initivamente 1cestinare2 il #ire*all hard*are ed optare per un #ire*all so#t*are con hard*are autocostruito. 4opo un paio di prove, con so#t*are di larga du##usione, ma sempre rigorosamente 1#ree2 per #ortuna mi sono imbattuto in 5ero6hell. Installato con soddis#azione in quanto ha riconosciuto tutto l'hard*are istantaneamente e provato con altrettanta soddis#azione la con#igurazione via bro*ser, ho e##ettuato subito un piccolo stress$test, ampiamente passato con successo. Il so#t*are utilizzato per le prove di stress e vulnerabilit, 7 8696:F; 6tress ;est &ora 869uditor). .orale < il #ire*all 7 passato immediatamente in produzione e da allora non ho #atto altro che aggiornarlo puntualmente &un mese dopo ogni rilascio). 3uesta la con#igurazione hard*are < $ Rac= 6upermicro 1 ,, con alimentazione ridondante $ .otherboard 6upermicro >46.i $ -8?@ $ C>, Aeon " ? $ Ram 1 '( 44R0 $ Bard4is= 4:. 0 '( ,6( 0. $ Cthernet 'igabit D ? $ -ettore 4E4 $ I>.I Come con#igurazione non 7 certamente a basso costo, perch+ tra un componente e l'altro, si aggira sui ! Curo circa, se non oltre. >osso garantire che per le prestazioni sono di tutto rispetto, visto che dopo qualche anno di onorato servizio, l'impegno della C>, di##icilmente arriva a superare il FG nonostante il tra##ico giornaliero sia di circa "F '( di dati HHH Insomma, nulla da invidiare a #ire*all ben piI blasonati. Il tipo di con#igurazione che ho voluto adottare, tutto sommato 7 molto semplice, ed utilizza solo le regole di I>;9(-C6.

Clenco qui sotto la con#igurazione so#t*are < Inter#accia -an Inter#accia Jan < C;B < C;B "

-a lan interna 7 in classe 9 e corrisponde solo ad una porzione di essa, essendo con#igurata una subnet mas= di tipo C, quindi -98 < Indirizzi < 1 . . .D 6ubnet < 0FF.0FF.0FF.

Come 'ate*aK ho voluto lasciare 1 . . .1. 6u questo range di indirizzi, sono per riservati degli I> dinamici, che vanno dall'indirizzo 1 . . .0? al 0?!, allo scopo di assegnare I> nel caso che si perdesse involontariamente il controllo delle schede di rete dei server, oltre a provvedere al rilascio temporaneo di I> ai vari server virtuali. 'li indirizzi dal 1 . . .0 al 0"! sono rigorosamente #issi e corrispondono ad una decina di server 1utilizzabili2 ma nello stesso range, cadono i server host E.Jare, le 896, i server F;> ed alcune macchine #isiche. 4i #atto, una volta con#igurati i parametri essenziali, partendo dal (I:6, nel quale ho attivato l'accensione automatica una volta rilevata tensione sugli alimentatori, deciso l'unit primaria e secondaria di boot &4E4 e 4:. ,6(), installato il so#t*are come da documentazione presente sul sito ***.zeroshell.net, con#igurata la -98 per poter accedere, sono passato a con#igurare correttamente su C;B " tutti gli indirizzi I> pubblici &mi hanno assegnato una intera classe di 0FL I>, quindi 0F" utilizzabili per i server). Con#igurato il '9;CJ9M con l'I> pubblico assegnatomi, sono passato alla con#igurazione importantissima di data ed ora, tramite i server 8;> < ;ime5one 8;> < Curope%Rome < 1" .L .NF.L < 0 !.1 ?.?.00N < 0 .1??.101."" < 1!".? .1"".1"?

Fatto ci sono passato alla con#igurazione dei servizi 66B ed B;;>6, con accessibilit da ogni inter#accia, dando ovviamente dei criteri di sicurezza, soprattutto impostando su questi quale era l'indirizzo I> dal quale accedere sulle inter#acce pubbliche, mentre da quelle interne 7 rimasto tutto aperto. Eisto l'utilizzo di una 4:. ,6(, per evitare problemi, ho deciso di limitare i -:', impostando un utilizzo degli stessi nella sezione 9uto$.anagement < Compress the oldest -og 4elete the oldest -og < ;hreshold O ? G < ;hreshold O FFG

3uesto giusto per avere un minimo di -:' diagnostico. In#ine, nella sezione 6CRI>;I8' C4I;:R, in 89; and EIR;,9- 6CRECR6 ho #atto ampio uso delle regole I>;9(-C6, mappando server per server le porte che voglio aprire e su quale server devono essere redirezionate. 3uesto ha comportato una notevole e##icienza ed una versatilit #uori dall'ordinario, di #acile utilizzo ed altrettanto #acile velocit di modi#ica e di controllo. ,nica pecca, ogni tanto, quando si creano tante regole, magari un po' complesse, si 7 costretti ad un riavviamento del #ire*all, ma 7 un male da poco, in quanto torna in linea in un paio di minuti. (uon lavoro 9lessandro 'ennari

REGOLE UTILIZZATE IN S&RIPTING EDITOR NAT and VIRTUAL SERVERS


>er ovvii motivi, utilizzer degli indirizzi interni #ittizi ma realmente utilizzabili, mentre per quelli pubblici il range sar puramente di #antasia e dovranno essere rimpiazzati da quelli reali. ;eniamo conto che se sar assegnato un range di P I>, solo dal terzo al settimo saranno quelli realmente utilizzabili. >er gli I> pubblici utilizzer il range P0.1 .0 .1 Q F &#acendo corrispondere la parte #inale degli I> pubblici con quelli interni) R ;abella I> dei 6erver Interni R R FIRCJ9-O 1 . . .1 &B;;>6, 66B) R JC(6CRECR O 1 . . .1 &66B, B;;>, B;;>6, F;>) R .M63-6CRECR O 1 . . .0 &66B, B;;>, B;;>6, .M63-) R F;>6CRECR O 1 . . ." &66B, F;>, 6F;>, B;;>, B;;>6) R .9I-6CRECR O 1 . . .? &66B, 6.;>, 6.;>6, >:>", >:>"6, I.9>, I.9>6, B;;>, B;;>6, .M63-) R ;CR.6CRECR O 1 . . .F &R4>) R $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ R R Il #ire*all 5ero6hell viene con#igurato via B;;>6 o 66B, e volutamente non #a parte di nessuna regola qui sotto elencata R 6erver < JC(6CRECR R iptables $t nat $9 >RCR:,;I8' $p tcp $$dport 0 iptables $t nat $9 >RCR:,;I8' $p tcp $$dport 01 iptables $t nat $9 >RCR:,;I8' $p tcp $$dport 00 iptables $t nat $9 >RCR:,;I8' $p tcp $$dport P iptables $t nat $9 >RCR:,;I8' $p tcp $$dport ??" R 6erver < .M63-6CRECR R iptables $t nat $9 >RCR:,;I8' $p tcp $$dport 00 iptables $t nat $9 >RCR:,;I8' $p tcp $$dport P iptables $t nat $9 >RCR:,;I8' $p tcp $$dport ??" iptables $t nat $9 >RCR:,;I8' $p tcp $$dport "" L R 6erver < F;>6CRECR R iptables $t nat $9 >RCR:,;I8' $p tcp $$dport 0 iptables $t nat $9 >RCR:,;I8' $p tcp $$dport 01 iptables $t nat $9 >RCR:,;I8' $p tcp $$dport 00 iptables $t nat $9 >RCR:,;I8' $p tcp $$dport P iptables $t nat $9 >RCR:,;I8' $p tcp $$dport ??" R 6erver < .9I-6CRECR iptables $t nat $9 >RCR:,;I8' $p tcp $$dport 00 iptables $t nat $9 >RCR:,;I8' $p tcp $$dport 0F iptables $t nat $9 >RCR:,;I8' $p tcp $$dport P iptables $t nat $9 >RCR:,;I8' $p tcp $$dport 11 iptables $t nat $9 >RCR:,;I8' $p tcp $$dport 1?" iptables $t nat $9 >RCR:,;I8' $p tcp $$dport ??" iptables $t nat $9 >RCR:,;I8' $p tcp $$dport ?LF iptables $t nat $9 >RCR:,;I8' $p tcp $$dport FPN iptables $t nat $9 >RCR:,;I8' $p tcp $$dport !!" iptables $t nat $9 >RCR:,;I8' $p tcp $$dport !!F iptables $t nat $9 >RCR:,;I8' $p tcp $$dport "" L

$d P0.1 $d P0.1 $d P0.1 $d P0.1 $d P0.1

.0 .0 .0 .0 .0

.1 .1 .1 .1 .1

$i C;B $i C;B $i C;B $i C;B $i C;B

" $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1

. . . . .

. . . . .

.1 .1 .1 .1 .1

<0 <01 <00 <P <??"

$d P0.1 $d P0.1 $d P0.1 $d P0.1

.0 .0 .0 .0

.0 .0 .0 .0

$i C;B $i C;B $i C;B $i C;B

" $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1

. . . .

. . . .

.0 .0 .0 .0

<00 <P <??" <"" L

$d P0.1 $d P0.1 $d P0.1 $d P0.1 $d P0.1

.0 .0 .0 .0 .0

." ." ." ." ." .? .? .? .? .? .? .? .? .? .? .?

$i C;B $i C;B $i C;B $i C;B $i C;B $i C;B $i C;B $i C;B $i C;B $i C;B $i C;B $i C;B $i C;B $i C;B $i C;B $i C;B

" $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1

. . . . .

. . . . . . . . . . . . . . . .

." ." ." ." ." . . . . . . . . . . .

<0 <01 <00 <P <??" <00 <0F <P <11 <1?" <??" <?LF <FPN <!!" <!!F <"" L

$d P0.1 $d P0.1 $d P0.1 $d P0.1 $d P0.1 $d P0.1 $d P0.1 $d P0.1 $d P0.1 $d P0.1 $d P0.1

.0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0

" $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1 " $S 489; $$to$destination 1

.? .? .? .? .? .? .? .? .? .? .?

R 6erver < ;CR.6CRECR iptables $t nat $9 >RCR:,;I8' $p tcp $$dport ""P! $d P0.1 .0 .F

$i C;B " $S 489; $$to$destination 1 . . .F <""P!

R RC':-C >CR >:R;C ,4> R 8el caso servisse attivare una regola per porte ,4>, inserire la seguente riga &debitamente con#igurata) R iptables $t nat $9 >RCR:,;I8' $p udp $i C;B " $d P0.1 .0 .DD $$dport 10"? $S 489; $$to$destination 1 . . .DD<10"? R Regole di >:6;R:,;I8' &966:-,;9.C8;C 49 8:8 4I.C8;IC9RC HHH) iptables $t nat $I >:6;R:,;I8' 1 $s 1 . . .1 $o C;B " $S 689; $$to P0.1 .0 iptables $t nat $I >:6;R:,;I8' 1 $s 1 . . .0 $o C;B " $S 689; $$to P0.1 .0 iptables $t nat $I >:6;R:,;I8' 1 $s 1 . . ." $o C;B " $S 689; $$to P0.1 .0 iptables $t nat $I >:6;R:,;I8' 1 $s 1 . . .? $o C;B " $S 689; $$to P0.1 .0 iptables $t nat $I >:6;R:,;I8' 1 $s 1 . . .F $o C;B " $S 689; $$to P0.1 .0

.1 .0 ." .? .F

>.6.<

9vendo ritrascritto una parte della con#igurazione da me #unzionante, spero di non avere commesso errori. 8el caso, non abbiate problemi a contattarmi all'indirizzo < itcTdatarac=.it

Potrebbero piacerti anche