firewall 0808

Upload: isaek-isberabah

Post on 21-Jul-2015

125 views

Category:

Documents


0 download

TRANSCRIPT

LFI

Firewall

FIREWALL

ThomasTRACHET

1

LFI

Firewall

Tabledesmatires1Conceptsrseaux................................................................................................................................5 1.1Qu'estcequ'un`rseauinformatique'?.....................................................................................6 1.1.1Taille:Quelletailleaa?....................................................................................................6 1.1.2Topologie:Quelleformeaa?............................................................................................6 1.1.3Physique:Qu'estcequilecompose?..................................................................................7 1.1.4Leprotocole:Quellelangueaparle?.................................................................................8 1.2Qu'estcequel'`Internet'?..........................................................................................................10 1.2.1Commentfonctionnel'Internet?........................................................................................10 1.3CettechoseIP...........................................................................................................................13 1.3.1LesGroupesd'AdressesIP:LesMasquesRseaux..........................................................14 1.4NomsdeMachinesetAdressesIP...........................................................................................16 1.5DiffrentsServices:Email,Web,FTP,ServeurdeNoms........................................................17 1.6Interfacedeconnexion:PPP.....................................................................................................18 1.7Aquoiressemblentlespaquets.................................................................................................19 1.8Rsum......................................................................................................................................21 2Lefiltrage.........................................................................................................................................22 2.1Origineduterme.......................................................................................................................23 2.2Fonctionnementgnral............................................................................................................24 2.3Catgoriesdeparefeu..............................................................................................................25 2.3.1Parefeusanstats(statelessfirewall)..............................................................................25 2.3.2Parefeutats(statefulfirewall).....................................................................................25 2.3.3Parefeuapplicatif.............................................................................................................25 2.3.4Parefeuidentifiant............................................................................................................26 2.3.5Parefeupersonnel.............................................................................................................26 2.4Technologiesutilises...............................................................................................................27 2.5Implmentationsconnues.........................................................................................................28 2.5.1Versionslibres...................................................................................................................28 2.5.2DistributionLinux.............................................................................................................28 2.5.3Versionspropritaires.......................................................................................................28 Botiersparefeu...................................................................................................................28 Parefeuapplicatifs...............................................................................................................29 Parefeuidentifiant...............................................................................................................30 2.6Architecture..............................................................................................................................31 2.6.1Zonedmilitarise(DMZ)................................................................................................31 2.6.2Bastion..............................................................................................................................31 2.6.3Architecturestandardavecunseulfirewall......................................................................31 2.6.4Architecturestandarddeuxfirewalls..............................................................................32 2.6.5Architecturecomplexe......................................................................................................33 2.7Miseenoeuvre..........................................................................................................................34 2.7.1tudefonctionnelle...........................................................................................................34 2.7.2tudetechnique................................................................................................................34 ThomasTRACHET 2

LFI

Firewall

2.7.3Politiquedescurit..........................................................................................................34 2.7.4Dploiementetexploitation..............................................................................................35 3FiltreravecLinux.............................................................................................................................36 3.1Qu'estceQu'unFiltrePaquets?..............................................................................................37 3.1.1PourquoiVoudraisjeFiltrerdesPaquets?........................................................................37 3.1.2CommentestcequejeFiltrelesPaquetsSousLinux?....................................................38 iptables..................................................................................................................................38 FairedesRglesPermanentes..............................................................................................38 3.2BonDieuquiesttu,etpourquoiestcequetujouesavecmonnoyau?...................................39 3.3LeGuideRapidedeRustysurleFiltragedePaquets...............................................................40 3.4CommentlesPaquetsTraversentlesFiltres.............................................................................41 3.5Utiliseriptables.........................................................................................................................43 3.5.1CequetuVerrasquandtonOrdinateurDmarrera..........................................................43 3.5.2OperationssuruneSeuleChaine......................................................................................44 3.5.3Spcificationsdefiltrage...................................................................................................45 SpecifierlesadressesIPsourceetdestination.....................................................................45 Spcifieruneinversion.........................................................................................................46 Specifierleprotocole............................................................................................................46 Specifieruneinterface..........................................................................................................46 SpecifierdesFragments.......................................................................................................47 Extensionsiptables:NouvellesCorrespondances............................................................48 ExtensionsTCP...............................................................................................................48 ExtensionsUDP...............................................................................................................50 ExtensionsICMP.............................................................................................................50 AutresExtensionsdeConcordance.................................................................................50 LaConcordanced'Etat.....................................................................................................54 3.5.4SpecificationsdeCibles....................................................................................................54 Leschainescresparl'utilisateur.......................................................................................55 Extensionsiptables:NouvellesCibles..............................................................................56 CiblesSpecialescompiles..................................................................................................57 3.5.5OperationssuruneChaineEntire....................................................................................58 CreruneNouvelleChaine..................................................................................................58 SupprimeruneChaine..........................................................................................................58 VideruneChaine..................................................................................................................59 ListeruneChaine..................................................................................................................59 Resetter(Zeroer)lesCompteurs...........................................................................................60 ConfigurerlaPolice..............................................................................................................60 3.6MixerleNATetleFiltragedePaquets....................................................................................61 3.7MiseenGardesurleFiltredePaquets.....................................................................................62 4Translationd'adressesrseaux..........................................................................................................64 4.1Qu'estcequeNetworkAddressTranslation?...........................................................................65 4.2PourquoiVoudraisJeUtiliserduNAT?..................................................................................66 4.3LesDeuxTypesdeNAT..........................................................................................................67 4.4ControllerquoiilfautNATer...................................................................................................68 4.4.1Slectionsimpleenutilisantiptables................................................................................68 4.4.2AffinageDesPointsDeSlectionDesPaquetsAModifier.............................................69 ThomasTRACHET 3

LFI

Firewall

4.5SpecifierCommentModifierLesPaquets................................................................................71 4.5.1NATSource......................................................................................................................71 Masquerading.......................................................................................................................71 4.5.2NATDeDestination.........................................................................................................72 Redirection...........................................................................................................................72 4.5.3MappingsEnProfondeur..................................................................................................73 SelectionD'adressesMultiplesDansUnBloc.....................................................................73 CrerDesMappingsDeNullNAT......................................................................................73 NATStandard.......................................................................................................................73 MappingDePortSourceImplicite.......................................................................................73 QueSePassetilQuandLeNATFoire?............................................................................74 MappingsMultiples,DpassementsetClashs.....................................................................74 AltrationdelaDestinationdeConnectionsGnresLocallement...................................75 4.6ProtocolesSpciaux..................................................................................................................76 4.7ConsidrationssurleNAT.......................................................................................................77 4.8NATSourceetRoutage............................................................................................................78 4.9NATdeDestinationSurleMmeRseau................................................................................79 5Sources.............................................................................................................................................80

ThomasTRACHET

4

LFI

Firewall

1 ConceptsrseauxCechapitredcritcequ'estunrseau(commeInternet),etlesbasesdesonfonctionnement.

ThomasTRACHET

5

LFI

Firewall

1.1 Qu'estcequ'un`rseauinformatique'?Unrseauinformatiqueestjusteunensembledetrucsquipermettentdesnoeudsdeseparlerentre eux(par`noeuds'onentendordinateurs,imprimantes,distributeursdecocaoun'importequoidans legenre).Lafaondontilssontconnectsn'apasvraimentd'importance:vouspouvezutiliserdes fibresoptiquesoubiendespigeonsvoyageurs.videmment,certainschoixsontmeilleursque d'autres(surtoutsivousavezunchat). Engnral,sivousconnectezjustedeuxordinateursentreeux,onnepeuxpasrellementappelera unrseau;vousavezvraimentbesoind'enavoiraumoinstroispouravoirunrseau.C'estunpeu commelemot`groupe':deuxpersonnesformentuncouplemaispartirdetroisonappelleaun `groupe'.Deplus,lesrseauxsontsouventrelisentreeux,pourformerdeplusgrosrseaux; chaquepetitrseau(appelun`sousrseau')peutfairepartied'unplusgrandrseau. Laconnexionentredeuxordinateursestsouventappeleun`lienrseau'.S'ilyauncblequisort del'arriredevotremachineetqueceluicivaversuneautremachine,c'estunlienrseau. Ilyaquatrechosesprendreencomptelorsqu'onparled'unrseauinformatique:

1.1.1 Taille:Quelletailleaa?Sivousavezconnectchezvousvosquatreordinateursensembles,vousavezcequel'onpeut appelerunLAN(LocalAreaNetwork).Sivousdevezmarcherpourallervoirlesautresmachines, engnralonappelleaunLAN,peuimportelenombredemachinesquiysontconnectes,et commentvousavezconstruitlerseau. Al'autreboutduspectresetrouventlesWAN(WideAreaNetwork).Sivousavezunordinateur LahoreauPakistan,unBirminghamenAngleterre,etunautreSantiagoauChili,etquevous vousarrangezpourlesconnecter,alorsvousobtenezcequel'onappelleunWAN.

1.1.2 Topologie:Quelleformeaa?Construisonsunecartedurseau:leslignessont``lesliensrseau'',etchaquepointestunnoeud.Il estpossiblequechaquelignemneunnoeudcentralcommeunegrossetoile,cequiveutdire quechacuncommuniquetraverscepoint(`rseauentoile'): ThomasTRACHET 6

LFI

Firewall

o o o \_ | _/ \|/ o-----o-----o _/|\_ / | \ o o o

Ilestaussipossiblequetoutlemondecommuniqueenligne,commececi:

o------o------o-------o--------o | | | | | o | | o | o

Oupeuttreavezvoustroissousrseauxconnectsviaunnoeud:

o o | o--o--o | | | o--o--o--o--o o \ | o------o / | o--o--o--o--o o | | | o | o--o o

Vousverrezbeaucoupdetopologiescommecellescidanslavierelle,etparfoiscertainesseront beaucouppluscompliques.

1.1.3 Physique:Qu'estcequilecompose?Lasecondechoseprendreencompteestlematrielaveclequelestinterconnectvotrerseau.Le ThomasTRACHET 7

LFI

Firewall

moinscherestsansdoutele`sandalenet'danslequeldesgens,souventmalhabills,portentdes disquettesd'unemachineal'autre.Lesandalenetestpratiquementtoujoursun``LAN''.Les disquettescotentmoinsde1Euro,etunesolidepairedesandalespeutsetrouverpour20Euros. Lelienrseauleplussouventutilispourunusagedomestiqueestle'modem' (MODulateur/DEModulateur),ilpermetdetransformerunelignetlphoniquestandardenunlien rseau.Iltransformelesdonnesenvoyesparl'ordinateurensonsetcoutelessonsenvoys l'autreboutdelalignepourlesretransformerendonnescomprhensiblesparl'ordinateur.Comme vouspouvezl'imaginer,cen'estpastrsefficace.Enpartieparcequeleslignestlphoniquesn'ont pastconuespourcela.Maislemodemestpopulairecarleslignesdetlphonesontrpandues etabordables:lesmodemssevendentpourmoinsde50Euros,etleslignestlphoniquescotent engnralquelquescentainesd'Eurosparan. LafaonlapluscommunedeconnecterdesmachinesdansunLANestd'utiliseruneliaison Ethernet.Ilexisteenplusieursversions(listesduplusvieuxauplusrcent): Thinwire/Coax/10base2,UTP(UnshieldedTwistedPair)/10baseTetUTP/100baseT.L'Ethernet gigabit(lenom1000baseTcommenceadevenirlourd)commencetredployaussi.Lefil 10base2estgnralementducblecoaxialnoir,avecdesconnecteursenTvisser:chacunest connectunegrandeligneavecun`terminateur'chaqueextrmit.L'UTPestgnralementdu cblebleu,avecdesconnecteurstlphonetransparentsclipserdansdesprises:chaquecblerelie unnoeudunconcentrateur(hub)central.LecblecotequelquesEurosparmtre,etlescartes 10baseT/10base2(laplupartontdesconnecteursdesdeuxtypes)sontdifficilestrouverneuf,les cartes100baseT,quipeuventaussicommuniqueren10baseT,sontdixfoisplusrapide,etcotent environ30Euros. Al'autreboutduspectreontrouvelafibreoptique;unfinfilamentdeverrecontinuenrobdansun revtementprotecteurquipeuttreutilisepourrelierdescontinents.Lafibrecotedesmilliers d'Euros. Onappellehabituellementchaqueconnexionunnoeudune`interfacerseau',ou`interface'pour fairepluscourt.Linuxadesnomscomme`eth0'pourlapremireinterfaceEthernet,et`fddi0'pour lapremireinterfacefibre.Lacommande`/sbin/ifconfig'lesliste.

