; TeX output 2003.11.26:1330_2 ~?ՁZ2Iqqecss2074LinuxfIPCHAINSHOwmWTO cG 1 ecrm1000RustyU RussellNv1.0.8,T*ueJul414:20:53EST2000&6 ecss1000Questo;doGcumentointendedescriverecomeottenere,˜installareecongurareilsoftwaredienhancedIPrewallingchains^pGer^Linux,nealcuneideesucomesipotrebbeusarlo.;T*raduzioneacuradiGiovanniBortolozzo8 ecsi1000bGortoatpluto.linux.itU .(&Lt$ffffecbx1440Indice]f ecbx10001In>troQduzione3ؼ1.1%Cos'?׍.荍................................................w31.2%Perch?o.荍...............................................w41.3%Come?I.荍................................................w41.4%Dove?{.荍................................................w42F ondamen>tidipacketltering)Qd42.1%Cos'?׍.荍................................................w42.2%Perch?o.荍...............................................w52.3%Come?I.荍................................................w5%2.3.1EUnU kernelconilltraggiodeipacchettii.荍.........................w5%2.3.2EipGchainsJٍ.荍...........................................w6%2.3.3ERendereU pGermanentileregole?񍍑.荍...............................w63Sonoconfuso! Instradamen>to,masquerading,pQortforwarding,ipautofw...RD73.1%LeU trelineeguidadiRustyalmasquerading.荍...........................w73.2%PromozioneU gratuita:qW*atchGuard鍍.荍................................w83.3%CongurazioniU comunidirewall1'.荍.................................w8%3.3.1EReteU privqata:qproxytradizionaleq.荍.............................w8%3.3.2EReteU privqata:qproxytrasparenteݍ.荍..............................w9%3.3.3EReteU privqata:qmasquerading.荍................................x?10%3.3.4EReteU pubblica͍.荍........................................x?11%3.3.5EServiziU internilimitatiiy.荍...................................x?113.4%UlterioriU informazionisulmasqueradingG.荍.............................x?124IPFirew>allChains\124.1%ComeU passanoipacchettiattraversoiltri.荍............................x?12%4.1.1EUsareU ipGchainsD.荍.......................................x?13%4.1.2ECosaU sivedrquandoilpropriocomputervieneavviato.荍................x?14*_2 ~?GINDICE]!2ՁV%4.1.3EOpGerazioniU suunasolaregola걍.荍...............................x?15ؼ%4.1.4ESpGecicareU illtraggio1.荍...................................x?16%4.1.5EEettiU collateralidelltraggio.荍...............................x?19%4.1.6EOpGerazioniU sulmasqueradingj.荍...............................x?25%4.1.7EControllareU unpacchetto).荍.................................x?25%4.1.8EPiU regoleinunavoltasolaecontrollarecosasuccede|.荍.................x?264.2%UnU utileesempio獍.荍..........................................x?26%4.2.1EUsareU ipGchains-saveb .荍.....................................x?28%4.2.2EUsareU ipGchains-restore~͍.荍...................................x?285Miscellaneaq295.1%ComeU organizzareleproprieregolerewall.荍............................x?295.2%CosaU nonltrare<Ǎ.荍..........................................x?29%5.2.1EPacchettiU ICMP.荍......................................x?29%5.2.2EConnessioniU TCPalDNS(nameserver)O.荍.........................x?30%5.2.3EIncubiU daFTP.荍.......................................x?305.3%FiltrareU iPingdellaMorte㍍.荍.....................................x?305.4%FiltrareU T*eardropeBonk/׍.荍.....................................x?315.5%FiltrareU iF*ragmentBombLw.荍.....................................x?315.6%CambiareU leregolerewalla.荍.....................................x?315.7%ComeU proteggersidall'IPSpGoong?덍.荍................................x?315.8%ProgettiU avqanzati.荍..........................................x?32%5.8.1ESPF:U StatefulPacketU Filtering.荍..............................x?33%5.8.2EL'ftp-dataU hackdiMichaelHasenstein:=.荍..........................x?335.9%EstensioniU future<׍.荍..........................................x?336Problemicom>unie_j336.1%ipGchainsU -Lsipianta! Í.荍........................................x?336.2%LeU opzioninegatenonfunzionano!󍍑.荍................................x?346.3%Masquerading/F*orwardingU nonfunziona!.荍.............................x?346.4%-jU REDIRnonfunziona!'.荍......................................x?346.5%NonU funzionanoicaratterijollynelleinterfacce!󋍍.荍.........................x?346.6%TOSU nonfunziona!g׍.荍.........................................x?346.7%NonU funzionanoipautofweippGortfw![.荍...............................x?356.8%xosviewU sirotto!.荍.........................................x?356.9%SegmentationU F*aultcon`-jREDIRECT'`!Nύ.荍............................x?356.10%NonU riescoaimpGostareitimeoutdelmasquerading!.荍......................x?356.11%V*oglioU deirewallIPX!.荍......................................x?35(_2 ~?G1.8In>troQduzione~3ՁV7UnesempiopiserioQ35ؼ7.1%LaU situazione&㍍.荍............................................x?357.2%Scopi忍.荍.................................................x?367.3%PrimaU delltraggiodeipacchettiT.荍.................................x?377.4%FiltraggioU deipacchettipGeripacchettidipassaggio;.荍.......................x?38%7.4.1EImpGostareU isaltidallacatenaforward5.荍..........................x?38%7.4.2EDenireU lacatenaicmp-accY.荍................................x?38%7.4.3EDaU GoGod(interno)aDMZ(server)R.荍............................x?38%7.4.4EDaU Bad(esterno)aDMZ(server).э.荍............................x?39%7.4.5EDaU GoGod(interno)aBad(esterno)..荍...........................x?40%7.4.6EDaU DMZaGoGodU (interno).4.荍................................x?40%7.4.7EDaU DMZaBad(esterno).j.荍.................................x?41%7.4.8EDaU Bad(esterno)aGoGodU (interno)..荍...........................x?41%7.4.9EFiltraggioU deipacchettipGerlamacchinaLinuxstessa.荍..................x?417.5%PerU nire.荍..............................................x?438AppQendice: Dierenzetraipc>hainseipfwadm438.1%T*abGellaU diriferimentorapidok.荍...................................x?448.2%EsempiU ditraduzionedicomandiipfwadm]W.荍............................x?459AppQendice: Usareloscriptipfw>adm-wrapper.Rp4510AppQendice: Ringraziamen>ti.-4610.1%T*raduzionic.荍..............................................x?46(1Inctropduzione:QuestoSilLinuxIPCHAINS-HOWTO;sivedalaSezione1.4(Dove?)mpGerconoscerel'indirizzodelsito principale,Eche[contienel'ultimaversione. SidovrebbGeleggereancheilLinuxNET-3-HOWTO.L'IP-MasqueradingHOWTO,ilPPP-HOWTO,l'Ethernet-HOWTOeilFirewallHOWTOpGossonoesserealtrelettureU interessanti(comed'altrondelopGossonoessereleFAQdialt.fan.bigfoGot).ؼSeinteressailltraggiodeipacchetti(packetltering),sileggalaSezione1.2(Perch?),laSezione2.3(Come?)qeU sidiaun'oGcchiataaititolinellasezione4(IPFirewallingChains).Se;sistaopGerandolaconversione;daqL ectt1000ipfwadm,@sileggalaSezione1(Introduzione),@lasezione2.3(Come?)ieleappGendicinellasezione8(Dierenzetraipchainseipfwadm)enellasezione9(L'usodelloscript`ipfwadm-wrappGer').#Í!N ecbx12001.1Cos'?MIlTLinuxipchainsunariscritturadelcoGdicedirewallingIPv4diLinux(ilqualeerastatorubatoprinci-palmente daBSD)eunariscritturadiipfwadm,cheasuavoltaera,almenopGenso,unariscritturadiipfw`_2 ~?G2.8F ondamen>tidipacketltering'-4ՁVdi}BSD.ȑ}richiestopGeramministrareilltraggiodeipacchettiIP}nelleversionidelkerneldiLinux2.1.102 eU supGeriori.#Í1.2Perch?MIlvecchiocoGdicedirewallingdiLinuxnongestisceiframmenti(fragment),Ihacontatoria32bit(almenosuUIntel),nonpGermettedispecicareprotocollidiversidaTCP*,UDP.eICMP,nonpurendereatomichegrossemoGdiche,nonpuspecicareregoleinverse,haqualchescemataepurisultarediciledamanipGolare(rendendoloU propGensoaerroriutente).1.3Come?MAttualmenteilcoGdicefapartedelkernelapartiredallaversione2.1.102.bPerlaseriedeikernel2.0,莡necessarioşscaricareunapatchdallapaginaweb.ASeilpropriokernel2.0pirecentedellapatchdispGonibile,unahpatchpivecchiadovrebbGeandarebenelostesso;Nquestapartedelkernel2.0piuttostostabile(eg.laxppatchpGerilkernel2.0.34funzionabGenesulkernel2.0.35).pPoichlapatchpGeril2.0incompatibileconlepatchippGortfweipautofw,QnonraccomandodiapplicarlaamenochenonsiabbiaveramentebisognodialcuneU dellefunzionalitcheoreipGchains.1.4Dove?MLaU paginaucialeintrepGosti:ؼHЃ ecti1000Ringr}/aziolaPenguinComputingU http://netfilter.filewatcher.org/ipchainsRingr}/azioilSAMBAT;eamU http://www.samba.org/netfilter/ipchainsRingr}/azioJimPickU http://netfilter.kernelnotes.org/ipchainsEsisteEpunamailinglistpGerlesegnalazionidibug,discussione,sviluppoEpeuso.BqȑE2possibileassociarsialla mailing~ZlistinviandounmessaggiocontentesubscribGeipchains-listSasubscribeateast.balius.com./PerscrivereU atuttigliiscrittiallalistasiusiipGchains-listateast.balius.com.(2F(ondamenctiG\dipacketltering荍2.1Cos'?T*uttoiltracoattraversounareteinviatosottoformadipacc>hetti.WqPeresempio,loscaricarsiquestodoGcumentoF(facciamocontosialungo50k)faschesiricevqano36opipacchettida1460byteognuno(tantopGerU mettereunpo'dinumeri).ؼL'iniziopdiognipacchettospGecicadovedeveandare,dadoveviene,iltipGodipacchettoealtridettagliamministrativi.RQuestaRparteinizialedelpacchettodettaheader(intestazione).RIlrestodelpacchetto,contenenteU idatirealidatrasmettere,solitamentedettobQodyU (corpGo).Alcuni%protoGcolli,WcomeTCP,usatoperiltracoweb,Wmaileloginremoti,usanoilconcettodiconnessione:primaSdiinviareunqualsiasipacchettoconidatireali,sonoscambiatidiversipacchettidiimpGostazione(conintestazioniFspGeciali)chediconoV*oglioconnettermi,OKeGrazie.EPoisonoscambiatiipacchettinormali.Unltrodipacchetti(packetlter)unpGezzodisoftwarecheguardal'intestazione]^deipacchettichepassanoe:decideildestinodell'interopacchetto.PotrebbGedeciderediproibire(deny)ilpacchetto(ie.scartareil_2 ~?G2.8F ondamen>tidipacketltering'-5ՁVpacchettoocomenonfossemaistatoricevuto),u|accettare(accept)ilpacchetto(ie.)lasciarecheilpacchetto prosegua),oriutare(reject)ilpacchetto(simileaproibire,macomunicainoltreallafontedelpacchettoquelloU chehafatto).ؼSottoÃLinux,illtraggiodeipacchetticontenutoall'internodelkernelecisonoalcunecosettedivertentichesipGossonofareconipacchetti,mailprincipiogeneralesemprequellodiguardareleintestazioniedidecidereU lasortedeipacchetti."ȍ2.2Perch?MControllo.qSicurezza.Vigilanza.Con>trollo: QquandoSsiusaunamacchinaLinuxpGerconnetterelapropriareteinternaaun'altrarete(Internet,adesempio)sihal'oppGortunitdipermetteuncertotipoditracoediproibirnedell'altro.Peresempio,&8l'intestazionediunpacchettocontienel'indirizzodelladestinazionedelpacchetto,&8equindisipu;impGedireaipacchettidiandareversounacertapartedellareteesterna.Unaltroesempio:usoNetscapGeĭperaccedereagliarchividiDilbert.AZNellapaginacisonoavvisipubblicitarididoubleclick.nete"NetscapGesprecailmiotemposcaricandolipedissequamente.DicendoalltrodeipacchettidinonpGermetterealcunpacchettodaoversol'indirizzopGossedutodadoubleclick.netsirisolvequelproblema(ancheU sepGensocisianomodimiglioriperrisolverlo).fSicurezza:quandolapropriamacchinaLinuxlasolacosatrailcaosdiInternetelapropriabGellaeordinatarete,'bGenesaperechesipulimitarequelchevieneabussareallapropriapGorta.bLPeresempio,0sipGotrebbepGermetterenaqualsiasicosadiusciredallapropriarete,#macertamentenonsibendispostiversoicosiddetticaPingdellaMorte8provenienticadaestraneimaliziosi.DUnaltroesempio:sipuvolerevitareche9gliestraneipGossanofaretelnetnellamacchina,ranchesetuttigliaccounthannounapassword;oppuredsivuole(comemoltid'altronde)essereunsempliceosservqatoreinInternetenonunserver(volente onolente):LYsemplicemente nonsipGermettaanessunodiconnettersi,facendoscheilltrodeipacchettiU riutituttiipacchettientrantiusatipGerinstaurareunaconnessione.fVigilanza:talvoltaunamacchinamalconguratainunareteloGcaledecidediemetterepacchettipGerilmondoesterno.bȑgbGenegdirealltrodeipacchettidiinformarvisesuccedequalcosadianormale;qforsesipu򎡍fareU qualcosapGerrisolverlooforsesisolocuriosipernatura."ȍ2.3Come?M2.3.1#!\Unk>ernelconilltraggiodeipacchettiȑnecessariounkernelchepGossiedaalsuointernoilnuovosuppGortoperleIPrewallchains~X(catenerewall IP).Fȑ-pGossibilesapereseilkernelattualmenteinesecuzionecel'hacercandoille`/proGc/net/ip_fwchains'.SeU esiste,allorac'.ؼSe&cosnon,XnecessariocompilareunkernelchesuppGortilecatenerewallIP*.Perprimacosasiscarichinoi!sorgentidelkernelchesivuole.`aSesipGossiedeunkernelversione2.1.102osupGeriorenonsiavrbisognodiunapatch(gipresentenelkernel).'(Altrimentisiapplichilapatchscaricabiledallapaginawebsuddettae sieettuilacongurazionecomespiegatodettagliatamentenelseguito.Senonsisacomefarlo,6nientepanico:qsiU leggailKernel-HOWTO.LeU opzionidicongurazionechesarnecessarioimpGostarep}/erikerneldellaserie2.0sono:ffG`_2 ~?G2.8F ondamen>tidipacketltering'-6ՁV)`CONFIG_EXPERIMENTAL=y )`CONFIG_FIREWALL=y)`CONFIG_IP_FIREWALL=y)`CONFIG_IP_FIREWALL_CHAINS=y RffG&PerU ikerneldelleserie2.1o2.2Z:GĉffG#)`CONFIG_FIREWALL=y)`CONFIG_IP_FIREWALL=yffG&Lostrumentoipchainsdialogaconilkerneleloistruiscesuqualipacchettiltrare.AAmenochenonsisia9deiprogrammatori,?Noparticolarmentecuriosi,questoilsolomoGdoconcuisicontrollerilltraggiodeipacchetti. 卍2.3.2#!\ipQc>hainsMIl"programmaipchainsinserisceecancellaregoledallasezionediltraggiodeipacchettidelkernel.uCi򎡍signicaOchequalsiasicosasiimpGosti,sarpersaalriavvio;gsivedalasezione2.3.3(RenderepGermanentileregole)U pGerunmetodoperassicurarsichesianoripristinateall'avviosuccessivodiLinux.ؼipchainsrimpiazzaipfwadm, iusatopGerilvecchiocodicediFirewallIP*.NelsitoftpdiipchainsdisponibileunaU seriediscriptmoltoutili:http://netlter.lewatcher.or}/g/ipchains/ipchains-scripts-1.1.2.tar.gzQhttp://netfilter.filewatcher.org/ipchains/ipchains-scripts-1.1.2.tar.gzQuestopacchettocontieneunoscriptshellchiamatoipfwadm-wrapperchepGermettedieettuareilltraggiodei-wpacchetticomelosifacevqaprima.dHProbabilmentenonsidovrebbGeusarequestoscriptamenochenonsivogliaunmetoGdoveloGceperaggiornareunsistemacheusaipfwadm(pilento,noncontrollagliargomenti,ecc.).qInU talcaso,nonnecessarioproseguirelaletturadiquestoHOWTO.Sivedal'appGendice8(Dierezetraipchainseipfwadm)el'appGendice9(Usareloscript`ipfwadm-wrappGer')pGerU maggioridettagli. 卍2.3.3#!\RenderepQermanen>tileregoleMLa|congurazionecorrentedelrewallimmagazzinatanelkernelequindisarpGersaalriavvio.)MRaccomandodiTMusaregliscript`ipGchains-save'TMe`ipchains-restore'perrenderepermanentileregole.Perfarci,siimpGostinoleU proprieregole,pGoi(comeroot)silanci:hPqL ectt0900#Nipchains-save>/etc/ipchains.rules =#'SiU creiunoscriptcomeilseguente:#!N/bin/sh#NScriptpercontrollareilfiltraggiodeipacchetti#NSenoncisonoregole,nonfaniente.[N-f/etc/ipchains.rules]||exit0caseN"$1"in+:start)_2 ~?G3.8Sonoconfuso! Instradamen>to,masquerading,pQortforwarding,ipautofw...P!u7ՁV>rechoN-n"Attivazionedelfiltraggiodeipacchetti:" =>r/sbin/ipchains-restoreNrechoN1>/proc/sys/net/ipv4/ip_forward>rechoN".">r;;+:stop)>rechoN-n"Disattivazionedelfiltraggiodeipacchetti:">rechoN0>/proc/sys/net/ipv4/ip_forward>r/sbin/ipchainsN-F>r/sbin/ipchainsN-X>r/sbin/ipchainsN-PinputACCEPT>r/sbin/ipchainsN-PoutputACCEPT>r/sbin/ipchainsN-PforwardACCEPT>rechoN".">r;;+:*)>rechoN"Uso:/etc/init.d/packetfilter{start|stop}">rexitN1>r;;esacexitN0ؼCi siassicurichesiaeseguitoabbastanzaprestonellaproGceduradiavvio.Nelmiocaso(Debian2.1),<ho creatounlinksimbGolicochiamato`S39packetlter'nelladirectory`/etc/rcS.d'(cossareseguitoprimadiS40network).(3Sono4confuso!}Instradamencto,Nmasquerading,pportforwarding,ipautofw...:QuestoHOWTOsulltraggiodeipacchetti.Cisignicadeciderequandounpacchettodebbaomenoavere!ilpGermessodipassare.``Comunque,,essendoLinuxilcampGogiochideglihacker,,sivorrprobabilmentefareU qualcosinadipi.ؼUnRproblemachelostessostrumento(ipGchains)usatopGercontrollareancheilmasqueradingeilproxytrasparente,fsebbGeneyXquestesianoconcettualmentediversedalltraggiodeipacchetti(l'implementazionecorrenteU diLinuxinnaturalmentelefondeinsieme,dandol'impressionechesianostrettamentecollegate).IlvmasqueradingeilproxysonotrattatidaaltriHOWTO,mentrelecaratteristicheautoforwadingepGortforwardingysonocontrollatedaaltristrumenti,mapGoichlagentecontinuaadomandarmene,includeruninsiemeЬdiscenaricomunieindicherquandoognunopGossaessereapplicato.EZIЊmeritidisicurezzadiciascunacongurazioneU nonsarannoquidiscussi.#Í3.1LetrelineeguidadiRustyalmasqueradingMSi.Aassumechelapropriainterfacciaesternasichiami`ppp0'.dSiusiifcongpGerscoprirequalesiaggiustiilU tuttoapropriogusto.卑#Nipchains-PforwardDENY =#Nipchains-Aforward-ippp0-jMASQ#Necho1>/proc/sys/net/ipv4/ip_forward_2 ~?G3.8Sonoconfuso! Instradamen>to,masquerading,pQortforwarding,ipautofw...P!u8ՁV3.2Promozionegratuita:WatchGuardMIDrewallDsipGossonoanchecomprare.kUnoeccellenteilFireBoxdellaW*atchGuard.kȑDeccellentepGerchmi piace,%LVsicuro,basatosuLinuxeanchepGerchquellidellaW*atchGuardhannonanziatoilmantenimentodiCipGchainsedelnuovocoGdicedirewall(pGeril2.4).kwInbreve,FlaW*atchGuardmistapagandodamangiarementreU lavoropGervoi.qQuindiviinvitoaconsiderareiloroproGdotti.ؼhttp://www.watchguar}/d.comU http://www.watchguard.com#Í3.3CongurazionicomunidirewallSuppGoniamoHdiamministrareildominiolittlecorp.com.LSihaunareteinternaeunasolaconnessioneindialup~(PPP)~versoInternet(rewall.littlecorp.comche1.2.3.4).SiusaEthernetnellapropriareteloGcaleeU lapropriamacchinapGersonalesichiamamyhost.ؼQuesta5esezioneillustrerdiversiarrangiamenticomuni.fLisileggaattentamente,;pGerchsonosubGdolamentediversiU unodall'altro. 3.3.1#!\Retepriv\|ata: pro>xytradizionaleIn*questoscenario,3?ipacchettiprovenientidallareteprivqatanontraverserannomaiInterneteviceversa.cbGliindirizziiIPidellareteprivqatadovrannoessereassegnatisecondoleAddressAlloGcationforPrivqateInternetsRFC1918U (ie.q10.*.*.*,172.16.*.*o192.168.*.*).ؼIlsolomoGdonelqualecisipotrmaiconnettereaInternetdiconnettersialrewall,chelasolamacchinaineentrambGeleretichepuusciredallareteloGcale.8Perfarquestosipueseguireunprogramma(nelrewall)dettoproxy(cisonoproxypGerFTP*,accessoalweb,telnet,RealAudio,UsenetNewsealtriservizi).[OSivedailU FirewallHOWTO.Qualsiasi/serviziochesivuolesiaaccessibiledaInternetdeveesserenelrewall(sivedaanche3.3.5(ServiziinterniU limitati)nelseguito).Esempio:qPermettereU l'accessowebdallareteprivqataaInternetؼ 9b1.Alla!reteprivqatasonoassegnatigliindirizzi192.168.1.*,l!einparticolareamyhostassegnatoil192.168.1.100U eall'interfacciaEthernetdelrewallil192.168.1.1. 9b2.NelU rewallinstallatoeconguratounproxyweb(eg.qsquid),edinfunzionesullapGorta8080. 9b3.IlU NetscapGesullareteprivqataconguratoperusarelaporta8080delrewallcomeproxy*. 9b4.NelU reteprivqatanonservesiaconguratoilDNS. 9b5.IlU DNSdeveessereconguratosulrewall. 9b6.NellaU reteprivqatanondev'essereconguratonessuninstradamentopredenito(gateway).NetscapGeU sumyhostleggehttp://slashdot.org. 9b1.NetscapGesiconnetteallaporta8080delrewallusandolaporta1050sumyhost.BChiedelapagina webU dihttp://slashdot.org. 9b2.Iliproxycercailnomeslashdot.org?Eeottiene207.218.152.131.# Apreunaconnessioneconquell'indirizzoIPa(usandolapGorta1025sull'interfacciaesternadelrewall)echiedealserverweb(pGorta80)lapaginaweb. _2 ~?G3.8Sonoconfuso! Instradamen>to,masquerading,pQortforwarding,ipautofw...P!u9ՁV 9b3.Comeyilproxyricevelapaginawebdallasuaconnessioneconilserverweb,copiaidatinellaconnessione delU NetscapGe. 9b4.NetscapGeU mostralapagina.ͬDalpuntodivistadislashdot.org,laconnessionefattadallapGorta1025di1.2.3.4(l'interfacciaPPPdelrewall)versolapGorta80di207.218.152.131(slashdot.org).@WDalpuntodivistadimyhost,#fattadallapGorta1050U di192.168.1.100(myhost)versolapGorta8080di192.168.1.1(l'interfacciaEthernetdelrewall). ӳ3.3.2#!\Retepriv\|ata: pro>xytrasparenteMInoquestoscenarioipacchettidallareteprivqatanonpassanomaisuInterneteviceversa.jmGliindirizziIPdellareteprivqatadovrannoessereassegnatisecondoleAddressAlloGcationforPrivqateInternetsRFC1918(ie.q10.*.*.*,U 172.16.*.*o192.168.*.*).ؼIlsolomoGdonelqualecisipotrmaiconnettereaInternetdiconnettersialrewall,chelasolamacchinaineentrambGeleretichepuusciredallareteloGcale.8Perfarquestosipueseguireunprogramma(nelrewall)dettoproxytrasparente;ilkernelinviaipacchettialproxytrasparenteinvecedifarliuscire(ie..himbastardiscel'instradamento).IlU proxyfattoinmoGdotrasparentesignicacheaiclientnonservesapGerechec'unproxycoinvolto.Qualsiasi/serviziochesivuolesiaaccessibiledaInternetdeveesserenelrewall(sivedaanche3.3.5(ServiziinterniU limitati)nelseguito).Esempio:qPermettereU l'accessowebdallareteprivqataaInternetͬ 9b1.Alla!reteprivqatasonoassegnatigliindirizzi192.168.1.*,l!einparticolareamyhostassegnatoil192.168.1.100U eall'interfacciaEthernetdelrewallil192.168.1.1. 9b2.Nellrewallinstallatounproxywebtrasparente(credoesistanodellepatchpGersquidperpermetterglidiU funzionareinquestomoGdo,oppuresiusitransproxy)edinfunzionesullaporta8080. 9b3.UsandoU ipGchainsalkerneldettodiredirigerealproxyleconnessionidiretteallapGorta80. 9b4.NetscapGeU nellareteprivqataconguratoperconnettersidirettamente. 9b5.NellaLreteprivqatadev'essereconguratoilDNSL(ie.XsideveeseguireancheunserverDNSLoltrealproxyU sulrewall). 9b6.Nellareteprivqatadev'essereconguratol'instradamentopredenito(gateway),inmoGdodainviareipacchettiU alrewall.ͬNetscapGeU sumyhostleggehttp://slashdot.org. 9b1.NetscapGecercailnomeslashdot.orgeottiene207.218.152.131.ƳAlloraapreunaconnessioneverso quell'indirizzoU IPusandolapGortalocale1050echiedelapaginawebalserverweb(pGorta80). 9b2.Come$ipacchettidamyhost(pGorta1050)versoslashdot.org(pGorta80)passanoattraversoilrewall,sono%redirettialproxytrasparenteinattesasullapGorta8080.4Ilproxytrasparenteapreunaconnessione(usandolapGortalocale1025)versolaporta80di207.218.152.131(chedovestavqanoandandoipacchettiU originali). 9b3.Comeyilproxyricevelapaginawebdallasuaconnessioneconilserverweb,copiaidatinellaconnessionedelU NetscapGe. 9b4.NetscapGeU mostralapagina. _2 ~?G3.8Sonoconfuso! Instradamen>to,masquerading,pQortforwarding,ipautofw...K!Ź10ՁVDalpuntodivistadislashdot.org,laconnessionefattadallapGorta1025di1.2.3.4(l'interfacciaPPPdel rewall)versolapGorta80di207.218.152.131(slashdot.org).@WDalpuntodivistadimyhost,#fattadallapGorta1050kdi192.168.1.100(myhost)versolapGorta80di207.218.152.131,\mainrealtstadialogandoconilproxytrasparente. 3.3.3#!\Retepriv\|ata: masqueradingMInoquestoscenarioipacchettidallareteprivqatanonpassanomaisuInterneteviceversa.jmGliindirizziIPdellareteprivqatadovrannoessereassegnatisecondoleAddressAlloGcationforPrivqateInternetsRFC1918(ie.q10.*.*.*,U 172.16.*.*o192.168.*.*).ؼInvecezvdiusareunproxy*,2usiamounaspGecialecaratteristicadelkerneldettamasqueradingO(mascheramento,travestimento).8IlxmasqueradingriscriveipacchettinonappGenapassanoperilrewall,cossembrasemprecheprovenganodalrewallstesso.0TPoiriscrivelerispGosteinmodochesembriprovenganodallefontioriginali.IlmasqueradinghamoGduliseparatipergestireprotocollibanali,comeFTP*,RealAudio,Quake,ecc.N.PerprotoGcolliveramenentedicilidagestire,Wlafunzionediautoforwarding(inoltroautomatico)nepu򎡍gestire alcuniautomaticamenteimpGostandoilportforwardingperl'insiemedelleportealororelative:ssivedaU ippGortfw*h(kernel2.0)oipmasqadm*h(kernel2.1).Qualsiasi/serviziochesivuolesiaaccessibiledaInternetdeveesserenelrewall(sivedaanche3.3.5(ServiziinterniU limitati)nelseguito).Esempio:qPermettereU l'accessowebdallareteprivqataaInternetؼ 9b1.Alla!reteprivqatasonoassegnatigliindirizzi192.168.1.*,l!einparticolareamyhostassegnatoil192.168.1.100U eall'interfacciaEthernetdelrewallil192.168.1.1. 9b2.Il<rewallimpGostatopermascherareequalsiasipacchettoprovenientedallareteprivqataedestinatoallaU pGorta80diunhostInternet. 9b3.NetscapGeU conguratoperconnettersidirettamente. 9b4.NellaU reteprivqatadev'essereconguratocorrettamenteilDNS. 9b5.IlU rewalldovresserel'instradamentopredenito(gateway)pGerlareteprivqata.ؼNetscapGeU sumyhostleggehttp://slashdot.org. 9b1.NetscapGecercailnomeslashdot.org,G&eottiene207.218.152.131.[Alloraapreunaconnessioneverso quell'indirizzoU IPusandolapGortalocale1050echiedelapaginawebalserverweb(pGorta80). 9b2.Come$ipacchettidamyhost(pGorta1050)versoslashdot.org(pGorta80)passanoattraversoilrewall,sonoH`riscrittipGerapparireprovenientiH`dall'interfacciaPPPH]delrewall(pGorta65000).m@IlrewallhaunindirizzoInternetvqalido(1.2.3.4)equindiipacchettidirispGostaprovenientidaslashdot.orgvengonocorrettamenteU instradatiindietro. 9b3.Comeipacchettidaslashdot.org(pGort80)versorewall.littlecorp.com(pGorta65000)arrivqano, sonoriscrittipGerandareallaporta1050dimyhost."Questalaveramagiadelmasquerading:nsiricordaquandoU riscrivepacchettiuscentiecospuriscriverlinonappGenaarrivqanolerisposte. 9b4.NetscapGeU mostralapagina.ؼDal6puntodivistadislashdot.org,to,masquerading,pQortforwarding,ipautofw...K!Ź11ՁV3.3.4#!\RetepubblicaMInquestoscenariolapropriaretepGersonalepartediInternet:pipacchettipGossonouiresenzamodiche trajleduereti.2_GliindirizziIPZdellareteinternadevonoessereassegnatirichiedendounbloGccodiindirizziIP*,U inmoGdocheilrestodellaretesappiacomeraggiungerla.qCiimplicaunaconnessionepermanente.ؼIn|talcaso,ƪilltraggiodeipacchettiusatopGerdeciderequalipacchettipGossonoessereinoltratitralapropria]reteeilrestodiInternet,_eg.pGerrestringereilrestodiInternetalsoloaccessoaipropriserverwebinterni.Esempio:qPermettereU l'accessowebdallareteprivqataversoInternet.ؼ 9b1.AllaU propriareteinternaassegnatounbloGccodiindirizziIPchesirichiesto(diciamo1.2.3.*). 9b2.IlU rewallimpGostatoperpermetteretuttoiltraco. 9b3.NetscapGeU conguratoperconnettersidirettamente. 9b4.NellaU propriaretedev'essereconguratoilDNS. 9b5.IlU rewalldovresserel'instradamentopredenito(gateway)pGerlareteprivqata.NetscapGeU sumyhostleggehttp://slashdot.org. 9b1.NetscapGecercailnomeslashdot.orgeottiene207.218.152.131.aAprepoiunaconnessioneversoquel indirizzoU IPusandolapGortalocale1050echiedelapaginaalserverweb(pGorta80). 9b2.I&pacchetti9passanoattraversoilpropriorewall,propriocomepassanoattraversodiversialtriroutertraU myhosteslashdot.org. 9b3.NetscapGeU mostralapagina.ؼC'solounaconnessione:ȭdallapGorta1050di1.2.3.100(myhost)versolapGorta80di207.218.152.131(slashdot.org). 3.3.5#!\Serviziin>ternilimitatiMCisonounpGo'ditrucchichesipGossonousareperpermettereaInternetdiaccedereaipropriserviziinterni,ppiuttostochefargirareiservizisulrewall.C F*unzionerannosoloconunapproGcciobasatosuproxyoU masqueradingpGerleconnessioniesterne.ؼL'approGccioCpisemplicediusareundirottatore\(redirector)chealtrononsenonunproxydeipGoveri,cheattendelaconnessionesuunadatapGortaepoiapreunaconnessioneaunaportassadiunhostinternocopiando"idatitraledueconnessioni.`Unesempioilprogrammaredir.DalpuntodivistadiInternet,,laconnessione[fattaversorewall.[Dalpuntodivistadelserverinternolaconnessionefattadall'interfacciainternaU delrewallalserver.UntaltroapproGccio(cherichiedeunkernel2.0conlapatchpGeripportfw,0oppureunkernel2.1opirecente)莦diusareilpGortforwardingdelkernel.allChains[3@12ՁV3.4UlterioriinformazionisulmasqueradingMDavidRanchhascrittouneccellentenuovoHOWTOsulmasquerading,chehaparecchiargomentiincomune conU questoHOWTO.Attualmentelosiputrovqareaؼhttp://www.linuxdo}/c.org/HOWTO/IP-Masquerade-HOWTO.htmlL'homeU pageucialedelMasqueradingahttp://ipmasq.cjb.netU http://ipmasq.cjb.net(4IPG\FirewcallChains:QuestasezionedescrivetuttoquellochebisognaveramentesapGerepercostruireunltrodipacchetticheincontriU leproprieesigenze.#Í4.1ComepassanoipacchettiattraversoiltriMIlkernelpartecontreelenchidiregole;questielenchisonodettirew>allRchains(catenerewall)osemplice-mentec>hains(catene).SLetrecatenepredenitesonochiamaterispGettivqamenteinput(ingresso),toutput(uscita)6eforw>ard(inoltro).ghQuandoarrivqaunpacchetto(diciamo,ACCEPT/v(lo?interface|)`v9dREDIRECT^z_______|-->?C-->S-->______-->D-->~~~~~~~~-->|forward|---->_______-->h>\a|input?|e{Routing}|Chain X|>\|output|ACCEPTe>\n|Chain?|m{Decision}|_______|--->|Chain X|c>\i|______|a~~~~~~~~)`||?->|_______|k>\t$|)`s|D;||?||s>\y$|)`q|D;v|?||u>\|$v)`ev>DENY/ X|?|vm>\|DENY/~rLocal?ProcessREJECT X||DENY/|>\vREJECT~a$|c|?| XREJECT|DENYNd$---------------------?|vsxe?-----------------------------DENYDiU seguitounadescrizionediognistadio: _2 ~?G4.8IPFirew>allChains[3@13ՁVChec>ksum:QuestoU iltestpGervericarecheilpacchettononsiainqualchemoGdocorrotto.qSelo,riutato.Sanit>y:Inެrealtc'unavericadiintegritdelpacchettoprimadiognicatenarewall,]maquellodellacatena inputilpiimpGortante.t)AlcunipacchettimalformatipGossonoconfondereilcodiceperilcontrollodelleU regole,equindisonoquiriutati(seciavvienestampatounmessaggionelsyslog).inputc>hain:ȑhUlahZprimacatenarewallcontrolaqualevienetestatoilpacchetto./Seilverdettodellacatenanon莡DENYU oREJECT,ilpacchettoprosegue.Demasquerade:Se}ilpacchettounarispGosta(reply)aunprecedentepacchettomascherato,demascherato`epassaydirettamenteallacatenaoutput.SenonsiusaL'IPXMasqueradingsicancelliquestopGercorsodalU diagramma.Routingdecision:Ilm|coGdicediinstradamentoesaminailcampodidestinazioneperdecideresequestopacchettodeveandarePaunproGcessolocale(sivedaLocalprocessquisotto)oinoltratoaunamacchinaremota(sivedaU forwardchainpiavqanti)LoQcalprocess:Un*proGcessoinesecuzionesullamacchinapuriceverepacchettidopGoilpassodiRoutingDecision,lepuinviarepacchetti(chepassanopGerilpassoRoutingDecision,repoiattraversanolacatenaoutput).loin>terface:SeSipacchettiprovenientidaunproGcessolocalesonodestinatiaunprocessolocale,attraverserannolacatenaoutputconilcampGointerfacciaimpostatoa`lo',epoiritornanoattraversolacatenainputsempreU coninterfacciaimpGostatoa`lo'.qL'interfaccialosolitamentechiamatainterfaccialoGopback.loQcal:SeilpacchettononerastatocreatodaunproGcessolocale,G`alloraesaminatalacatenaforward,altrimentiU ilpacchettovqaversolacatenaoutput.forw>ardchain:QuestacatenaattraversatadaqualsiasipacchettocheproviapassareattraversoquestamacchinapGerU andareversoun'altra.outputc>hain:QuestaU catenaattraversataU daqualsiasipacchettounattimoprimadiesserespGeditofuori. 4.1.1#!\UsareipQc>hainsMPerU primacosasicontrollidiaverelaversionediipGchainsacuifariferimentoquestodoGcumento:卑$Nipchains--version =ipchainsN1.3.9,17-Mar-1999_2 ~?G4.8IPFirew>allChains[3@14ՁVSinoticheioraccomandola1.3.4(chenonhaleopzionilunghe,.come`spGort'),ola1.3.8osupGeriori; ,queste sonoU moltostabili.ؼipGchainsPhaunapaginamanpiuttostodettagliata(man?ipchains),eseservonoulterioridettaglioparticolari,siGpudareun'oGcchiataall'interfacciadiprogrammazione(man?4ipfw),oppureGallenet/ipv4/ip_fw.cneiU sorgentideikernel2.1.x,chesono(ovviamente)lefontipiautorevoli.NelDpacchettosorgentec'pureunaeccellenteschedadiriferimentorapidodiScottBronson,όinPostScript(TM)U siainformatoA4cheUSLetter.CisonoparecchiecosediversechesipGossonofareconipchains.PerprimacosaleopGerazionipergestireintere>catene.=Sipartecontrecatenepredeniteinput,8outputeforwardchenonpGossonoesserecancellate.ؼ 9b1.CreareU unanuovqaU catena(-N). 9b2.CancellareU unacatenavuota(-X). 9b3.CambiareU latatticapGerunacatenapredenita(-P). 9b4.ElencareU leregoleinunacatena(-L). 9b5.SvuotareU unacatenadellesueregole(-F). 9b6.AzzerareU icontatoridipacchettiebytepGertutteleregoleinunacatena(-Z).CiU sonodiversimoGdipermanipolareleregoleinunacatena: 9b1.AggiungereU unanuovqaU regolaaunacatena(-A). 9b2.InserireU inunapGosizionespecicaunanuovqaU regolainunacatena(-I). 9b3.RimpiazzareU unaregolainunaqualchepGosizioneinunacatena(-R). 9b4.CancellareU daunapGosizionespecicaunaregoladaunacatena(-D). 9b5.CancellareU daunacatenalaprimaregolacorrispGondente(-D).CisonoalcuneopGerazioniperilmasquerading,կche,inmancanzadiunpostomiglioredovemetterle,կsono inU ipchains: 9b1.ElencaU leconnessioniattualmentemascherate(-M-L). 9b2.ImpGostaivqaloriditimeoutdelmasquerading(-M]-S)(sivedaanche6.10(NonpGossoimpostarei timeoutU delmasquerading!)).Lafunzionenale(eforselapiutile)pGermettedicontrollarecosasuccederebbeaundatopacchettosevolesseU traversareunadatacatena. 4.1.2#!\Cosasiv>edrquandoilpropriocomputervieneavviatoMPrima,chequalsiasicomandoipGchainssiaeseguito(attenzione: alcunedistribuzionilancianoipGchainsneiloro0Escriptdiinizializzazione),7noncisaralcunaregolainalcunadellecatenepredenite(`input',`forward'eJw`output'),LeognunadellecateneavrlatatticaACCEPT.QuestalamassimaapGerturachesipuavere. [_2 ~?G4.8IPFirew>allChains[3@15ՁV4.1.3#!\OpQerazionisuunasolaregolaMQuestaularagionedisussistenzadiipGchains:lamanipolazionedelleregole.' Moltoprobabilmentesiuseranno icomandidiaggiunta(-A)ecancellazione(-D).Glialtri(-IpGerl'inserimentoe-RpGerilrimpiazzo)sonosempliciU estensionidiquesticoncetti.ؼOgni`regolaspGecicauninsiemedicondizionicheilpacchettodevesoGddisfare,cecosafareseilpacchettolesoGddisfa3(unobiettivo).f_Per3esempio,:isipossonovolerproibiretuttiipacchettiICMP3provenientidall'ind-irizzo127.0.0.1.Y QuindiinquestocasolenostrecondizionisonocheilprotoGcollodeveessereICMP{echel'indirizzoU diprovenienzaU deveessere127.0.0.1.qIlnostroobiettivo`DENY'.127.0.0.1Ql'interfaccia`loGopback',presenteanchesenonsipGossiedeunaveraconnessionedirete.Sipu򎡍usare4 ilprogramma`ping'pGergeneraretalipacchetti(semplicementeinviaunpacchettoICMP3ditipGo8(echo@request)alqualetuttiglihostcoGoperativi@dovrebbero@rispondereobbligatoriamenteconunpacchettoICMPU ditipGo0(echoreply)).qCilorendemoltoutileperitest.卑#Nping-c1127.0.0.1 =PINGN127.0.0.1(127.0.0.1):56databytes64Nbytesfrom127.0.0.1:icmp_seq=0ttl=64time=0.2ms---N127.0.0.1pingstatistics---1Npacketstransmitted,1packetsreceived,0%packetlossround-tripNmin/avg/max=0.2/0.2/0.2ms#Nipchains-Ainput-s127.0.0.1-picmp-jDENY#Nping-c1127.0.0.1PINGN127.0.0.1(127.0.0.1):56databytes---N127.0.0.1pingstatistics---1Npacketstransmitted,0packetsreceived,100%packetloss#ؼSiU puvederecheilprimopinghasuccesso(il`-c1'diceapingdiinviareunsolopacchetto).PoiIsiaggiuntaallacatena`input'unaregolachespGecicachepGeripacchettiprovenientida127.0.0.1(`-s 127.0.0.1')U conprotoGcolloICMP(`-pICMP')sidovrsaltareaDENY(`-jDENY').Poi:sivericatalanostraregola,usandounsecondoping.CisarunapausaprimacheilprogrammasistanchiU diaspGettareunarispostachenonarrivermai.SipucancellarelaregolainduemoGdi.kPerprimacosa,cpoichsappiamochelasolaregolanellacatenainput,U pGossiamousarelacancellazioneinbaseallaposizione,comein卑>r#Nipchains-Dinput1 =>r#ؼpGerU cancellarelaregolanumero1nellacatenainput.IlasecondomoGdodiricopiareilcomando-Aa precedente,d rimpiazzando-Acon-D.Ciutilequandosihauna *complessacatenadiregoleenonsivuolestarlacontarlepGerscoprirechequellachesivuolecancellareU la37-esima.qIntalcasouseremo:卑>r#Nipchains-Dinput-s127.0.0.1-picmp-jDENY =>r#ؼLasintassidi-Ddeveavereesattamentelestesseopzionidelcomando-A(o-Ioppure-R).Sec'unamultitudineU diregoleidentichenellastessacatena,cancellatasololaprima.u_2 ~?G4.8IPFirew>allChains[3@16ՁV4.1.4#!\SpQecicareilltraggioMSivistol'usodi`-p'pGerspecicareilprotocolloedi`-s'perspecicarel'indirizzodiprovenienza,maci sonoaltreopzionichesipGossonousareperspecicarelecaratteristichedelpacchetto._QuelchesegueuncompGendioU esaustivo. SpQecicaregliindirizzidipro>venienzaedestinazione `GlijindirizziIP?diprovenienzaj(-s)edesti-nazione߰(-d)pGossonoesserespecicatiinquattromodi./Ilmodopicomunediusareilnomecompleto,come`loGcalhost'o`www.linuxhq.com'.?Ilsecondomododispecicarel'indirizzoIP*,comeadesempio`127.0.0.1'.ؼIlterzoeilquartomoGdopermettonodispecicareungruppodiindirizziIP*,comeadesempio`199.95.207.0/24'Co`199.95.207.0/255.255.255.0'.EntrambiCspGecicanounqualsiasiindirizzoIP_tra192.95.207.0˜e192.95.207.255estremiinclusi;lecifredopGo`/'diconoqualipartidell'indirizzoIP~sonosig-nicative.;IBvqaloriBpredenitisono`/32'o`/255.255.255.255'(corrispGondentiatuttigliindirizziIP).PerspGecicareU nessunindirizzoIPpuessereusato`/0',comesegue:卑>r#Nipchains-Ainput-s0/0-jDENY =>r#ؼQuestaU cosararamenteusata,inquantoilsuoeettolostessochenonspGecicareaattol'opzione`-s'.SpQecicare;unanegazione `Molteopzioni,֜tralequali`-s'e`-d',pGossonoaveregliargomentiprecedutida``!'m(pronunciatoJ]`not')pGereettuarelacorrispondenzaconindirizziNONJZugualiaquellidati.mPeresempio,`-sU !qloGcalhost'corrispondeaqualsiasipacchettononprovenientedaloGcalhost.ؼNonU sidimentichimoU glispaziattornoal``!':qsonoveramenteU necessari.SpQecicare(unprotocollo `IlA.protoGcollopuesserespecicatoconl'opzione`-p'.jIlprotocollopuessereun{numero(sesiconosconoivqalorinumericideiprotoGcolliIP)gounnomepericasispecialidi`TCP',`UDP'oU `ICMP'.NonimpGortantecomescritto:qvqannobenesia`tcp'che`TCP'.ؼIU nomideiprotoGcollipossonoessereprecedutidaun``!'qpernegarli,conadesempio`-p!qTCP'.SpQecicareporteUDPeTCP `Nei casiparticolarineiqualispGecicatoTCP oUDPcomeprotoGcollo,cihSpuessereunargomentoaggiuntivocheindicalapGortaTCPh eUDP*,oppureunintervqallo(inclusivo)dipGorte(sivedaanche4.1.4(Gestireiframmenti)nelseguito)._`Unintervqallorappresentatousandouncarattere`:',7comeadesempio`6000:6010',checopre11numeridipGorteda6000a6010estremicompresi.L SeVomessoillimiteinferiore,WRilvqalorepredenito0.vSeomessoquellosupGeriore,ilsuovqalorepredenito莡65535.?lQuindipGerspecicareleconnessioniTCPprovenientidaporteinferiorialla1024,lasintassipotrebbeessereJ`-pTCPJ-s0.0.0.0/0:1023'.nInumeridipGortapossonoesserespecicatiancheattraversoilnome,Leg.`www'.ؼSi9notichelaspGecicazionepuessereprecedutadaun``!',schelanega.QuindipGerspecicarequalsiasipacchettoU TCPTRANNEipacchettiWWW,sipGotrebbeU specicareؼ-p?TCP-d0.0.0.0/0!wwwȖU impGortanterealizzarechelaspGecicaؼ-p?TCP-d!192.168.1.1www&_2 ~?G4.8IPFirew>allChains[3@17ՁVU moltodiversadaؼ-p?TCP-d192.168.1.1!wwwLayprimaspGecicaqualsiasipacchettoTCPyversolapGortaWWWysuqualsiasimacchinatrannela192.168.1.1. LaLsecondaspGecicaqualsiasiconnessioneTCPLversoqualsiasiportadi192.168.1.1trannelaportaWWW.ؼPerU nire,questocasoindicadiescluderesialapGortaWWWeche192.168.1.1:-p?TCP-d!192.168.1.1!www SpQecicaretipoecodiceICMP `AncheNICMPNpGermetteargomentiopzionali,PmapGoichICMPNnonhaleU pGorte(ICMPhauntipQoeuncodice)hannounsignicatodiverso.ؼPossonoesserespGecicaticomenomiICMP(siusiipchains?-hicmpperlalistadinomi)dopol'opzione`-s',7oppureߙcometipGoecodiceICMPunumerici,7doveߙiltiposeguel'opzione`-s'eilcodiceseguel'opzione`-d'.Ienomif ICMPsonopiuttostolunghi:bastausaresolamenteabbastanzaletteredarendereilnomedistinguibiledaU ognialtro.DiU seguitounapiccolatabGelladeipicomunipacchettiICMP:卑Numero rNomec3fRichiestoNda =0!"echo-replyFےping3!"destination-unreachable rqualsiasiNtrafficoTCP/UDP.5!"redirectPN.perNl'instradamento,senonstagirandoilNdemonediinstradamento8!"echo-request=hping11Wtime-exceeded8tracerouteؼSiU noticheinomiICMPalmomentononpGossonoessereprecedutida``!'.ؼNON1"NONNONsi1+bloGcchinotuttiimessaggiICMP1"ditipo3!e(siveda5.2.1(PacchettiICMP)1"piavqanti). SpQecicare%un'in>terfaccia `L'opzione+`-i'spGecicailnomediun'interfaccia.%Un'interfacciaildispGos-itivoisicodalqualeentraoesceilpacchetto.\SipuusareilcomandoifconfigpGeravereunelencodelleinterfacceU chealmomentosono`su'(ie.qchealmomentofunzionano).L'interfacciapGeripacchettiinarrivo(ie.@gipacchettichestannoattraversandolacatenainput)considerataessere"dl'interfacciadallaqualeentrano.MLogicamente,Ul'interfacciapGeripacchettiinpartenza(ipacchettichesstannoattraversandolacatenaoutput)l'interfacciadallaqualeusciranno.(yAnchel'interfacciapGeripacchettichepassanopGerlacatenaforwardl'interfacciadallaqualeusciranno;amesembraunadecisionepiuttostoU arbitraria.ȑ|gpGerfettamente|legalespecicareun'interfacciachealmomentononesiste;laregolanonsarmaisoGddisfattanchDl'interfaccianonvieneattivqata.vCiestremamenteutilepGerleconnessioniPPPCindial-up(solitamentel'interfacciaU ppp0)esimili.ComecasospGeciale,3unnomediintefacciacheterminaconun`+'corrispGonderatutteleinterfacce(cheesistanobomeno)cheinizianoconquellastringa.EPeresempio,2pGerspecicareunaregolachecorrispondaatutteU leinterfaccePPP*,puessereusatal'opzione-i?ppp+.Il)nomedell'interfacciapuessereprecedutodaun``!'[.pGerfarschesiasoGddisfattadatutteleinterfaccecheNONU corrispGondonoall'interfaccia(oalleinterfacce)spGecicata.5A_2 ~?G4.8IPFirew>allChains[3@18ՁVSpQecicare~solopacc>hettiTCP~SYN `T*alvolta؀utilepGermettereconnessioniTCPinunadirezione, macnonnell'altra.Peresempio,gKsipuvolerpGermettereconnessioniversounserverWWWcesternomanonleU connessionidaquelserver.ؼL'approGccionaivesarebbequellodibloccareipacchettiTCPprovenientidaserver.ESfortunantamente,leconnessioniU TCPrichiedonopGerfunzionarecheipacchettipGossonoandareinentrambGeledirezioni.LasoluzionedibloGccaresoloipacchettiusatiperrichiedereunaconnessione.Questipacchettisonochiamati6pacchettiSYN6ӹ(ok,ti `QualcheyvvoltaunpacchettotroppGograndeperpassarcituttointeronelcavo.Quando`questosuccede,cilpacchettodivisoinframmen>ti(fragments),ceinviatocomepacchettimultipli.L'altroU capGodellaconnessioneriassemblaipacchettipGerricostruireilpacchettointero.IlproblemaconiframmentichealcunedellespGecicazionisuddette(inparticolareportad'origine,portadi{destinazione,6tipGoICMP*,codiceICMPfoagSYNTCP)richiedonocheilkernelsbircinellaparteinizialedelU pacchetto,checontenutasolonelprimoframmento.Se&lepropriamacchinalasolaconnessioneaunareteesterna,allorasipudirealkerneldiriassemblaretuttiFiframmenticheglipassanoattraverso,#compilandoilkernelconl'opzioneIP:?alwaysdefragmentpGostaU a`Y'.Cievitailproblemainmanierapulita.Diversamente,VimpGortantecapirecomesonotrattatiiframmentidalleregolediltraggio.QualsiasiregoladiltraggioXbchechiedeinformazionichenonsihannononverrsoGddisfatta.ACisignicacheilprimoframmento;trattatocomequalsiasialtropacchetto.hNonlosarannoinveceilsecondoeisuccessiviframmenti.hQuindiunalregola-p?TCP-s192.168.1.1wwwl(spGecicanteunaportasorgente`www')nonsarmaisoddisfattadaU unframmento(trannealprimo).qEneppurelaregolaoppGosta-p?TCP-s192.168.1.1! Xwww.Comunque,sipuspGecicareunaregolaspecicaperilsecondoeisuccessiviframmenti,usandol'opzione`-f'.lOvviamenteFinquestaregolapGeriframmentiillegalespGecicareunaportaTCPFoUDP*,untipoouncoGdiceU ICMPoppurel'opzioneperilSYNTCP*.ȑpure legalespGecicarecheunaregolanonnusiapplicaalsecondoeaisuccessiviframmenti,Sfacendoprecedere`-f'U da``!'.SolitamenteԀconsiderataunacosasicuralasciarpassareilsecondoeisuccessiframmenti,pGoichilltraggioavr'eettosulprimoframmentoequindiimpGedirlaricostruzionenell'hostdidestinazione.HComunque,sonoU notialcunibugchepGermettonoilcrashdimacchinesemplicementeinviandogliframmenti.Una7notapGericapoccionidellarete:5wipacchettimalformati(pacchettiTCP*,UDP6oICMPtroppGocortianchilcoGdicedirewallingpGossaleggereleporteoilcodiceetipoICMP)sonotrattaticomeframmenti.Solo@iframmentiTCP@cheinizianoallapGosizione8sonoesplicitamentescartatidalcoGdicedirewall(dovrebbGeapparireU unmessaggionelsyslogsesuccedequesto).ComeU esempio,laregolaseguentescarterqualsiasiframmentodirettoa192.168.1.1:厎Co_2 ~?G4.8IPFirew>allChains[3@19ՁV#Nipchains-Aoutput-f-d192.168.1.1-jDENY =# 4.1.5#!\EetticollateralidelltraggioMOK,quindiorasiconosconotuttiimoGdiconiqualisipucreareunaregolachecorrispondaaunpacchetto. SeU unpacchettosoGddisfaunaregola,succedonoleseguenticose:ؼ 9b1.Il=>contatoredibytepGerquellaregolaincrementatodelladimensionedelpacchetto(intestazioneetuttoU ilresto). 9b2.ȖU incrementatoilcontatoredipacchettipGerquellaregola. 9b3.SeU laregolalorichiede,ilpacchettoregistrato. 9b4.SeU laregolalorichiede,cambiatoilcampGoTypGeOfServicedelpacchetto. 9b5.SeU laregolalorichiede,ilpacchettomarcato(nonneikerneldellaserie2.0). 9b6.ȖU esaminatalaregolaobiettivopGerdeciderecosafaredopoalpacchetto.PerU vqariet,leesaminerinordinediimpGortanza. SpQecicareYunobiettiv>o `UnobiettivodicealkernelcosafarnediunpacchettochesoGddisfaunaregola. ipGchainsdusa`-j'(penso`jump-to'saltaa)perlaspecicadell'obiettivo.Ilnomedell'obiettivodeveesserepiU cortodi8caratteri,edimpGortantecomescritto:qRETURNereturnsonocompletamentediversi.ؼIlQcasopisemplicequandononspGecicatoalcunobiettivo.\Questotipodiregola(spessodettaregoladi`accounting'ucontabilit)utileconcontaresemplicementeuncertotipGodipacchetto.ӿChequestaregolasia omenosoGddisfatta, semplicementeilkernelesaminalaregolasuccessivqanellacatena.Peresempio, pGercontareU ilnumerodipacchettida192.168.1.1,sipufarecos:卑#Nipchains-Ainput-s192.168.1.1 =#ؼ(UsandoU `ipGchains-L-v'sipossonovedereicontatoridibyteepacchettiassoGciaticonciascunaregola).Esistono(nseiobiettivispGeciali.bI(bprimitre,1^ACCEPT,REJECTeDENYsonopiuttostosemplici.bACCEPTpGermettecheAilpacchettopassi.06DENYscartailpacchettocomenonfossemaistatoricevuto.06REJECTscartailpacchetto,ma(senonunpacchettoICMP)fgeneraunarispGostaICMPpGerlasorgenteperdirlecheladestinazionenonU raggiungibile.QuellaĎdopGo,xMASQjdicealkerneldimascherareilpacchetto.APAnchcifunzioni,xilpropriokerneldev'esserecompilato conilsuppGortoperl'IPMasquerading.RyPeridettaglisivedailMasquerading-HOWTOel'appGen-dice8(DierenzetraipGchainseipfwadm).QuestoobiettivovqalidosolopGerpacchetticheattraversanolacatenaU forward.L'altroobiettivoprincipale蓺REDIRECTchedicealkerneldiinviareunpacchettoaunapGortalocaleinvececheallasuadestinazione../PuesserespGecicatosoloperregolechespecicanoTCPoUDPcomeloroprotoGcolli.^,Opzionalmente,puesserespecicataunaporta(nomeonumero)dopodi`-jREDIRECT'chefarschequelpacchettosiadirottatoaquellaparticolarepGortaancheseeraindirizzatoaun'altrapGorta.QuestoU obiettivovqalidosolopGerpacchetticheattraversanolacatenainput.L'obiettivonalespGeciale蓺RETURNcheidenticoall'uscitaimmediatadallacatena(siveda4.1.5(ImpGostarelaU tattica)nelseguito).U_2 ~?G4.8IPFirew>allChains[3@20ՁVQualsiasialtroobiettivoindicaunacatenadenitadall'utente(comedescrittoin4.1.5(OpGerazioneconintere catene)nelseguito).-tIlpacchettoinizieradattraversareleregoleinquellacatena.-tSequellacatenanondecide87ildestinodelpacchetto,=allora,una87voltacheterminatalatraversatadellacatena,=siriprendedallaregolaU successivqanellacatenacorrente.ؼȑ8ora8diunaltropGo'arteASCII.Siconsiderinoduecatene(sciocche):cXinput(lacatenapredenita)eTest(unaU catenadenitadall'utente).ؼ/= `input'$`Test')`------------------------------ X------------------------------)`|?Regola1:-pICMP-jREJECT| X|Regola1:-s192.168.1.1|)`|----------------------------| X|----------------------------|)`|?Regola2:-pTCP-jTest| X|Regola2:-d192.168.1.1|)`|----------------------------| X------------------------------)`|?Regola3:-pUDP-jDENY|)`------------------------------SiZbconsideriunpacchettoTCPZ`provenienteda192.168.1.1edestinatoa1.2.3.4.EEntranellacatenainputevieneVcontrollatorispGettoaRegola1:5nonlasoddisfa.I=SoddisfainveceVRegola2ilcuiobiettivo蓺Test.I=QuindilaCsuccessivqaregolaaessereesaminatalaprimadiTest.CRegola1inTestsoGddisfattamanonspecicaun+obiettivo,)quindiRegola2laprossimaaessereesaminata.VQuestanonsoGddisfattaesicosraggiuntalaCnedellecatena.kSiquindiritornaallacatenainput,GldoveCsiappGenaesaminataRegola2equindiorasiesaminaU Regola3,chenonvienesoGddisfatta.ؼQuindiU ilpGercorsodelpacchetto:ؼtغv___________________________/= `input'^z|/ X`Test'v)`--------------------------|--/ X-------------------------|----)`|?Regola1Y:l|/| X|Regola1S||)`|-------------------------|/-| X|------------------------|---|)`|?Regola2Y:l/ X||Regola2S||)`|----------------------------| X-------------------------v----)`|?Regola3Y:l/--+___________________________/)`--------------------------|---tvSiNvedalasezione5.1(Comeorganizzareleproprieregoledirewall)pGeralcunimetodiperusareecacementeleU catenedenitedall'utente. Registrazionedeipacc>hetti `QuestoEuneettocollateralechepuavereunaregolachevienesoGddis-fatta:$usandorl'opzione`-l'sipufarscheilpacchettochelasoGddisfasiaregistrato. vSolitamentequestacosa9nonlasivuolepGeripacchettidiroutine,smaunacaratteristicautilesesivoglionocercareeventieccezionali.ؼIlU kernelregistraquestainformazionecomesegue:卑PacketNlog:inputDENYeth0PROTO=17192.168.2.1:53192.168.1.1:1025 ="rL=34NS=0x00I=18F=0x0000T=254ؼQuestormessaggiodiregistrazionepGensatoperessereconcisoecontieneinformazionitecnicheutilisoloaiguruU delnetworking,U mapuessereutileanchealrestodinoi.qSisuddividecos:d_2 ~?G4.8IPFirew>allChains[3@21ՁV 9b1.`input'=wlacatenachecontienelaregolasoGddisfattadalpacchetto,B2chehacausatoilmessaggiodilog. 9b2.`DENY'2quantolaregoladicedifaredelpacchetto.+Se`-'alloralaregolanonhaeettosulpacchetto (unaU regoladiaccounting). 9b3.`eth0'9ilnomedell'interfaccia.5Poich9lacatenaeralainput,rindicacheilpacchettoentratoda`eth0'. 9b4.`PROTO=17'dindicacheilpacchettoeraconprotoGcollo17. Unelencodeiprotocollidatoin`/etc/protoGcols'.qIU picomunisono1(ICMP),6(TCP)e17(UDP). 9b5.`192.168.2.1'U indicachel'indirizzoIPdiprovenienzaera192.168.2.1. 9b6.`:53'~indicachepGortadiprovenienzaeralapGorta53.3Cercandoin`/etc/services'sivedachequesta莦laX'pGorta`domain'(ie.zprobabilmenteunarispostaDNS).PerUDPX&eTCPquestonumerolapGortadiU provenienza.qPerICMP*,iltipGoICMP.Perglialtri,sar65535. 9b7.`192.168.1.1'U l'indirizzoIPdidestinazione. 9b8.`:1025'7indicachelapGortadidestinazioneerala1025.PerUDP eTCPquestonumerolapGortadidestinazione.qPerU ICMPilcoGdiceICMP*.Perglialtri,sar65535. 9b9.`L=34'U indicacheilpacchettoeralungo34byte.910.`S=0x00'indicailcampGoTypeofService(losidividaper4perottenereilTypeofServiceusatodaipGchains).911.`I=18'U l'IDIP*.912.`F=0x0000']l'oseta16bitdelframmentopiiag.Unvqalorechecomincicon`0x4'o`0x5'indicacheilbit`Don'tF*ragment'impGostato.6`0x2'or`0x3'indicanocheimpGostatoilbit`MoreF*ragments';sonotdaaspGettarsialtriframmentidopodiquesto.UIlrestodelnumerol'oset,divisoper8,diquestoframmento.913.`T=254'il`TimeT*oLive'(tempGodivita)delpacchetto.=ȑ^diminuitodiunoaognihop,ؤesolitamenteparteU a15o255.914.`(#5)',:cipuessereunnumeronaletraparentesineikernelpirecenti(forsedopGoil2.2.9).̀ȑ,ilnumeroU dellaregolachehacausatolaregistrazionedelpacchetto.ؼNeiڳsistemaLinuxstandard,questooutputdelkernelcatturatodaklogd(ildemonediregistrazionedelkernel)[,chelopassapGoialsyslogd(ildemonediregistrazionedisistema).Ille`/etc/syslog.conf'controllail#compGortamentodisyslogd,#specicandounadestinazioneperogni`facility'(nelnostrocasolafacility莦kernel)U e`livello'(pGeripchains,illivellousatoinfo).ؼPerU esempio,ilmio/etc/syslog.conf(Debian)contieneduerighecorrispGondentia`kern.info':卑kern.*z-/var/log/kern.log =*.=info;*.=notice;*.=warn;\>rauth,authpriv.none;\>rcron,daemon.none;\>rmail,news.none/= -/var/log/messagesؼIndicacheimessaggisonoduplicatiin`/vqar/log/kern.log'ein`/vqar/log/messages'.v%Permaggioridettagli,siU veda`mansyslog.conf'.rH_2 ~?G4.8IPFirew>allChains[3@22ՁVManipQolare'il`T>ypeOfService' `Nell'intestazione{IP{ecisonoquattrobitraramenteusati,Udettibit T>ypQe}ofServicejV(TOSjQTipGoDiServizio).#Inuenzanoilmodoincuisonotrattatiipacchetti;tiquattrobitsonoMinimumDelay (RitardoMinimo),MaximumThroughput (MassimaV*eloGcitdiTrasmissione),Maximum:Reliability(MassimaAdabilit)eMinimumCost(MinimoCosto).hSoloaunodiquestobitM;pGermessodiessereimpostato.nRobvqanNieuwkerk,Nl'autoreM;delcodicedimaltrattamento"TOS,neparlainU questitermini:'PermeimpGortantespGecialmenteilMinimumDelay.hL'hoattivqatopGeripacchettiinter-attivinel@miorouter(Linux)amonte.-IosonodietrounaconnessionemoGdema33k6.Linuxprioritizzaipacchettiin3coGde./aInquestomodoottengoaccettabiliprestazioniinterattivementrefaccioڸdeimeridownload(pGotrebbeڸandareancoramegliosenoncifosseunacoGdacosgrandenelU driverdellaseriale,maoralalatenzamantenutasottogli1.5secondi).Nota:?ovviamente,@nonsihacontrollosuipacchettiinarrivo;osipucontrollarelaprioritsolamentedeipacchettipchelascianolapropriamacchina.^Pernegoziareleprioritconl'altrocapGodellaconnessione,'deveessereU usatounprotoGcollotipoRSVP(nonsonienteinproposito,quindinonchiedeteame).ؼL'uso^picomunediimpGostareleconnessionidicontrolloditelneteftpaMinimumDelay3equelledatiFTPU aMaximumThroughput.qCipuesserefattocomesegue:}֍ipchainsN-Aoutput-ptcp-d0.0.0.0/0telnet-t0x010x10 =ipchainsN-Aoutput-ptcp-d0.0.0.0/0ftp-t0x010x10ipchainsN-Aoutput-ptcp-s0.0.0.0/0ftp-data-t0x010x08L'opzione+`-t'accettaaltridueparametriaddizionali,a]entrambi+inesadecimale.FQuestipGermettonodifar gioGchetti:complessiconibitTOS:conlaprimamascherafattal'AND:coniTOScorrentidelpacchetto,@ epGoidelrisultatovienefattal'XORڻconlaseconda.HSetroppoconfuso,Nallorasiusisemplicementelatabellaseguente:}֍NomeNdelTOS8Valore/= UsoTipico =MinimumNDelay3Z0x010x10!"ftp,telnetMaximumNThroughputW0x010x08!"ftp-dataMaximumNReliability0x010x04!"snmpMinimumNCost80x010x02!"nntpAndiU Kleenpuntualizzaquantosegue:y}'F*orse!FpGotrebbeessereutileaggiungereriferimentialparamentrotxqueuelendiifcongalla discussioneideibitTOS.LalunghezzapredenitadellacoGdadeldispositivo,(regolataperleschedeethernet,pGerimodemtroppolungaefascheloschedulatorea3bande(lecuicoGdesonobasatesuiTOS)funzioniinmanierasubGottima._QȘunabuonaideaimpGostarlaaunvqaloretra4e10pGer[leconnessioniviamodemoISDN[acanalebsingolo.Questounproblemadeikernel2.0e2.1,.mamentrenei2.1esisteun'opzionediifcong(neinettoGolsrecenti),.nei2.0necessariaunapatchU aisorgentideidevicedriver.Quindi,[pGer']vedereimassimibenecidallamanipolazionedeiTOS''nellaconnessioniPPPviamoGdem,[siusiHb`ifcong$1txqueuelen'nelproprioscript/etc/ppp/ip-up.mAIlnumerodausaredipGendedallaveloGcitdelmoGdemU edalladimesionedelbuernelmodem;Andicimostraancoraladirezionedaseguire:'Il,migliorvqalorepGerunadatacongurazionesideterminasperimentalmente.DSe,lacoda莡troppGo3cortainunrouterallorasarannoscartatiipacchetti. Naturalmente3sitraggonobenecianchesenzalariscritturadeiTOS,solochelariscritturadeiTOSaiutaadarebGenecioaiprogrammiU noncoGoperativiU (tuttiiprogrammistandarddiLinuxsonocoGoperativi).{_2 ~?G4.8IPFirew>allChains[3@23ՁVMarcareunpacc>hetto `CiupGermetteunacomplessaepotenteiterazioneconlanuovqaimplementazione di'`QualityofService'diAlexeyKuznetsoveconilforwadingbasatosullamarcaturadegliultimikerneldellag]serie2.1.7DarmaggioriinformazioninonappGenaneverrinpossesso.7QuestaopzioneignorataneikernelU dellaserie2.0. ҺOpQerazioniisuun'in>teracatena `Una caratteristicamoltoutilediipGchainslapossibilitdiraggruppareregole8collegatedentrocatene.sSipGossonochiamarelecatenecomesivuoleamenocheilnomenonsiainconittotSconlecatene(input,| outputeforward)ogliobiettivi(MASQ,REDIRECT,ACCEPT,DENY,REJECTtKoRETURN)predeniti.Suggerisco!dievitareintotol'usodietichetteinmaiuscolo,"inquantolepGotreiusarepGerU estensionifuture.qIlnomedellacatenapuesserelungonoa8caratteri.Crearehunan>uov\|ahcatena `Suvvia creiamounanuovqa catena!;PoichsonountipGoconunsaccodiimmaginazione,U lachiamertest.i#Nipchains-Ntest =#@T*uttoU qua.qOralesipGossonometteredentroleregolecomespiegatoinprecedenza.Cancellareunacatena `AncheU cancellareunacatenasemplice.#Nipchains-Xtest =#@PerchU `-X'`?Beh,tuttelealtreletterebuoneeranogioGccupate.ؼCisonounpaiodirestrizionisullacancellazionediunacatena:deveesserevuota(siveda4.1.5(Svuotare unaxcatena)nelseguito)enondeveessrel'obiettivodinessunaregola.NonpGossibilecancellarenessunadelleU trecatenepredenite.Svuotareounacatena `C'unmoGdosemplicepersvuotareunacatenaditutteleregole,usandoilcomando`-F'U (ush).i>r#Nipchains-Fforward =>r#@SeU nonsispGecicaunacatena,allorasarannosvuotatetutteolecatene.Elencareleregoleinunacatena `Siv'pGossonoelencaretutteleregoleinunacatenausandoilcomando`-L'U (list).i#Nipchains-Linput =ChainNinput(refcnt=1):(policyACCEPT)targetprotNopt8sourceKdestination3ZportsACCEPTicmpN----- ranywhereB"Danywhereany#Nipchains-LtestChainNtest(refcnt=0):targetprotNopt8sourceKdestination3ZportsDENY!"icmpN----- rlocalnet/243ZanywhereB"Dany#_2 ~?G4.8IPFirew>allChains[3@24ՁVIl7vqaloredi`refcmt'mostratopGertestilnumerodiregolechehannotestcomeloroobiettivo.MDeveessere zeroU (elacatenaesserevuota)primachesipGossacancellarla.ؼSeU omessoilnomedellacatena,sonoelencatetuttelecatene,anchequellevuote.CifsonotreopzionichepGossonoaccompagnare`-L'.L'opzione`-n'(numeric)moltoutileinquantoprevieneipchainsadaltentativoadiricercaregliindirizziIP*,che(sesiusaunDNS/comefannomolti)causerparecchioritardosseilproprioDNS^nonconguratocorrettamente,osisonoltratetuttelerichiesteDNS.InoltrefaU schelepGortesianomostratecomenumeripiuttostocheconiloronomi.L'opzione!0`-v'mostratuttiidettaglidelleregole,T4comeicontatoridipacchettiebyte,T4lemaschereTOS,l'interfacciaU elamarcaturadeipacchetti.qDiversamentequestivqalorisonoomessi.qPeresempio:#Nipchains-v-Linput =ChainNinput(refcnt=1):(policyACCEPT)PpktsNbytestargetprotopt+tosatosx rifname8mark%psourceKdestination3Zports'+10+840NACCEPTicmp-----0xFF0x00 rlo^zanywhereB"DanywhereanySinoticheicontatoridipacchettiebytesonomostratiusandoisussi`K',`M'o`G'rispGettivqamenteper1000,m10000005e1000000000.8Usandol'opzione`-x'(espandiinumeri)verrannomostratiinumeriinteri,senzaU preoGccuparsidiquantograndisiano. ΤAzzerareicon>tatori `ț`utile`pGoterazzerareicontatori.Cipuesserefattoconl'opzione`-Z'(zerocounters).qPerU esempio:#Nipchains-v-LinputChainNinput(refcnt=1):(policyACCEPT)PpktsNbytestargetprotopt+tosatosx rifname8mark%psourceKdestination3Zports'+10+840NACCEPTicmp-----0xFF0x00 rlo^zanywhereB"Danywhereany#Nipchains-Zinput#Nipchains-v-LinputChainNinput(refcnt=1):(policyACCEPT)PpktsNbytestargetprotopt+tosatosx rifname8mark%psourceKdestination3Zports+:00NACCEPTicmp-----0xFF0x00 rlo^zanywhereB"Danywhereany#IlproblemaconquestoapproGcciochetalvoltaservesapGereilvqaloredeicontatoriunattimoprimadiazzer-arli.Nell'esempioprecedente,traicomandi`-L'ܨe`-Z'pGotrebberoesserepassatideglialtripacchetti.Perquestaragione,ƍsipGossonousare`-L'e`-Z'assiemeO,ƍpGerazzerareicontatorimentrilisilegge.Sfortunata-mente,n!sei!sifacos,nonsipuopGeraresuunasolacatena:sidevonomostrareeazzeraretuttelecateneinunaU volta.#Nipchains-L-v-ZChainNinput(policyACCEPT):PpktsNbytestargetprotopt+tosatosx rifname8mark%psourceKdestination3Zports'+10+840NACCEPTicmp-----0xFF0x00 rlo^zanywhereB"DanywhereanyChainNforward(refcnt=1):(policyACCEPT)ChainNoutput(refcnt=1):(policyACCEPT)ChainNtest(refcnt=0):+:00NDENY!"icmp-----0xFF0x00 rppp0U|localnet/243ZanywhereB"Dany#Nipchains-L-vChainNinput(policyACCEPT):PpktsNbytestargetprotopt+tosatosx rifname8mark%psourceKdestination3Zports_2 ~?G4.8IPFirew>allChains[3@25ՁV'+10+840NACCEPTicmp-----0xFF0x00 rlo^zanywhereB"Danywhereany =ChainNforward(refcnt=1):(policyACCEPT)ChainNoutput(refcnt=1):(policyACCEPT)ChainNtest(refcnt=0):+:00NDENY!"icmp-----0xFF0x00 rppp0U|localnet/243ZanywhereB"Dany# ImpQostareYlatattica `Sibvistocosasuccedequandounpacchettoraggiungelanediunacatenapre- denita_quandosidiscussocomeunpacchettocamminaattraversounacatenain4.1.5(SpGecicareunobiettivo).aPInOquestocaso,alatattica(pGolicy)diunacatenadeterminaildestinodelpacchetto.aPSololecatenepredenite(input,outputeforward)hannodelletattiche,pGoichseunpacchettocadefuoridallaneU diunacatenadenitadall'utente,latraversatariprendenellecatenaprecedente.ؼLantatticapuessereunaqualsiasideiprimiquattroobiettivispGeciali:ȺACCEPT,DENY,REJECTnoMASQ.MASQU vqalidasolamentepGerlacatena`forward'.Inoltre7impGortantenotarecheunobiettivoRETURN7inunaregolainunadellecatenepredeniteutilepGerstabilireU esplicitamentelatatticadiunacatenaquandounpacchettosoGddisfaunaregola. 4.1.6#!\OpQerazionisulmasqueradingMCiSsonodiversiparametripGerl'IPS]Masqueradingconiqualisipugiocare.lSonoinglobatiinipchainspGerchU nonvqalevaU lapenascrivereunostrumentoseparato(anchesequestacosacambier).IlcomandopGerilmasqueradingIPn`-M',epuesserecombinatocon`-L'pGermostrarel'elencodelleconnessioniU attualmentemascherate,ocon`-S'pGerimpostareiparametridelmasquerading.Il{comando`-L'{puessereaccompagnatoda`-n'(mostrainumeriinvecedeinomideglihostedellepGorte)oU `-v'(mostraideltanellesequenzedinumeripGerleconnessionimascherate,nelcasoimpGortiqualcosa).Ilcomando`-S'dovrebbGeessereseguitodatrevqaloriditimeoutinsecondi:perlesessioniTCP*,perlesessioniTCPdopGounpacchettoFYNepGeripacchettiUDP*.Senonsivuolecambiareunodiquestitrevqalori,U semplicementesispGecichi`0'comevqalore.ISvqaloriSOpredenitisonoelencatiin`/usr/src/linux/include/net/ip_masq.h',erispGettivamentesono15minuti,2U minutie5minuti.IlU vqalorepicomunedacambiareilprimo,pGerFTP(siveda5.2.3(IncubidaFTP)piavqanti).SiBnotiilproblemanell'impGostazionedeitimeoutdescrittoin6.10(Nonriescoaimpostareitimeoutdelmasquerading!). 4.1.7#!\Con>trollareunpacchettoMT*alvoltasivuolevederecosasuccedequandouncertopacchettoentranellapropriamacchina,]adesempiopGerfareildebugdellecatenerewall.I)ipchainshailcomando`-C'perpermetterlo,McheusalestesseroutinecheU usailkernelpGerladiagnosideipacchettireali.SispGecicasuqualecatenavericareilpacchettofacendoseguirel'argomentodi`-C'conilsuonome.3tMentreil^kernelinizialatrasversatasempredallacatenainput,aHoutputoppureforward,pGergliscopiditestsihailU pGermessodicominciarelatraversataU daqualsiasicatena.Ix^dettaglixgdel`pacchetto'sonospGecicatiusandolestessasintassiusatapGerspecicareleregolerewall.TInparticolare,yesonoBwobbligatoriunprotoGcollo(`-p'),unindirizzodiprovenienzaBw(`-s'),unindirizzodidestinazione(`-d')0eun'interfaccia(`-i').Z0SeilprotoGcolloTCPoUDP*,alloradevonoesserespGecicatiununicoindirizzoq_2 ~?G4.8IPFirew>allChains[3@26ՁVdi|provenienzaeununicoindirizzodidestinazione,mentredevonoesserespGecicatiuntipoeuncodiceICMP pGerj*ilprotocolloICMPj%(amenochenonsiaspecicatal'opzione`-f'perindicareunaregolasuiframmenti,nelU qualcasoquesteopzionisonoillegali).ؼSeDilprotoGcolloTCP1(enonspecicatal'opzione`-f'),puesserespecicatal'opzione`-y'perindicarecheU ilpacchettoditestavrilbitSYNimpGostato.EccoquiunesempiodivericadiunpacchettoSYNTCPdallapGorta60000di192.168.1.1allaportawwwdi192.168.1.2,inarrivosull'interfacciaeth0echeentranellacatena`input'(questalaclassicainizializzazionediU unaconnessioneWWW):卑#Nipchains-Cinput-ptcp-y-ieth0-s192.168.1.160000-d192.168.1.2www =packetNaccepted# 4.1.8#!\Piregoleinunav>oltasolaecontrollarecosasuccedeMT*alvoltaun'unicarigadicomandopuavereettosupiregole.Cicapitainduesituazioni.Laprima: se#sipuspGecicareunnomedihostchevienerisolto(usandoilDNS)indiversiindirizziIP*,ipchainssicompGorterU comesesifosserodigitatipicomandi,unoperognicombinazionediindirizzi.Quindi0seilnomedihost`www.foGo.com'vienerisoltointreindirizziIPeilnomedihost`www.bar.com'vienerisoltouindueindirizziIP*,allorailcomando`ipGchains-APinput-jreject-swww.bar.com-dwww.foo.com'aggiungerU seiregoleallacatenainput.UnHaltromoGdoperfarscheipchainseettuiazionimultiplediusarel'opzione`-b'(bidirezionale).QuestaopzionefascheipchainssicompGorticomesesifossedigitatoduevolteilcomando,.tlasecondavoltascambiandogliargomentidi`-s'e`-d'.o`QuindipGerevitarel'inoltrosiadachepGer192.168.1.1,sipGotrebbeU farequantosegue:卑#Nipchains-b-Aforward-jreject-s192.168.1.1 =#ؼPersonalmente,4`nonԇgradiscomoltol'opzione`-b';:sesivuolequalcosadipiutilesiveda4.2.1(UsareipGchains-save)U piavqanti.L'opzione#`-b'puessereusatoconicomandidiinserimento(`-I'),cancellazione(`-D')(manonlevqarianticheU accettanounnumerodiregola),aggiunta(`-A')everica(`-C').Un'altraKopzioneutile`-v'(verbGoso)chemostraesattamentequelcheipchainsstafacendoconilcomandodato.$KȑmDutilemsesihaachefareconcomandichepGossonoevereeettosupiregole.$KPeresempio,controlliamoilU compGortamentodeiframmentitra192.168.1.1e192.168.1.2.卑#Nipchains-v-b-Cinput-ptcp-f-s192.168.1.1-d192.168.1.2-ilo ="rtcpNopt+---f-tos0xFF0x00 rvialo8192.168.1.1->192.168.1.28*->+*packetNaccepted"rtcpNopt+---f-tos0xFF0x00 rvialo8192.168.1.2->192.168.1.18*->+*packetNaccepted##Í4.2UnutileesempioMHounaconnessionePPPrindialup(-i?ppp0).:Miscaricolenews(-pTCP-snews.virtual.net.aunntp) elapGosta(-p?TCP-smail.virtual.net.aupop-3)ognivoltachemiconnetto.9UsoilmetoGdoFTP_2 ~?G4.8IPFirew>allChains[3@27ՁVdiHDebianpGeraggiornareregolarmentelamiamacchina(-p?TCP-y-sftp.debian.org.auftp-data). NavigotinreteattraversoilproxydelmioISPDmentretuttalarobaprecedenteinfunzione(-p?TCP-dproxy.virtual.net.au?8080),YmaoGdiolepubblicitdadoubleclick.netnelDilbertArchive(-p?TCP-y-d199.95.207.0/24U e-p?TCP-y-d199.95.208.0/24).ؼNonmipreoGccupodellagentecheprovqaafareftpnellamiamacchinamentresonoonline(-p?TCP-d$LOCALIP?ftp),4ma+nonvogliochenessunodafuoripretendadiavereunindirizzoIP+dellamiareteinterna(-s?192.168.1.0/24).ICiUcomunementeUdettoIP-spGoong,eUc'unmoGdomiglioreperproteggersineikernelU 2.1esupGeriori:qsiveda5.7(Comeproteggersidall'IPspGoong?).Questagcongurazionepiuttostosemplice,+9pGerchattualmentenoncisonoaltremacchinenellamiareteinterna.NonU vogliochenessunproGcessolocale(ie.qNetscape,lynxecc.)qsiconnettaadoubleclick.net:R#Nipchains-Aoutput-d199.95.207.0/24-jREJECT =#Nipchains-Aoutput-d199.95.208.0/24-jREJECT#vOra/voglioimpGostareleprioritindiversipacchettiinuscita(nonnevedol'utilitdifarloneipacchetti in> ingresso).,Poichhoparecchiediquestoregole,x`hasensometterletutteinununicacatena,chiamatappp-out.#Nipchains-Nppp-out =#Nipchains-Aoutput-ippp0-jppp-out#vRitardoU minimopGeriltracowebepertelnet.#Nipchains-Appp-out-pTCP-dproxy.virtual.net.au8080-t0x010x10#Nipchains-Appp-out-pTCP-d0.0.0.0/0telnet-t0x010x10#vMinimoU costopGeridatiftp,nntpepop-3:#Nipchains-Appp-out-pTCP-d0.0.0.0/0ftp-data-t0x010x02#Nipchains-Appp-out-pTCP-d0.0.0.0/0nntp-t0x010x02#Nipchains-Appp-out-pTCP-d0.0.0.0/0pop-3-t0x010x02#vCiJsonoalcunerestrizionisuipacchettiiningressodall'interfacciappp0:lQcreounacatenachiamata`ppp-in':#Nipchains-Nppp-in#Nipchains-Ainput-ippp0-jppp-in#vOra,vnessun{pacchettoiningressodappp0dovrebbGeaermareunindirizzodiprovenienzadi192.168.1.*,ve quindiU liregistroeliproibisco:#Nipchains-Appp-in-s192.168.1.0/24-l-jDENY#vPermettol'ingressosolodipacchettiUDPpGerilDNS(eseguouncachingnameservercheinoltratuttele richieste}6a203.29.16.1,allChains[3@28ՁV#Nipchains-Appp-in-pUDP-s203.29.16.1-d$LOCALIPdns-jACCEPT =#Nipchains-Appp-in-pTCP-s0.0.0.0/0ftp-data-d$LOCALIP1024:5999-jACCEPT#Nipchains-Appp-in-pTCP-s0.0.0.0/0ftp-data-d$LOCALIP6010:-jACCEPT#Nipchains-Appp-in-pTCP-d$LOCALIPftp-jACCEPT#ؼPermetoU ilritornodeipacchettiTCPdirispGosta卑#Nipchains-Appp-in-pTCP!-y-jACCEPT#PerU nire,vqannobGeneipacchettiloGcal-to-local:卑#Nipchains-Ainput-ilo-jACCEPT#ora,U lamiatatticadidefaultpGerlacatenainput蓺DENY,quindiqualsiasialtracosavienescartata:卑#Nipchains-PinputDENY#NOT*A:nonimpGostereilemiecateneinquestoordine,RinquantoipacchettipGotrebberopassarementre legimpGosto.|LacosapisicuradiimpostareperprimacosalatatticaaDENY,poiinserireleregole.Naturalmente,seleproprieregolenecessitanodiricercheDNS}pGerrisolvereinomidihost,pGotrebberoesserciU problemi. 4.2.1#!\UsareipQc>hains-saveMImpGostare7lecatenerewallproprionelmodoincuilesivuole,=epoiprovqarearicordarsiicomandiusatiinmoGdoU daporterlofareanchelavoltasuccessivqaunacosapGenosa.ؼipchains-saveunoscriptcheleggel'impGostazionecorrentedellecateneelasalvqainunle.PeroravilascioU infrementeattesadiscoprirecosafaipchains-restore.ipchains-savepusalvqareunacatenaotuttelecatene(senonspGecicatounnomedicatena). Lasolaopzione'attualmentepGermessa`-v'chestampaleregole(instderr)mentrelesalvqa.Perlecateneinput,outputU eforwardsalvqataanchelatattica.卑#Nipchains-save>my_firewall =SavingN`input'.SavingN`output'.SavingN`forward'.SavingN`ppp-in'.SavingN`ppp-out'.# 4.2.2#!\UsareipQc>hains-restoreMipchains-restore"ripristinalecatenesalvqateconipchains-save.܅Accettadueopzioni:c`-v'chedescrive ogniSregolachevieneaggiunta,_e`-f'cheforzalosvuotamentodellecatenedenitedall'utenteseesistono,comeU descrittonelseguito._2 ~?G5.8Miscellanea29ՁVSenell'inputtrovqataunacatenadenitadall'utente,oipchains-restorecontrollaseesistegi.Seesiste, sarPchiestoselacatenadebbaesseresvuotata(ripulitadatutteleregole)osesidebbasaltareilripristinodiU questacatena.qSesispGecica`-f'inrigadicomando,nonsarchiestoniente;lacatenasarripulita.ؼPerU esempio:卑#Nipchains-restoreacchettiICMPI+pacchetti+ICMPsonousati(tralealtrecose)pGerindicarefallimentineglialtriprotocolli(comeTCP+o UDP).vInparticolareipacchetti`destination-unreachable'(destinazioneirraggiungibile).ּBloGccarequestiP_2 ~?G5.8Miscellanea30ՁVpacchetti"Zsignicachenonsiriceverannomaiglierrori`Hostunreachable'o`Noroutetohost';qualsiasi connessionesemplicementeattenderunaripGostachenonarrivermai.MCiirritante,mararamentefatale.ؼUnproblemapGeggiorelaregoladeipacchettiICMPnelMTUdiscovery*. zTuttelebuoneimplementazioniTCPc(inclusawquelladiLinux)usanoMTUdiscoverywpGerprovqareacapirequalesiailpacchettopigrossochehpuarrivqareadestinazionesenzaessereframmentato(laframmentazioneabbassaleprestazioni.YspGe-cialmenteQquandovengonooGccasionalmentepGersideiframmenti).pmMTUQdiscoverylavorainviandopacchetticonilbitDon'tF*ragmentimpGostato,2?inviandopGoipacchettipipiccolisericeveunpacchettoICMPcheindica NF*ragmentationneededbutDF ;set(`fragmentation-needed').XQuestounpacchettotipGo`destination-unreachable',}xeugsenonvienemairicevutol'hostloGcalenonriducel'MTUu^eleprestazionisarannoabissaliononU esistenti.SiunotichecomunebloGccaretuttiimessaggiredirectICMPu(tipo5);possonoessereusatipermanipolarel'instradamento.(sebbGeneglistackIPbuoniabbianodelleprotezioni),equindisonospGessovistiuncomepo'rischiosi. 5.2.2#!\ConnessioniTCPalDNS(nameserv>er)MSesistaprovqandoabloGccaretutteleconnessioniTCPinuscita,%siricordicheilDNSnonsempreusaUDP;se`larispGostadalserversuperai512byte,ilclientusaunaconnessioneTCP`(ancoradirettaallapGortanumeroU 53)pGerottenereidati.Cir/puessereunatrappGolaperchilDNSq`praticamentefunzioner'sesidisabilitanotalitrasferimentiTCP;U comunqueselosifapGossonocapitarestranilunghiritardiealtrioccasionaliproblemiDNS.SeXleproprieinterrogazioniDNSXsonosemprediretteallastessafonteesterna(siadirettamenteusandounarigapnameserverin/etc/resolv.confoppureusandouncachingnameserverinmoGdalitforward),-allorasidevonocpGermetteresololeconnessioniTCPcRallaportadomaindiquelnameserverdallaportadomainlocale(sesi"stausandouncachingnameserver)odaunapGortapialta( b> cmmi10>1023)sesistausando/etc/resolv.conf. 5.2.3#!\IncubidaFTPMFTP\presentakunclassicoproblemadelltraggiodeipacchetti.`FTP\haduemoQdalit;quellatradizionaleardettamoQdalitCattiv\|aequellapirecentedettamodalitCpassiv\|a.uIaowebbrowsersolitamenteusanolaU moGdalitpassivqa,mentreiprogrammiperFTParigadicomandosolitamenteusanolamodalitattivqa.InJmoGdalitattivqa,quandoilsitoremotovuoleinviareunle(oppureancheilrisultatodiuncomandolsodir)apreunaconnessioneTCPversolamacchinaloGcale.'CisignicachenonsipGossonoltrarequesteconnessioniU TCPsenzarompGerel'FTPattivo.SeOsihalapGossibilitdiusarelamodalitpassivqa,Kallorabene;|lamodalitpassivqacreaconnessionidatidalzclientalserver,anchepGeridatiiningresso.Altrimenti,raccomandabilepGermettereconnessioniTCPsolamenteU versopGortesuperiorialla1024manontra6000e6010(la6000usataperX-Windows).#Í5.3FiltrareiPingdellaMorteMLa;EmacchineLinuxsonooraimmuniaifamosiPingdellaMorte,sche;Eimplicanol'inviodiunpacchettoICMPillegalmenteU grandechefaandareinoverowibuernellostackTCPdelriceventeconeettidevqastanti.Se)vivoglionoproteggeremacchinechepGotrebbero)essereancoravulnerabili, lsemplicementesibloGcchinoiframmentiICMP*.NormalmenteipacchettiICMPnonsonoabbastanzagrandidarichiedereframmentazione,e1quindinonsirompGernientesenonigrossiping.Hosentito(nonconfermato)cheaalcunisistemibasta6anchesolol'ultimoframmentodiunpacchettoICMPfuorimisurapGercorromperli,O;equindinon莡raccomandabileU bloGccaresoloilprimoframmento._2 ~?G5.8Miscellanea31ՁVSebbGeneAiprogrammiexploitchehovistousanotuttiICMP*,nonc'ragionepernonusareframmentiTCP oUDP(odiunprotoGcollosconosciuto)perquestiattacchi,PequindibloccareiframmentiICMP€solamenteunaU soluzionetempGoranea.#Í5.4FiltrareTeardropeBonkMT*eardropeBonksonodueattacchi(rivoltiprincipalmentecontromacchineMicrosoftWindowsNT)chesibasano|sullasovrappGosizionedeiframmenti.LeopzionisonodifarscheilpropriorouterLinuxeettuiladeframmentazioneU oppuredisabilitaretuttiiframmentiversolemacchinevulnerabili.5.5FiltrareiFragmentBombMSidicechealcunistackTCPmenoadabilihannoproblemiagestireungrandenumerodiframmentidipacchettiquandononricevonomaituttiiframmenti.H0Linuxnonhaquestoproblema.H0SipGossonoltraretuttidOiframmenti(ilcheinterrompGepureillorousolegittimo)oppurecompilareilkernelattivqando`IP:alwaysdefragment'(soloselapropriamacchinaLinuxilsoloinstradamentopGossibileperquestipacchetti).5.6CambiareleregolerewallMCisonoalcunequestionitempGoralicoinvoltenellamodicadelleregolerewall.`ESenonsifaattenzione,sipGossonoU lasciarpassarepacchettimentresifannolemoGdiche.qL'approccioU pisempliceilseguente:卑#Nipchains-Iinput1-jDENY =#Nipchains-Ioutput1-jDENY#Nipchains-Iforward1-jDENY...Nfarelemodifiche...#Nipchains-Dinput1#Nipchains-Doutput1#Nipchains-Dforward1#ؼCiU scartatuttiipacchettipGerladuratadellemodiche.ؼSemlepropriemoGdichesonoristretteaunasolacatena,sipotrebbecreareunanuovqamcatenaconlenuove regoleepGoirimpiazzare(`-R')laregolachepuntaallavecchiacatenaconquellachepuntaaquellanuovqa:pGoiU sipucancellarelavecchiaU catena.qQuestorimpiazzosaratomico.5.7Comeproteggersidall'IPSp_oong?ML'IPspGoongрunatecnicanellaqualeunhostinviapacchetticheaermanoproveniredaunaltrohost.PoichEQilltraggiodeipacchettiprendedecisionibasandosisuquestoindirizzodiprovenienza,Hzl'IPEMspGoong2 utilesoloconltridipacchettiunpGo'stupidi.Cȑ1usatoanchepGernasconderel'identitdell'attaccanteusandoU attacchiSYN,T*eardrop,PingdellaMorteesimili(noncisipreoGccupisenonsisacosasono).ؼIlovmigliormoGdoperproteggersidall'IPnspoongchiamatoSourceAddressV*erication(Vericadel-l'IndirizzodiProvenienza),{edfattodalcoGdicediinstradamentoenondalrewall. Sicerchiille/proc/sys/net/ipv4/conf/all/rp_filter.Sewesiste,'alloraattivqareilSourceAddressV*ericationaogniavviotlagiustasoluzione. |Perfarlo,siinseriscanolerigheseguentidaqualcheparteneipropriscriptdiinizializzazione,U primachesiainizializzataqualsiasiinterfacciadirete: w_2 ~?G5.8Miscellanea32ՁV#NQuestoilmetodomigliore:attivareilSourceAddressVerification =#Neaverecoslaprotezionedallospoofsututteleintefacce#Ncorrentiefuture.ifN[-e/proc/sys/net/ipv4/conf/all/rp_filter];then"rechoN-n"SettingupIPspoofingprotection...""rforNfin/proc/sys/net/ipv4/conf/*/rp_filter;do5WechoN1>$f"rdone"rechoN"done."else"rechoNPROBLEMSSETTINGUPIPSPOOFINGPROTECTION. rBEWORRIED."rechoN"CONTROL-Dwillexitfromthisshellandcontinuesystemstartup.""recho"r#NStartasingleusershellontheconsole"r/sbin/suloginN$CONSOLEfiڍSe.nonsipufarecos,AqsipGossonoinseriremanualmente.delleregoleperproteggereogniinterfaccia.Ci richiedeconoscenzasuqualsiasiinterfaccia.MqIkernel2.1automaticamenteriutanoipacchetticheaermanoprovenireU dagliindirizzi127.*(riservqatipGerl'interfaccialoopbaklocalelo).ؼPermesempio,facciamoilcasochecisianotreinterfacce:teth0,eth1eppp0.PossiamousareifconfigpGerconoscerel'indirizzoelanetmaskdelleinterfacce. 4Diciamocheeth0siaattaccataallarete192.168.1.0conjnetmask255.255.255.0,peth1siaattaccataallarete10.0.0.0connetmask255.0.0.0echeppp0connettacon1Internet(dov'pGermessoqualsiasiindirizzotrannequelliriservqaticomeindirizziIP1privati).eInseriremoalloraU leseguentiregole:x#Nipchains-Ainput-ieth0-s!192.168.1.0/255.255.255.0-jDENY =#Nipchains-Ainput-i!eth0-s192.168.1.0/255.255.255.0-jDENY#Nipchains-Ainput-ieth1-s!10.0.0.0/255.0.0.0-jDENY#Nipchains-Ainput-i!eth1-s10.0.0.0/255.0.0.0-jDENY#Questo:approGcciononbuonoquantol'approccioconilSourceAddressV*erication,-perchsecambiala propriaU rete,sidevonocambiareleregolerewall.ؼSe'siusaunkerneldellaserie2.0,\Tsipuvolerproteggereanchel'interfacialoGopback,\TusandounaregolacomeU questa:x#Nipchains-Ainput-i!lo-s127.0.0.0/255.0.0.0-jDENY =#" 5.8Progettiav@ anzatiMHohscrittounalibreria(`libfw')chefunzionadellospazioutenteinclusaneisorgenti.=UsalapGossibilitoertadaK}IPKzChains1.3esupGerioridicopiareunpacchettonellospazioutente(usandol'opzionedicongurazioneIP_FIREWALL_NETLINK).IlhvqaloremarcatopuessereusatopGerspecicareilparamentroQualityofServicepGeripacchettiopGerspGecicare!comefarel'inoltrodiportadeipacchetti.`)Nonlihomaiusati,+masesivuolescriverequalcosainpropGosito,U misicontatti.UsandoquestalibreriapGossonoessereimplementatenellospazioutentecosecomelastateful;inspQection(preferiscoDQilterminedynamicrewalling).?Un'altraideainteressanteilcontrollodeipacchettisubaseutenteU facendodellericercheinundemonenellospazioutente.qQuestodovrebbGeessereabbastanzafacile.! V_2 ~?G6.8Problemicom>unic33ՁV5.8.1#!\SPF:StatefulP>acketFilteringMftp://ftp.interlinx.b}/c.ca/pub/spfCftp://ftp.interlinx.bc.ca/pub/spfilsitodelprogettoSPF2diBrian Murrell,chefailtrackingdelleconnessioninellospazioutente. 'AggiungesicurezzasignicativqapGersitiabassaU banda.ؼAttualmente^c'pGoca^documentazione,a"maeccoquiunpostnellamailinglistnelqualeBrianspiegaunpo'diU cose: =>NCredochefacciaesattamentequellochevoglio:installareunregola>Ntemporaneadi"arretramento"("backward"rule)perpermettere>Nl'ingressodeipacchetticomefosserounarispostaaunarichiesta>Ninuscita.Yup,Nesattamentequellochefa. rPiprotocollisupporta,pilaregolaNdi"arretramento"funzionabene. rAttualmentehailsupporto(vadoNamemoria,quindiscusatequalsiasierroreoomissione)perFTP(siaNattivochepassivo,iningressoeinuscita),RealAudio,traceroute,NICMPeICQbasilare(ingressodaunserverICQeconnessioniNTCPdirette,manonc'ancorailsupportoperleconnessioniNTCPdirettesecondarieperaltrecosecomeiltrasferimentoNdifile,ecc.).>Nȓunrimpiazzoperipchainsounsupplemento?ȖNunsupplemento. rPensoaipchainscomealmotoreperpermettereoprevenireNaipacchettidiviaggiareattraversolamacchinaLinux. rSPFNilpilotachemonitorizzacostantementeiltrafficoediceaipchainsNcomecambiarelesuetatticheperrispondereaicambiamentinelNtraffico. 5.8.2#!\L'ftp-datahac>kdiMichaelHasensteinMichaelHasensteindellaSuSEyhascrittounapatchpGerilkernelcheaggiungeaipGchainsiltrackingdelle connessioniU ftp.qAttualmentepuesseretrovqataahttp://www.suse.de/mha/p}/atch.ftp-data-2.gz#Í5.9EstensionifutureIl3 rewallingeilNA*T3sonoinfasediriprogettazionepGeril2.4.f$IpianielediscussionisonodispGonibilinellalista|netlter(sivedahttp://lists.samb}/a.org|).QuesteestensionidovrebbGerochiarireparecchiequestioniinsolute/sull'usabilit(veramente,ݲil/rewallingeilmasqueradingnondovrebbGeroesserec}/osdiciliɹ),ݲepGermetterannoU lacrescitadiunrewallingmaggiormenteessibile.(6ProblemiG\comcuni荍6.1ip_chains-Lsipianta!ProbabilmenteeqsistannobloGccandolericercheDNS;allaneandrintimeout.sSiproviapassarel'opzione`-n'U aipGchains,chesopprimelarisoluzionedeinomi."_2 ~?G6.8Problemicom>unic34ՁV6.2Leopzioninegatenonfunzionano!MSidevemetterel'opzione``!''dasola,#condeglispazidaentrambiilati.'Unerroreclassico(segnalatodalla versioneU 1.3.10):卑#Nipchains-Ainput-i!eth0-jDENY =#ؼNonU esistermaiun'interfacciachiamata``!eth0',maipGchainsnonsaquestacosa.#Í6.3Masquerading/Forwardingnonfunziona!Cisiassicurichesiaabilitatol'inoltrodeipacchetti(neikernelrecentidisabilitatopGerdefault,lilchesignicaG\cheipacchettinonproverannomaiadattraversarelacatena`forward').H5SipuvenirneacapGodigitandoU (comeroGot):卑#Necho1>/proc/sys/net/ipv4/ip_forward =#ؼSefunziona,losipumetteredaqualcheparteneipropriscriptdiavviocoschesiaabilitatoognivolta;7ovvi-amente#PmeglioimpGostareilpropriorewallprimadilanciarequestocomando,-Faltrimentic'l'oppGortunitcheU scappinounpGo'dipacchetti.#Í6.4-jREDIRnonfunziona!SiVdevonopGermettereipacchettidiinoltro(sivedasopra)anchfunzioniildirottamento;WgdiversamenteilcoGdiceunbugnelleversioni2.1.102e2.1.103delkernel(einalcunevecchiepatchchehoproGdotto)chefacevqafallireU icomandiipGchainscheutilizzavqanocaratterijollypGerspecicareinterfacce(adesempio-i?ppp+).ؼCi]KstatocorrettoneikernelrecentienellapatchpGeril2.0.34presentesulsitoweb.PuesserepurecorrettoU amanoneisorgentidelkernelmoGdicandolariga63(piomeno)diinclude/linux/ip_fw.h:卑#defineNIP_FW_F_MASK80x002F r/*Allpossibleflagbitsmask+*/ؼDovrebbGeU essere0x003F.Losicorreggaesiricompiliilkernel.#Í6.6TOSnonfunziona!Questoirstatounmioerrore:%l'impGostazionedelcampoTypeofServiceneikerneldal2.1.102al2.1.111inrealtU nonfacevqaniente.qQuestoproblemastatocorrettonel2.1.112.##d_2 ~?G7.8UnesempiopiserioOd35ՁV6.7Nonfunzionanoipautofweipp_ortfw!MPerG_i2.0.x,}Rvero;JnonhoiltempGopercreareemantenereunapatchenormepGeripchainseipautofw/ipportfw.ؼPerU i2.1.x,siscarichil'ipmasqadmdiJuanCiarlantedaؼelosiusiesattamentecomesisarebbGeusatoipautofwoipportfw,tranneperilfattocheinvecediipportfwsiU usaipmasqadm?portfw,einveceU diipautofwsiusaipmasqadmautofw.#Í6.8xosviewsirotto!MSi aggiorniallaversione1.6.0osupGeriore,?chenonrichiedenessunaregolarewallpGerikernel2.1.x.X"SembracheU anchelarelease1.6.1abbiaquestoproblema;losisegnaliall'autore(nonunmioerrore!).6.9SegmentationFaultcon`-jREDIRECT'!MQuestoU eraunbuginipGchainsversione1.3.3.qSiaggiorni.6.10%}Nonriescoaimp_ostareitimeoutdelmasquerading!Ci| vero(pGerikernel2.1.x)noal2.1.123.)$Nel2.1.124,viltentativodiimpGostareitimeoutdelmasquerading provoGca]unbloccodelkernel(simodichireturninret?=nellariga1328dinet/ipv4/ip_fw.c).@?Nel2.1.125,funzionaU tutto.#Í6.11%}VogliodeirewallIPX!Eccoscmoltialtri,gAsembra.IlmiocoGdicegestiscesoloIP*,sfortunatamente.D'altrapartec'anchequalcosadi^buono:lecosepGerscrivereunrewallIPX-cisonotutte!;BastasemplicementescrivereilcoGdice;u}sar򎡍feliceU diaiutaredoveU pGossibile.(7UnG\esempiopiserio:QuestoesempioestrattodaltutorialscrittodameeMichaelNeulingapparsoinLinuxW*orldnelMarzo1999;TnonT݀ilsolomoGdoperrisolvereilproblemainesame,Tmaprobabilmenteilpisemplice.qjSpGerolositroviU interessante.#Í7.1Lasituazione# !", cmsy10ReteU internaconilmasquerading(condiversisistemiopGerativi)chechiameremoGOOD.Server-AespGostiinunareteseparata(chiamataDMZpGerDemilitarizedZoneZonaDemilitarizzata).ConnessioneU PPPaInternet(dettaBAD).$._2 ~?G7.8UnesempiopiserioOd36ՁV'+ReteNEsterna(BAD) =L\|L\|:$ppp0|+:---------------+:|N192.84.219.1|=hRetedeiServer(DMZ)+:|=h|eth0+:|=h|----------------------------------------------+:|=h|192.84.219.250N||B"D|+:|=h|Fے||B"D|+:|192.168.1.250|Fے|=h|B"D|+:---------------/= --------!"-------%p-------L\|Neth18|SMTP|!"|DNS|%p|WWW|L\|PN.--------!"-------%p-------L\|B"D192.84.219.128 r192.84.219.129192.84.218.130L\|"rReteNInterna(GOOD)#Í7.2ScopiMMacchinaU pGerilltraggiodeipacchetti:ؼPINGda/pQerqualsiasireteQuestoU veramenteU utilepGersapereseunamacchinaattivqa.TRA>CEROUTEda/pQerqualsiasireteAncora,U utilepGerladiagnostica.A>ccessoDNSRendeU pingeDNSpiutili.ؼAll'internoU diDMZ:ؼMailU serverSMTPU versol'esternoAccettaU SMTPdall'internoedall'esternoAccettaU POP-3dall'internoNameU ServerInviaU richiesteDNSall'esternoAccettaU richiesteDNSdall'interno,dall'esternoedallamacchinapGerilltraggiodeipacchetti.ServerU webAccettaU connessioniHTTPdall'internoedall'esternoAccessoU rsyncdall'internoReteU interna:%8I_2 ~?G7.8UnesempiopiserioOd37ՁVP>ermettereWWW,ftp,traceroute,sshversol'esternoQuestesonocoseabbastanzastandarddapGermettere:oalcuniinizianopermettendodifaretuttoalla reteU interna,maquisaremounpGo'pirestrittivi.P>ermettereconnessioniSMTPversoilmailserverOvviamenteU vogliamopGoterinviaremailversol'esterno.P>ermettereconnessioniPOP-3versoilmailserverQuestoU ilmoGdoperleggerelapropriaposta.P>ermettereconnessioniDNSversoilnameserverV*ogliamoU essereingradodicercareinomiesternideisitipGerilWWW,ftp,tracerouteessh.P>ermettereconnessionirsyncversoilserverwebQuestoU ilmoGdopersincronizzareilserverwebesternoconquellointerno.P>ermettereconnessioniWWWversoilserverwebOvviamente,U vogliamopGoterciconnetterealnostroserverwebesterno.P>ermettereilpingversolamacchinapQerilltraggiodeipacchettiQuestaU unapuracortesia:qsignicachesipucontrollareselamacchinarewallgi.#Í7.3Primadelltraggiodeipacchetti#Anti-spGoong.Poich nonc'nessuninstradamentoasimmetrico,Ssemplicementesipuattivqarel'anti-spGoong per tutteU leinterfacce.=/#Nforfin/proc/sys/net/ipv4/conf/*/rp_filter;doecho1>$f;done =/#ImpGostareU leregolediltraggioperproibire(DENY)tutto.SiU pGermetterancorailtracolocalesuloopback,maverrproibitotuttoilresto./#Nipchains-Ainput-i!lo-jDENY =/#Nipchains-Aoutput-i!lo-jDENY/#Nipchains-Aforward-jDENY/#CongurareU leinterfacce.SolitamenteKcifattonegliscriptdibGoot.YCiKsiassicuricheipassiprecedentisianofattiprimache vengano>congurateleinterfacce,pGerprevenirel'inltrazionedipacchettiprimadiaverimpGostatoleregole.InseriremoGdulidimasqueradingperciascunprotocollo.BSidevonoinserireimodulidimasqueradingpGerU FTP*,inmodochefunzionil'FTPsiaattivochepassivopGerlareteinterna./#Ninsmodip_masq_ftp =/#&>ʠ_2 ~?G7.8UnesempiopiserioOd38ՁV7.4Filtraggiodeipacchettip_eripacchettidipassaggioMConU ilmasquerading,lacosamiglioreltrarenellacatenaforward.ؼSi{suddividalacatenaforwardindiversecateneutenteasecondadelleinterfaccediprovenienza/destinazione; ciU spaccailproblemaintronconigestibilipifacilmente.卑ipchainsN-Ngood-dmz =ipchainsN-Nbad-dmzipchainsN-Ngood-badipchainsN-Ndmz-goodipchainsN-Ndmz-badipchainsN-Nbad-goodؼUnafcosacomunedafarediaccettare(ACCEPT)ferroriICMPstandard,k1equindisicreaunacatenasolopGerU loro.卑ipchainsN-Nicmp-acc 7.4.1#!\ImpQostareisaltidallacatenaforw>ardMSfortunatamente,҆?notasolamente(nellacatenaforward)l'interfacciad'uscita.Quindi,҆pGerscopriredaqualeinterfacciasiaentratounpacchettouseremol'indirizzodiprovenienza(l'antispGoongprevieneindirizzicontraatti).ؼSi;notichesiregistraqualsiasicosachenonsoGddisfaunadiquesteregole(ovviamentecinondovrebbGemaisuccedere).ipchainsN-Aforward-s192.168.1.0/24-ieth0-jgood-dmz =ipchainsN-Aforward-s192.168.1.0/24-ippp0-jgood-badipchainsN-Aforward-s192.84.219.0/24-ippp0-jdmz-badipchainsN-Aforward-s192.84.219.0/24-ieth1-jdmz-goodipchainsN-Aforward-ieth0-jbad-dmzipchainsN-Aforward-ieth1-jbad-goodipchainsN-Aforward-jDENY-l 7.4.2#!\Denirelacatenaicmp-accMIDpacchettiDchesianodeglierroriICMPDsonoaccettati,H.altrimentiilcontrollopasserallacatenachiamante.卑ipchainsN-Aicmp-acc-picmp--icmp-typedestination-unreachable-jACCEPTipchainsN-Aicmp-acc-picmp--icmp-typesource-quench-jACCEPTipchainsN-Aicmp-acc-picmp--icmp-typetime-exceeded-jACCEPTipchainsN-Aicmp-acc-picmp--icmp-typeparameter-problem-jACCEPT7.4.3#!\DaGoQod(in>terno)aDMZ(server)MRestrizioniU dellareteinterna:ؼPermettereU WWW,ftp,traceroute,sshversol'esternoP>ermettereSMTPversoilMailserver'I6_2 ~?G7.8UnesempiopiserioOd39ՁVP>ermetterePOP-3versoilMailserverP>ermettereDNSversoilNameserverP>ermetterersyncversoilW ebserverP>ermettereWWWversoilW ebserverPermettereU ilpingallamacchinaltroؼSi lpGotrebbefareilmasqueradingdallareteinternanellaDMZ,maquinonsifar.XPoichnessunonellarete internaU dovrebbGeprovqareafarecosebrutte,registriamoqualsiasipacchettochevengaproibito.ؼSi?YnotichelevecchieversionidiDebianusavqano`pGop-3'invecedi`pGop3'in/etc/services,ycosacheviolal'RFC1700.卑ipchainsN-Agood-dmz-ptcp-d192.84.219.128smtp-jACCEPT =ipchainsN-Agood-dmz-ptcp-d192.84.219.128pop3-jACCEPTipchainsN-Agood-dmz-pudp-d192.84.219.129domain-jACCEPTipchainsN-Agood-dmz-ptcp-d192.84.219.129domain-jACCEPTipchainsN-Agood-dmz-ptcp-d192.84.218.130www-jACCEPTipchainsN-Agood-dmz-ptcp-d192.84.218.130rsync-jACCEPTipchainsN-Agood-dmz-picmp-jicmp-accipchainsN-Agood-dmz-jDENY-l 7.4.4#!\DaBad(esterno)aDMZ(serv>er).#RestrizioniU diDMZ:$@^/MailU server72A3SMTPv>ersol'esterno72A3A>ccettaSMTPdaU internoedesterno72A3AccettaU POP-3dall'interno$@^/NameU server72A3In>viaDNSversol'esterno72A3A>ccettaDNSdaU interno,esternoedallamacchinapGerilltraggiodeipacchetti$@^/W*ebU server72A3A>ccettaHTTPdaU internoeesterno72A3AccessoU rsyncdall'internoCoseU pGermessedallareteesternaversoDMZ$@^/NonU siregistranoleviolazioni,inquantopGossonosuccedere.=/ipchainsN-Abad-dmz-ptcp-d192.84.219.128smtp-jACCEPT =/ipchainsN-Abad-dmz-pudp-d192.84.219.129domain-jACCEPT/ipchainsN-Abad-dmz-ptcp-d192.84.219.129domain-jACCEPT/ipchainsN-Abad-dmz-ptcp-d192.84.218.130www-jACCEPT/ipchainsN-Abad-dmz-picmp-jicmp-acc/ipchainsN-Abad-dmz-jDENY(R_2 ~?G7.8UnesempiopiserioOd40ՁV7.4.5#!\DaGoQod(in>terno)aBad(esterno).#RestrizioniU dellareteinterna:$@^/PermettereU WWW,ftp,traceroute,sshversol'esterno$@^/P>ermettereSMTPversoilMailserver$@^/P>ermetterePOP-3versoilMailserver$@^/P>ermettereDNSversoilNameserver$@^/P>ermetterersyncversoilW ebserver$@^/P>ermettereWWWversoilW ebserver$@^/PermettereU ilpingallamacchinaltroMolti!pGermettonoqualsiasicosadallareteinternaversoquellaesterna.`RQuafacciamounpGo'ifascisti.$@^/RegistrazioneU delleviolazioni.$@^/FTPU passivogestitodalmoGdulodelmasquerading$@^/leU pGortedidestinazioneUDP33434esuccessivesonousatedatraceroute.=/ipchainsN-Agood-bad-ptcp--dportwww-jMASQ =/ipchainsN-Agood-bad-ptcp--dportssh-jMASQ/ipchainsN-Agood-bad-pudp--dport33434:33500-jMASQ/ipchainsN-Agood-bad-ptcp--dportftp-jMASQ/ipchainsN-Agood-bad-picmp--icmp-typeping-jMASQ/ipchainsN-Agood-bad-jREJECT-l 7.4.6#!\DaDMZaGoQod(in>terno).#RestrizioniU dellareteinterna:$@^/PermettereU WWW,ftp,traceroute,sshversol'esterno$@^/P>ermettereSMTPversoilMailserver$@^/P>ermetterePOP-3versoilMailserver$@^/P>ermettereDNSversoilNameserver$@^/P>ermetterersyncversoilW ebserver$@^/P>ermettereWWWversoilW ebserver$@^/PermettereU ilpingallamacchinaltroSe§sifailmasqueradingdallareteinternaversolaDMZ,semplicementesiriutiqualsiasipacchetto cheoprovienenell'altrosenso.lOvvero,ׂsipGermettanosoloipacchettichepGossonoesserepartediunaconnessioneU gistabilita.=/ipchainsN-Admz-good-ptcp!-y-s192.84.219.128smtp-jACCEPT =/ipchainsN-Admz-good-pudp-s192.84.219.129domain-jACCEPT/ipchainsN-Admz-good-ptcp!-y-s192.84.219.129domain-jACCEPT/ipchainsN-Admz-good-ptcp!-y-s192.84.218.130www-jACCEPT/ipchainsN-Admz-good-ptcp!-y-s192.84.218.130rsync-jACCEPT/ipchainsN-Admz-good-picmp-jicmp-acc/ipchainsN-Admz-good-jDENY-l)])_2 ~?G7.8UnesempiopiserioOd41ՁV7.4.7#!\DaDMZaBad(esterno).yRestrizioniU diDMZ:$@^/MailU server72A3SMTPv>ersol'esternob72A3A>ccettaSMTPdaU internoedesterno72A3AccettaU POP-3dall'interno$@^/NameU server72A3In>viaDNSversol'esterno72A3A>ccettaDNSdaU interno,esternoedallamacchinapGerilltraggiodeipacchetti$@^/W*ebU server72A3A>ccettaHTTPdaU internoeesterno72A3AccessoU rsyncdall'interno/ipchainsN-Admz-bad-ptcp-s192.84.219.128smtp-jACCEPT =/ipchainsN-Admz-bad-pudp-s192.84.219.129domain-jACCEPT/ipchainsN-Admz-bad-ptcp-s192.84.219.129domain-jACCEPT/ipchainsN-Admz-bad-ptcp!-y-s192.84.218.130www-jACCEPT/ipchainsN-Admz-bad-picmp-jicmp-acc/ipchainsN-Admz-bad-jDENY-l 7.4.8#!\DaBad(esterno)aGoQod(in>terno).yNonU sipGermetteniente(nonmascherato)dallareteesternaversoquellainterna+/ipchainsN-Abad-good-jREJECT7.4.9#!\Filtraggiodeipacc>hettipQerlamacchinaLinuxstessaSesivuoleusareilltraggiodeipacchettisuipacchettiiningressoallamacchinastessa,necessario fareU illtraggiosullacatenainput.qSicreiunacatenapGerogniinterfacciadidestinazione:+/ipchainsN-Nbad-if =/ipchainsN-Ndmz-if/ipchainsN-Ngood-ifCreareU deisaltiaqueste:/ipchainsN-Ainput-d192.84.219.1-jbad-if/ipchainsN-Ainput-d192.84.219.250-jdmz-if/ipchainsN-Ainput-d192.168.1.250-jgood-if In>terfacciadiBad(esterno).MacchinaU pGerilltraggiodeipacchetti:$@^/PINGv>ersoognirete$@^/TRA>CEROUTEversoognirete$@^/AccessoU DNSL'interfacciaesternariceverispGosteanchepGeripacchettimascherati,(ilmasqueradingusalepGorte sorgenteU dalla61000alla65095)oltreaerroriICMPpGerquestiearispostealPING.*h_2 ~?G7.8UnesempiopiserioOd42ՁV/ipchainsN-Abad-if-i!ppp0-jDENY-l =/ipchainsN-Abad-if-pTCP--dport61000:65095-jACCEPT/ipchainsN-Abad-if-pUDP--dport61000:65095-jACCEPT/ipchainsN-Abad-if-pICMP--icmp-typepong-jACCEPT/ipchainsN-Abad-if-jicmp-acc/ipchainsN-Abad-if-jDENY In>terfacciadiDMZ.ؼRestrizioniU dellamacchinapGerilltraggiodeipacchetti:$@^/PINGv>ersoognirete$@^/TRA>CEROUTEversoognirete$@^/AccessoU DNSL'interfacciaU DMZriceverispGosteDNS,rispostealpingederroriICMP*.=/ipchainsN-Admz-if-i!eth0-jDENY =/ipchainsN-Admz-if-pTCP!-y-s192.84.219.12953-jACCEPT/ipchainsN-Admz-if-pUDP-s192.84.219.12953-jACCEPT/ipchainsN-Admz-if-pICMP--icmp-typepong-jACCEPT/ipchainsN-Admz-if-jicmp-acc/ipchainsN-Admz-if-jDENY-l In>terfacciadiGoQod(interno).ؼRestrizioniU dellamacchinapGerilltraggiodeipacchetti:$@^/PINGv>ersoognirete$@^/TRA>CEROUTEversoognirete$@^/AccessoU DNSRestrizioniU dellareteinterna:$@^/PermettereU WWW,ftp,traceroute,sshversol'esterno$@^/P>ermettereSMTPversoilMailserver$@^/P>ermetterePOP-3versoilMailserver$@^/P>ermettereDNSversoilNameserver$@^/P>ermetterersyncversoilW ebserver$@^/P>ermettereWWWversoilW ebserver$@^/PermettereU ilpingallamacchinaltroL'interfacciaU internariceveping,rispGostealpingeerroriICMP*.=/ipchainsN-Agood-if-i!eth1-jDENY =/ipchainsN-Agood-if-pICMP--icmp-typeping-jACCEPT/ipchainsN-Agood-if-pICMP--icmp-typepong-jACCEPT/ipchainsN-Agood-if-jicmp-acc/ipchainsN-Agood-if-jDENY-l+r_2 ~?G8.8AppQendice: Dierenzetraipc>hainseipfwadmҘ<43ՁV7.5Pernire#CancellareU leregoledibloGccaggio:=/ipchainsN-Dinput1 =/ipchainsN-Dforward1/ipchainsN-Doutput1(8Apppendice: DierenzeG\traipcchainseipfwadm:AlcunediquestemoGdichesonoilrisultatodimodichenelkernel,ealtredipGendonodalfattocheipchains sembraU dierentedaipfwadm.ؼ 9b1.Molti(argomentisonostatirimappati:lemaiuscoleoraindicanouncomandoeleminuscoleindicanoun'opzione. 9b2.SonosuppGortatecatenearbitrarieequindianchelecatenepredeniteorahannounnomeinvecediessereU solamenteunopzione(eg.q`input'invecedi`-I'). 9b3.L'opzioneU `-k'nonc'pi:qsiusi``!-y'. 9b4.L'opzioney`-b'inserire/aggiunge/cancellaveramenteydueregole,Ppiuttostocheunasingolaregola`bidirezionale'. 9b5.L'opzioneU `-b'puesserepassataa`-C'pGerfareduevericheU (unainognidirezione). 9b6.L'opzioneU `-x'a`-l'statarimpiazzatada`-v'. 9b7.Non4sonopisuppGortateportediprovenienza4edestinazionemultiple.^Sperochel'essereingradodinegareU unintervqallodipGortevengainaiutoinquesticasi. 9b8.Le{interfaccepGossonoesserespecicatesolamenteattraversoilnome(nonl'indirizzo).qComunque,lavecchiaU semanticastatasilenzionamentecambiataneikerneldellaserie2.1. 9b9.IU frammentisonoesaminati,nonlasciatipassareautomaticamente.910.SonoU staterimosselecatenespGecicheperl'accounting.911.PossonoU esseretestatiprotoGcolliarbitrarisuIP*.912.IlvecchiocompGortamentedelSYNeACKmatching(cheinprecedenzaeraignoratopGeripacchettinonU TCP)cambiato;l'opzioneSYNnonvqalidapGerregolenonspecicheperilTCP*.913.IU contatorisonooraa64bitsumacchinea32bit,nonpia32bit.914.OraU sonosuppGortateleopzioniinverse.915.OraU sonosuppGortatiicodiciICMP*.916.SonoU suppGortatiicaratterijollynellaspecicadell'interfaccia.917.Oraihcontrollatal'integritdellemanipGolazioniTOS:ilvecchiocoGdicedelkernelsileziosamentebloGc-cavqalemanipGolazioni(illegali)delbitTOS`MustBeZero';ipchainsorarestituisceunerroresecisiprovqa,U comeanchepGerglialtricasiillegali.,{_2 ~?G8.8AppQendice: Dierenzetraipc>hainseipfwadmҘ<44ՁV8.1Tab_elladiriferimentorapidoM[U GliargomentideicomandisonoinMAIUSCOLO,mentregliargomentidelleopzioniinminuscolo]ؼUnaIcosadanotare,KilmasqueradingspGecicatoda`-jMASQ';completamentediversoda`-jACCEPT', eU nontrattatocomeunmeroeettocollaterale,diversamenteU daquantofaipfwadm.ؼ===================================================================|?ipfwadm~|ipchainsS|Note-------------------------------------------------------------------|?-A[both]|-NacctY:l|Creaunacatena`acct'|I{h|&?-I1input-jacct>\|efascheipacchetti|I{h|&?-I1output-jacct|iningressoeinuscita|I{h|&?acctc|latraversino.-------------------------------------------------------------------|?-Ain)`|inputc|Unaregolasenzatattica-------------------------------------------------------------------|?-Aout$|output^z|Unaregolasenzatattica-------------------------------------------------------------------|?-F9d|forwardY:l|Siusiquestocome[catena]-------------------------------------------------------------------|?-I9d|inputc|Siusiquestocome[catena]-------------------------------------------------------------------|?-O9d|output^z|Siusiquestocome[catena]-------------------------------------------------------------------|?-M-l)`|-M-Lc|-------------------------------------------------------------------|?-M-s)`|-M-Sc|-------------------------------------------------------------------|?-atattica|-A[catena]-jTATTICA X|(sivedaanche-re-m).-------------------------------------------------------------------|?-dtattica|-D[catena]-jTATTICA X|(sivedaanche-re-m).-------------------------------------------------------------------|?-itattica|-I1[catena]-jTATTICA|(sivedaanche-re-m).-------------------------------------------------------------------|?-l9d|-Lsx|-------------------------------------------------------------------|?-z9d|-Zsx|-------------------------------------------------------------------|?-f9d|-Fsx|-------------------------------------------------------------------|?-p9d|-Psx|-------------------------------------------------------------------|?-c9d|-Csx|-------------------------------------------------------------------|?-P9d|-psx|-------------------------------------------------------------------|?-S9d|-ssx|Accettasolounaportao|I{h|7|?intervallo.-------------------------------------------------------------------|?-D9d|-dsx|Accettasolounaportao-ؠ_2 ~?G9.8AppQendice: Usareloscriptipfw>adm-wrapper.45ՁV|I{h|7|?intervallo. -------------------------------------------------------------------|?-V9d|N|Siusi-i[nome].-------------------------------------------------------------------|?-W9d|-isx|-------------------------------------------------------------------|?-b9d|-bsx|Crea2regole.-------------------------------------------------------------------|?-e9d|-vsx|-------------------------------------------------------------------|?-k9d|!-yhp|Nonfunzionafinchnon|I{h|7|?sispecificaanche-ptcp.-------------------------------------------------------------------|?-m9d|-jMASQY:l|-------------------------------------------------------------------|?-n9d|-nsx|-------------------------------------------------------------------|?-o9d|-lsx|-------------------------------------------------------------------|?-r[redirpt]|-jREDIRECT[redirpt]|-------------------------------------------------------------------|?-t9d|-tsx|-------------------------------------------------------------------|?-v9d|-vsx|-------------------------------------------------------------------|?-x9d|-xsx|-------------------------------------------------------------------|?-y9d|-ysx|Nonfunzionafinchnon|I{h|7|?sispecificaanche-ptcp.-------------------------------------------------------------------#Í8.2EsempiditraduzionedicomandiipfwadmMV*ecchioU comando:qipfwadm-F-pdenyؼNuovoU comando:qipGchains-PforwardDENYV*ecchioU comando:qipfwadm-F-am-S192.168.0.0/24-D0.0.0.0/0NuovoU comando:qipGchains-Aforward-jMASQ-s192.168.0.0/24-d0.0.0.0/0V*ecchioU comando:qipfwadm-I-aaccept-V10.1.2.1-S10.0.0.0/8-D0.0.0.0/0NuovoU comando:qipGchains-Ainput-jACCEPT-ieth0-s10.0.0.0/8-d0.0.0.0/0(Si-¬ichequestinonsonoequivqalentispGecicandol'interfacciatramitel'indirizzo:!siusiilnomedi interfaccia.qInU questamacchina10.1.2.1corrispGondeaeth0).(9Apppendice: UsareG\loscriptipfwcadm-wrapper.:Loscriptshellipfwadm-wrapperdovrebbGeessereunplug-indirimpiazzodiipfwadmpercompatibilitall'indietroU conipfwadm2.3a.._2 ~?G10.8AppQendice: Ringraziamen>ti.&x46ՁVLasolacaratteristicachenonpGossoveramentegestirel'opzione`-V'.Quandousata,?mostratounavviso. Seusataanchel'opzione`-W',l'opzione`-V'Àignorata.Altrimenti,loscriptprovqaatrovqareilnomediinterfacciazassoGciatoconquell'indirizzo,usandoifconfig.ݏSefallisce(comenelcasodiun'interfaccianonattivqa)U allorauscirconunmessaggiod'errore.ؼQuestoRavvisopuesseresoppressoocambiandoil`-V'Rinun`-W',oppuredirezionandolostandardoutputdelloU scripta/dev/null.Se+sitrovqaunqualsiasierrorenelloscript,aounaqualsiasidierenzatrailveroipfwadmequestoscript,invitoؘa7 segnalarmiilbug:busiinviiun'emailarusty@linuxcare.comconBUG-REPOR*T Jnelsub0ject.gyPregosisegnalilaversionedelvecchioipfwadm(ipfwadm?-h),qlaversionediipchains(ipchains?version)e quelladelloscriptipfwadmwrappGerscript(ipfwadm-wrapper?version). Siinviianchel'outputdiipchains-save.qGrazieU inanticipGo.SeU simischiaipchainsconquestoscriptipfwadm-wrapperlosifaapropriorischioepGericolo.(10%Apppendice: Ringraziamencti.:MoltegrazieaMichaelNeuling,chehascrittolaprimacosarilasciabiledelcoGdiceIPchainsmentrelavoravqapGerme. Miscusopubblicamenteperaverrespintolasuaideadelresult-caching,cheAlanCoxpropGoseunpGo'U dopoenalmentemisonodecisoaimplementare,rendendomicontodell'errorecheavevocommesso.GrazieU adAlanCoxpGerilsuosupportotecnicoviaemail24oresu24eilsuoincoraggiamento.GrazielatuttigliautoridelcoGdiceipfweipfwadm,^specialmentelaJosV*os.Comenanisullespalledeigiganti...qCiU vqaleanchepGerLinusT*orvqaldsoltrecheatuttiglihackerdelkerneledellouserspace.Un(ringraziamentoaidiligentibGetatesterebughunter(cacciatoridibug),'spGecialmenteaJordanMendelson,ShawmSCarruthers,`KevinMoule,Dr.LiviuDaia,HelmutAdams,`F*ranckSicard,`KevinLittlejohn,MattKemner,KJohnaD.Hardin,AlexeyKuznetsov,LeosBitto,JimKunzman,GerardGerritsen,SergeSivkov,AndrewBurgess,?SteveSchmidtke,?RichardOer,?BernhardW*eisshuhn,?LarryAuton,AmbroseLi,PavelKrauz,U SteveChadsey*,FrancescoPotorteAlainKna.IlU tradottorevuoleringraziareAlviseBellottipGerlasueindispensabilicorrezionieisuoisuggerimenti.#Í10.1%}TraduzioniMQuellichehannofattoletraduzionidovrebbGeromettersiincima7allapaginadeiringraziamenti,inquestomoGdo:}grazie[:aXXX[9peraver[:tradottoesattamenteiltuttodalmioinglese*.PoidovrebbGerofarmisaperedellaU lorotraduzionecosicchiopGossaincluderliqui.ArnaudU Launay*,asl@launay*.org:http://www.fr}/eenix.fr/unix/linux/HOWTO/IPCHAINS-HOWTO.htmlhttp://www.freenix.fr/unix/linux/HOWTO/IPCHAINS-HOWTO.htmlGiovqanniq>Bortolozzo,8EbGorto@pluto.linux.it:http://www.pluto.linux.it/ildp/HOWTO/IPCHAINS-HOWTO.html;_2G.qL ectt0900HЃ ecti1000!N ecbx1200]f ecbx1000&Lt$ffffecbx14408 ecsi10006 ecss1000Iqqecss2074qL ectt1000 1 ecrm1000 !", cmsy10 b> cmmi10_