; TeX output 2003.11.26:1337_2 ~?ՁZ2Iqqecss2074VPNfHOwmWTO cG 1 ecrm1000MatthewU D.Wilson,HЃ ecti1000matthew@shinythings.c}/omqL ectt1000mailto:matthew@shinythings.com$Av1.0,Dec1999&J6 ecss1000QuestoHOWTO)descrivecomecongurareunaVirtualPrivateNetworkconLinux.ET*raduzione:0MicheleTognon8 ecsi1000michele.tognon@tin.itU mailto:michele.tognon@tin.it(&Lt$ffffecbx1440Conctents]f ecbx10001In>troQduzione3ؼ1.1%PerchU hoscrittoquestoHOWTOF.荍................................w31.2%AcknowledgementsU eRingraziamentiN'.荍...............................w31.3%F*ormatoU diquestodoGcumento /.荍..................................w31.4%CopyrightU andDisclaimer.荍.....................................w41.5%StoriaU delDoGcumentoߍ.荍.......................................w41.6%DoGcumentiU correlati.荍........................................w42T eoriao742.1%CheU cos'unaVPN?ċ.荍........................................w4%2.1.1EMaU indenitivqa,checos'unaVPN?+ō.荍..........................w4%2.1.2EQuindi,U comelavora?S卍.荍...................................w52.2%SSHU ePPP4Ӎ.荍.............................................w62.3%SistemiU VPNalternativiL/.荍......................................w6%2.3.1EPPTP|U.荍............................................w6%2.3.2EIPU Sec .荍...........................................w6%2.3.3ECIPE鍍.荍............................................w63Serv>ery63.1%SicurezzaU -tenerefuoriglialtrii.荍..................................w6%3.1.1EControllaU ituoidaemons%.荍.................................w7%3.1.2ENonU pGermetterepasswordsb.荍................................w73.2%AccessoU degliutenti-farentrarelagented#.荍............................w7%3.2.1ECongurazioneU disshdm.荍..................................w73.3%RestrizioneU degliutenti/.荍......................................w8%3.3.1EsudoU siono 繍.荍........................................w83.4%NetworkingQC.荍.............................................w8%3.4.1EIlU Kernel Ս.荍..........................................w8%3.4.2ERegoleU diltraggio hэ.荍....................................w9%3.4.3ERoutingõ.荍...........................................x?10*_2 ~?GCONTENTS2ՁV4Clien>t10ؼ4.1%IlU Kernel3.荍..............................................x?104.2%CreareU ilcollegamentov.荍.......................................x?104.3%scripting C.荍..............................................x?114.4%LRPU -LinuxRouterPro0ject.荍...................................x?145Implemen>tazioneeG145.1%Pianicazione C.荍...........................................x?145.2%RaccogliereU glistrumentiۍ.荍.....................................x?14%5.2.1EPerU ilServer:.荍........................................x?15%5.2.2EPerU ilClient:1.荍........................................x?155.3%Server:qcompilareU ilkernel >'.荍....................................x?155.4%Server:qCongurareU larete{.荍....................................x?15%5.4.1ECongurareU leinterfacciedirete.荍.............................x?16%5.4.2EImpGostaU ipercorsi(routes)F.荍................................x?16%5.4.3ERealizzareU leregolediltraggio.qMakinglterrules|I.荍..................x?16%5.4.4ERoutingõ.荍...........................................x?175.5%Server:qCongurareU pppd_.荍.....................................x?17%5.5.1E/etc/ppp/5Ս.荍.........................................x?17%5.5.2E/etc/ppp/options Z.荍....................................x?17%5.5.3EEvitareU conittiv.荍......................................x?185.6%Server:qCongurareU sshd_.荍.....................................x?185.7%Server:qcongurareU gliaccountutentex獍.荍..............................x?19%5.7.1EAggiungereU ilgruppGovpn-users=.荍.............................x?19%5.7.2ECreareU lahomedirectorydivpn-usersd.荍.........................x?19%5.7.3ELaU directory.sshoՍ.荍.....................................x?19%5.7.4EAggiungereU utenti6.荍.....................................x?195.8%Server:qAmministrazioneK.荍.....................................x?205.9%Client:qcompilareU ilkernel.Z.荍....................................x?215.10%Client:qCongurareU larete o.荍....................................x?21%5.10.1EInterfacciaM.荍.........................................x?21%5.10.2ERegoleU diltraggio hэ.荍....................................x?22%5.10.3ERoutingõ.荍...........................................x?225.11%Client:qCongurareU pppdvߍ.荍.....................................x?225.12%Client:qCongurareU ssh.荍......................................x?225.13%Client:qAttivqareU laconnessioneTK.荍..................................x?235.14%Client:qCongurareU gliinstradamenti.㛍.荍..............................x?23-֠_2 ~?G1.8In>troQduzione~3ՁV5.15%Client:qScripting3.荍..........................................x?23ؼ%5.15.1EMantienilaU attivqa L.荍.....................................x?246A>ddenda{246.1%T*rabGocchettiK.荍............................................x?24%6.1.1Eread:qI/OU error .荍......................................x?24%6.1.2ESIOCADDR*T:U Networkisunreachable }.荍.........................x?24%6.1.3EIPv4U F*orwardingeikernel2.2*.荍..............................x?24%6.1.4ERoutingõ.荍...........................................x?256.2%RichiesteU HardwareeSoftwareM.荍..................................x?25%6.2.1ERichiesteU HardwareMinime .荍...............................x?25%6.2.2ERichiesteU SoftwareZ.荍.....................................x?25(1Inctropduzione荍!N ecbx12001.1PerchhoscrittoquestoHOWTOMLavoroallaRealNetworksenoiabbiamobisognodiunservizioVPN.Questoerailmioprimoveroprogetto, eYhoimparatomoltodipiLinuxconquestolavorochenonconqualsiasialtro.P>Sono,Mquindi,nitoYadusarelamiaespGerienzaperscriverequestodocumento, ipercondividereconaltriquellocheioavevoimparatocos쎡cheU pGossanofarecosemoltointeressanticonLinux!#Í1.2AcknowledgementseRingraziamentiV*oglioinizialmenteringraziaremiamoglieJulie,Q4senzadileinonsareiquioggi.}VoglioancheringraziareArpad=Magosanyi,ul'autoredelprimoVPN=mini-howtoepty-redir,ul'utilitadelqualetuttocistatopGossibile.Jerry*,kRoGd,Glen,MarkV.,MarkW.,andDavid,Y*ouguysroGck!OuGrazieatuttiperl'aiuto.Ou(ndT:io,kinvece,voglioU ringraziarechimiaiuteracorreggerequestodoGcumentoe,naturalmente,lamiaRaaella.)#Í1.3Formatodiquestodo_cumentoQuestoU doGcumentodivisoin5sezioni.ؼSezione1: In>troQduzioneQuestaU sezioneSezione2: T eoriaT*eoriabasediunaVPN.Checos'unaVPNecomelavora.ILeggiquestasezioneseseicompletamente nuovoU alleVPN.Sezione3: Serv>erQuestaU sezionedescrivecomesiconguraunserverVPN.Sezione4: Clien>tQuestaU sezionedescrivecomevieneconguratounclientVPN.h_2 ~?G2.8T eoriaK˹4ՁVSezione5: Implemen>tazioneUnaU implementazionepasso-passodiunacongurazioneVPNdiprovqa.Sezione6: A>ddendaAltreU informazionichepGotrebberoU essereutili.#Í1.4CopyrightandDisclaimerMCopyright1(c)byMatthewWilson.e~ThisdoGcumentmaybGedistributedonlysub0jecttothetermsandcondi- tionsysetforthintheLDPyLicenseathttp://www.linuxdo}/c.org/COPYRIGHT.htmlyhttp://www.linuxdoc.org/COPYRIGHT.html8H,qexceptthatthisdoGcumentmustnotbGedistributedinmodiedformwithouttheauthor'sU consent.ؼTheauthorassumesnorespGonsibilityforanythingdonewiththisdoGcument,rnordoGeshemakeanywarranty*,impliednorexplicit.MjIfyoubreakit,it'snotmyfault.MjRemembGer,whatyoudoherecouldmakeverylargeholesU inthesecuritymoGdelofyournetwork.qY*ou'vebGeenwarned.1.5StoriadelDo_cumentoMIlhecos'unaVPN?Bene,=ci7sonomolterispGosteperquestadomanda.gDipendedallastrutturadellatuarete.gLacongurazionepicomunequelladiavereunasingolareteinterna,DconinoGdiremoticheusanolaVPNگpGerpoteraccederepienamenteLnallareteinternacentrale.EIL+noGdiremotisonocomunementeucipGerifericioimpegatichelavoranoaU casa.qT*upuoianchecollegareduepiccole(oppuregrandi!)retipGerrealizzareunaretepigrande.i_2 ~?G2.8T eoriaK˹5ՁV2.1.2#!\Quindi,comela>vora?MDettosemplicemente,ypGerfareunaVPN,devicreareunsecuretunneltradueretieinstradaregliindirizziIP attraversodiesso.8SetiseigipGersoconquestadescrizione,cdovrestileggereTheJLinuxNetworkingOverviewHOWTO http://www.linuxdoc.org/HOWTO/Networking-Overview-HOWTO.html )pGercapireilnetworkingconU Linux.ؼViU pregodisoppGortarmi,lamiaarteASIIpotrebbecostringerviaduncertolavoroU dicomprensione.ؼ\4|\Y:l--------$/4|/~--------Remote?______|Client|______\Internet\_____|Server|______PrivateNetwork~|?Router|/4|/>\|Router|$NetworkY:l--------$\4|\~--------/4|/7Client?RouterN----------------------------------------------------I{h|/->10.0.0.0/255.0.0.0\hp| XRemote~||-->172.16.0.0/255.240.0.0|-->?Tunnel>---\| XNetwork?>---|--|-->192.168.0.0/255.255.0.0/Y:l|--|---->Internet?192.168.12.0| X|p||I{h|\----->?0.0.0.0/0.0.0.0-->IPMasquerade>--/|N----------------------------------------------------} Server?RouterD;---------------------------------------------------->|c/->10.0.0.0/255.0.0.0\|>|/-->?Tunnel>--|--> X172.16.0.0/255.240.0.0|--|---->PrivateInternet?>--|--|S\-->192.168.0.0/255.255.0.0/|~Network>| X|/|>\172.16.0.0/12>|\----->?0.0.0.0/0.0.0.0----->/dev/null/= |192.168.0.0/16D;----------------------------------------------------IldiagrammasopraripGortatofavederecomelaretedovrebbGeesserecongurata.u'Senonsaichecos'l'IPMasquerade,U probabilmentenondovrestiesserequi.qV*aialeggereؼTheLinuxNetworkingOverviewHOWTOZ4/HOWTO/Networking-Overview-HOWTO.htmlZsetornaquandoavraiunaU ideadicosasitratta.IlAClientRouteruncomputerconLinuxinstallatochefungedagateway/rewallpGerlareteremota.UComepuoivedere,"lareteremotausalanumerazioneIP{pGerunaretelocale192.168.12.0._Perrenderesemplicelo`schema,homessoleinformazionisulroutingloGcaleneirouters(clienteServer).@L'ideadibasediinstradareZniltracodiretepGertutteleretiprivqate(10.0.0.0,[172.16.0.0,eZn192.168.0.0)attraversoZniltunnel.LaNcongurazioneindicataquiunmoGdo. Cio,mentreNlareteremotapuvederelareteprivqata,lareteprivqatanondevenecessariamentevederelareteremota._bPerfarinmoGdochequestoaccada,)devispGecicarecheU gliinstradamentideltracodiretesianobidirezionali.Dalloschemadovresteanchenotarechetuttoiltracocheescedalclientroutersembraproveniredalclientrouterstesso, scioG,tuttodaunostessoindirizzoIP*.Potresteinstadareindirizzirealidall'internodellavostrareteU macicompGorterebbeU portarsidietrotuttiiproblemidisicurezza._2 ~?G3.8Serv>er 6ՁV2.2SSHePPPMIlٓsistemadicuistdescrivendol'implementazionedellaVPNqusaSSHePPP*.UsosshpGercrearelacon- nessionetunnel,epGoiusopppdperfartransitareiltracoTCP/IPattraversoesso.WQuestocichefailtunnel.ؼIl_verosegretopGerottenerechesshepppGdlavorinobGenel'utilityscrittadaArpadMagosanyichepGermettelaY&re-direzionedell'I/OXstandardinunapseudotty*.}CipGermetteapppddicomunicareattraversosshcomeesefosseuncollegamentoseriale.APDallatoserver,pppGdlanciatoalivelloutenteinunasessionessh,egFconquestosicompletailgircompletandoilcollegamento.DopGodiquesto,tuttocichedovetefare莡l'instradamento.#Í2.3SistemiVPNalternativiNaturalmenteU cisonoaltrimoGdipercongurareunaVPN,quinepresenterunpaio. 2.3.1#!\PPTPPPTPCBCGlarispGostaMicrosoftperlaVPN.E'CBsupportatodaLinux,FmaconosciutoperavereCGseriproblemidisicurezza(NdT:tantopGercambiare;-)).]Nondescrivercomeusarlodalmomentochel'argomentovienecopGertoJdaLinuxFVPNDMasquer}/adeHOWTOJhttp://www.linuxdoc.org/HOWTO/VPN-Masquerade-HOWTO.htmlU . 2.3.2#!\IPSecIP Sec +unsetdiprotoGcollialternativiaSSH.Attualmente +nonconoscotantodipiariguardo,;.cossequalcunoGvolesseaiutarmiconunalorodescrizionesarebbGebeneaccolta.H8Ancheconquestinonmicimenter򎡍aU descriverneillorousopGoichl'argomentocopGertodaؼLinuxVPNMasquer}/adeHOWTOU http://www.linuxdoc.org/HOWTO/VPN-Masquerade-HOWTO.html. 2.3.3#!\CIPECIPEbSbVunsistemadicrittazionedellaretealivellokernelchepiadattoalleesigenzedicongurazionialivelloU enterprise.qPuoitrovqareulterioriinformazioniaؼhomep}/agejdelCIPE[http://sites.inka.de/sites/bigred/devel/cipe.html[.oHopianicatodiesaminarepiU afondolaquestioneilprimapGossibile,cosavrnotiziepiapprofonditefraqualchetempGo.(3Servcer:Questa2>sezionedescrivecomecongurarelecosedallatoserver,ipropGongoprimaquestopoichsenzaunserver,U ilclientpraticamenteinutile.#Í3.1Sicurezza-tenerefuoriglialtriLa vsicurezzamoltoimpGortanteperunaVPN.Questoperch,vinprimoluogo,larespGonsabilitdellacostruzioneU dellaVPNtua,giusto?qBisognatenereamentealcunecosementresicongurailserver._2 ~?G3.8Serv>er 7ՁV3.1.1#!\Con>trollaituoidaemonsMDalmomentochequestoserverpassadatidaentrambiilatidelrewall,ǵnoaltracointernodellarete, ITunabuonaideadirenderesicuralaVPNIbGoxilmegliochesiapGossibile.NPuoileggeremoltopisullasicurezza\diLinuxinLinuxxSe}/curityHOWTO\}/HOWTO/Security-HOWTO.html\pGerimieiscopihoeliminatotutti`gidemonichegiranoinbackgroundeccettosshdeRoxenW*eb.TUsoilserverwebpGerscaricareunpaiodile(imieiscripts, ecc)quandohol'oGccasionediconguraredellenuovemacchinecheaccedonoallaVPN.NonusounserverFTPzdalmomentochepidicilecongurarlocherendereaccessibiliunpaiodiletramiteqserverweb.VrInpi,soloiodevoessereingradodiscaricareiles.VrSesivuolerealmentefargiraremoltepliciUserversulgateway*,JsidovrebbGepensareadunaccessoristrettoallesolemacchinesullareteprivqata. O3.1.2#!\NonpQermetterepassw>ordsCon$questotitolohoavutolatuaattnezione,-fvero?xNo,non$sidevonousarepasswords,-fbisognadisabili-tarlelcompletamente._eT*uttal'autenticazionesuquestamacchinadeveesserefattaattraversounsistemadiautenticazioneMachiavepubblicatipGossh.ZInquestomodo,solochipossiedelachiaveMpuentrare,ed莡praticamenteU impGossibilericordarsiunachiavebinarialunga530caratteri.ؼCosecosasidevefare?}OBisognaeditareille/etc/passwd.IlsecondocampGocontienelastringadellapassword,Bonalternativqamente'x'signicandocheilsistemadiautenticazionelosiputrovqarenelle/etc/shadow. 8QuellochedevifarecambiareilcampGodaleggerecon'*'. 8QuestodicealsistemadiautenticazioneU chenoncisonopassword,echenonsonorichieste.QuiU sipuvedereuntipicoesempiodile/etc/passwd:̍...nobody:x:65534:100:nobody:/dev/null:mwilson:x:1000:100:Matthew?Wilson,,,:/home/mwilson:/bin/bashjoe:*:504:101:Joe?Mode(home),,,:/home/vpn-users:/usr/sbin/pppdbill:*:504:101:Bill?Smith(home),,,:/home/vpn-users:/usr/sbin/pppdfrank:*:504:101:Frank?Jones(home),,,:/home/vpn-users:/usr/sbin/pppd...NotachehofattomoltodipicheeditareilsecondocampGo.Dirdipiariguardodeglialtricampiinseguito.# 3.2Accessodegliutenti-farentrarelagenteML'accesso)degliutentieseguitotramiteunoschemadiautenticazionessh.MComedettosopra,questocomegliutentiaccedonoalsistema,mantenendo,nelcontempGo,unaltolivellodisicurezza.TSenonhaifamiliaritconU ssh,controllahttp://www.ssh.or}/g/http://www.ssh.org/ؼNotaBUcheiohousatosshversione1,Fnonlaversione2.ker 8ՁVIgnoreRhosts?yes StrictModes?yesQuietMode?noCheckMail?noIdleTimeout?3dX11Forwarding?noPrintMotd?noKeepAlive?yesRhostsAuthentication?noRhostsRSAAuthentication?noRSAAuthentication?yesPasswordAuthentication?noPermitEmptyPasswords?noUseLogin?no"I3.3RestrizionedegliutentiMOrachepuoitenerei"cattivi"fuori,/efaraccederesoloi"buoni",deviassicurartichei"buoni"sivedanotra8loro.hQuestalacosapifacileinassolutopGoichnondevifarenull'altrooltrealanciarepppGd.hQuestopuHesserenecessarioomeno.%Horistrettol'accessodegliutentipGerchilsistemachemantengodedicatoallaU VPN,gliutentinonhannonessunaattivitdafaresudiesso. ߍ3.3.1#!\sudosionoEsiste̮unpiccoloprogrammachiamatosudochepGermetteall'amministratorediunsistemaUnixdigarantireacertiutentilapGossibilitdilanciarecertiprogrammicomeroot.#%QuestonecessarionelcasochepppddebbagirarecomeroGot.Siavrbisognodiusarequestometodosesivuolepermetterel'accessodellashellaglilgutenti.VLeggicomecongurareeusaresudonellepaginemanrelativeasudostesso.VL'usodisudolamigliorU cosadafaresusistemi"multi-uso"chemantengonounpiccolonumerodiutenticerticatiesicuri.ؼSe4sidecidedinonpGermettereanessunodiaccedereallashell,)0allorailmodomiglioretenerlifuoridifarinRmoGdochelaloroschellsiapppGd.pxCipuesserefattonelle/etc/passwd.Puoivederequi3.1.2(sopra)quello1chehofattopGergliultimitreutenti.L'ultimocampGodelle/etc/passwdlashellutente.NonhaimbisognodifarenulladispGecialeapppdperfarinmodochefunzioni.V*erreseguitocomerootquandol'utente?siconnette.K5QuestacertamentelapisemplicecongurazionechesipGossafare,9eanchelamiglioree&pisicura.aHodescrittoesattamentetuttoquellochedeveesserefattopiavqantineldoGcumento.aPuoi5.7(andareU avqanti)setipare."I3.4NetworkingOraj3chegliutentihannoaccessoalsistema,wdobbiamoesseresicuricheabbianoancheaccessoallarete.F*acciamoquestousandoleimpGostazionidirewallingdelkerneldiLinuxelatabGelledirouting.PUsandoiOcomandirouteeipfwadm,{pGotremocongurareilkernelperinstradareiltracodiretenelmodopiappropiato.qPerU ulterioriinformazionisuipfwadm,ipchainseroutevediؼLinuxNetworkingHOWTOU http://www.linuxdoc.org/HOWTO/Linux-Networking-HOWTO.html. ߍ3.4.1#!\IlKernelInmoGdochetuttocifunzioni,޸sideveavereilkernelconguratocorrettamente.@*Senonsisacomecompilareilcpropriokernel,g,allorapuessereunautileletturailKernelHOWTOchttp://www.linuxdoc.org/HOWTO/ _2 ~?G3.8Serv>er 9ՁVKernel-HOWTO.html.*MHaibisognodiesseresicurocheleseguentiopzionidelkernelsianoattivqateinaggiunta aU quellebasilarisullarete.qUsounkernel2.0.38nelmiosistema.ؼPerU ikernel2.0:CONFIG_FIREWALLKCONFIG_IP_FORWARDCONFIG_IP_FIREWALLCONFIG_IP_ROUTERCONFIG_IP_MASQUERADEU (optional)CONFIG_IP_MASQUERADE_ICMPU (optional)CONFIG_PPPPerU ikernel2.2:CONFIG_FIREWALLCONFIG_IP_ADVANCED_ROUTERCONFIG_IP_FIREWALLCONFIG_IP_ROUTERCONFIG_IP_MASQUERADEU (optional)CONFIG_IP_MASQUERADE_ICMPU (optional)CONFIG_PPP =3.4.2#!\RegolediltraggioMPrimo,HscriveremoEdelleregolediltraggiopGerilrewallchepGermetterannoainostriutentidiaccederealla nostraSreteinterna,{mentreSrestringeremol'accessoarichiestechearrivqanodainternet.k(Sequestosuonastrano,pGensalox7inquestomodo:lorohannogil'accessoadinternet,cosperchusareiltunneldellaVPNpGerU accedereallarete?qE'unosprecodibandaetempomacchina.ؼLep^regolediltraggiocheuseremodipGendonodaqualiretiinterneusiamo.:Mafondamentalmentediciamo:"PermetterehcheiltracoprovenientedallaVPN,edestinatoallenostreretiinterne,ciarrivi".>Allora,comedobbiamofarlo?Z%Comesempre, dipGende.Sepresenteunkernel2.0, siusailtoGolchiamatoipfwadm, sed'altraU partestaiusandounkernel2.2,usal'utilitychiamataipchains.PerU congurareleregoleconipfwadm,lancialoconleopzionisimilealleseguenti:b퍺#?/sbin/ipfwadm-F-f#?/sbin/ipfwadm-F-pdeny#?/sbin/ipfwadm-F-aaccept-S192.168.13.0/24-D172.16.0.0/12PerU congurareleregoleconipchains,lancialoconleopzionisimilialleseguenti:#?/sbin/ipchains-Fforward#?/sbin/ipchains-PforwardDENY#?/sbin/ipchains-Aforward-jACCEPT-s192.168.13.0/24-d172.16.0.0/12PerU quellicheusanoilkernel2.2,pregoleggete6.1.3(questo). _2 ~?G4.8Clien>t_10ՁV3.4.3#!\RoutingMCos,:ora4_inostriutentihannoilpGermessodiaccedereallenostrereti,oraabbiamobisognodidirealkernel dove,[spGedireipacchetti.cSulmiosistema,4hodueschedeethernet,4unapGerlareteesterna,mentrel'altra莡lareteinterna.mQuastoaiutaatenerelecosesicure,pGoichiltracopGerl'esternomascheratodalnostrogateway*,;equalsiasitracoentranteltratoeinstradatodalrouterCisco.'PerlamigliorcongurazionepGossibile,U ilroutingdovrebbeesseresemplice.ؼQuellolchefacciamoinstradaretuttoiltracodestinatopGerlenostreretiprivqateattraversol'interfacciainterna,etuttoilrestoattraversol'interfacciaesterna.uIcomandispGecicidiinstradamentodipGendonodaqualereteinternastaiusando.x*SottopresentatounesempiodicomedovrebbGeesserefatto.x*Questelineesono,Gcnaturalmente,inCaggiuntaagliinstradamentibasepGerletueretilocali.kDubito,Gccomunque,cheCuseraituttiU e3igruppidinumeriinterni.ؼAssumendo?che172.16.254.254siailtuogatewayinterno:#?/sbin/routeadd-net10.0.0.0netmask255.0.0.0gw172.16.254.254deveth1#?/sbin/routeadd-net172.16.0.0netmask255.240.0.0gw172.16.254.254dev?eth1#?/sbin/routeadd-net192.168.0.0netmask255.255.0.0gw172.16.254.254dev?eth1Unanotaaddizionalesull'instradamento.SestaiusandoduemoGdiperl'instradamento, [adesempiounuciomremoto,alloraavraibisognodifareunacosaulteriore.MAvraibisognodicongurarelatabGellediinstradamentoݙsulservercheritornasulclient. IlmoGdopifaciledifarcidilanciareunjobcronogniminutochesilenziosamentesettaall'indietrol'instradamento.3Nonunabuonaideaseilclientnon莡connesso,U routesparerfuoriunerrore(cheticonverrspGedirea/dev/null.)(4Clienct:Ora:esamineremoillatoclient."4Inpratica,tquandousatapGerpermetterel'accessoadunareteremota,questalinuxbGoxpufacilmenteservirecomeunserverSamba(networkingconWindows),ʏserverDHCP*,eanchecomeserverwebinterno.M!LacosaimpGortantedaricordarechequestalinuxbGoxdeveesserepisicurapGossibile,U poichservetuttalareteremota.#Í4.1IlKernelMPer7primacosa,tudeviavereilpppcompilatoneltuokernel.vSesivuolepGermettereamoltemacchinediusare#iltunnel,allorasihabisognodiunserviziodirewalledifowarding.W,SeilclientsiindirizzaversounasolaU macchina,pppsuciente.4.2CreareilcollegamentoMIlcollegamentocreatolanciandopppdattraversounpseudoterminalecreatodapty-redireconnessoassh.qQuestoU fattoconunasequenzadicomandisimileaquesta:ؼ#?/usr/sbin/pty-redir/usr/bin/ssh-t-enone-o'Batchmodeyes'-c _2 ~?G4.8Clien>t_11ՁVblowfish?-i/root/.ssh/identity.vpn-ljoe>/tmp/vpn-device #?sleep10#?/usr/sbin/pppd`cat/tmp/vpn-device`#?sleep15#?/sbin/routeadd-net172.16.0.0gwvpn-internal.mycompany.comnetmask255.240.0.0#?/sbin/routeadd-net192.168.0.0gwvpn-internal.mycompany.comnetmask255.255.0.0]Semplicemente,uquelloKchefafargiraressh,uredirezionareilsuoimputel'outputsupppGd.1L'opzionepassataa!sshlocongurapGergiraresenzacaratteriescape(-e),T usandoilblowshcryptoalgorithm(-c),usandola.*spGecicazionedell'identitdelle(-i),dminterminalmode(-t),dmeconleopzioni'Batchmodeyes'(-o).IcomandimrdisleepsonousatipGerestenderel'esecuzionedeicomandicoscheogniprocessopossacompletareilU suosetupprimacheilsuccessivoparta.#4.3scriptingMNaturalmentenonvuoidoverdigitareicomandisopraripGortatiognivoltachevuoicheiltunnelsiat-tivi.Hoscrittounsetdiscriptbashchetengonoiltunnelattivoefunzionante.Puoiscaricareilpackqagedaquihttp://www.shinythings.com/vpnd/vpnd.tar.gz.Devisolamentescaricarloedecomprimerloin/usr/loGcal/vpn.qAll'internoU troveraitreles:vpnd:qScriptU checontrollalaconnessionedeltunnel.|܍check-vpnd:qUnoU scriptdafargiraretramitecronchecontrollachevpndsiaattivo.pty-redir:qunU piccoloeseguibilerichiestopGerinizializzareiltunnel..AvraibisognodieditareloscriptvpndpGersettarecosecomel'usernamedeiclienteilnomedeiserver.OAvrai ancheBbisognodimoGdicarelasezionestarttunneldelloscriptperspecicarequaleretestaiusando.@Sottoc' unacopiadelloscript.;NoteraichepGotrestimettereloscriptinunadirectorydierente,ChaisolamentebisognoU dicambiarelavqariabileVPN_DIR.#!?/bin/bash##?vpnd:Monitorthetunnel,bringitupanddownasnecessary#USERNAME=vpn-usernameIDENTITY=/root/.ssh/identity.vpnVPN_DIR=/usr/local/vpnLOCK_DIR=/var/runVPN_EXTERNAL=vpn.mycompany.comVPN_INTERNAL=vpn-internal.mycompany.comPTY_REDIR=${VPN_DIR}/pty-redirSSH=${VPN_DIR}/${VPN_EXTERNAL}PPPD=/usr/sbin/pppd -_2 ~?G4.8Clien>t_12ՁVROUTE=/sbin/route CRYPTO=blowfishPPP_OPTIONS="noipdefault?ipcp-accept-localipcp-accept-remotelocalnoauthnocrtscts?locknodefaultroute"ORIG_SSH=/usr/bin/sshstarttunnel?(){$PTY_REDIR?$SSH-t-enone-o'Batchmodeyes'-c$CRYPTO-i$IDENTITY-l$USERNAME?>/tmp/vpn-devicesleep?15$PPPD?`cat/tmp/vpn-device`$PPP_OPTIONSsleep?15#?Addroutes(modifytheselinesasnecessary)/sbin/route?add-net10.0.0.0gw$VPN_INTERNALnetmask255.0.0.0/sbin/route?add-net172.16.0.0gw$VPN_INTERNALnetmask255.240.0.0/sbin/route?add-net192.168.0.0gw$VPN_INTERNALnetmask255.255.0.0}stoptunnel?(){kill?`psax|grep$SSH|grep-vgrep|awk'{print$1}'`}resettunnel?(){echo?"resetingtunnel."date?>>${VPN_DIR}/restart.logeval?stoptunnelsleep?5eval?starttunnel}checktunnel?(){ping?-c4$VPN_EXTERNAL2>/dev/null1>/dev/nullif?[$?-eq0];then~ping?-c4$VPN_INTERNAL2>/dev/null1>/dev/null~if?[$?-ne0];then/= eval?resettunnel~fifi}settraps?(){trap?"evalstoptunnel;exit0"INTTERMtrap?"evalresettunnel"HUPtrap?"evalchecktunnel"USR1} K_2 ~?G4.8Clien>t_13ՁVrunchecks?(){ if?[-f${LOCK_DIR}/tunnel.pid];then~OLD_PID=`cat?${LOCK_DIR}/vpnd.pid`~if?[-d/proc/${OLD_PID}];then/= echo?"vpndisalreadyrunningonprocess${OLD_PID}."/= exit?1~else/= echo?"removingstalepidfile."/= rm?-rf${LOCK_DIR}/vpnd.pid/= echo?$$>${LOCK_DIR}/vpnd.pid/= echo?"checkingtunnelstate."/= eval?checktunnel~fielse~echo?$$>${LOCK_DIR}/vpnd.pid~eval?starttunnelfi}case?$1incheck) Xif?[-d/proc/`cat${LOCK_DIR}/vpnd.pid`];thenNkill?-USR1`cat${LOCK_DIR}/vpnd.pid`Nexit?0>elseNecho?"vpndisnotrunning."Nexit?1>fi?;;reset) Xif?[-d/proc/`cat${LOCK_DIR}/vpnd.pid`];thenNkill?-HUP`cat${LOCK_DIR}/vpnd.pid`Nexit?0>elseNecho?"vpndisnotrunning."Nexit?1>fi?;;--help?|-h)>echo?"Usage:vpnd[check|reset]">echo?"Options:">echo?">\checkSendsrunningvpndaUSR1signal,tellingitto?check">echo?"I{hthetunnelstate,andrestartifneccesary.">echo?">\resetSendsrunningvpndaHUPsignal,tellingittoreset">echo?"I{hit'stunnelconnection.";;esacln?-sf$ORIG_SSH$SSHsettrapsrunchecks _2 ~?G5.8Implemen>tazioneddϹ14ՁV while?true;doi=0while?[$i-lt600];do~i=((i+1))~sleep?1doneeval?checktunneldone#Í4.4LRP-LinuxRouterProjectMIoattualmentefacciogirarequestacongurazionesuunPentium90conunadistribuzioneLRPdiLinux. hLRP*unadistribuzionediLinuxchestinunsolooppydisk. hPuoisapGernedipiahttp://www.linuxr}/outer.org/Zhttp://www.linuxrouter.org/.&-PuoiscaricareilmiopackqageLRPpGerilclientVPNdaquihttp://www.shinythings.com/vpnd/vpnd.lrp.AvraibisognopuredeipacchettipppcheU sshchepuoitrovqarenelsitodiLRP*.(5Implemenctazione:InbquestasezionespiegherpassopassocomesettareunsistemaVPN.Inizierconilserver,OepGoimimuovernsulclient.5kPernunaspiegazionemigliorefarunesempiodovenhoinventatonunasituazionechedovrebbGeU richiedereunpaiodimoGdidierentidicongurareunaVPN.5.1PianicazioneMImmaginate_diavere_unasoGcietchiamatamycompany*.com.Alnostroquartiergenerale,busiamoilnetwork192.168.0.0,IdividendolaclasseBin256classiCdinetworkchepGermettonoilrouting.N'Abbiamodacongu-raresolamenteduepiccoliuciremoti,Kevogliamoaggiungerliallanostrarete.2V*ogliamo,Kinoltre,pGermettereagliimpiegatidilavoraredacasausandounalineaDSLeleconnessionicablemoGdemalpostodifargliusareunaU connessionedialup.qPeriniziare,abbiamobisongodipianicareunpGlecose.ؼHodecisochevogliodareadogniucioremotounnetworkinclasseCQpGerpermetterglidiespanderlosenecessario.XCos,Driservolesottoretida192.168.10.0a192.168.11.0.Decido,Dinoltre,chepGergliutenticasalinghidarindirizziIP[sucientidanonaverbisognodifarneilmasqueradingdallatoserverdellaVPN.OgnirclientavrunIP^propriointerno.VuCos,hobisognodiriservqareun'altraclasseC^pGerquesto,diciamo192.168.40.0.Lasolacosachedevofareoraaggiungerequestirangealmiorouter.Immaginatechelanostra(soGcietposseggaunpiccoloCisco(192.168.254.254)chegestiscetuttoiltracoattraversolanostraOC1.Congurando[l'instradamentosulCiscoinmoGdocheiltracodirettoaquesteretiriservqatevadasulnostro.serverVPN(192.168.40.254).LMetterilserverVPNnellaretedegliutenticasalinghipGerunaragioneche diverrchiarainseguito.Chiamerl'interfacciaesternadelservervpn.company*.com, equellainternavpn-internal.mycompany*.com.Pergliindirizziesterni,nonabbiamobisognodiconoscerli.TL'unicacosachesideveavereilproprioindirizzo,U fornitodalproprioISP*.#Í5.2RaccogliereglistrumentiMOraU abbiamobisognodialcunisoftware,U trovqaiseguentiprogrammieinstallalidovespGecicato._2 ~?G5.8Implemen>tazioneddϹ15ՁV5.2.1#!\P>erilServer:#pppGdU (versione2.3osuperiore)sshU (versione1.2.26osupGeriore) 5.2.2#!\P>erilClient:pppGdU (stessaversionedelserver)sshpty-r}/edirU ftp://ftp.vein.hu/ssa/contrib/mag/pty-redir-0.1.tar.gz#Í5.3Server:compilareilkernelMPerTiniziareavraiprobabilmentebisognodiricompilareilkernelpGerilserver.Deviesseresicurocheleseguenti opzionidelkernelsianoattivqateinaggiuntaalleopzionidinetworkingbaseealrestochetupGensipossaservirti.SeEnonhaimairicompilatoilkernelprimaadoraleggiKernelZHOWTOD/HOWTO/Kernel-HOWTO.html.ؼPerU ikernel2.0:ؼCONFIG_FIREWALLCONFIG_IP_FORWARDCONFIG_IP_FIREWALLCONFIG_IP_ROUTERCONFIG_PPPPerU ikernel2.2:CONFIG_FIREWALLCONFIG_IP_ADVANCED_ROUTERCONFIG_IP_FIREWALLCONFIG_IP_ROUTERCONFIG_PPP#Í5.4Server:CongurarelareteMSe&staiapprontandounserverchehasolounaschedadirete,ZLsuggeriscol'ideadiacquistarneun'altra,e ricablaretazioneddϹ16ՁV5.4.1#!\Congurarelein>terfacciedireteMPeriprimacosacongureremol'interfacciaesternadelserver.HDovrestigisapGerecomefare,eprobabilmente averlosgifatto.JSenonlohaiancorafatto,orailmomento.Senonsaicome,vqaialeggerel'urlNetworkingHOWTOU /HOWTO/NET3-4-HOWTO.htmlؼOrazarontiamol'interfacciainterna.Inaccordocongliindirizziscelti,?l'interfacciainternadelserver莡192.168.40.254.qInU questomoGdoabbiamoconguratol'interfaccia.PerU ikernel2.0,usaleimpGostazioniseguenti:z#?/sbin/ifconfigeth1192.168.40.254netmask255.255.255.0broadcast192.168.40.255#?/sbin/routeadd-net192.168.40.0netmask255.255.255.0deveth1PerU ikernel2.2,usaleimpGostazioniseguenti:#?/sbin/ifconfigeth1192.168.40.254netmask255.255.255.0broadcast192.168.40.255A,questo,puntoleinterfacciesonoattive.dPuoiparlareallemacchineattraversoentrambGelereticonnessealserver. ⍍5.4.2#!\ImpQostaipercorsi(routes)MOra spGossiamoparlareallemacchinenellanostraretelocale,;manonpossiamofarlosulrestodellanostrarete=interna.QuestorichiederunpGdilineedicodice.PerfarinmododiraggiungerelealtremacchinenelleTialtresottoreti,TabbiamobisognodiavereTiunpGercorsocheindichialtracodiandarenelrouterCisco.EccoU lalineadicoGdiceperfarquesto:x#?/sbin/routeadd-net192.168.0.0gw192.168.254.254netmask255.255.0.0dev?eth1QuestalineadicealkernelchetuttoiltracodestinatopGerlarete192.168.0.0dovrebbGeusciredaeth1,echedovrebbGee;esserepassatofuorialCisco.Iltracoperlanostraretelocaleandrdovee;devepGoichletabGelledi~routingsonoordinatepGerformatodinetmask.4Senoivogliamoaverealtreretiinternenellanostrarete,ciU servirunalineadicoGdicecomequellasottoriportataperognirete. ⍍5.4.3#!\Realizzareleregolediltraggio. MakinglterrulesMOk,zkcos?orapGossiamoraggiungerelemacchinedicuipotremmoavere?bisogno.1gOraabbiamobisognodiscrivereU leregolediltraggiodelrewallchepGermettonooneganol'accessoattraversoilserverVPN.ؼPerU impGostareleregoleconipfwadm,lancialoinquestamaniera:z#?/sbin/ipfwadm-F-f#?/sbin/ipfwadm-F-pdeny#?/sbin/ipfwadm-F-aaccept-S192.168.40.0/24-D192.168.0.0/16#?/sbin/ipfwadm-F-aaccept-b-S192.168.10.0/24-D192.168.0.0/16#?/sbin/ipfwadm-F-aaccept-b-S192.168.11.0/24-D192.168.0.0/16PerU impGostareleregoleconipchains,lancialoinquestamaniera:_2 ~?G5.8Implemen>tazioneddϹ17ՁV#?/sbin/ipchains-Fforward #?/sbin/ipchains-PforwardDENY#?/sbin/ipchains-Aforward-jACCEPT-s192.168.40.0/24-d192.168.0.0/16#?/sbin/ipchains-Aforward-jACCEPT-b-s192.168.10.0/24-d192.168.0.0/16#?/sbin/ipchains-Aforward-jACCEPT-b-s192.168.11.0/24-d192.168.0.0/16ؼT*uttocidicealkerneldirigettaretuttoiltracoeccettoquellochearrivqadallarete192.168.40.0/24edesti-nato[allarete192.168.0.0/16.JInpilaregoladicealkernelcheiltracopassantetralereti192.168.10.0/24e192.168.0.0/16pGermesso,elostessodicasiperlarete192.168.11.0.0Questedueultimeregolesonobidirezionali,U questoimpGortanteperpermetterealroutingdilavorareU inentrambiU imodi. 5.4.4#!\RoutingMPer`=gliutenticasalinghi,ctuttoinizierafunzionarebGenedaadesso.tuttavia,cpGergliuciremoti,abbiamobisognobdiinstradareancoraqualcosa.eGPrimaditutto,dobbiamodirealrouterprincipale,oCisco,chegliuciLremotisonodietroalServerVPN.OraspGecichiamogliinstradamentisulCiscochediconodispGedireilltracodestinatoagliuciremotialserverVPN.OradobbiamodirealserverVPNJcosafareconiltracodestinatoGiagliuciremoti.lPerfarci,J(useremoilcomandoroutesulserver.lIlsoloproblemachepGerfarinmoGdocheilcomandoroutefunzioni,\illinkdiretedeveessereattivopGerchsefossedisattivqato,\questospGecicoxroutingandrebbeperso.܇Lasoluzionequelladiaggiungeregliinstradamentiquandogliutentisiconnettono,/ospisemplicemente,lanciareilcomandoroutefrequentemente.NCos,creasloscripteaggiungilonelU tuocrontabpGerlanciarloognipochiminuti,inesso,mettileseguentilinee:/sbin/route?add-net192.168.11.0gw192.168.10.253netmask255.255.255.0/sbin/route?add-net192.168.10.0gw192.168.11.253netmask255.255.255.0#Í5.5Server:CongurareD7` ectt1200pppdMOracongureremopppGdsulserverpergestireleconnessioniVPN.SestaigiusandoquestoserverpergestiregliutentiindialupopGerconnetteretestesso,allorapotrainotarechequestemodicheavrannoeettosututtiU iservizi.qParleremodicomeevitareiconittiallanediquestasezione. 5.5.1#!\/etc/ppp/Questadirectorydevecontenerenecessariamentealcuniles.uProbabilmenteavraigiunlechiamatooptions.#Questoilecontienteitutteleopzioniglobalidipppd.QuesteopzioninonpGossonoesseresovrascrittedaU pppddalineadicomando. 5.5.2#!\/etc/ppp/optionsIlU leoptionsdovrebbGecontenerealmenoleseguentirighe:ؼipcp-accept-localipcp-accept-remoteproxyarpnoauth_2 ~?G5.8Implemen>tazioneddϹ18ՁVLefprimeduerighediconoapppdcosaaccettaredall'altrolatodell'indirizzoIPBricevuto.BBQuestonecessario quandocvengonocollegatigliuciremoti,gFmapuesseredisabilitatosesicolleganosoloutentidacasa.V*abGenelasciarloattivo,mpoichnonimpediscealserverl'assegnazionedegliindirizzi,messodicesolocheprontoadU accettarelerichiestedelclient.ؼLaU terzalineamoltoimpGortante.qDallemanpagedipppd:ؼproxyarp$Add?anentrytothissystem'sARP[Address XResolu-$tion XProtocol]tablewiththe?IPaddressofthe$peer?andtheEthernetaddressofthissystem. XThis$will Xhavethe?effectofmakingthepeerappearto$other?systemstobeonthelocalethernet.QuestoimpGortanteperchsenonvienefatto,iltracolocalenonsaringradodiritornareattraversoiltunnel.ؼL'ultima linealapiimpGortante.9#Questadiceapppddipermettereconnessionisenzausernameepassword.T*aleU proGcedurasicuranchl'autenticazionevienegestitadasshd. 5.5.3#!\EvitareconittiMSeggestiscialtriserviziconpppd,dovraiconsiderarechelecongurazionidiquestialtriservizipGotrebberononesserelestessedicuiavrbisognounaVPN.pppddisegnatoinmoGdotalecheopzionidelleprin-cipaleZ|/etc/ppp/optionsnonpGossanoesseresovrascrittedaopzionispecicateinruntime.Questofatto,logicamente,OpGerNragionidisicurezza.oWPerevitareconitti,Osidevedeterminarequaliopzionicausanoilcon-itto,e͓spGostarledalleprincipaleinunlediopzioniseparatochevengacaricatoquandol'applicazioneappropriataU dipppdstgirando.#Í5.6Server:ConguraresshdQuiU diseguitodescrivoilmiole/etc/sshd_config.qIltuodovrebbGeesserelostessooalmenosimile:ؼ#?Thisisthesshserversystemwideconfigurationfile.Port?22ListenAddress?0.0.0.0HostKey?/etc/ssh_host_keyRandomSeed?/etc/ssh_random_seedServerKeyBits?768LoginGraceTime?600KeyRegenerationInterval?3600PermitRootLogin?yesIgnoreRhosts?yesStrictModes?yesQuietMode?noFascistLogging?yesCheckMail?noIdleTimeout?3dX11Forwarding?noPrintMotd?no_2 ~?G5.8Implemen>tazioneddϹ19ՁVKeepAlive?yes SyslogFacility?DAEMONRhostsAuthentication?noRhostsRSAAuthentication?noRSAAuthentication?yesPasswordAuthentication?noPermitEmptyPasswords?noUseLogin?nog;IlpuntoimpGortantedanotarechel'autenticazionedellepassworddisabilitatacomeiservizi"r".,|Hoanchedisabilitatoilcontrollodell'emaileil'messaggiodelgiorno'puconfonderepppddallatoclient.?PermettoancoraU illogindaroGot,mapuessereeseguitosolamenteconunachiave,ciadeguatamentesicuro.# 85.7Server:conguraregliaccountutenteMOraU congureremogliaccountutente. Š5.7.1#!\AggiungereilgruppQovpn-usersLanciaU semplicemente:#?/usr/sbin/groupaddvpn-usersOra,deditaa/etc/groupeguardal'ulimalinea.DovrebbGeesserelalineadelgruppovpn-users.Notailterzo campGo.wUQuestoWl'IDWdigruppo(GID).Segnatela,Wneavremobisognofraunminuto.wUPerquestoesempioilGIDU 101. Š5.7.2#!\Crearelahomedirectorydivpn-usersMUseremoU unahomedirectorysingolapGertuttigliutentidelgruppo.qCosi'sidovrlanciaresemplicemente:#?mkdir/home/vpn-users5.7.3#!\Ladirectory.sshMOraU creiamoladirectory.sshnellahomedirectorydivpn-users.#?mkdir/home/vpn-users/.ssh5.7.4#!\Aggiungereuten>tiMOra Minizialapartedivertente._Andiamo Madeditareille/etc/passwdamano.:)WNormalmenteilsistema a:gestirequestole,ӁmapGerunsetup'sporco'comequesto,Ӂpisemplicefarselo.Periniziare,apriille/etc/passwdU evericacosasitrovqaall'interno.qQuisottoc'unesempiodicichedovrestitrovqare:...nobody:x:65534:100:nobody:/dev/null:mwilson:x:1000:100:Matthew?Wilson,,,:/home/mwilson:/bin/bashjoe:*:1020:101:Joe?Mode(home),,,:/home/vpn-users:/usr/sbin/pppd$_2 ~?G5.8Implemen>tazioneddϹ20ՁVbill:*:1020:101:Bill?Smith(home),,,:/home/vpn-users:/usr/sbin/pppd frank:*:1020:101:Frank?Jones(home),,,:/home/vpn-users:/usr/sbin/pppd...ؼIlf9primoutenteessenzialmentedidefault.Ilsecondosonoio.:)DopGoquestisonostatifattialcuniutentispGecici%pervpn-users.U-Ilprimocampolousername,$eilsecondoilcampopassword.U-IlterzolouserID(UID){e{ilquartoill'IDdigruppGo(GID).Dopoquestic'uncampochespecicaalcuneinformazionisuchiDzsial'utente.kIlsestocampGol'homedirectorydell'utenteel'ultimocampGospecicalashell.kComepuoivedere,{ognit%campGoseparatodaunduepunti.ΏGuardaleultimetrerighe.LasoladierenzatralorolousernamenelprimocampGo,}eleinformazioniutentesulquintocampGo.K,QuellochevogliamofarecrearerighecomequestepGerogniutente.UVE'megliononusaresolounutentepGertutteleconnessioni,facendoinquellamanieranonsarestiingradodidistinguerenulla.qCos,copial'ultimalineadiquestoleededitalacosicheassomigliaquellasopraripGortata.PSiisicurocheilsecondocampGosiaunasterisco(*).PIlsecondocampGoydovrebbeessereugualepertuttelerighedelle.6Iohousato1020.T*upuoiusareunnumerosopraa1000,pGoichinumeripibassisonotipicamenteriservqatipGerusidelsistema.3Ilquartocampodovrebbeessereriservqatoall'IDdigruppGodivpn-users. eE'tempGo,ora,diusarequantosegnatociprecedentemente.Cos~scrivil'ID~digruppGoqui. Comeultimacosacambialahomedirectoryin/home/vpn-users,pelashellink/usr/sbin/pppd.Ekquestotutto.OracopialarigapGeraggiungereutenti.ModicailprimoeilquintocampGoU el'utentesarcongurato.#Í5.8Server:AmministrazioneMUno7;deivqantaggidiusarequestosistemapGergliaccountutentechetupuoiavvqantaggiartideicomandidiamministrazioneedegliutentidiUNIX.Dalmomentocheogniclientsiconnettecomeutente,tupuoiusareimetoGdistandardperaverelestatisticheutente.D#IseguentisonoalcunicomandichemipiaceusarepGervedereseU iltuttofunzionaadovere.whoVisualizzagliutenticorrentementeconnessi,Scoscomequandosisonoconnessi,dadove(nomeoIP*,eU suqualepGorta).wQuestofcomandovisualizzaunalistamoltoestesadichicorrentementeconnesso.!Tidicepurel'uptimeeicarichipGerilsistema.?PInpispecicailprocessocorrentedell'utente(ilqualedovrebbGeessere-pppdpGerBAiclientdellaVPN)BtazioneddϹ21ՁV5.9Client:compilareilkernel.MOra|prendiamoinconsiderazioneilclient._Per|primacosadobbiamoricompilareilkernelinmoGdochepGossa suppGortaretuttelefunzionidicuiabbiamobisogno.2Lerichiesteminimesonodiavereilpppnelkernel.DopGoaquesto,avraibisognodelforwarding,rewallingedelgatewayingsolosevuoipGermettereadaltremacchine3diaccederealtunnel.yPerquestoesempio,7congurerunadellemacchinedell'ucioremotodelmiokschemadiesempio.`Aggiungiamoleseguentiopzionisultuokernel.`Ancora,=senonhaimaicompilatounU kernelinvitatua,leggiKernelHOWTO/HOWTO/Kernel-HOWTO.html.ؼPerU ikernel2.0:ؼCONFIG_PPPCONFIG_FIREWALLCONFIG_IP_FORWARDCONFIG_IP_FIREWALLCONFIG_IP_ROUTERCONFIG_IP_MASQUERADECONFIG_IP_MASQUERADE_ICMPPerU ikernel2.2:CONFIG_PPPCONFIG_FIREWALLCONFIG_IP_ADVANCED_ROUTERCONFIG_IP_FIREWALLCONFIG_IP_ROUTERCONFIG_IP_MASQUERADECONFIG_IP_MASQUERADE_ICMP#Í5.10%}Client:CongurarelareteMOrao/dovremocongurarelaretesultuoPCo)client.Assumiamodiavergiconguratolareteesternaeche questaU funzioni.qOracongureremol'interfacciainternadelclientinservizionellatuaintranet. 5.10.1(In>terfacciaAbbiamobisognopGerprimacosadiattivqarel'interfacciainternadirete.{Perfarcio,.taggiungileseguentilineeU altuole(oequivqalente)/etc/rc.d/rc.inet1:ؼPerU ikernel2.0:ؼ/sbin/ifconfig?eth1192.168.10.253broadcast192.168.10.255netmask255.255.255.0/sbin/route?add-net192.168.10.0netmask255.255.255.0deveth1>__2 ~?G5.8Implemen>tazioneddϹ22ՁVPerU ikernel2.2:c/sbin/ifconfig?eth1192.168.10.253broadcast192.168.10.255netmask 255.255.255.0 V5.10.2(RegolediltraggioMPer\congurarel'ucioremoto,_dovremoimpGostareleregolediltraggiochepGermettanoaltracodiandare! inentrambGe! ledirezioniattraverso! iltunnel.FAggiungileseguentilineealtuole(oequivqalente)/etc/rc.d/rc.inet1:ؼPerU ikernel2.0:/sbin/ipfwadm?-F-f/sbin/ipfwadm?-F-pdeny/sbin/ipfwadm?-F-aaccept-b-S192.168.10.0/24-D192.168.0.0/16PerU ikernel2.2:/sbin/ipchains?-Fforward/sbin/ipchains?-PforwardDENY/sbin/ipchains?-Aforward-jACCEPT-b-s192.168.10.0/24-d192.168.0.0/16Avrainotatochequestelineeassomiglianoaquellecheabbiamosulserver.XQuestopGerchsonolestesse.QuesteU regolediconosemplicementedoveiltracohailpGermessodiandare,eciotraquesteduereti. V5.10.3(RoutingMIlU soloinstradamentoextradicuiabbiamobisognocreatodalloscriptcheattivqailtunnel."J5.11%}Client:CongurarepppdNon bdovrestiaverbisognodieditareille/etc/ppp/optionsaquestopunto.XControllasel'opzione"auth" presente,Boalcunedellealtreopzioniprivilegiate.lProvqalo,Besefallisce,un/etc/ppp/optionsvuotosiattiverlAsemplicementeconservqandoleopzionidalvecchiolepGerindagaresucosasisiacorrotto(senon莡evidente).qF*orseU nonavraibisognodituttociseusipppdpGernull'altrochequesto.5.12%}Client:ConguraresshMComeU roGotsulclient,eseguileseguentilinee:c#?mkdir/root/.ssh#?ssh-keygen-f/root/.ssh/identity.vpn-P""QuestoWcreerdueles,identity.vpneidentity.vpn.pubnelladirectory.ssh.&Ilprimolatuachiaveprivqata,kegYdovrebbGeesseretenutaalsicuro.+MAIoSPEDIRLAA;TTRA_VERSOLARETE*segYnonattravresounaۋsessionecrittata.HIlsecondolelatuachiaveۋpubblica,epuoispGedirlainqualsiasipostotuvoglia,essaserveFsolopGerpermetterel'accessoadaltrisistemi,Đenonpuessereusatainsostituzioneallatuaprivqata.E'8un8leditestoconunalineacherappresentalatuachiaveattuale.UAllanedellalineac'ilcampGocommento@chepuoicambiaresenzapaurachelatuachiavesiasprotetta. UnesempiodichiavesipresentapiU omenocos:G(_2 ~?G5.8Implemen>tazioneddϹ23ՁV1024?351430723736674162619588314275167.......250872101150654839 root@vpn-client.mycompany.comؼLachiaverealepilungadiquesta,_comunque,manonvoglioriempireloschermopGerrappresentarlatutta.Copialachiavenellesulserver/home/vpn-users/.ssh/authorized_keys.73SiisicurochecisiaunasolachiaveؒpGerlinea,{echeognichiavenonsiaspGezzatainpilinee.GPotraialterareilcampGocommentocontuttocichetisembrerutilepGerricordartiqualelineasiaassociataaqualeutente.TiraccomandocaldamentequestaU pratica.#Í5.13%}Client:Attiv@ arelaconnessioneMOra,proveremoadattivqarelaconnessioneversoilserverVPN.Primoavremobisognoditentareunaconnes-sioneU alserverspGecicatonelleknown_hostnellessh.qLanciaquesto:#?sshvpn.mycompany.comRispGondih"yes"quandotivienechiestosevuoicontinuareaconnetterti.IlservertirispGonder"permissiondenied",Tma!tuttook.OE'!impGortantecheusilostessonomepGerilserverchevuoiusarenelloscriptdiconnessione.)Ora~scrivileseguentilinee.AvraibisognodicambiarelamaggiorpartedelleopzionipGermettereaU puntolacongurazione.#?/usr/sbin/pty-redir/usr/bin/ssh-t-enone-o'Batchmodeyes'-cblowfish?-i/root/.ssh/identity.vpn-lvpn-uservpn.mycompany.com>/tmp/vpn-device)`(now?waitabout10seconds)#?/usr/sbin/pppd`cat/tmp/vpn-device`192.168.10.254:192.168.40.254Notal'indirizzoIPspGecicatonellalineaconpppd.Ilprimol'indirizzodelclientallanedeltunnel.Ilsecondo'.l'indirizzodelserverallanedeltunnel,[ilqualesettatosugliindirizziinternidelserver.SetuttoyUsembrafunzionare,bvqaiavqanti.Seno,bcontrollasehaitutteleopzioniesesonoscrittecorrettamente.SeU qualcosacontinuaU anonfunzionare,controllalasezione6.1(sezionetrabGocchetti).#Í5.14%}Client:Conguraregliinstradamenti.MOraU conguriamol'instradamentopGerspedireiltracoattraversoU iltunnel.qLanciaquesto:#?/sbin/routeadd-net192.168.0.0gwvpn-internal.mycompany.comnetmask255.255.0.0Dovrestioraessereingradodicomunicareconlemacchineall'altrolatodeltunnel.ArF*aiunaprovqa.ArSemplice,vero? =Se_nonfunziona,>/provqausandopingetraceroutepGeridenticaredovesipGotrebbe_annidareilproblema.qSeU nalmentefunziona,conguradegliscriptchefaccianoillavoropGerte.#Í5.15%}Client:ScriptingMUsaU loscriptvpndmostrato4.3(qui).qSolamentedevimoGdicarlounpoco.qEseguileseguentimodiche:RN_2 ~?G6.8A>ddenda24ՁVCambiaHlevqariabiliincimapGerabbinarleallatuacongurazione.mnLamaggiorpartedovrebbGeroessere aU pGosto,masenehaibisognopuoicambiarle.LineU 27:qaggiungil'IPloGcaleeremotoprimadi$PPP_OPTIONSLines31:Cambiaquestalinea,eleduedopGoessaperconguraregliinstradamentiperletueretiinterne. 5.15.1(Man>tienilaattiv\|aMAnchesegliscriptbashsonogeneralmentestabili,٘abbiamoscopGertochepGossonofallire.>Peresseresicurichelo 9scriptvpndrimangaattivo,gaggiungiamounalineaallacrontabdelclientchelancialoscriptcheck-vpnd.Vienelanciatoogni5minuticirca.*wSevpndsteettivqamentefunzionando,check-vpndnonsprecherrisorsediU CPU.(6Acddenda荍6.1Trab_occhettiQuielencaticisonoalcuniproblemichemisonoaccadutiutilizzandoilsistemanoradescritto.workisunreachableQuesto@Uerroregeneratodaroute.jHonotatocheaccadequandoiltempGodiibernazionetrasshandpppdnonJ̀abbastanzalungo.nSerileviquestoerrore,Llanciaifconfig,dovrestinotarechenoncisonointerfaccepppXLattive.Dardingeikernel2.2Nei8nuovikernel2.2,devispGecicamenteabilitarel'IP"forwardingnelkernelalmomentodelbGoot.vQuestoconU ilseguentecomando:ؼ#?echo1>/proc/sys/net/ipv4/ip_forwardSenza,questo,ilkernelnoninoltreralcunpacchetto,eilservernonfunzioner,comenonfunzionernessungatewayU pGericlient.^_2 ~?G6.8A>ddenda25ՁV6.1.4#!\RoutingMdovrebbGe$funzionaresenzaatare,mabisognafareattenzionequandoprocessiindirizzichenoninstradano tracoNudestinatoall'indirizzoesternodelserverdellaVPNN5attraversoiltunnel.]~Perchnonlofar.]~(si,questaU opGeresperienzapersonale.)#Í6.2RichiesteHardwareeSoftware6.2.1#!\Ric>hiesteHardwareMinimeCredetecicoppureno,squestosistemagirasuun486SX33con8megabytesdiRAM.OvviamentenongirabGenissimo,U infattihaqualcheproblemaquandoc'moltotraco.ؼQuesto"sistemalavora"bGenesuunPentium"75con16MbdiRAM,usandounadistribuzioneLPRcaricatadaoppy*.f-con6Mbdiramdisk,e10Mbdispazioprincipale.HotestatoquesteimpGostazionicaricandounlmatoU RealVideo700kbitinstreamingattraversoU laVPNpGeroltreunaora.Ora,U pGer,facciogiraretuttosuunPentiumU 90conunachedaEtherneta100Mbiteconomica. 6.2.2#!\Ric>hiesteSoftwareMQuestosistemalavorasiaconilkernel2.0checonil2.2./mGliscriptchemantengonoiltunnelattivorichiedonounashellbashragionevolmentemoGderna.(Honotizia,/tuttaviachecerteversionidibashpresentisulledistribuzioniU LinuxnonlavoranomoltobGenecongliscript.SequalcunopGotesseaiutarmiaranareimieiscript(oppurescrivereuneseguibile?)avrebbGeimieipiinnitiringraziamenti.`NonsonosicurodelpGerch,malamiashellbashnonsegueleregoleenonsembrainterpretareU correttamenteisegnali.qSerealizziqualchemiglioramento,tipregodispGedirmeloviaemailamatthew@shinythings.c}/omU mailto:matthew@shinythings.comj;_2GD7` ectt1200!N ecbx1200]f ecbx1000&Lt$ffffecbx14408 ecsi10006 ecss1000HЃ ecti1000Iqqecss2074qL ectt1000 1 ecrm1000 !", cmsy10rl