Download - Firewall

Transcript
  • FIREWALLENALTADISPONIBILIDADNorbertoAltalef

    [email protected]

    RedKleeArgentina________________________________________________________________________

    1AlcancesSedescribirenestedocumentolasventajasylaconfiguracindeunaestructuradefirewallenaltadisponibilidad,utilizandoherramientasOpenSource.

    2VentajasUnaestructuradefirewallenaltadisponibilidadpresentalassiguientesventajas:

    Continuidaddeserviciofrenteafallasdehardware. Posibilidaddeusarhardwarestandard(PCclone)parafuncionescrticas. Permitiractualizacionesdesoftwaresininterrupcindelservicio. Siademssepuedecontarconmsdeunaconexinainternet,puedecontinuarse

    elservicioanfrenteaunacadadeunodelosenlaces.

    Firewallstateful.Sincronizacindeestadosdeconexiones.Unfirewallstatefulesaquelquellevauncontroldelasconexionesestablecidas,demaneraquepuededeterminarsiunpaqueteperteneceonoaunaconexin.Sisedeterminaqueperteneceaunaconexin,seloaceptasinnecesidaddevalidarlocontralasreglas.Estobrindaunanotablemejoradeperformance.

    Cuandosequiereestablecerunaconfiguracindealtadisponibilidad,esnecesariocontarconunmecanismoparaqueelfirewallqueestinactivo(backup)tengainformacindelasconexionesyaestablecidas.Siestonoocurre,encasodefalladelfirewallprincipalcuandoeldebackuptomesulugarcancelartodaslasconexionesyaestablecidas.

    3PropuestaLapropuestacontemplarlossiguientesaspectos:

    1Instalarunaestructuradefirewallconequiposredundantes.2Contarconalmenosdosaccesosinternet,provistospordistintosproveedores(ISP).3Frenteaunafallaelusuarionodebetenerningunainterrupcindesuconexin.4Posibilidaddeusarlosdosenlacesinternetunocomoactivoyelotrocomobackupotenerlosambosactivos.

    4ImplementacinParalaestructuradefirewallredundanteslapropuestaesrealizarloconunainstalacinbasadaenelsistemaoperativoOpenBSD.

    LadecisindeusarOpenBSDsebasaenvariosaspectos:

    FirewallenaltadisponibilidadPgina:1de11

  • Sistemaoperativomuyestableytotalmenteorientadodesdesuconcepcinhacialaseguridad.

    Softwaredefiltradodepaquetespf,muysencillodeusaryconmuchasfuncionalidadesintegradas.

    ConfiguracindealtadisponibilidadusandoelprotocoloCARP,estabilizadadesdehacevariasversiones.

    Pseudointerfacepfsyncquepermiteconfigurarunfirewall"stateful"enaltadisponibilidad.

    Instalacinmuysencilla,queocupapocoespacioendiscoyconrequerimientosdehardwaremnimos.

    Ampliandolospuntosanteriores:

    1. OpenBSDesunodelossistemasoperativosmssegurosybiendiseadosdisponiblesactualmente.Peseaquelasracesdeestesistemaoperativoseremontanalosaos70enlosprimerosdasdeUNIX,OpenBSDhaevolucionadosiendoenlaactualidadunsistemaconunfuertedesarrolloymuyusadoengrancantidaddeinstalaciones.BSD(BerkeleySoftwareDistribution)fueunaderivacindelUnixdeAT&Tafinesdelosaos70.ApartirdeBSDaprincipiosdelosaos90sederivaronNetBSDyFreeBSD.TheodeRaadt,queestodavaelliderdelproyecto,sesepardelproyectoNetBSDenOctubrede1995yliberlaversin2.0deOpenBSDamediadosde1997.Elobjetivodelproyectoesdisponerdeunsistemaoperativocompacto,muybiendocumentadoyconextremocuidadoentemasdeseguridad.

    2. pfeselsoftwaredefiltradodepaquetes(packetfilter)deOpenBSD.AdemsdefiltrartrficoTCP/IPpuedehacertambintraslacindedirecciones(NATNetworkAddressTraslation),tambienincluyelafuncindenormalizacindetrficoTCP/IP,ascomocontroldeanchodebanda.Lasintaxisesmuyintuitivaypermiterealizarfirewallpotentesconarchivosdeconfiguracinsencillos.AscomotodoelproyectoOpenBSD,tieneunaexcelentedocumentacin.Estdisponibleenelkernelgenricodesdeelao2001(versinOpenBSD3.0)porloqueesmuyestableyprobado.Atravsdelosaosselehanagregadomuchasfuncionalidades.

    3. ElpropsitodeCARP(CommonAddressRedundancyProtocol)eseldepermitirquevarioshostsenelmismosegmentodered,compartanunadireccinIP.CARPesunaalternativagratisaVRRP(VirtualRouterRedundancyProtocol)yHSRP(HotStandbyRouterProtocol)ElgrupodehostsquecomparteunadireccinIPsedenomina"grupoderedundancia".Dentrodeungrupounhostsedesignacomomasterylosdemscomobackups.ElhostmasteresquienrespondealtrficodirigidoaladireccinIPcompartida.Encasodefalladelmaster,elhostbackupdemayorprioridadesquienpasaateneridentidaddemaster.

    4. Lainterfacevirtualpfsyncexponeloscambiosenlatabladeestadosusadaporpf.Siestainterfacevirtualseasociaaunainterfacefsicaestoscambiosdeestado

    FirewallenaltadisponibilidadPgina:2de11

  • puedensertransmitidosaotroshosts,demaneraquetodosloshostsdeungrupopuedantenerlainformacindelatabladeestadosdelhostmaster.Encasodetenerquetomarsulugarlasconexionespuedenseguirsininterrupcin.Estopermiteconfigurarfirewallsstatefulenaltadisponibilidad.

    5. LainstalacindeOpenBSDquepermiteconfigurartodasestasopcionesesmuyrpida,ocupamuypocoespacioendiscoytienebajosrequerimientosdehardware.

    DetallesdelaimplementacinEnelsiguientegrficoserepresentanlosesquemasdeconexindeunainstalacindeunfirewallquetiene:

    DosequiposenaltadisponibilidadDosproveedoresdeinternetUnazonadesprotegida.EXTERNAUnazonadesmilitarizada.DMZUnazonaprotegida.INTERNA

    Encadaunadelasinterfaces,cadaequipotienesupropiadireccinIPyasuvezhayunadireccinIPdecadainterfacecarp.EstaesladireccinIPque"ven"losdemsequiposconectados.

    FirewallenaltadisponibilidadPgina:3de11

  • Estoes:

    if1=interfacedecadaequipoenlareddelISP1.carp1=interfacedelconjuntoenlareddelISP1.

    if2=interfacedecadaequipoenlareddelISP2carp2=interfacedelconjuntoenlareddelISP2

    if3=interfacedecadaequipoenlaDMZcarp3=interfacedelconjuntoenlaDMZ

    if4=interfacedecadaequipoenlaredinternacarp4=interfacedelconjuntoenlaredinterna

    if5=interfaceentrecadaequipo

    LasinterfacesiftienenunaIPdistintaencadaequipo.Lasinterfacescarptienenunaipnica.

    Comodecamosantes,enestaconfiguracinunodelosequiposseconfiguracomomasteryesquien"maneja"laIPvirtualdecadainterface.

    Elotroequiposeconfiguracomobackupysoloempiezaafuncionarantelafalladelmaster.

    Seutilizaunainterfacequevinculaambosequipos,queparatenerbajalatenciayseguridadsuelesersimplementeuncablederedcruzado,espordondesetransfierenlospaquetesdepfsync,paramantenerlastablasdeestadosincronizadas.

    Cmoseenteraelhostbackupqueelhostmasterestactivo?Lacaractersticadelprotocolocarpesquelosequiposquesonmasterseanunciancomoactivosenviandoaintervalosregularespaquetesdedatos.

    Parausarcarp,senecesitaconfigurarencadainterfacedecadahostunVirtualHostID(VHID),unadireccinIPvirtualyademsdosparmetrosquesonadvbaseyadvskew,quecontrolancuanfrecuentementeseenvaunanuncio.

    Cuandounhostrecibeanunciosconunadvbasemenoralpropio,suponequeotrohostestactuandocomomaster.Cuandodejaderecibirlos,comienzaaenviarlosanuncios,indicandoqueahoraesehosttienelafuncindemaster.Sisequierentenervarioshostbackup,sedefinelaprioridadconquedebenactuarcomomasterasignandovalorescrecientesdelparmetroadvbase.

    Todoslosparmetrosdeconfiguracindecarp,seasignanconelcomandoifconfigqueenestesistemaoperativomanejatodoslostiposdeinterfacestantoseanrealescomovirtuales.Estosimplificamuchsimolaconfiguracin.Paramsdetallesver:man(8)ifconfigAmododeejemplo,veamoslaconfiguracindelainterfaceconunodelosdosISP.

    Enelequipomaster:

    FirewallenaltadisponibilidadPgina:4de11

  • ifconfigif1201.202.203.204netmask255.255.255.0ifconfigcarp1201.202.203.210vhid1advsbase0pass1234carpdevif1

    Enelequipobackup:

    ifconfigif1201.202.203.205netmask255.255.255.0ifconfigcarp1201.202.203.210vhid1advsbase10pass1234carpdevif1

    Elsignificadodelosparmetroseselsiguiente:

    if1:nombredelainterfacefsica(verNota)carp1:nombredelainterfacevirtual201.202.203.204:direccinIPdelhostmaster201.202.203.205:direccinIPdelhostbackup201.202.203.210:direccinIPdelainterfacevirtualvhid:virtualhostidadvbase:valorbasequedeterminasielhostesmasterobackuppass:passwordqueseusaparalaautenticacindelosmensajescarpdev:interfacefsicaasociada

    Nota:enOpenBSDadiferenciadeLinuxelnombredeunainterfacedependedeldriverdelkernelquelamaneje.Osealaprimerinterfacenosereth0siempre,sinoquevariardependiendodelamarcaymodelodelatarjetadered.(Ejemplo:em0siesunatarjetaIntel10/100/1000,xl0siesunatarjeta3COM3c9xx).

    Paraqueloscomandosdeconfiguracindecadainterfacesetomenenelboot,debeexistirporcadaunadelasinterfacesunarchivo/etc/hostname.if,dondesedebenincluirlosparmetrosquerecibeelcomandoifconfig.Sepuedenincluirparmetrosadicionalesquefijenporejemploelmododeoperacindelainterface(100MBFullDuplex,etc)ytambienejecutarcomandosenelmomentodelainicializacindelainterface.Paramsdetallesver:man(5)hostname.if

    firewallstatefulypfsyncUnadelasgrandesventajasdeutilizarOpenBSD,esqueestresueltoenformamuyconfiableysencillaelmecanismoparaqueelolosfirewalldebackuptenganconocimientodelosestadosestablecidosenelfirewallmaster.Esto,comodijimosantes,permiteconfigurarreglasquegenerenestadoyqueencasodefallalasconexionesestablecidasnoseveanafectadas.Paraestoseusalapseudointerfacepfsync.Puedefcilmenteasociarsepfsyncconunainterfacefsica.Paraquelosfirewallmantengansincronizadassustablasdeestado,sernecesariosolamentecrearencadaequipounarchivo/etc/hostname.pfsync0,conelsiguientecontenido:

    /etc/hostname.pfsync0:

    upsyncdevif5

    FirewallenaltadisponibilidadPgina:5de11

  • if5eselnombredelainterfacequesededicaaestasincronizacin.Cmomanejardosproveedoresdeinternet?Unaalternativaestenerunproveedorprincipalyotrodebackup.Mientraselproveedorprincipalestactivoseenvaeltrficoporestaconexinysisedetectaunafallasecomienzaaenviarporeldebackup.Otraalternativaesqueambasconexionesestnactivassimultneamente.Sibienesperfectamenteposibleenviarelmismotipodetrficoporambasinterfaces,estoavecestraeinconvenientesconsitiossegurosenloscualessevalidanlasdireccionesIPdeorigen.Unaalternativainteresanteesmanejarporcadaenlacedistintostiposdetrfico.Porejemplo,trficodenavegacin(httpyhttps)porunISPytrficodemailyotrosprotocolosporotroISP.Encasodefalladecualquieradelosenlaces,sepuedemanejartodoeltrficoporelrestante.

    Cmopuedehacerseesteruteovariable?Todasestasfuncionalidadespuedenmanejarsedirectamenteconpocasreglasdelsistemadefiltradodepaquetespf.EstacapacidaddelfiltradodepaquetesdeOpenBSDesloquebrindamuchasposibilidadesdeimplementacin.

    Supongamoslossiguientesrequerimientos:

    Permitirdesdelaredinternaaccesohaciainternetdelospuertosdehttpyhttps.RutearestetrficoporelISP1.Permitirdesdelaredinternaaccesohaciainternetdelospuertosdepop3ysmtp.RutearestetrficoporelISP2.Nopermitirtrficoiniciadoeninternethacialaredinterna.

    Veamosalgunasreglasparaobtenerestafuncionalidad.

    #Variablesext_if1="if1"#interfacedondeseconectaelISP1ext_if2="if2"#interfacedondeseconectaelISP2int_if="if3"#interfacedondeseconectalaredinternawww_ports="{"80443"}"#portspermitidosparanavegacinmail_ports="{"25110"}"#portspermitidosparamail

    #NATdecualquierserverdelaredinternaconlaIPdelainterfaceexterna#correspondienteacadaISPnaton$ext_if1from$int_if:networktoany>$ext_if1naton$ext_if2from$int_if:networktoany>$ext_if2

    #Inicialmentesebloqueatodoeltrficodeentrada.blockinlog

    #Peseaquepfpuedebloqueartantoeltrficodeentradaodesalida,esms#simplefiltrarenunadireccin.#Elegimosfiltrareltrficodeentrada.Unavezquesepermiteeltrficodeentrada#enunainterface,nosebloqueasusalida.Laopcinkeepstate,indicaquese#genereunestadoparalasconexiones(firewallstateful)

    FirewallenaltadisponibilidadPgina:6de11

  • passoutkeepstate

    #AceptamosenlainterfaceinternatrficohttpyhttpsyseruteaporISP1passinon$int_ifrouteto($ext_if1)inetprototcpfrom$int_if:networktoanyport\ $www_portskeepstate

    #Aceptamosenlainterfaceinternatrficosmtpypop3yseruteaporISP2passinon$int_ifrouteto($ext_if2)inetprototcpfrom$int_if:networktoanyport\ $mail_portskeepstate

    Sepuedeobservarqueconmuypocasreglas(6entotal)seobtienelafuncionalidaddeseada.

    CmodetectarfallasdeunISPycomocambiarlasreglasdefiltrado?Paradetectarlacadadeunaconexinsedisponedeifstated.Estedaemonpuedemonitorearlasinterfacesyasuvezejecutarcomandosexternosparamonitorearconexiones.Dependerdecadatipodeconexincomosemonitoree.UnavezquesedetectlacadadeunISP,esnecesariocambiarlasreglasdefiltradopararedireccionareltrfico.Estonuevamentepuedehacerseutilizandounafuncionalidaddepf,queenestecasoeselconceptodeanchor,quepermitetenerreglasdefinidasquepuedencargarseydescargarseenformadinmicasinnecesidaddehacerloconeljuegocompletodereglas,yaqueestoafectaralasconexionesexistentes,queseestncursandoporelISPquenofall.

    Veamosestoenmsdetalle:

    Eldaemonifstatedpuedeejecutarcomandosenrespuestaacambiosenelestadodelasinterfaces.Elestadodelasinterfacespuededeterminarsemonitoreandoelestadodellinkoejecutandocomandosexternos.Tieneunarchivodeconfiguracinquees/etc/ifstated.conf

    ifstatedtienedefinidos3estadosposiblesparaunlink,queson:

    up: Lainterfacefsicatieneconexinactiva.Paraunainterfacecarp,representaqueinterfaceestcomomaster.

    down: Lainterfacefsicanotieneconexinactiva.Paraunainterfacecarp,representaquelainterfaceestcomobackup.

    unknown: Nosepuededeterminarelestadodelaconexnfsica.Paraunainterfacecarpestorepresentaelestadoinit.

    Enmuchoscasosestainformacinnoessuficiente.Ennuestrocasoenparticular,perfectamentepodemostenerlinkhaciaelrouterquenosconectaconunISPyesterouternotenerconexinhaciainternet.Senecesitaalgunaformaexternadeverificarestaconexin.ifstatedpermiteejecutarcomandosexternosytomaraccionesverificandoelstatusqueestoscomandosretornen.Porejemplohaciendounpingdeunospocospaqueteshaciaunserverconocido,puedeindicarsilaconexinestactiva.

    Dentrodeifstated.conf,sepuedendefinirvariablescomolassiguientes:

    FirewallenaltadisponibilidadPgina:7de11

  • carp_up="carp0.link.up&&carp1.link.up"

    net='("pingqc1w1192.168.0.1>/dev/null"every10&&\"pingqc1w1192.168.0.2>/dev/null"every10)'

    Lavariablecarp_up,dependedelosestadosdedosinterfacescarp.Enestecasoenqueseamasterenambasinterfaces.

    Lavariablenet,dependedelaconectividadcondosIP.Paraverificarestoseenvaunpingconunafrecuenciade10seg(palabraclaveevery).

    Estadosenifstatedifstatedoperaconestadosytransiciones.

    Cadaestadotieneunabloquedeinicioyuncuerpo.Elbloquedeinicio,seutilizaparainicializarelestadoyseejecutacadavezqueseingresaenesteestado.Elcuerpodelestadosoloseejecutacuandoelestadoeselactualyocurreunevento.

    Lasaccionesatomardentrodeunciertoestadonormalmenteimplicanunoomssentenciasif.Lasposiblesaccionesincluyenejecutaruncomandousandorunodispararunatransicinconsetstate.

    Comoejemplomostramosdelarchivodeconfiguracinusadoenlaimplementacin.

    #TestdeISP1eISP2ISP1='("/etc/ifstated.scripts/test_ispisp1"every30)'ISP2='("/etc/ifstated.scripts/test_ispisp2"every30)'

    #AmbosISPactivosstatebothup{init{run"/etc/ifstated.scripts/start"}if(!$ISP1&&$ISP2)setstateISP1downif!$ISP2&&$ISP1setstateISP2downif!($ISP1||$ISP2)setstatebothdown}

    #FallaISP1stateISP1down{init{run"/etc/ifstated.scripts/isp2"}if($ISP1&&$ISP2)setstatebothup

    FirewallenaltadisponibilidadPgina:8de11

  • if!($ISP1||$ISP2)setstatebothdownif!$ISP2&&$ISP1setstateISP2down}

    #FallaISP2stateISP2down{init{run"/etc/ifstated.scripts/isp1"}if($ISP2&&$ISP1)setstatebothupif!($ISP1||$ISP2)setstatebothdownif!$ISP1&&$ISP2setstateISP1down}

    #AmbosISPconfallastatebothdown{init{run"/etc/ifstated.scripts/start"}if($ISP2&&$ISP1)setstatebothupif($ISP1&&!$ISP2)setstateISP2downif($ISP2&&!$ISP1)setstateISP1down}

    Enelscripttest_ispseejecutaparacadaISPunpingadosdireccionesconocidas.Previamentesesetearonlasrutasnecesarias.Conquealmenosunadelasdosdireccionesrespondaelping,seconsideraqueelISPestactivo.

    Enlosscriptsisp1eisp2secambianlasreglasdepf,demaneradeenviareltipodetrficonormalmenteenviadoporelISPquefall,porelquequedactivo.Paraevitarcargartodaslasreglasnuevamente,seusaelconceptodeanchorquetienepf.

    Msalldeljuegoprincipaldereglas,pfpuedecargarreglasadicionales,enpuntosdenominadosanchors.Unanchorpuedeincluirreglas,variableseinclusootrosanchor.Laventajadeesteesquemaesquelasreglasquetieneelanchorpuedenestarfijasconanterioridadomodificarseenformadinmica,peroencualquiercasopuedencargarseydescargarsesinafectarlasotrasreglas,nilosestadosyaestablecidos.

    FirewallenaltadisponibilidadPgina:9de11

  • Paraelejemploanterior,podranagregarse2anchorluegodelasreglasdefiltrado,demaneraquequedarancomosigue:

    #AceptamosenlainterfaceinternatrficohttpyhttpsyseruteaporISP1passinon$int_ifrouteto($ext_if1)inetprototcpfrom$int_if:networktoanyport\ $www_portskeepstate

    #Aceptamosenlainterfaceinternatrficosmtpypop3yseruteaporISP2passinon$int_ifrouteto($ext_if2)inetprototcpfrom$int_if:networktoanyport\ $mail_portskeepstate

    #Anchorporfalladeisp1anchorisp1

    #Anchorporfalladeisp2anchorisp2

    Enestecasotendramosdosarchivos,conlasreglasquedebecargarcadaanchor.Porejemplo:

    /etc/anchor.isp1,deberatenerelsiguientecontenido:

    #Variables

    ext_if1="if1"#interfacedondeseconectaelISP1ext_if2="if2"#interfacedondeseconectaelISP2int_if="if3"#interfacedondeseconectalaredinternawww_ports="{"80443"}"#portspermitidosparanavegacinmail_ports="{"25110"}"#portspermitidosparamail

    #AceptamosenlainterfaceinternatrficohttpyhttpsyseruteaporISP2passinon$int_ifrouteto($ext_if2)inetprototcpfrom$int_if:networktoanyport\ $www_portskeepstate

    /etc/anchor.isp2,deberatenerelsiguientecontenido:

    #Variables

    ext_if1="if1"#interfacedondeseconectaelISP1ext_if2="if2"#interfacedondeseconectaelISP2int_if="if3"#interfacedondeseconectalaredinternawww_ports="{"80443"}"#portspermitidosparanavegacinmail_ports="{"25110"}"#portspermitidosparamail

    #Aceptamosenlainterfaceinternatrficosmtpypop3yseruteaporISP1passinon$int_ifrouteto($ext_if1)inetprototcpfrom$int_if:networktoanyport\ $mail_portskeepstate

    Unpardeobservaciones:

    FirewallenaltadisponibilidadPgina:10de11

  • EnlosanchornosetrasladanlasdefinicionesdeMACROS(variables)quesehayanhechoenlareglaprincipal,porloquedebeserincludasencadadefinicin.

    Enpfeslaltimareglaquevalidelaquesetomaencuenta.

    Deestamaneralosarchivos/etc/ifstated.scripts/isp1y/etc/ifstated.scripts/isp2,queseejecutanen/etc/ifstated.conf,tendrnlassiguientesinstruccionesparacambiarlosreglasdefiltrado:

    isp1:pfctlaisp1f/etc/anchor.isp1isp2:pfctlaisp2f/etc/anchor.isp2

    AestopuedesernecesariocambiarrutasoalgnaotraconfiguracinasociadaconundadoISP.

    Elesquemaesmuyflexibleyelmostradoessolounadelasopcionesposibles.

    Conesteartculosemuestralasposibilidadesdeimplementacindeunfirewallredundante,usandoOpenBSD.ComoadicionalpuedeconfigurarseelfirewallcomoconcentradordeVPNsusandoIPSec.ElsistemaoperativotienesoporteIPSecnativo,usandoeldaemonisakmpdyelcomandodeconfiguracinipsecctl.Valgaaclararquetambienpuedehacersequeesteconcentradorfuncioneenaltadisponibilidad,yaquesedisponedeldaemonsasyncdquepermitemantenerlainformacindelasVPNsestablecidasenelfirewalldebackup.

    SerecomiendaconsultarelsitiodeOpenBSD(www.openbsd.org)dondeseencontrarexcelentedocumentacineinclusolosmanualesdelosrespectivoscomandosyarchivosdeconfiguracin.Cabeaclararquetodolodescriptohasidoprobadoenlaprcticayestfuncionandoenlaactualidadenmsdeunaorganizacinyhamostradosuscapacidadesreales.

    NorbertoAltalefRedKlee

    SolucionesbasadasenSoftwareLibrewww.redklee.com.arnaltalef@redklee.com.arSanchezdeBustamante635BuenosAiresArgentinaTel:541148633074/Cel:54111550559853

    FirewallenaltadisponibilidadPgina:11de11


Top Related