1.1.4 Leprotocole:Quellelangueaparle?Ladernirechoseprendreencompteestlelangagequ'onutilise.Quanddeux``modems''parlent entreeuxviaunelignetlphonique,ilsontbesoindes'entendresurlasignificationdechaqueson, autrement,ilsnesecomprendraientpas.Cetteconventionestappeleun`protocole'.Aufuret mesurequel'oninventaitdenouvellesfaond'encoderlessignauxnumriquesensonspluscourts, oncraitdenouveauxprotocoles.Laplupartdesmodemsessayentplusieursdecesprotocolesavant d'entrouverunqueleurcollguel'autreboutdufilconnataussi. ThomasTRACHET 8

LFI

Firewall

Unautreexempleestlerseau``100baseT''mentionncidessus:Ilutiliselesmmes``liensrseau'' physiques(``UTP'')quele``10baseT''prcdant,maiscommuniquedixfoisplusvite. Cesprotocolessontappelsdesprotocolesdeniveauvoisinagerseauquinedpassepasun'saut' autourdel'ordinateur.Lemot'protocole'peutaussiserfrerd'autresconventions,commenous leverronsparlasuite.

ThomasTRACHET

9

LFI

Firewall

1.2 Qu'estcequel'`Internet'?L'Internetestun``WAN''quirecouvreleglobeentier:c'estleplusgrandrseauinformatiquequi existedepuislecommencementdestemps.Leterme`internetworking'faitrfrencelaconnexion derseauxindpendantspourenconstruireunplusgrand,ainsi`Internet'estuniquementuntasde sousrseauxconnectsentreeux. prsent,sionregardelalistecidessus,onpeutsedemander:Quelleestlatailledel'Internet, quellelangueyparleton,etdequoiestilfait? Latailleestimplicite:ilestglobal. Lesdtailsphysiquessontvaris:chaquepetitsousrseauestconnectdiffremment,avecune topologieetunenaturediffrente.Lesessaispourlecartographiersesontgnralementsoldspar decuisantschecs. Lesprotocolesutilissparchaqueliensonttrsvaris:onytrouvetousles``protocolesdelien'' dontnousavonsparlscidessusetbienplusencore.

1.2.1 Commentfonctionnel'Internet?Laquestionsepose:commenttouslesnoeudsd'Internetpeuventilscommuniquers'ilsutilisenttous desprotocolesdeliendiffrents? Larponseestpluttsimple:onabesoind'unautreprotocolequicontrlecommentleschoses transitenttraverslerseau.Leprotocoledeliendcritcommentallerd'unnoeudl'autres'ilssont connectsdirectement:le`protocolerseau'nousditcommentallerd'unpointl'autredansle rseauenpassantparplusieurslienssincessaire. Pourl'Internet,leprotocolerseauestl'InternetProtocol(version4),ou`IP'.Cen'estpasleseul protocole(l'AppleTalkd'Apple,l'IPXdeNovell,leDECNetdeDigitaletleNetBEUIde Microsoft)maisc'estlepluscourammentadopt.Ilyaunenouvelleversiond'IPappeleIPv6, maisellen'estpasencoretrscommune. Doncpourenvoyerunmessaged'unepartieduglobel'autre,votreordinateurletranscriten ThomasTRACHET 10

LFI

Firewall

ProtocoleInternet,l'envoievotremodem,quiutiliseunprotocolemodemdelienpourl'envoyer aumodemauquelilestconnect,quiestprobablementreliunserveurdeterminaux (basiquementunegrosseboitedemodems),quil'envoieunnoeudl'intrieurdurseaudevotre prestataire,quil'envoieunplusgrosnoeud,quil'envoieaunoeudsuivant...etainsidesuite.Un noeudquiconnectedeuxrseauxouplusestappelun`routeur':ilauraune``interface''pour chaquerseau. Nousappelonscechampdeprotocolesune`piledeprotocole',gnralementreprsentecomme ceci:

[ Application: Gre le porn ] [ Couche Application : sers le porn ] | ^ v | [ TCP: Gre la retransmission ] [ TCP: Gre la retransmission ] | ^ v | [ IP: Gre le routage ] [ IP: Gre le routage ] | ^ v | [ Lien: Gre un seul saut ] [ Link: Gre un seul saut ] | | +---------------------------------------+

Ainsi,danslediagramme,onvoitNetscape(l'applicationenhautgauche)quitlchargeunepage Webd'unserveurWeb(l'applicationenhautdroite).Pourfairecela,ilvautiliserle`Transmission ControlProtocol'ou`TCP':plusde90%dutraficInternetdenosjoursestduTCP,commepourles EmailsetleWeb. NetscapeenvoiedoncunerequtepouruneconnexionTCPauserveurWebdistant:toutcelaest grparlacoucheTCP,quiensuiteletransmetlacoucheIP,quitrouveolepaquetdoitaller,et l'envoielacouchelienapproprie,quiletransmetl'autreboutdulien. Unefoislepaquetarriv,lacouchelienl'envoielacoucheIP,quivoitqu'ilestdestincethte (sicen'estpaslecas,ilseraredirigversunecoucheliendiffrentepouralleraunoeudsuivant),le transmetlacoucheTCP,quil'envoieauserveur. Onaalorslasituationsuivante: 1.L'application(Netscape,ouleserveurWebl'autrebout)dcidequiilveutparleretcequ'il veutenvoyer.

ThomasTRACHET

11

LFI

Firewall

2.LacoucheTCPenvoiedespaquetsspciauxpourengagerlaconversationavecl'autrebout, ensuiteilencapsulelesdonnesdansun`paquet'TCP:lepaquetestjusteuntermepourdsignerun blocdedonnesquipassetraversunrseau.LacoucheTCPdirigecepaquetverslacoucheIP: ellecontinuel'envoyerlacoucheIPjusqu'cequelacoucheTCPl'autreboutrpondequ'elle l'areu.Onappellecela,la`retransmission',celleciestbasesurdesrglescomplexesqui contrlentl'instantderetransmission,lestempsd'attentes,etc.Ellenumroteaussichaquepaquet, cequipermetl'autreboutderordonnerlespaquets. 3.LacoucheIPregardeladestinationdupaquet,etendduitquelnoeudsuivantenvoyerle paquet.Onappellecelale`routage',etcelavaduplussimple(sivousavezunmodemetpasde cartesrseau,toutlespaquetssortentparlemodem)aupluscomplexe(sivousavez15grands rseauxdirectementconnectsvotremachine).

ThomasTRACHET

12

LFI

Firewall

1.3 CettechoseIPDonclerledelacoucheIPestdedcidercomment`router'lespaquetsversleurdestinationfinale. Pourrendrecelapossible,chaqueinterfacesurlerseauabesoind'une`adresseIP'.UneadresseIP svenale. estconstituedequatrenombressparspardespoints,comme`167.216.245.249'.Chaquenombre estcomprisentrezroet255. LesinterfacessurlemmerseautendentavoirdesadressesIPvoisines.Parexemple, stitseines

oinhahtcsvoir#PntiheP%ti@ omedesraum/ht

bsnt

LFIo Machine de | Tridge ~~~~~~~~ | { } o--------+-----------------o--{ Le Net } | Pare-feu { } | ~~~~~~~~ o Machine de Paul

Firewall

Machine de Rusty

1.3.1 LesGroupesd'AdressesIP:LesMasquesRseauxIlyaundernierdtail:Ilexisteunenotationstandardpourlesgroupesd'adressesIP,parfois appeleune`adresserseau'.Exactementcommeunnumrodetlphonequipeuttredivisenun prfixeetlereste,onpeutdiviserlesadressesIPenunprfixerseauetlereste. Ilesthabitueld'entendreparlerdu`rseau1.2.3',cequifaitenfaitrfrenceaux256adressesde 1.2.3.01.2.3.255.Ou,sicen'estpassuffisant,du`rseau1.2'quiveutdire:touteslesadressesIP de1.2.0.01.2.255.255. Habituellementonn'critpas`1.2.0.01.2.255.255'.Onleraccourcieen`1.2.0.0/16'.Ce`/16' (masquerseauounetmask)requiertquelquesexplications. LesnombresentrelespointsdansuneadresseIPsontenralit8chiffresbinaires(de00000000 11111111).Onlescritsousformedcimalepourqu'ilssoientpluslisibles.Le`/16'veutdireque les16premierschiffresbinairessontl'adressedurseau.End'autrestermes,lapartie`1.2.'est l'adressedurseau(rappellezvous:chaquechiffredcimalreprsente8chiffresbinaires).Cequi veutdirequechaqueadresseIPcommenantpar`1.2.'faitpartiedurseau:`1.2.3.4'et`1.2.3.50' enfontpartie,maispas`1.3.1.1'. Pourrendrelavieplusfacile,onutiliseengnraldesrseauxseterminantpar`/8',`/16'et`/24'. Parexemple`10.0.0.0/8'estungrosrseaucontenantlesadressesde10.0.0.010.255.255.255 (plusde16millionsd'adresses!).10.0.0.0/16estpluspetit,contenantseulementlesadressesde 10.0.0.010.0.255.255.10.0.0.0/24estencorepluspetit,contenantlesadressesde10.0.0.0 10.0.0.255. Pourrendreleschosesencoreplusconfuses,ilyauneautremanired'crirelesmasquesrseaux. OnpeutlescrirecommelesadressesIP: 10.0.0.0/255.0.0.0

ThomasTRACHET

14

LFI

Firewall

Enfin,l'adresseIPlaplushautedanslerseauestrservecommeune`adressedediffusion' ('broadcastaddress'),quipeuttreutilisepourenvoyerunmessagetoutlemondedanslerseau enunefois. Voiciunetabledesmasquesrseaux:

Forme Courte /8 /16 /17 /18 /19 /20 /21 /22 /23 /24 /25 /26 /27 /28 /29 /30

Forme Complte /255.0.0.0 /255.255.0.0 /255.255.128.0 /255.255.192.0 /255.255.224.0 /255.255.240.0 /255.255.248.0 /255.255.252.0 /255.255.254.0 /255.255.255.0 /255.255.255.128 /255.255.255.192 /255.255.255.224 /255.255.255.240 /255.255.255.248 /255.255.255.252

#Max de Machines 16,777,215 65,535 32,767 16,383 8,191 4,095 2,047 1,023 511 255 127 63 31 15 7 3

Commentaire Appel `un rseau de classe A' Appel `un rseau de classe B'

Appel `un rseau de classe C'

ThomasTRACHET

15

LFI

Firewall

1.4 NomsdeMachinesetAdressesIPAinsi,chaqueinterfacesurchaquenoeudauneadresseIP.Onralisaassezrapidementqueles humainsn'avaientpaslammoiredesnombres,iladonctdcid(exactementcommepourles numrosdetlphone)d'avoirunrpertoiredenoms.Maiscommeonutilisedesordinateursde toutesfaons,ilestpluspratiquequecesoitl'ordinateurquiconvertisseautomatiquementlesnoms pournous. DelestnleSystmedesNomsdeDomaines(DNS).IlyadesnoeudsquiontdesadressesIP connuesdetousauxquelslesprogrammespeuventdemanderlaconversiondesnomsenadresses IP.Apeuprstouslesprogrammesquevousallezutilisersontcapablesdefairecela,c'estpour celaquevouspouveztaper`www.linuxcare.com'dansNetscapeaulieude`167.216.245.249'. Defait,vousavezbesoindel'adresseIPd'aumoinsundeces`serveursdenoms':habituellementils sontrassemblsdanslefichier`/etc/resolv.conf'. CommelesrequtesetlesrponsesDNSsontpluttpetites(1paquetchacune),leprotocoleTCP n'estpasvraimentutilis:ilpermetd'assurerlesretransmissionsautomatiques,lerordonnancement despaquetsetlatolrancesauxpertesdepaquets,maisavecunsurcotsurlenombredepaquets envoys.laplace,onutilisele`UserDatagramProtocol'(UDP)quiestplussimplecariln'offre paslesgarantiesdeTCPdontnousn'avonspasl'utilitici.

ThomasTRACHET

16

LFI

Firewall

1.5 DiffrentsServices:Email,Web,FTP,ServeurdeNomsDansl'exempleprcdent,nousavonsvucommentNetscapeenvoieunerequteTCPunserveur Webtournantsurunautrenoeud.MaisimaginezquelenoeudquifaittournerunserveurWeb disposeaussid'unserveurdecourrierlectronique,d'unserveurFTPetd'unserveurdenoms: commentsavoirquelserveurestdestinelaconnexionTCP? C'estpouraqueleTCPetl'UDPpossdentleconceptde`ports'.Chaquepaquetcontientun espacemmoireoilstockeson'portdedestination',quiditquelservicelepaquetestadress.Par exemple,leportTCP25estleserveurmail,etleportTCP80leserveurWeb(bienqu'onpuisse parfoistrouverdesserveursWebsurdesportsdiffrents).Unelistedeportspeuttretrouvedans `/etc/services'. Demme,lorsquedeuxfentresNetscapeaccdentchacuneunepartiediffrented'unmmesite Web,commentfaitlamachineLinuxpourdistinguerquelspaquetsTCPsontdestinsun Netscapepluttqu'l'autre? C'esticiquele`portsource'entreenjeu:chaquenouvelleconnexionTCPreoitunportsource diffrent,pourquechacunepuissetrediffrencie,mmesiellessontdirigesverslamme adresseIPetlemmeportdedestination.Habituellementlepremierportsourcedonnseraleport 1024etseraincrmentaufuretmesuredesconnexions.

ThomasTRACHET

17

LFI

Firewall

1.6 Interfacedeconnexion:PPPQuandvouscomposezlenumrodevotreprestatairesurvotremodemetquevousvousconnectez aumodemdevotreprestataire,lenoyaunefaitpasqueluienvoyerdespaquetsIP.Ilyaun protocoleappel`ProtocolePointPoint'ou`PPP',quiestutilispourngocieravecl'autrebout avantqu'unpaquetdedonnesnesoitenvoy.Ceprotocoleestutilisparleprestatairepour identifierl'appelant:survotremachineLinux,unprogrammeappelle`dmonPPP'grevotre partiedelangociation. Parcequ'ilyabeaucoupd'utilisateursdemodemsdanslemonde,ilsn'ontengnralpasleur propreadresseIP:laplupartdesprestatairevousenassignerontunequandvouslesappellerez(le dmonPPPl'obtiendrapendantlangociation).Onappellesouventcelaune`adresseIP dynamique',l'inversed'une`adresseIPstatique'quisontdesadressespermanentes. HabituellementuneadresseIPstatiqueestassignechaquemodemduprestataire;chaqueappel, vousvousconnectezunmodemdiffrentdupooldemodems,etvousrecevezdoncuneadresseIP diffrente.

ThomasTRACHET

18

LFI

Firewall

1.7 AquoiressemblentlespaquetsPourlesgensexceptionnellementcurieux(etcurieusementexceptionnels),voiciunedescriptionde cequoilespaquetsressemblent.Ilyaplusieursoutilspourregardercespaquetsentreretsortirde votremachineLinux.Lepluscommunest`tcpdump'(quicomprendplusqueleprotocoleTCPde nosjours),maisilenexisteunplusjoli:`ethereal'.Detelsprogrammessontappelsdes`renifleurs depaquets'. Ledbutdechaquepaquetindiqueoilva,d'oilvient,letypedupaquet,etd'autresdtails administratifs.Cettepartieestappelel'`entte'dupaquet.Lerestedupaquetquicontientles donnestransmettre,estappelele`corps'dupaquet.Ainsi,toutpaquetIPcommenceparun`en tteIP'longued'aumoins20octets.Celaressemblea(lediagrammeathonteusementcopi partirdelaRFC791):

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type de Service| Longueur Totale | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Temps de vie | Protocole | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Adresse de la Source | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Adresse de la Destination | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Remplissage | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Leschampsimportantssontleprotocole,quiindiquesic'estunpaquetTCP(numro6),unpaquet UDP(numro17)ouautre,l'adresseIPsource,etl'adresseIPdedestination. Maintenant,silechampprotocoleindiquequec'estunpaquetTCP,alorsunentteTCPsuivra immdiatementcetentteIP.L'entteTCPestaussilongde20octetsaumoins:

ThomasTRACHET

19

LFI0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Port Source | Port Destination | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Numro de Squence | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Numro d'Acquittement | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Rserv |R|C|S|S|Y|I| Fentre | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Pointeur Urgent | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Remplissage | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Donnes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Firewall

Leschampslesplusimportantssonticileportsource,etdestination,quidisentquelservicele paquetestdestin(d'oilvient,danslecasdepaquetsderponses).Lesnumrosdesquenceet d'acquittementsontutilisspourgarderlespaquetsdansl'ordre,etpourdirel'autreboutquels paquetsonttreus.LeslabelsACK,SYN,RSTetFINsontdesbitsutilisspourngocier l'ouverture(SYN),l'acquittement(ACK)etlafermeture(RSTouFIN)desconnexions. lasuitedecetenttevientlemessagerelquel'applicationaenvoy(lecorpsdupaquet).La tailled'unpaquetIPnormalestaumaximumde1500octets.Cequiveutdirequelaplace maximumrserveauxdonnesest1460octets(20octetspourl'entteIP,et20autrespourl'en tteTCP).Soit,plusde97%.

ThomasTRACHET

20

LFI

Firewall

1.8 RsumAinsi,l'InternetmoderneutilisedespaquetsIPpourcommuniquer,etlaplupartdecespaquetsIP encapsulentdespaquetsTCP.Desnoeudsspciauxappels`routeurs'connectenttoutlespetits rseauxentreeux,formantainsideplusgrandsrseaux,etpassentlespaquetsversleurdestination. Laplupartdesmachinesnormalessontseulementattachesunseulrseau(c'estdirepossdent uneseuleinterface),etnesontdoncpasdesrouteurs. ChaqueinterfaceauneadresseIPunique,quiressemble`1.2.3.4':lesinterfacesd'unmmerseau ontdesadressesIPvoisines,aveclemmeprfixe,commepourlesnumrosdetlphoned'une mmezone.LesadressesrseauxressemblentauxadressesIP,avecun`/'pourdirecombiende chiffresbinairesfontpartieduprfixe,parexemple`1.2.0.0/16',veutdirequelesdeuxpremiers chiffresdcimaux(oules16premierschiffresbinaires)sontl'adresserseau. LesmachinesdisposentdenomsparleServicedeNomsdeDomaines:lesprogrammesdemandent auxserveursdenomsdeleurdonnerl'adresseIP,tantdonneunnomcomme `www.linuxcare.com'.CetteadresseIPestensuiteutilisecommel'adresseIPdestinationpour parlercenom.

ThomasTRACHET

21

LFI

Firewall

2 Lefiltrage_ ~~~~~~~~ | | ~~~~~~~~ { Rseau }|F|{ Rseau } { prive }|W|{ public } ~~~~~~~~ |_| ~~~~~~~~

Unparefeu,reprsentparunmurdebriques,pourcloisonnerlerseaupriv. Unparefeuestunlmentdurseauinformatique,logicielet/oumatriel,quiapourfonctionde fairerespecterlapolitiquedescuritdurseau,cellecidfinissantquelssontlestypesde communicationautorissouinterdits. Unparefeuestparfoisappelcoupefeu,gardebarrireouencorefirewallenanglais.Dansun contexteOTAN,unparefeuestappelPriphriquedeprotectionenbordure(enanglais:Border ProtectionDevice,ouBPD).DansunenvironnementBSD,unparefeuestaussiappelpacket filter.

ThomasTRACHET

22

LFI

Firewall

2.1 OriginedutermeLetermepeutavoirplusieursorigines;Leparefeuoucoupefeuestauthtreun mcanismequipermet,unefoisdclench,d'viteraufeudesepropagerdelasalleverslascne. Lemotfaitaussirfrenceauxallesparefeuxquienfortsontdestinsbloquerlesincendiesde fort,oudansledomainedel'architectureauxportescoupefeux. L'usagedutermeparefeueninformatiqueestdoncmtaphorique:uneporteempchantles flammesdel'Internetderentrerchezsoiet/oudecontaminerunrseauinformatique.

ThomasTRACHET

23

LFI

Firewall

2.2 FonctionnementgnralLeparefeutaitjusqu'ilyaquelquesannesconsidrcommeunedespierresangulairesdela scuritd'unrseauinformatique.(Ilperdenimportanceaufuretmesurequelescommunications basculentsurHTTPsurSSL,courtcircuitanttoutfiltrage.)Ilpermetd'appliquerunepolitique d'accsauxressourcesrseau(serveurs). Ilapourprincipaletchedecontrlerletraficentrediffrenteszonesdeconfiance,enfiltrantles fluxdedonnesquiytransitent.Gnralement,leszonesdeconfianceincluentInternet(unezone dontlaconfianceestnulle),etaumoinsunrseauinterne(unezonedontlaconfianceestplus importante). Lebutultimeestdefourniruneconnectivitcontrleetmatriseentredeszonesdediffrents niveauxdeconfiance,grcel'applicationdelapolitiquedescuritetd'unmodledeconnexion bassurleprincipedumoindreprivilge. Lefiltragesefaitselondiverscritres.Lespluscourantssont: l'origineouladestinationdespaquets(adresseIP,portsTCPouUDP,interfacerseau,etc.) lesoptionscontenuesdanslesdonnes(fragmentation,validit,etc.) lesdonnesellesmmes(taille,correspondanceunmotif,etc.) lesutilisateurspourlesplusrcents Unparefeufaitsouventofficederouteuretpermetainsid'isolerlerseauenplusieurszonesde scuritappeleszonesdmilitarisesouDMZ.Ceszonessontsparessuivantleniveaude confiancequ'onleurporte. Enfin,leparefeuestgalementsouventextrmitdetunnelIPsecouSSL.L'intgrationdufiltrage defluxetdelagestiondutunnelesteneffetncessairepourpouvoirlafoisprotgerletraficen confidentialitetintgritetfiltrercequipassedansletunnel.C'estlacasnotammentdeplusieurs produitsducommercenommsdanslalistecidessous.

ThomasTRACHET

24

LFI

Firewall

2.3 CatgoriesdeparefeuLesparefeusontleplusvieilquipementdescuritetcommetel,ilsonttsoumisde nombreusesvolutions.Suivantlagnrationduparefeuousonrleprcis,onpeutlesclasseren diffrentescatgories.

2.3.1 Parefeusanstats(statelessfirewall)C'estleplusvieuxdispositifdefiltragerseau,introduitsurlesrouteurs.Ilregardechaquepaquet indpendammentdesautresetlecompareunelistederglesprconfigures. Cesrglespeuventavoirdesnomstrsdiffrentsenfonctionduparefeu: "ACL"pourAccessControlList(certainsparefeuCisco), politiqueoupolicy(parefeuJuniper/Netscreen), filtres, etc. Laconfigurationdecesdispositifsestsouventcomplexeetl'absencedepriseencomptedes machinestatsdesprotocolesrseauxnepermetpasd'obtenirunefinessedufiltragetrsvolue. Cesparefeuontdonctendancetomberendsutudemaisrestentprsentssurcertainsrouteursou systmesd'exploitation.

2.3.2 Parefeutats(statefulfirewall)CertainsprotocolesditstatscommeTCPintroduisentunenotiondeconnexion.Lesparefeu tatsvrifientlaconformitdespaquetsuneconnexionencours.Cestdirequ'ilsvrifientque chaquepaquetd'uneconnexionestbienlasuiteduprcdentpaquetetlarponseunpaquetdans l'autresens.IlssaventaussifiltrerintelligemmentlespaquetsICMPquiserventlasignalisation desfluxIP. Enfin,silesACLautorisentunpaquetUDPcaractrisparunquadruplet(ip_src,port_src,ip_dst, port_dst)passer,untelparefeuautoriseralarponsecaractriseparunquadrupletinvers,sans avoircrireuneACLinverse.C'estfondamentalpourlebonfonctionnementdetousles protocolesfondssurl'UDP,commeDNSparexemple.Onpeuttoutefoisutilisercette caractristiquepourtablirdesconnexionsP2P(commelefaitSkypeparexemple).

2.3.3 ParefeuapplicatifDerniremouturedeparefeu,ilsvrifientlacomplteconformitdupaquetunprotocoleattendu. Parexemple,cetypedeparefeupermetdevrifierqueseulduHTTPpasseparleportTCP80.Ce traitementesttrsgourmandentempsdecalculdsqueledbitdevienttrsimportant;ilestjustifi parlefaitquedeplusenplusdeprotocolesrseauxutilisentuntunnelTCPpourcontournerle filtrageparports. ThomasTRACHET 25

LFI

Firewall

Uneautreraisondel'inspectionapplicativeestl'ouverturedeportsdynamique.Certainsprotocoles commelefameuxFTPenmodeactifchangententreleclientetleserveurdesadressesIPoudes portsTCP/UDP.Cesprotocolessontdits"contenusale"ou"passantdifficilementlesparefeu" carilschangentauniveauapplicatif(FTP)desinformationsduniveauIP(changed'adresses)ou duniveauTCP(changedeports).CequitransgresseleprincipedelasparationdesCouches rseaux.Pourcetteraison,lesprotocoles"contenusale"passentdifficilementvoirepasdutout, lesrglesdeNATdynamiques,moinsqu'uneinspectionapplicativenesoitfaitesurceprotocole. Chaquetypedeparefeusaitinspecterunnombrelimitd'applications.Chaqueapplicationest greparunmodulediffrentpourpouvoirlesactiveroulesdsactiver.Laterminologiepourle conceptdemoduleestdiffrentepourchaquetypeparefeu: Conntrack(suivideconnexion)etl7Filter(filtrageapplicatif)surLinuxNetfilter CBACsurCiscoIOS FixuppuisinspectsurCiscoPIX ApplicationLayerGatewaysurProventiaM, PredefinedServicessurJuniperScreenOS DeepPacketInspectionsurCheckPointFireWall1 DeepPacketInspectionsurQosmos WebApplicationFirewallsurBinarySEC

2.3.4 ParefeuidentifiantUnparefeuidentifiantraliselidentificationdesconnexionspassanttraverslefiltreIP. L'administrateurpeutainsidfinirlesrglesdefiltrageparutilisateuretnonplusparIP,etsuivre l'activitrseauparutilisateur.Plusieursmthodesdiffrentesexistentquireposentsurdes associationsentreIPetutilisateursralisespardesmoyensvaris.Onpeutparexempleciter authpf(sousOpenBSD)quiutilisesshpourfairel'association.Uneautremthodeest l'identificationconnexionparconnexion(sansavoircetteassociationIP=utilisateuretdoncsans compromissurlascurit),raliseparexempleparlasuiteNuFW,quipermetd'identifier galementsurdesmachinesmultiutilisateurs.

2.3.5 ParefeupersonnelLesparefeupersonnels,gnralementinstallssurunemachinedetravail,agissentcommeun parefeutats.Biensouvent,ilsvrifientaussiquelprogrammeestl'originedesdonnes.Lebut estdeluttercontrelesvirusinformatiquesetleslogicielsespions.

ThomasTRACHET

26

LFI

Firewall

2.4 TechnologiesutilisesLesfirewallsrcentsembarquentdeplusenplusdefonctionnalits,parmilesquellesonpeutciter: FiltragesuradressesIP/Protocole, Inspectionstatefuletapplicative, Intelligenceartificiellepourdtecterletraficanormal, Filtrageapplicatif HTTP(restrictiondesURLaccessibles), Courriel(Antipourriel) Logicielantivirus,antilogicielmalveillant Translationd'adresses, TunnelsIPsec,PPTP,L2TP, Identificationdesconnexions, Serveursdeprotocolesdeconnexion(telnet,SSH),deprotocolesdetransfertdefichier(SCP), Clientsdeprotocolesdetransfertdefichier(TFTP), ServeurWebpouroffriruneinterfacedeconfigurationagrable, Serveurmandataire(proxyenanglais), Systmededtectiond'intrusion(IDSenanglais) Systmedeprventiond'intrusion(IPSenanglais)

ThomasTRACHET

27

LFI

Firewall

2.5 Implmentationsconnues2.5.1 VersionslibresLinuxNetfilter/Iptables,parefeulibredesnoyauxLinux2.4et2.6. LinuxIpchains,parefeulibredunoyauLinux2.2. PacketFilterouPF,parefeulibredeOpenBSD,importdepuissurlesautresBSD. IPFilterouIPF,parefeulibredeBSDetSolaris10. IpfirewallouIPFW,parefeulibredeFreeBSD. NuFWParefeuidentifiantsouslicenceGPLpourlapartieserveuretlesclientsLinux, FreeBSDetMacOS.NuFWestbassurNetfilteretenaugmentelesfonctionnalits. iSafer,parefeulibrepourWindows.

2.5.2 DistributionLinuxSmoothWall:distributionlinuxpackageantNetfilteretd'autresoutilsdescuritpour transformerunPCenparefeuddietcomplet. IPCop:distributionlinuxpackageantNetfilteretd'autresoutilsdescuritpourtransformerun PCenparefeuddietcomplet. EndianFirewall,distributionlinuxpackageantNetfilteretd'autresoutilsdescuritpour transformerunPCenparefeuddietcomplet. Pfsense,distributionfirewallopensourcetrsavancebasesurFreeBSDetdrivede m0n0wallquiutiliseenautreOpenBSDpacketFilter.

2.5.3 Versionspropritaires

Botiersparefeu .vantronix .vantronixSecurityAppliances .vantronixFirewallXL1a3rdpartyfirewallmoduleforHPProCurve5300xlswitches ArkoonNetworkSecurity AppliancesUTMFAST360,certifiesCritrescommunsniveauEAL2+ CheckPoint CheckPointFireWall1 CiscoSystems CiscoPIX,CiscoASAetCiscoFWSM,botierparefeu CiscoVPN3000,botierparefeuorientRPV ElitecoreTechnologies ThomasTRACHET 28

LFI

Firewall

CyberoamSriesCRetCCC,botiersdescuritcentralisebasssurl'identitde l'utilisateur,certifisniveau5CheckmarckavecparefeucertifiICSA Fortinet AppliancesUTMFortiGate,certifiesCritrescommunsniveauEAL4+,FIPS1402, multipleICSALabsCertificationsdontSSLTLS(VPN),IPSec,NetworkIPS,Antivirus,et Firewall INL EdenWall,botierparefeubassurNuFW,apportantl'authentificationauxflux JuniperNetworks JuniperScreenOS,botierparefeu NetASQ AppliancesUTMNetASQ,certifiesCritresCommunsniveauEAL2+(fr)) Nortel FamilleNortelVPNRouter FamilleNortelSwitchedFirewall SonicWALL SonicWALL,parefeuprofessionnelUTM(FiltrageApplicatif,PasserelleAntivirus,IPS, FiltragedeContenu,Antispams)avecTunnelVPNIPSEC. Stonesoft StoneGate,parefeuprofessionnelcommercialcentralispourgrersesgrappesd'appliances ParefeuVPNetNIDS WatchGuard FireboxX,gammed'appliancesdegestionunifiedesmenaces(UTMouUnifiedThreat Management) ZyXEL ZyWALL,parefeuprofessionnelUTM(Antivirus,filtrageapplicatif,IDP,filtragede contenu,antispam)avecTunnelVPNIPSECetSSL

Parefeuapplicatifs Destestscomparatifs(http://www.firewallleaktester.com/tests.php)doiventtreeffectus rgulirement,carlesparefeun'ontpastouslesmmesperformancesetlesmenacesvoluent.Les notesvarientde0/20pourle"parefeu"deWindowsXPSP2,nos

LFI dumodleOSI) ComodoFirewall(fr),freeware. SunbeltPersonalFirewall(exKerio)(fr),freeware.

Firewall

Parefeuidentifiant NuFW:Unparefeuidentifiant(authentifiant).MmesilapartieserveurestsouslicenceGPL, leclientWindowsestsouslicencepropritaire.LesclientspourOSlibressontsouslicenceGPL.

ThomasTRACHET

30

LFI

Firewall

2.6 Architecture2.6.1 Zonedmilitarise(DMZ)Unezonedmilitariseestunsousrseau(DMZ)isolparunparefeu.Cesousrseaucontientdes machinessesituantentreunrseauinterne(LANpostesclients)etunrseauexterne (typiquement,Internet). Ellesedfinitaussicommeunezone,unsousrseauvoireuneplaged'adressesIP(ouuneseule adresseIP)surunrseaun'tantpassoumiseauxrglesd'unparefeu. LaDMZpermetsesmachinesd'accderInternetet/oudepublierdesservicessurInternetsous lecontrleduparefeuexterne.Encasdecompromissiond'unemachinedelaDMZ,l'accsversle rseaulocalestencorecontrlparleparefeuinterne. LafigurecicontrereprsenteuncasparticulierdeDMZolesdeuxparefeusontfusionns:c'est la'collapsedDMZ'.L'avantageestquesil'unedesmachinesdelaDMZestcompromiseellene pourrapas"sniffer"letraficInternetduLAN.L'inconvnientc'estquesicetuniqueparefeuest compromis,plusrienn'estcontrl. LaDMZestaussi(surcertainrouteurs)lefaitderedirigertouslesportsversunpcprcissurun rseaulocal.

2.6.2 BastionLeshtesbastionsontutilisspourprotgerunsystmed'informationd'attaquesvenantde l'extrieurenfournissantuneouplusieursbarriresentrelespartiesprivsetpubliques. Gnralement,outresafonctionprincipaledecloisonnementdesrseaux(viaunouplusieurspare feux),unbastionfournitplusieursautresservices:serviceweb,servicedenoms,servicede messagerie.Cesservicespeuventtredesrelaisd'unepartieversl'autre.Ilpeutaussiinclureun systmedehoneypotetdedtectionouprventiond'intrusion.

2.6.3 Architecturestandardavecunseulfirewall

ThomasTRACHET

31

LFI_ ~~~~~~~~ | | ~~~~~~~~ { Rseau }____|F|____{ Rseau } { prive } |W| { public } ~~~~~~~~ |_| ~~~~~~~~ | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ { DMZ } { Bastion Bastion Bastion } { HTTP SMTP DNS } ~~~~~~~~~~~~~~~~~~~~~~~~~~~

Firewall

Lefirewalldoitinterdiretouttraficenlerseaupublicetl'internet.Cetraficdoitobligatoirement transiterparl'undesbastionsdelaDMZ. Cettearchitectureestsimpleetpeucoteusemettreenoeuvremaisprsentequelquesfaiblesses: Pasdesparationdesfluxentrantsetsortant Plusdescuritencasdedfaillancedufirewall

2.6.4 Architecturestandarddeuxfirewalls_ _ ~~~~~~~~ | | | | ~~~~~~~~ { Rseau }____|F| |F|____{ Rseau } { prive } |W| |W| { public } ~~~~~~~~ |_| |_| ~~~~~~~~ | | | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ { DMZ } { Bastion Bastion Bastion } { HTTP SMTP DNS } ~~~~~~~~~~~~~~~~~~~~~~~~~~~

Icilefirewalldegauchen'autoriseletraficqu'entrelerseaupriveetlesbastionsdelaDMZ.Le secondfirewallluin'autoriseraletraficqu'entrelesbastionsdelaDMZetlerseaupublic Cettearchitectureassureunemeilleureisolationetlascuritseraencorerenforceenutilisant deuxfirewalldetechnologiediffrente.Enrevanche,cettesolutionestpluscoteusecarelle ncessitedepossdersonproprerseaud'adressesIPpubliquespourlesbastions.

ThomasTRACHET

32

LFI

Firewall

2.6.5 Architecturecomplexe___ ~~~~~~~~ | | { Rseau }__|F W| { prive } |___| ~~~~~~~~ | _ | _ _ ~~~~~~~~ | | ~~~~~~~~~ | | ~~~~~~~~~ | | ~~~~~~~~ { Rseau }__|F|__{ DMZ }__|F|__{ DMZ }__|F|__{ Rseau } { prive } |W| { Interne } |W| { Externe } |W| { public } ~~~~~~~~ |_| ~~~~~~~~~ |_| ~~~~~~~~~ |_| ~~~~~~~~ _|_ ~~~~~~~~ | | { Rseau }__|F W| { prive } |___| ~~~~~~~~

Ilestpossibled'avoirplusieursniveauxdeDMZcequipermettrad'amliorerlascuritensparant lesfluxentrantetsortant.

ThomasTRACHET

33

LFI

Firewall

2.7 Miseenoeuvre2.7.1 tudefonctionnelleLecahierpourbutdedfinirlesservicesquidoiventtreaccessibledepuisetversl'internet. Parexemple,lesutilisateurspourrontaccderl'internetpour: consulterlessitesweb envoyeretrecevoirdescourriers rcuprerdesfichiers administrerlesserveursdistantdesclients etc... Del'extrieur,ondoitpouvoir: consulterlesitewebdel'entreprise recevoirlesmessagesdel'entreprise seconnecterauVPN etc...

2.7.2 tudetechniqueAprsl'tudefonctionnelle,onpourradterminerlameilleurfaonderpondreauxbesoins recenssparl'tudefonctionnelleenralisant: latopologiedurseau unpland'adressage undiagrammedesflux unchoixentrelestechnologiesdefiltrage Lepland'adressagepermettradedcouperlerseaupourlerendreplusfacileetplusefficace filtrer.Cepland'adressagepermettradedterminersidesrglesdercritured'adressesont ncessaire. Lediagrammedesfluxdoittreexhaustif.Onverraainsiapparatrelesfluxtransitantparles firewalls.Ilncessitedoncunebonneconnaissancedesprotocolesapplicatifsafind'viterparla suiteunblocagedesflux.Pluslediagrammedesfluxseraprcis,moinsilseradifficiledele traduireenrglesdefiltrageoprationnelles.Cettetapemettraaussienvidencesidesrglesde modificationdynamiquesontncessaire.

2.7.3 PolitiquedescuritLapolitiquedescuritestplusgnralcarelleneconcernetouslesaspectsdusystme d'information(machine,os,sauvegarde,....)pasuniquementlamiseenoeuvredesfirewall.Les rglesdefiltragenesontdoncqu'unaspectdecettepolitique.Enrevanche,elledfinirales ThomasTRACHET 34

LFI responsabilitspourchaqueaspectdelascuritcommelefiltrage.

Firewall

2.7.4 DploiementetexploitationUneprocdurededploiementdoittrerdigerafind'viterlesincohrencesetlesproblmes techniqueslorsdudploiement.Celaestd'autantplusimportantlorsquelaproductionestdjen cours. Ondevraaussidfinirlesprocduresd'exploitationpourdfinir: l'analysedesjournaux laractionencasd'attaqueoud'anomalie etc...

ThomasTRACHET

35

LFI

Firewall

3 FiltreravecLinuxCedocumentdcritcommentutiliseriptablespourfiltrerlesmauvaispaquetspourlesnoyauLinux 2.4etsuivants.

ThomasTRACHET

36

LFI

Firewall

3.1 Qu'estceQu'unFiltrePaquets?Unfiltrepaquetsestunprogrammequiregardel'enttedespaquetsquipassent,etdcidedusort dupaquetentier.IlpeutdciderdeDROPerlepaquet(p.e.,fairecommesiiln'avaitjamaist reu),ACCEPTlepaquet(p.e.lelaisserpasser),ouquelquechosedepluscompliqu. SousLinux,lefiltragedepaquetsestdanslenoyau(commeunmodule,oudirectementdedans),et ilyauntasdetrucsqu'onpeutfaireaveclespaquets,maisleprincipedebasequiestderegarder lesenttesetdedciderdusortdupaquetesttoujoursla.

3.1.1 PourquoiVoudraisjeFiltrerdesPaquets?Controle.Securit.Prvention. Controle: Quandtuutilisesunemachinelinuxpourconnectertonrseauinterneunautrerseau(onvadire Internet),tuaslapossibilitdepermettrecertainstypesdetrafficetdeprohiberd'autres.Par exemple,l'enttedupaquetcontientl'adressededestinationdupaquet,donctupeuxempecherles paquetsd'allerversunecertainepartiedurseauexterne.Commeautreexemple,j'utilisenetscape pouraccderl'archivedeDilbert.Ilyadespubsdedoubleclick.netsurlapage,etnetscapeperds montempslestlcharger.Direaufiltredepaquetsdenepaspermettredepaquetsdeetvers doubleclick.netrsoutceproblme(ilyademeilleuresfaonsdefairea:voirJunkbuster). Securit: QuandtamachineLinuxestlaseulechoseentrelechaosd'internetettonbeaurseaubienordonn, c'estintressantdesavoirquetupeuxlimitercequifrappetaporte.Parexemple,tupeux permettretoutdesortirdetonrseau,maistupeuxtreembtparlebienconnu`PingofDeath' venantd'trangersmalicieux.Commeautreexempletunevoudraispasqu'untrangertelenette danstamachineLinux,mmesitouttescomptesontunmotdepasse.Peuttrequetuveux (commelapluspartdesgens)treunobservateursurinternetetpasunserveur(vouluoupas). Simplementnelaissespersonneseconnecter,enutilisantlefiltragedepaquetspourrejeterles paquetsentrantsquiutilisspourtablirdesconnections. Prvention: Parfoisunemachinemalconfiguresurlereseaulocaldciderad'envoyerdespaquetsaumonde extrieur.C'estintressantdedireaufiltragedepaquetsdetediresiquelquechosed'anormalse produit;peuttreveuxtuyfairequelquechoseoupeuttreesttucurieuxparnature.

ThomasTRACHET

37

LFI

Firewall

3.1.2 CommentestcequejeFiltrelesPaquetsSousLinux?LesNoyauxLinuxontlefiltragedepaquetdepuislasriedes1.1.Lapremiregnration,base suripfwdeBSD,atporteparAlanCoxfin1994.CaatamliorparJosVosetd'autrespour Linux2.0;lelogiciel`ipfwadm'controllaitlesrglesdefiltragedunoyau.Alami1998,pourLinux 2.2,j'aimchammentretravailllenoyau,avecl'aidedeMichaelNeuling,etaiintroduitunlogiciel appel`ipchains'.Finallement,lelogicielde4megnration,`iptables',etuneautrercrituredu kernelsontarrivsalami1999pourLinux2.4.C'estcetiptablessurlequelseconcentrece HOWTO. Tuasbesoind'unnoyauquial'infrastructurenetfilterenlui:netfilterestuneinfrastructure gnraledanslenoyausurlaquelled'autreschoses(commelemoduleiptables)viennentsegreffer. aveutdirequetuasbesoindeLinux2.3.15ouplus,etderpondre`Y'CONFIG_NETFILTER danslaconfigurationdunoyau. L'outiliptablesparleaunoyauetluiditquelspaquetsfiltrer.Amoinsquetunesoisprogrammeur oubienvachementcurieuxc'estcommeaquetuvascontrollerlespaquets.

iptables L'outiliptablesinsreetretiredesrglesdelatabledefiltragedespaquetsdunoyau.Caveutdire quequoiquetuconfigures,caseraperduaureboot;vois``FairedesRglesPermanentes''pour commenttresrquetesrglesserontrestauresauprochaindmarrage. iptablesestunremplacementipfwadmetipchains:voir``Utiliseripchainsetipfwadm''pour commentviterdepeinersuriptablessituutilisesundesces2derniers.

FairedesRglesPermanentes Taconfigdefirewallcouranteeststockedanslenoyau,etdoncseraperdueauredmarrage.Ecrire iptablessaveetiptablesrestoreestdansmalistedechosesfaire.Quandilsexisterontilsseront cools,jelepromets. Enattendant,metslescommandesdeconfigurationncessairesdansunscriptd'initialisation.Sois srdefairequelquechosed'intelligentsiunedescommandesvenaitfoirer(habituellement`exec/ sbin/sulogin').

ThomasTRACHET

38

LFI

Firewall

3.2 BonDieuquiesttu,etpourquoiestcequetujouesavec monnoyau?JesuisRusty;lemainteneurduFirewallIPpourLinuxetjusteunautrecodeurquisetrouvaitla bonneplaceaubonmoment.J'aicritipchains(voir``CommentestcequejeFiltrelesPaquets SousLinux?''audessuspourlescrditsdusauxgensquiontfaitletravailactuel),etaiapprisassez pourfairelefiltragedepaquetsconvenablementcettefois.J'espre. WatchGuard,uneentreprisedefirewallsexcellentequivendsle Firebox,m'aoffertdenerienfaire,commeajepeuxpassermontempscrirecetruc,et maintenirmestrucsprcdents.J'avaisprdit6mois,etaenapris12,maisjepensequecettefois aatbienfait.Beaucoupdercritures,uncrashdisque,unportablevol,quelquessystmesde fichierscorrompus,etuncrancassplustard,voilacequeadonne. Tantquejesuisici,jevoudraismettreauclairquelquespoints:jenesuispasungouroudunoyau. Jelesais,parcequemontravailsurlenoyaum'amisencontactavecquelquesuns:DavidS. Miller,AlexeyKuznetsov,AndiKleen,AlanCox.Detoutesfaonsilssonttousoccupsfairede lamagieenprofondeur,melaissanticiplushaut,loc'estscuris.

ThomasTRACHET

39

LFI

Firewall

3.3 LeGuideRapidedeRustysurleFiltragedePaquetsLapluspartdesgensontjusteunesimpleconnectionPPPinternet,etneveulentpasquequelqu'un rentredansleurrseau,ouleurfirewall: Insrerlesmodulesdesuivideconnection(pasncessairesicompildanslenoyau).# insmod ip_conntrack # insmod ip_conntrack_ftp

Crerunechainequibloquelesnouvellesconnectionspartcellesquiviennentdel'intrieur.# # # # iptables iptables iptables iptables -N -A -A -A block block -m state --state ESTABLISHED,RELATED -j ACCEPT block -m state --state NEW -i ! ppp0 -j ACCEPT block -j DROP

SautersurcettechainepartirdeschainesINPUTetFORWARD.# iptables -A INPUT -j block # iptables -A FORWARD -j block

ThomasTRACHET

40

LFI

Firewall

3.4 CommentlesPaquetsTraversentlesFiltresLenoyeaucontientlabasetroislistesderglesdanslatable`filter';ceslistessontappeles chainesdefirewalloujustechaines.LestroischainessontappelesINPUT,OUTPUTet FORWARD. C'estvraimentdiffrentdecommentlesnoyeaux2.0et2.2fonctionnaient! Pourlesfansdel'artASCII,leschainessontarrangescommesuit:Entre _____ / \ Sortie -->[Dcision]--->|FORWARD|-------> [de routage] \_____/ ^ | | v ____ ___ / \ / \ |OUTPUT| |INPUT| \____/ \___/ ^ | | ---->Processus local ----

Lestroiscerclesreprsententlestroischainesmentionnescidessus.Quandunpaquetarrivesau cercledanslediagramme,cettechaineestexaminepourdeciderdusortdupaquet.Silachainedit deDROPlepaquetilesttuici,maissilachaineditACCEPTlepaquet,ilcontinuesatraversedu diagramme. Unechaineestunchecklistdergles.Chaquergledit`sil'enttedupaquetestcommeca,voila quoifaireaveclepaquet'.Silargleneconvientpasaupaquet,alorslarglesuivanteestexamine. Finallementsiilneresteplusdechainesexaminer,lenoyauregardelarglepardfautdela chainepourdciderquoifaire.Dansunsystmeconscienscieuxdelascurit,cetterglepardfaut ditdeDROPerlepaquet. 1.Quandunpaquetarrives(onvadireparlacarteEthernet)lenoyauregardeenpremierla destinationdecepaquet:c'estappelle`routage'. 2.Sic'estdestincettemachine,lepaquetpasseverslebasdanslediagramme,verslachaine INPUT.Siillapasse,lesprocessusquiattendentlepaquetlerecevront.

ThomasTRACHET

41

LFI

Firewall

3.Autrement,silenoyaun'apasleforwardingautoris,ouqu'ilnesaitpascommentforwarderle paquet,lepaquetesttu.Sileforwardingestautoris,etquelepaquetestdestinuneautre interfacerseau(situenasuneautre),lepaquetvadirectementlachaineFORWARDdansle diagramme.SiilestACCEPT,ilseraenvoy. 4.Finallement,unprogrammequitournesurlamachinepeutenvoyerdespaquets.Cespaquets passerontparlachaineOUTPUTimmdiatement:sielleditACCEPT,alorslepaquetcontinue versl'interfacelaquelleilestdestin.

ThomasTRACHET

42

LFI

Firewall

3.5 Utiliseriptablesiptablesaunepagedemanuelbiendtaille(maniptables),situveuxdesdtailsenparticulier.Si tuesfamilieravecipchainstudevraissimplementregarder``Diffrencesentreiptablesetipchains''; ilssontvraimentsimilaires. Ilyaplusieurschosesquetupeuxfaireaveciptables.Tucommencesavectroischainesdedpart INPUT,OUTPUTetFORWARDquetunepeuxpaseffacer.Regardonslesoprationspour administrerleschaines: 1.Crerunenouvellechaine(N). 2.Effacerunechainevide(X). 3.Changerlarglepardfautpourunechainededpart(P). 4.Listerlesrglesdansunechaine(L). 5.Retirerlesrglesd'unechaine(F). 6.Mettrezerolescompteursdebitsetdepaquetsd'unechaine(Z). Ilyaplusieursmaniresdemanipulerunerglesdansunechaine: 1.Ajouterunenouvellerglelachaine(A). 2.Insrerunenouvellergleunepositiondanslachaine(I). 3.Remplacerunergleunepositiondanslachaine(R). 4.Supprimerunergleunepositiondanslachaine(D). 5.Supprimerlapremirerglequiconvientdansunechaine(D).

3.5.1 CequetuVerrasquandtonOrdinateurDmarreraiptablespeuttreunmodule,appel(`iptable_filter.o'),quidevraittreautomatiquementcharg quandtulancesiptables.Ilpeutaussitrecompildanslenoyau. Avantqu'aucunecommanden'aitteffectue,(attention:certainesdistributionslancerontiptables dansleursscriptsd'initialisation),iln'yapasderglesdansaucunedeschainespardfaut (`INPUT',`FORWARD'et`OUTPUT'),toutesleschainesontunerglepardfautdeACCEPT. TupeuxchangerlarglepardefautdelachaineFORWARDenspecifiantl'option`forward=0'au moduleiptable_filter.

ThomasTRACHET

43

LFI

Firewall

3.5.2 OperationssuruneSeuleChaineC'estlepainetlebeurredufiltragedepaquets;manipulerdesrgles.pluscommunment,tu utiliserasprobablementlescommandesd'ajout(A)etd'effacement(D).Lesautres(Ipourinsrer etRpourremplacer)sontdesimplesextensionsdecesconcepts. Chaquerglespcifiedesconditionsquelepaquetdoitremplir,etquefairesilepaquetlesremplis (une`cible').Parexemple,tuvoudraislaissertombertouslespaquetsICMPquiviennentde l'adresseIP127.0.0.1.Doncdanscecaslesconditionssontqueleprotocolesoiticmpetque l'adressesourcesoit127.0.0.1.Notrecibleest`DROP'. 127.0.0.1estl'interface`loopback',quetuaurasmmesitun'aspasdeconnectionrseaurelle.Tu peuxutiliserlacommande`ping'pourgenererdetelspaquets(elleenvoiesimplementunICMPde type8(echorequest)auqueltoutleshtesdevraientrpondreavecunicmpdetype0(echoreply)). Celaestutilepourtester.# ping -c 1 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms --- 127.0.0.1 ping statistics --1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.2/0.2/0.2 ms # iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP # ping -c 1 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes --- 127.0.0.1 ping statistics --1 packets transmitted, 0 packets received, 100% packet loss #

Tupeuxvoirquele1erpingafonctionn(le`c1'ditpingden'envoyerqu'unseulpaquet). Ensuitenousajoutons(A)lachaine`INPUT',unerglespcifiantquepourlespaquetsvenantde 127.0.0.1(`s127.0.0.1')avecleprotocoleICMP(`picmp')nousdevonssauterverslacibleDROP (`jDROP'). Ensuitenoustestonsnotrergle,enutilisantlesecondping.Ilyauraunepauseavantquele programmenestoppeparcequ'ilattendraunerponsequineviendrajamais. Nouspouvonseffacerunerglededeuxfaons.Premirement,commenoussavonsquec'estla seulergledanslachaineINPUT,onpeututiliseruneffacementaveclenombre,comme:

ThomasTRACHET

44

LFI# iptables -D INPUT 1 #

Firewall

Poureffacerlarglenumro1danslachaineINPUT. LasecondefaonestunmiroirdelacommandeA,remplacerAparD.C'estutilequandtuasune chainecomplexeetquetuneveuxpaslescompterpourtrouverquec'estlargle37quetuveux effacer.Danscecas,onutiliserait:# iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP #

LasyntaxedelacommandeDdoitavoirexactementlesmmesoptionsquecellesdeA(ouIou R).Siilyaplusieursrglesidentiquesdanslammechaine,lapremireseulementseraefface.

3.5.3 SpcificationsdefiltrageNousavonsvul'utilisationde`p'pourspecifierleprotocole,etde`s'pourspecifierlasource,mais ilyad'autresoptionsquetupeuxutiliserpourspecifierlescaractristiquesd'unpaquet.Cequisuit estunelisteexhaustive.

SpecifierlesadressesIPsourceetdestination LesadressesIPsource(`s',`source'ou`src')etdestination(`d',`destination'ou`dst') peuventtrespecifiesde4faons.Lafaonlapluscommuneestd'utiliserlenomcomplet,comme `localhost'ou`www.linuxhq.com'.Lasecondefaonestdespecifierl'adresseIPcomme `127.0.0.1'. Lestroisimesetquatrimesfaonspermettentdespecifierungrouped'IPs,comme `199.95.207.0/24'ou`199.95.207.0/255.255.255.0'.Ellesspecifienttoutesdeuxlesadressesde 199.95.207.0199.95.207.255inclus;lesnombresaprsle`/'disentquellepartiedesadressesIPa delasignification.`/32'ou`/255.255.255.255'estledfaut(correspondtouteslesadressesIP). PourspecifiertouteslesadressesIP`/0'peuttreutilis,commedans: NOTE:`s0/0'isredondantici.# iptables -A INPUT -s 0/0 -j DROP #

C'estrarementutilis,commel'effetcidessusestlemmequedenepasspecifierl'option`s'du tout. ThomasTRACHET 45

LFI

Firewall

Spcifieruneinversion Beaucoupd'optionscomme`s'(ou`source')et`d'(`destination')peuventavoirleursarguments prcdsde`!'(pronnonc`NOT')pourcorrespondreauxadressesPASgalescellesdonnes. Parexemple`s!localhost'correspondtoutpaquetquinevientpasdelocalhost.

Specifierleprotocole Leprotocolepeuttrespcifiavec`p'(ou`protocol').Leprotocolepeuttreunnombre(situ connaislesvaleursnumriquesdeprotocoleIP)ouunnompourlescasspciaux`TCP',`UDP'ou `ICMP'.Lacassen'apasd'importance,`tcp'marcheaussibienque`TCP'. Lenomduprotocolepeuttreprfixd'un`!',pourl'inverser,comme`p!TCP'pourspecifierles paquetsquinesontpasTCP.

Specifieruneinterface Lesoptions`i'(ou`ininterface')et`o'(ou`outinterface')spcifientlenomd'uneinterface laquellelepaquetdoitcorrespondre.Uneinterfaceestl'appareilphysiqueparlequellepaquetarrive (`i')ousort(`o').Tupeuxutiliserifconfigpourvoirlesinterfacesquisont`up'(p.e.,qui fonctionnentpourlemoment). LespaquetsquitraversentlachaineINPUTn'ontpasencored'interfacedesortiedonc,unergle utilisant`o'danscettechaineneconviendrapas;lespaquetstraversantlachaineOUTPUTn'ont pasd'interfaced'entre,donctoutergleutilisant`i'danscettechainenecorrespondrajamais. SeulslespaquetstraversantlachaineFORWARDonuneinterfaced'entreetdesortie. Ilestparfaitementlgaldespecifieruneinterfacequin'existepas;largleneconviendrapas jusqu'cequel'interfacesoit`up'.C'estvraimentutilepourleslignesPPP(habituellement l'interfaceppp0)etsessemblables. Uncasspecialestunnomd'interfaceseterminantpar`+'quiconviendraatouteslesinterfaces(qui existentdjaoupas)quicommencentparceslettres.Parexemple,pourspecifierunerglequi convienttouteslesinterfacesPPP,onutiliseral'ioptionippp+. Lenomdel'interfacepeuttreprcdparun`!'pourconvenirun ThomasTRACHET 46

LFI paquetquin'appartientpasl'interfacespcifie.

Firewall

SpecifierdesFragments Parfoisunpaquetesttroplargepourrentrerdanslalignedetransmission(NdT:oui,jesaisles traductionssontparfoisfoireuses).Quandaarrive,lepaquetestdivisenfragments,etenvoy commedemultiplespaquets.Lercepteurrassemblecesfragmentspourreconstruirelepaquet entier. Leproblmeaveclesfragmentsc'estquelefragmentinitialasonenttecomplte(IP+TCP, UDPetICMP)examinermaisquelespaquetssuivantsontseulementquelquesmorceauxdel'en tte(IPsansleschampsdeprotocole).Doncregarderl'intrieurdesfragmentssuivantsla recherched'enttesdeprotocoles(commec'estfaitpourlesextensionsTCP,UDPetICMP)n'est paspossible. SituutiliseslesuivideconnectionouleNAT,alorstoutlesfragmentsserontrecollsavantqu'ils n'arriventaucodedefiltragedepaquets,donctun'auraspast'occuperdesfragments. Autrementilestimportantdecomprendrecommentlesfragmentssonttraitsparlesrglesde filtrage.Toutergledefiltragequidemandedesinfomationsqu'onapasneconviendrapas.Caveut direquelepremierfragmentesttraitcommetoutautrepaquet,maisquelesecondetsuivantsnele serontpas.DoncunerglepTCPsportwww(quispecifieleportsource`www')neconviendra jamaisunfragment(autrequelepremierfragment).L'opposestaussivalablepTCPsport! www. Sinon,tupeuxspecifierunerglepourlessecondsfragmentsetsuivants,enutilisantl'option`f' (ou`fragment').Ilestaussilgaldespcifierunerglequines'appliquepasauxsecondes fragmentsetsuivants,enprcdant`f'avec`!'. Habituellementilestscurisantdelaisserpasserlessecondsfragmentsetsuivants,commele filtrageserafaitsurlepremier,etempcheralerassemblementsurlamachinecible;maisdesbugs ontttrouvsquipermettentdecrasherlamachinesimplementenluienvoyantdesfragments. Note:lespaquetsmalforms(TCP,UDPetICMPquisonttropcourtspourquelecodede firewallingliselesportsoulecodeICMPetletype)sontDROPerquanddetellescombinaisons sonttentes,commelesfragmentsTCPquicommencentlaposition8. Commeexemple,larglesuivantevalaissertombertoutlesfragmentsquivontvers192.168.1.1:

ThomasTRACHET

47

LFI# iptables -A OUTPUT -f -d 192.168.1.1 -j DROP #

Firewall

Extensionsiptables:NouvellesCorrespondances iptablesestextensible,cequiveutdirequelenoyauetleprogrammeiptablespeuventtretendus pouravoirdenouvellescapacits. Quelquesunesdecesextensionssontstandard,etd'autressontplusexotiques.Ellespeuventtre crespard'autrespersonnesetdistribuessparmentauxutilisateurs. Lesextensionsaunoyausontnormalementsituesdanslerpretoiredesmodulesdukernel comme/lib/modules/2.3.15/net.Ellessontchargesalademandesitonkernelatcompilavec CONFIG_KMOD,donctun'aspasbesiondelesinsrerlamain. Lesextensionsauprogrammeiptablessontdeslibrairiespartagesquisontgenerallementsitues dans/usr/local/lib/iptables/,bienqu'unedistributionpuisselesmettredans/lib/iptablesou /usr/lib/iptables. Lesextensionssontdedeuxtypes:nouvellescorrespondancesetnouvellescibles(nousparlerons desnouvellesciblesplustard).Quelquesprotocolesoffrentaussidenouveauxtests:pourle momentTCP,UDPetICMP. Pourceuxcitupourrasspecifierlesnouveauxtestssurlalignedecommandeaprsl'option`p',qui vachargerl'extension.Pourspecifierdenouveauxtests,utilisesl'option`m'pourcharger l'extension,aprsquoil'extensionestdisponible. Pourobtenirdel'aidesuruneextension,utilisesl'optionpourlacharger(`p',`j'ou`m')suivide` h'ou`help',p.e.:# iptables -p tcp --help

ExtensionsTCP LesextensionsTCPsontautomatiquementchagessi`ptcp'estspcifi.Ellespermettentles optionssuivantes(aucuned'entreellesneconvientauxfragments).

ThomasTRACHET

48

LFI

Firewall

tcpflags Suivid'un`!'optionnel,ensuite2chainesdecaractresdedrapeaux,tepermetdefiltrerdes drapeauxTCPspcifiques.Lapremirechainededrapeauxestlemasque:unelistededrapeaux quetuveuxexaminer.Ladeuximechainededrapeauxditlequeldoittreprsent.Parexemple:# iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DENY #

Ceciindiquequetouslesdrapeauxdoiventtreexamins(`ALL'estsynonymede `SYN,ACK,FIN,RST,URG,PSH'),maisseulementSYNetACKdoiventtreprsents.Ilyaaussi l'argument`NONE'quiveutdirepasdedrapeaux. syn Prcdoptionnelementd'un`!',c'estuneraccourcipour`tcpflagsSYN,RST,ACKSYN'. sourceportetsport suivid'un`!'optionnel,ensuitesoitunportTCPseul,ouunblocdeports.Lesportspeuventtre desnomsdeports,listsdans`/etc/services',oudesnombres.Lesblocssontsoit2nomsdeports sparspar`:',ou(pourspecifierplusgrandqueougala)unportavecun`:'ajout,ou(pour specifierpluspetitqueougala)unportprcdde`:'. destinationportetdport sontlesmmesqu'audessus,ilsspcifientjusteladestinationpluttquelasourcequiconvient. tcpoption suivid'un`!'optionneloud'unnombre,convientunpaquetquiauneoptionTCPquiquivautce nombre.Unpaquetquin'apasuneentteTCPcomplteestlaisstombautomatiquementsiun essaiestfaitpourexaminersesoptionsTCP.

UneExplicationdesDrapeauxTCP Ilestparfoisutiled'autoriserlesconnectionsTCPdansunsensmaispasdansl'autre.Parexemple, tupourraisvouloirautoriserlesconnectionsversunserveurWWWexterne,maispasles connectionspartirdeceserveur.

ThomasTRACHET

49

LFI

Firewall

L'approchenaiveseraitdebloquerlespaquetsTCPvenantduserveur.Malheureusement,les connectionsTCPonbesiond'avoirdespaquetsquivontdanslesdeuxsenspourfonctionner. Lasolutionestdebloquerseulementlespaquetsquisontutilisspourdemanderuneconnection. CespaquetssontappelsdespaquetsSYN(ok,techniquementcesontdespaquetsavecledrapeux SYNetpasdedrapeauxFINetACK,maisnouslesappelonspaquetsSYNpourfairepluscourt). Endniantseulementcespaquets,nouspouvonsstopperlestentativesdeconnections. Ledrappeau`syn'estutilispourcela:ilestseulementvalidepourlesrglesquispcifientTCP commeprotocole.Parexemple,pourspecifierunessaideconnectiondelapartde192.168.1.1: pTCPs192.168.1.1syn Cedrapeaupeuttrespcifienleprcdantde`!',quiveutdiretoutlespaquetssaufceux d'initiationdeconnection.

ExtensionsUDP Cesextensionssontautomatiquementschargessi`pudp'estspcifi.Ellesdonnentlesoptions` sourceport',`sport',`destinationport'et`dport'commedtaillpourletcpcidessus.

ExtensionsICMP Cesextensionssontautomatiquementschargessi`picmp'estspcifi.Ellesdonnentseulement uneseulenouvelleoption: icmptype suivid'un`!'optionnel,etensuiteunnomdetypeicmp(pe.`hostunreachable'),ouuntype numrique(p.e.`3'),ouuntypeetuncodenumriquesparsparun`/'(p.e.`3/3').Unelistede typesicmpdisponiblesestdonneenutilisant`picmphelp'.

AutresExtensionsdeConcordance Lesautresextensionsdanslepackagenetfiltersontdesextensionsdedmonstration,qui(si installes)peuventtreinvoquesavecl'option`m'. mac Cemoduledoittrespcifiexplicitementavec`mmac'ou`matchmac'.Ilestutilispour concorderdesadressesEthernet(MAC)depaquetsquiarrivent,etestseulementutilepour ThomasTRACHET 50

LFI

Firewall

conveniravecdespaquetstraversantleschainesINPUTetPREROUTING.Ildonneuneseule option: macsource suivid'un`!'optionnel,ensuiteuneadresseethernetennotationhexasparepar`:',pe`mac source00:60:08:91:CC:B7'.

limit Cemoduledoittrespcifiexplicitementavec`mlimit'ou`matchlimit'.Ilestutilispour limiterlavitessedeconcordance,commepourspecifierdesmessagesdelog.Ilconviendra seulementuncertainnombredefoispasseconde(pardfaut3concordancesparheure,avecune rservede5).Ilprendsdeuxargumentsoptionnels: limit suivid'unnombre;spcifielenombremaximumdeconcordancesallouesparseconde.Lenombre peutspecifierlesunitsexplicitement,enutilisant`/second',`/minute',`/hour'ou`/day',ouune partie(donc`5/second'estlemmeque`5/s'). limitburst suivid'unnombre,inndiquelarservemaximaleavantd'atteindrelalimitecidessus.Cette concordancepeutsouventtreutiliseaveclacibleLOGpoureffectuerdulogginglimitendbit. Pourcomprendrecommentcelafonctionneonvaregarderlarglesuivante,quiloguelespaquets aveclesparamtresdelimitepardfaut:# iptables -A FORWARD -m limit -j LOG #

Lapremirefoisquecettergleestatteinte,lepaquetseralogu;enfaitcommelarserveestde5, les5premierspaquetsserontlogus.Aprscela,20minutespasserontavantqu'unpaquetnesoit loguparcettergle,sanstenircomptedunombredepaquetsquil'atteignent.Aussi,chaque20 minutesquipassentsansconcorderavecunpaquet,unpaquetdelarserveseraregagn;siaucun paquetn'atteintlarglependant100minutes,larserveseracompltementrecharge;onestrevenu aupointdedpart. Note:tunepeuxpascrerdergleavecuntempsderechargedeplusde59heures,doncsitu configuresundbitmoyende1parjour,alorsledbitderservedoittreinfrieur3. Tupeuxaussiutilisercemodulepoureviterlesdniementdeservice(DoS)avecundbitsuprieur ThomasTRACHET 51

LFI pouraugmenterlavitessederaction. Protectionsynflood:# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT #

Firewall

Testdeportsfurtif:# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT #

Pingdelamort:# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT #

Cemodulefonctionnecomme"uneportehystrsis",commemontrdanslegraphequisuit.dbit (pkt/s) ^ .---. | / DoS \ | / \ limite de DoS -|.....:.........\....................... = (limit * | /: \ limit-reserve) | / : \ .-. | / : \ / \ | / : \ / \ Fin de DoS -|/....:..............:.../.......\..../. = limite | : :`-' `--' -------------+-----+--------------+------------------> temps (s) LOGIQUE =>concord.| pas concord. | concord.

Onditunpaquetparsecondeavecunerservede5paquetsmais,lespaquetscommencesarriver 4/spendant3secondespuisrecommencentaprs3autressecondes

ThomasTRACHET

52

LFI

Firewall

Total ^ Ligne __-YNNN Paquets| Dbit __-YNNN | mum __-YNNN 10 | Maxi __-Y | __-Y | __-Y | __-YNNN |YNNN 5 | Y | Y Key: Y -> Rgle concorde | Y N -> Rgle concorde pas | Y |Y 0 +--------------------------------------------------> Temps (secondes) 0 1 2 3 4 5 6 7 8 9 10 11 12

Tupeuxvoirqueles5premierspaquetssontautorissdepasserlalimitedeunpaquetpar seconde,ensuitelalimiteentreenjeu.Siilyaunepause,unautreblocestautoris,maispasau dessusdelalimitemaximumconfigureparlargle(1paquetparsecondeaprsquelapremire rservesoituse). owner Cemoduleessayedeconcorderlescaractristiquesvariesducrateurdupaquet,pourlespaquets gnrslocallement.IlestseulementvalidepourlachaineOUTPUT,etmmecommecela,certains paquets(commelesrponsesdepingICMP)n'aurontpasdepossesseur,etdoncneconcorderont jamais. uidowneruserid Concordesilepaquetatcrparunprocessusquialeuserideffectif(numrique)donn. uidownergroupid Concordesilepaquetatcrparunprocessusquialegroupideffectif(numrique)donn. pidownerprocessid Concordesilepaquetatcrparunprocessusquialeprocessdonn. sidownersessionid Concordesilepaquetatcrparunprocessusquialegroupedesessiondonn.

ThomasTRACHET

53

LFI unclean

Firewall

Cemoduleexprimentaldoittrespcifiexplicitementavec`muncleanou`matchunclean'.Il effectuedesvrificationssanitairesalatoiresetvariessurlespaquets.Cemodulen'apasttest, etnedevraitpastreutiliscommeunefonctiondescurit(ilrendpeuttreleschosesplus mauvaisessiiladesbugsluimme).Iln'apasd'options.

LaConcordanced'Etat Lecritreleplusutileestfourniparl'extension`state'quiinterprtel'analysedesuivideconnection dumodule`ip_conntrack'.Ilestfortementrecommend. Specifier`mstate'permetuneoptionadditionelle`state',quiestunelistesparepardesvirgules d'tatsquiconviennent(les`!'indiquentlestatsquineconviennentpas.Cestatssont: NEW Unpaquetquiengendreunenouvelleconnection. ESTABLISHED Unpaquetquiappartientuneconnectionexistante(p.e.,unequiaeudespaquetsderponse). RELATED Unpaquetquiestrelata,maispaspartiede,uneconnectionexistante,commeuneerreurICMP, ou(aveclemoduleftpcharg),unpaquetquietablituneconnectiondedonnesftp. INVALID Unpaquetquinepeutpastreidentifipourn'importequelleraison:ceciincluslemanquede mmoireetleserreursicmpquinecorrespondentaucuneconnectionconnue.Gnrallement,ces paquetsdoiventtrelaisstombs.

3.5.4 SpecificationsdeCiblesMaintenantnousconnaissonslesexamensquenouspouvonsfairesurunpaquet,nousavonsbesoin detrouverunefaondedirequoifairedecespaquetsquicorrespondentnostests.Ceciestappel lacibled'unergle.

ThomasTRACHET

54

LFI

Firewall

Ilyadeuxciblessimplescompiles:DROPetACCEPT.Nouslesavonsdjarencontres.Siune rglecorrespondunpaquetetquelacibleestunedecellesci,lesrglessuivantesnesontpas consultes:lesortdupaquetatdcid. Ilyadeuxautrestypesdeciblesquecellesquisontcompiles:lesextensionsetleschainescres parl'utilisateur.

Leschainescresparl'utilisateur Unepropritpuissantequeiptableshritedeipchainsestlapossibilitpourl'utilisateurdecrerde nouvelleschaines,enadditionacellesquiexistentdja(INPUT,FORWARDetOUTPUT).Par conventionleschainesutilisateursontenminusculepourlesdistinguer,nousdcrironscomment crerdeschainesutilisateurdans``OprationssuruneChaineEntire''cidessous). Quandunpaquetconcordeunergledontlacibleestunechaineutilisateur,lepaquetcommence traverserlesrglesdanslachaineutilisateur.Sicettechainenedcidepasdusortdupaquet,alors unefoisquelatraversedecettechaineesttermine,latraversereprendsurlarglesuivantedela chainecourante. Ilesttempspourunpeuplusd'artASCII.Considronsdeuxchaines: INPUT(lachainepardefaut)ettest(unechaineutilisateur).`INPUT' ---------------------------| Rgle1: -p ICMP -j DROP | |--------------------------| | Rgle2: -p TCP -j test | |--------------------------| | Rgle3: -p UDP -j DROP | ---------------------------`test' ---------------------------| Rgle1: -s 192.168.1.1 | |--------------------------| | Rgle2: -d 192.168.1.1 | ----------------------------

ConsidronsunpaquetTCPvenantde192.168.1.1,allant1.2.3.4.IlentredanslachaineINPUT, etesttestparlargle1pasdeconcordance.Largle2concordeetsacibleesttest,donclargle suivanteexamineestledebutdelachainetest.Largle1detestconcordemaisnespcifiepasde cible,donclarglesuivanteestexamine,largle2.Caneconcordepas,nousavonsatteintlafin delachainetest.NousretournonslachaineINPUTounousvenonsd'examinerlargle2,donc nousexaminonslargle3,quineconcordepasd'avantage. Donclatraversedupaquetest:

ThomasTRACHET

55

LFIv __________________________ `INPUT' | / `test' v ------------------------|--/ -----------------------|---| Rgle1 | /| | Rgle1 | | |-----------------------|/-| |----------------------|---| | Rgle2 / | | Rgle2 | | |--------------------------| -----------------------v---| Rgle3 /--+___________________________/ ------------------------|--v

Firewall

Leschainesutilisateurspeuventsauterdansd'autreschainesutilisateur(maisnefaispasde boucles:tespaquetsserontlaissstombersiilssontdansuneboucle).

Extensionsiptables:NouvellesCibles L'autretypedecibleestuneextension.Uneextensiondecibleconsisteenunmoduledunoyau,et uneextensionoptionneleiptablespourpermettredenouvellesoptionssurlalignedecommande. Ilyaplusieursextensionsdansladistributionnetfilter: LOG Cemodulepermetdeloggerlespaquetsquiconcordent.Ildonneplusieursoptionsadditionelles: loglevel Suivid'unnombredeniveauoud'unnom.Lesnomsvalidessont(nonsensiblelacasse)`debug', `info',`notice',`warning',`err',`crit',`alert'and`emerg',correspondentauxnombres70.Voirla pagedemanueldesyslog.confpouruneexplicationdecesniveaux. logprefix Suivid'unechainede29caractresmaximum,cemessageestenvoyaudbutdumessagedelog, pourluipermettred'treidentifiuniquement. Cemoduleestleplusutileaprsuneconcordancelimit,pournepassaturerleslogs. REJECT Cemodulealesmmeseffetsque`DROP',exceptquel'envoyeurreoitunmessaged'erreur ICMP`portunreachable'.Notesquelemessaged'erreurICMPn'estpasenvoysi(voirRFC 1122): ThomasTRACHET 56

LFI Lepaquetfiltretaitunmessaged'erreurICMP,ouuntypeICMPinconnu. Lepaquetfiltrestunfragmentsansentte. .Nousavonsenvoytropdemessagesd'erreurICMPcettedestinationrcemment.

Firewall

REJECTpeutaussiprendreuneoption`rejectwith'quialtreletypedupaquetderponse utilis:voirlapagedemanuel.

CiblesSpecialescompiles Ilya2ciblesspecialescompiles:RETURNetQUEUE. RETURNalemmeeffetquedetomberlafind'unechaine:pourunergledansunechaine compile,lapolicedelachaineestexcute.Pourunergledansunechaineutilisateur,la traversecontinuedanslachaineprcdente,justeaprslarglequiasautsurcettechaine. QUEUEestuneciblespciale,metlespaquetsenqueuepourlestraiterenespaceutilisateur.Pour queasoitutile,deuxcomposantssupplmentairessontrequis: un"arbitredequeue",quiutiliselesmcanismesdunoyaupourpasserlespaquetsentrele noyauetl'espaceutilisateur;et uneapplicationutilisateurpourrecevoir,peuttremanipuler,etdonnerunverdictsurles paquets. L'arbitredequeuestandardIPV4pouriptablesestlemoduleip_queue,quiestdistribuavecle noyauetmarqucommeexprimental. Cequisuitestunexemplerapidedecommentutiliseriptablespourmettredespaquetsenqueue pourlestraiterenespaceutilisateur:# modprobe iptable_filter # modprobe ip_queue # iptables -A OUTPUT -p icmp -j QUEUE

Aveccettergle,lespaquetsICMPsortantsgnrslocallement(commecrsparexempleavec ping)sontpasssaumoduleip_queue,quiensuiteessayededlivrerlespaquetsuneapplication utilisateur. Siaucuneapplicationn'estlpourprendrelespaquets,ilssontlaissstomber. Pourcrireuneapplicationutilisateur,utilisesl'APIlibipq.Elleestdistribueaveciptables.ducode d'exemplepeuttretrouvaveclesoutilsdelasuitedetests(p.e.redirect.c)enCVS.

ThomasTRACHET

57

LFI Lestatusdeip_queuepeuttrevrifivia: /proc/net/ip_queue

Firewall

Lalongueurmaximaledelaqueue(lenombredepaquetsdlivrsl'espaceutilisateursansverdict retourn)peuttrecontrollvia: /proc/sys/net/ipv4/ip_queue_maxlen Lavaleurpardfautdelalongueurmaximumdelaqueueest1024.Unefoisquecettelimiteest atteinte,lesnouveauxpaquetsserontlaissstomberjusqu'acequelalongueurdelaqueuetombeen dessousdelalimite.LesprotocolesbienfaitscommeleTCPinterprtentlespaquetslaisss tombscommeunecongestion,etragirontpositivementlorsquelaqueueseremplit.Detoutes faons,desexpriencesdoiventtrefaitespourdeterminerlalongueurdequeuemaximalepourune situationdonnesilavaleurpardfautesttroppetite.

3.5.5 OperationssuruneChaineEntireUnepropritutiledeiptablesestlapossibilitdegroupperdesrglesdansdeschaines.Tupeux appelerleschainescommetuveux,maisjerecommendelesminusculespourviterlaconfusion avecleschainescompilesetlescibles.lesnomsdechainespeuventtrede31caractres maximum.

CreruneNouvelleChaine Cronsunenouvellechaine.Parcequejesuisimaginatifjel'appeleraitest.Nousutilisonsl'option` N'ou`newchain':# iptables -N test #

C'estaussisimplequea.Maintenanttupeuxmettredesrglesdedanscommedtaillaudessus.

SupprimeruneChaine Effacerunechaineestsimpleaussi,enutilisantl'option`X'ou`deletechain'.Pourquoi`X'? Ben,touteslesbonnesrglestaientprises.

ThomasTRACHET

58

LFI# iptables -X test #

Firewall

Ilyaquelquesrestrictionspoureffacerunechaine:ellesdoittrevide(voir``VideruneChaine'' dessous)etellenedoitpastrelacibled'unetable.Tunepeuxpaseffacerunedeschaines compiles. Situnespcifiepasdechaine,toutesleschainesutilisateurseronteffaces,sipossible.

VideruneChaine Ilyaunefaonsimpled'effacertouteslesrglesd'unechaine,enutilisantlacommande`F'(or` flush').# iptables -F FORWARD #

Situnespcifiepasdechaine,alorstoutesleschainesserontvides.

ListeruneChaine Tupeuxlistertouteslesrglesd'unechaineenutilisantlacommande`L'(or`list'). Le`refcnt'listpourchaquechaineutilisateurestlenombrederglesquiontcettechainepour cible.Ildoittrezero(etlachainedoittrevide)avantquecettechainesoitefface. Silenomdelachaineestomis,toutesleschainessontlistes,mmeleschainesvides. Ilyatroisoptionsquipeuventaccompagner`L'.Le`n'(numrique)quiestvraimentutilecaril viteiptablesd'essayerdersoudrelesadressesIP,qui(situutilisesdesDNScommelapluspart desgens)causeradelargesdlaissitonDNSn'estpasconfigurconvenablement,outuasfiltrles requtesDNS.IlcauseaussilesportsTCPetUDPaulieud'treaffichparleurnomserontaffich parlenumero. L'option`v'temontretouslesdtailsdesrgles,commelescompteursdepaquetsetd'octets,les comparaisonsTOS,etlesinterfaces.Sinoncesvaleurssontomises.

ThomasTRACHET

59

LFI

Firewall

Notesquelescompteursdepaquetsetd'octetssontcrisenutilisantlessuffixes`K',`M'ou`G' pour1000,1,000,000et1,000,000,000respectivement.Utiliser`x'(expansiondesnombres)crit lesnombrescompletssansimportanceavecleurgrandeur.

Resetter(Zeroer)lesCompteurs Ilestutiledepouvoirremettrelescompteurszro.Capeuttrefaitavecl'option`Z'(ou`zero'). Considresceci:# iptables -L FORWARD # iptables -Z FORWARD #

Dansl'exempledudessus,quelquespaquetspourraientpasserentrelescommandes`L'et`Z'.Pour cetteraison,tupeuxutiliser`L'et`Z'ensembles,pourremettrelescompteurszeroenleslisant. ConfigurerlaPolice Nousavonsparldecequiarrivequandunpaquetarrivelafind'unechainecompilequandnous avonsdiscutcommentunpaquettraversaitleschainesplustt.Danscecas,lapolicedelachaine dterminelesortdupaquet.Seulesleschainescompiles(INPUT,OUTPUTetFORWARD)ont despolices,causedufaitquesiunpaquettombelafind'unechaineutilisateur,latraverse reprendlachaineprcdente. LapolicepeuttresoitACCEPTouDROPparexemple:# iptables -P FORWARD DROP #

ThomasTRACHET

60

LFI

Firewall

3.6 MixerleNATetleFiltragedePaquetsIlestcommundevouloirfairedelaTranslationd'AdressesRseaux(voirleNATHOWTO)etle filtragedepaquets.Labonnenouvelleestqu'ilssemixentextrmementbien. TuconfigurescompltementtonfiltragedepaquetsenignoranttoutleNATquetuferas.Les sourcesetdestinationsvuesparlefiltredepaquetsserontlessourcesetdestination`relles'.Par exemple,situeffectuesduDNATpourenvoyertouteslesconnectionsduport80de1.2.3.4 traversleport8080de10.1.1.1,lefiltredepaquetsverralespaquetsallantauport8080de10.1.1.1 (ladestinationrelle),pasleport80de1.2.3.4.Similairementtupeuxignorerlemasquerading:les paquetssemblerontvenirdeleursadressesipinternesrelles(disons10.1.1.1),etlesrponses semblerontretournerlbas. Tupeuxutiliserlaconcordance`state'sansfairefairedutravailsupplmentaireaufiltredepaquets, puisqueleNATrequiertlesuivideconnectionsdetoutesfaons.Pourtendrelesimpleexemplede masqueradingdansleNATHOWTOquirejtetouteslesnouvellesconnectionvenantdel'interface ppp0,tuferaisceci: Masqueraderppp0# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

RejeterlespaquetsNEWetINVALIDvenantouforwardsdeppp0.# iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP # iptables -A FORWARD -i ppp0 0 -m state --state NEW,INVALID -j DROP #

ActiverleforwardingIP# echo 1 > /proc/sys/net/ipv4/ip_forward

ThomasTRACHET

61

LFI

Firewall

3.7 MiseenGardesurleFiltredePaquetsLafaongnralledeprocderdanslascuritinformatiqueestdetoutbloquerpuisd'ouvrirdes trousquandc'estncessaire.C'esthabituellementparaphraspar`toutcequin'estpas spcifiquementautorisestdfendu'.Jerecommendescetteapprochesilascuritestunprimeur. Nefaispastournerdeservicedonttun'aspasbesoin,mmesitupensesavoirbloqul'accsvers ceuxci. Situcresunfirewallddi,commencesparnerienfairetournerettoutbloqueretajoutesles servicesetlaissespasserlespaquetsquandc'estncessaire. Jerecommendeslascuritenprofondeur:combineslestcpwrappers(pourlesconnectionsau filtredepaquetsluimme),laverificationderouteetlefiltragedepaquets.Laverificationderoute c'estquandunpaquetquivientd'uneinterfacenonattendueestlaisstomber:parexemple,siun rseauinterneadesadresses10.1.1.0/24,etqu'unpaquetaveccetteadressesourcevientsurton interfaceexterne,ilseralaisstomber.Cecipeuttreactivpouruneinterface(ppp0)par:# echo 1 > /proc/sys/net/ipv4/conf/ppp0/rp_filter #

Oupourtouteslesinterfacesexistantesoufutures:# for f in /proc/sys/net/ipv4/conf/*/rp_filter; do # echo 1 > $f # done #

Debianfaitcelapardfautquandc'estpossible.Situutilisesduroutageassymtrique(p.e.tu attendsdespaquetsquiviennentdedirectiontranges),tuvoudrasdsactivercelasurcesinterfaces. Leloggingestutilequandturalisesunfirewallsiquelquechosenefonctionnepas,maissurun firewalldeproduction,combinesleaveclaconcordance`limit',poureviterquequelqu'unnesatures teslogs. Jerecommendesfortementlesuivideconnectionssurlessystmesscuriss:ilintroduitunpeu plusdecharge,commetouteslesconnectionssontsuivies,maisesttrsutilepourcontrollerl'accs tesrseaux.Tudevraschargerlemodule`ip_conntrack.o'sitonnoyaunechargespaslesmodules automatiquement,etqu'iln'estpascompildanslenoyau.Situveuxsuivreconvenablementdes protocolescomplexes,tudevrachargerlemoduledesuiviapropri(pe.`ip_conntrack_ftp.o'). ThomasTRACHET 62

LFI# iptables -N no-conns-from-ppp0 # iptables -A no-conns-from-ppp0 # iptables -A no-conns-from-ppp0 # iptables -A no-conns-from-ppp0 packet from ppp0:" # iptables -A no-conns-from-ppp0 packet not from ppp0:" # iptables -A no-conns-from-ppp0

Firewall-m state --state ESTABLISHED,RELATED -j ACCEPT -m state --state NEW -i ! ppp0 -j ACCEPT -i ppp0 -m limit -j LOG --log-prefix "Bad -i ! ppp0 -m limit -j LOG --log-prefix "Bad -j DROP

# iptables -A INPUT -j no-conns-from-ppp0 # iptables -A FORWARD -j no-conns-from-ppp0

ThomasTRACHET

63

LFI

Firewall

4 Translationd'adressesrseauxCechapitredcritcommentraliserdumasquerading,unproxytransparent,delaredirectionde ports,etd'autresformesdeNetworkAddressTranslations(Translationd'addressesrseaux)avec lesNoyauLinux2.4etsuivants.

ThomasTRACHET

64

LFI

Firewall

4.1 Qu'estcequeNetworkAddressTranslation?Normalement,lespaquetssurunrseauvoyagentdeleursource(parexempletonordinateurde bureau)leurdestination(parexemplewww.gnumonks.org)traversdiffrentsliens:environ19 d'ojesuisenAustralie.Aucundecesliensn'altrentvraimenttonpaquet:ilslerenvoientjuste plusloin. SiundeceslienseffectuaitduNAT,alorsilaltreraitlasourceouladestinationdupaquetpendant qu'ilpasse.Commeonpeutl'imaginer,cen'estpascommecaquelesystmeatconstruitpour fonctionner,etleNATesttoujoursquelquechosedefoireux.Gnrallementlelienquieffectuedu NATvaserappelercommentilamodifilepaquet,etquandunerponsepasseradansl'autresens, ileffectueralamodificationinversesurcepaquetderponse,pourquetoutfonctionnebien.

ThomasTRACHET

65

LFI

Firewall

4.2 PourquoiVoudraisJeUtiliserduNAT?Dansunmondeparfait,tunedevraispas.Autrementlesraisonsprincipalessont: LesConnectionsparModemInternetLapluspartdesFAItedonnentuneseuleaddressequandtu teconnectechezeux.Tupeuxenvoyerdespaqu