Sunteți pe pagina 1din 11

FIREWALLENALTADISPONIBILIDAD

NorbertoAltalef
naltalef@redklee.com.ar
RedKleeArgentina

________________________________________________________________________

1Alcances
Sedescribirenestedocumentolasventajasylaconfiguracindeunaestructurade
firewallenaltadisponibilidad,utilizandoherramientasOpenSource.

2Ventajas

Unaestructuradefirewallenaltadisponibilidadpresentalassiguientesventajas:

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

Firewallstateful.Sincronizacindeestadosdeconexiones.
Unfirewallstatefulesaquelquellevauncontroldelasconexionesestablecidas,de
maneraquepuededeterminarsiunpaqueteperteneceonoaunaconexin.
Sisedeterminaqueperteneceaunaconexin,seloaceptasinnecesidaddevalidarlo
contralasreglas.Estobrindaunanotablemejoradeperformance.
Cuandosequiereestablecerunaconfiguracindealtadisponibilidad,esnecesariocontar
conunmecanismoparaqueelfirewallqueestinactivo(backup)tengainformacindelas
conexionesyaestablecidas.
Siestonoocurre,encasodefalladelfirewallprincipalcuandoeldebackuptomesulugar
cancelartodaslasconexionesyaestablecidas.

3Propuesta

Lapropuestacontemplarlossiguientesaspectos:
1Instalarunaestructuradefirewallconequiposredundantes.
2Contarconalmenosdosaccesosinternet,provistospordistintosproveedores(ISP).
3Frenteaunafallaelusuarionodebetenerningunainterrupcindesuconexin.
4Posibilidaddeusarlosdosenlacesinternetunocomoactivoyelotrocomobackupo
tenerlosambosactivos.

4Implementacin

Paralaestructuradefirewallredundanteslapropuestaesrealizarloconunainstalacin
basadaenelsistemaoperativoOpenBSD.
LadecisindeusarOpenBSDsebasaenvariosaspectos:

FirewallenaltadisponibilidadPgina:1de11

Sistemaoperativomuyestableytotalmenteorientadodesdesuconcepcinhacia
laseguridad.
Softwaredefiltradodepaquetespf,muysencillodeusaryconmuchas
funcionalidadesintegradas.
ConfiguracindealtadisponibilidadusandoelprotocoloCARP,estabilizadadesde
hacevariasversiones.
Pseudointerfacepfsyncquepermiteconfigurarunfirewall"stateful"enalta
disponibilidad.
Instalacinmuysencilla,queocupapocoespacioendiscoyconrequerimientosde
hardwaremnimos.

Ampliandolospuntosanteriores:
1. OpenBSDesunodelossistemasoperativosmssegurosybiendiseados
disponiblesactualmente.
Peseaquelasracesdeestesistemaoperativoseremontanalosaos70enlos
primerosdasdeUNIX,OpenBSDhaevolucionadosiendoenlaactualidadun
sistemaconunfuertedesarrolloymuyusadoengrancantidaddeinstalaciones.
BSD(BerkeleySoftwareDistribution)fueunaderivacindelUnixdeAT&Tafines
delosaos70.ApartirdeBSDaprincipiosdelosaos90sederivaronNetBSDy
FreeBSD.
TheodeRaadt,queestodavaelliderdelproyecto,sesepardelproyecto
NetBSDenOctubrede1995yliberlaversin2.0deOpenBSDamediadosde
1997.
Elobjetivodelproyectoesdisponerdeunsistemaoperativocompacto,muybien
documentadoyconextremocuidadoentemasdeseguridad.
2. pfeselsoftwaredefiltradodepaquetes(packetfilter)deOpenBSD.
AdemsdefiltrartrficoTCP/IPpuedehacertambintraslacindedirecciones
(NATNetworkAddressTraslation),tambienincluyelafuncindenormalizacinde
trficoTCP/IP,ascomocontroldeanchodebanda.
Lasintaxisesmuyintuitivaypermiterealizarfirewallpotentesconarchivosde
configuracinsencillos.
AscomotodoelproyectoOpenBSD,tieneunaexcelentedocumentacin.
Estdisponibleenelkernelgenricodesdeelao2001(versinOpenBSD3.0)por
loqueesmuyestableyprobado.Atravsdelosaosselehanagregadomuchas
funcionalidades.
3. ElpropsitodeCARP(CommonAddressRedundancyProtocol)eseldepermitir
quevarioshostsenelmismosegmentodered,compartanunadireccinIP.
CARPesunaalternativagratisaVRRP(VirtualRouterRedundancyProtocol)y
HSRP(HotStandbyRouterProtocol)
ElgrupodehostsquecomparteunadireccinIPsedenomina"grupode
redundancia".
Dentrodeungrupounhostsedesignacomomasterylosdemscomobackups.
ElhostmasteresquienrespondealtrficodirigidoaladireccinIPcompartida.En
casodefalladelmaster,elhostbackupdemayorprioridadesquienpasaatener
identidaddemaster.
4. Lainterfacevirtualpfsyncexponeloscambiosenlatabladeestadosusadaporpf.
Siestainterfacevirtualseasociaaunainterfacefsicaestoscambiosdeestado
FirewallenaltadisponibilidadPgina:2de11

puedensertransmitidosaotroshosts,demaneraquetodosloshostsdeungrupo
puedantenerlainformacindelatabladeestadosdelhostmaster.
Encasodetenerquetomarsulugarlasconexionespuedenseguirsininterrupcin.
Estopermiteconfigurarfirewallsstatefulenaltadisponibilidad.
5. LainstalacindeOpenBSDquepermiteconfigurartodasestasopcionesesmuy
rpida,ocupamuypocoespacioendiscoytienebajosrequerimientosde
hardware.
Detallesdelaimplementacin
Enelsiguientegrficoserepresentanlosesquemasdeconexindeunainstalacindeun
firewallquetiene:

Dosequiposenaltadisponibilidad
Dosproveedoresdeinternet
Unazonadesprotegida.EXTERNA
Unazonadesmilitarizada.DMZ
Unazonaprotegida.INTERNA
Encadaunadelasinterfaces,cadaequipotienesupropiadireccinIPyasuvezhayuna
direccinIPdecadainterfacecarp.EstaesladireccinIPque"ven"losdemsequipos
conectados.

FirewallenaltadisponibilidadPgina:3de11

Estoes:
if1=interfacedecadaequipoenlareddelISP1.
carp1=interfacedelconjuntoenlareddelISP1.
if2=interfacedecadaequipoenlareddelISP2
carp2=interfacedelconjuntoenlareddelISP2
if3=interfacedecadaequipoenlaDMZ
carp3=interfacedelconjuntoenlaDMZ
if4=interfacedecadaequipoenlaredinterna
carp4=interfacedelconjuntoenlaredinterna
if5=interfaceentrecadaequipo
LasinterfacesiftienenunaIPdistintaencadaequipo.
Lasinterfacescarptienenunaipnica.
Comodecamosantes,enestaconfiguracinunodelosequiposseconfiguracomo
masteryesquien"maneja"laIPvirtualdecadainterface.
Elotroequiposeconfiguracomobackupysoloempiezaafuncionarantelafalladel
master.
Seutilizaunainterfacequevinculaambosequipos,queparatenerbajalatenciay
seguridadsuelesersimplementeuncablederedcruzado,espordondesetransfierenlos
paquetesdepfsync,paramantenerlastablasdeestadosincronizadas.
Cmoseenteraelhostbackupqueelhostmasterestactivo?
Lacaractersticadelprotocolocarpesquelosequiposquesonmasterseanunciancomo
activosenviandoaintervalosregularespaquetesdedatos.
Parausarcarp,senecesitaconfigurarencadainterfacedecadahostunVirtualHostID
(VHID),unadireccinIPvirtualyademsdosparmetrosquesonadvbaseyadvskew,
quecontrolancuanfrecuentementeseenvaunanuncio.
Cuandounhostrecibeanunciosconunadvbasemenoralpropio,suponequeotrohost
estactuandocomomaster.
Cuandodejaderecibirlos,comienzaaenviarlosanuncios,indicandoqueahoraesehost
tienelafuncindemaster.
Sisequierentenervarioshostbackup,sedefinelaprioridadconquedebenactuarcomo
masterasignandovalorescrecientesdelparmetroadvbase.
Todoslosparmetrosdeconfiguracindecarp,seasignanconelcomandoifconfigque
enestesistemaoperativomanejatodoslostiposdeinterfacestantoseanrealescomo
virtuales.Estosimplificamuchsimolaconfiguracin.
Paramsdetallesver:man(8)ifconfig
Amododeejemplo,veamoslaconfiguracindelainterfaceconunodelosdosISP.
Enelequipomaster:
FirewallenaltadisponibilidadPgina:4de11

ifconfigif1201.202.203.204netmask255.255.255.0
ifconfigcarp1201.202.203.210vhid1advsbase0pass1234carpdevif1
Enelequipobackup:
ifconfigif1201.202.203.205netmask255.255.255.0
ifconfigcarp1201.202.203.210vhid1advsbase10pass1234carpdevif1
Elsignificadodelosparmetroseselsiguiente:
if1:nombredelainterfacefsica(verNota)
carp1:nombredelainterfacevirtual
201.202.203.204:direccinIPdelhostmaster
201.202.203.205:direccinIPdelhostbackup
201.202.203.210:direccinIPdelainterfacevirtual
vhid:virtualhostid
advbase:valorbasequedeterminasielhostesmasterobackup
pass:passwordqueseusaparalaautenticacindelosmensajes
carpdev:interfacefsicaasociada
Nota:enOpenBSDadiferenciadeLinuxelnombredeunainterfacedependedeldriver
delkernelquelamaneje.Osealaprimerinterfacenosereth0siempre,sinoquevariar
dependiendodelamarcaymodelodelatarjetadered.(Ejemplo:em0siesunatarjeta
Intel10/100/1000,xl0siesunatarjeta3COM3c9xx).
Paraqueloscomandosdeconfiguracindecadainterfacesetomenenelboot,debe
existirporcadaunadelasinterfacesunarchivo/etc/hostname.if,dondesedebenincluir
losparmetrosquerecibeelcomandoifconfig.
Sepuedenincluirparmetrosadicionalesquefijenporejemploelmododeoperacinde
lainterface(100MBFullDuplex,etc)ytambienejecutarcomandosenelmomentodela
inicializacindelainterface.
Paramsdetallesver:man(5)hostname.if
firewallstatefulypfsync
UnadelasgrandesventajasdeutilizarOpenBSD,esqueestresueltoenformamuy
confiableysencillaelmecanismoparaqueelolosfirewalldebackuptengan
conocimientodelosestadosestablecidosenelfirewallmaster.
Esto,comodijimosantes,permiteconfigurarreglasquegenerenestadoyqueencasode
fallalasconexionesestablecidasnoseveanafectadas.
Paraestoseusalapseudointerfacepfsync.
Puedefcilmenteasociarsepfsyncconunainterfacefsica.
Paraquelosfirewallmantengansincronizadassustablasdeestado,sernecesario
solamentecrearencadaequipounarchivo/etc/hostname.pfsync0,conelsiguiente
contenido:
/etc/hostname.pfsync0:
upsyncdevif5

FirewallenaltadisponibilidadPgina:5de11

if5eselnombredelainterfacequesededicaaestasincronizacin.

Cmomanejardosproveedoresdeinternet?
Unaalternativaestenerunproveedorprincipalyotrodebackup.
Mientraselproveedorprincipalestactivoseenvaeltrficoporestaconexinysise
detectaunafallasecomienzaaenviarporeldebackup.
Otraalternativaesqueambasconexionesestnactivassimultneamente.Sibienes
perfectamenteposibleenviarelmismotipodetrficoporambasinterfaces,estoaveces
traeinconvenientesconsitiossegurosenloscualessevalidanlasdireccionesIPde
origen.
Unaalternativainteresanteesmanejarporcadaenlacedistintostiposdetrfico.Por
ejemplo,trficodenavegacin(httpyhttps)porunISPytrficodemailyotrosprotocolos
porotroISP.Encasodefalladecualquieradelosenlaces,sepuedemanejartodoel
trficoporelrestante.
Cmopuedehacerseesteruteovariable?
Todasestasfuncionalidadespuedenmanejarsedirectamenteconpocasreglasdel
sistemadefiltradodepaquetespf.
EstacapacidaddelfiltradodepaquetesdeOpenBSDesloquebrindamuchas
posibilidadesdeimplementacin.
Supongamoslossiguientesrequerimientos:
Permitirdesdelaredinternaaccesohaciainternetdelospuertosdehttpyhttps.Rutear
estetrficoporelISP1.
Permitirdesdelaredinternaaccesohaciainternetdelospuertosdepop3ysmtp.Rutear
estetrficoporelISP2.
Nopermitirtrficoiniciadoeninternethacialaredinterna.
Veamosalgunasreglasparaobtenerestafuncionalidad.
#Variables
ext_if1="if1"#interfacedondeseconectaelISP1
ext_if2="if2"#interfacedondeseconectaelISP2
int_if="if3"#interfacedondeseconectalaredinterna
www_ports="{"80443"}"#portspermitidosparanavegacin
mail_ports="{"25110"}"#portspermitidosparamail
#NATdecualquierserverdelaredinternaconlaIPdelainterfaceexterna
#correspondienteacadaISP
naton$ext_if1from$int_if:networktoany>$ext_if1
naton$ext_if2from$int_if:networktoany>$ext_if2
#Inicialmentesebloqueatodoeltrficodeentrada.
blockinlog
#Peseaquepfpuedebloqueartantoeltrficodeentradaodesalida,esms
#simplefiltrarenunadireccin.
#Elegimosfiltrareltrficodeentrada.Unavezquesepermiteeltrficodeentrada
#enunainterface,nosebloqueasusalida.Laopcinkeepstate,indicaquese
#genereunestadoparalasconexiones(firewallstateful)
FirewallenaltadisponibilidadPgina:6de11

passoutkeepstate
#AceptamosenlainterfaceinternatrficohttpyhttpsyseruteaporISP1
passinon$int_ifrouteto($ext_if1)inetprototcpfrom$int_if:networktoanyport\
$www_portskeepstate
#Aceptamosenlainterfaceinternatrficosmtpypop3yseruteaporISP2
passinon$int_ifrouteto($ext_if2)inetprototcpfrom$int_if:networktoanyport\
$mail_portskeepstate

Sepuedeobservarqueconmuypocasreglas(6entotal)seobtienelafuncionalidad
deseada.
CmodetectarfallasdeunISPycomocambiarlasreglasdefiltrado?
Paradetectarlacadadeunaconexinsedisponedeifstated.Estedaemonpuede
monitorearlasinterfacesyasuvezejecutarcomandosexternosparamonitorear
conexiones.Dependerdecadatipodeconexincomosemonitoree.
UnavezquesedetectlacadadeunISP,esnecesariocambiarlasreglasdefiltrado
pararedireccionareltrfico.Estonuevamentepuedehacerseutilizandounafuncionalidad
depf,queenestecasoeselconceptodeanchor,quepermitetenerreglasdefinidasque
puedencargarseydescargarseenformadinmicasinnecesidaddehacerloconeljuego
completodereglas,yaqueestoafectaralasconexionesexistentes,queseestn
cursandoporelISPquenofall.
Veamosestoenmsdetalle:
Eldaemonifstatedpuedeejecutarcomandosenrespuestaacambiosenelestadodelas
interfaces.Elestadodelasinterfacespuededeterminarsemonitoreandoelestadodellink
oejecutandocomandosexternos.
Tieneunarchivodeconfiguracinquees/etc/ifstated.conf
ifstatedtienedefinidos3estadosposiblesparaunlink,queson:
up:
down:
unknown:

Lainterfacefsicatieneconexinactiva.Paraunainterfacecarp,representa
queinterfaceestcomomaster.
Lainterfacefsicanotieneconexinactiva.Paraunainterfacecarp,
representaquelainterfaceestcomobackup.
Nosepuededeterminarelestadodelaconexnfsica.Paraunainterface
carpestorepresentaelestadoinit.

Enmuchoscasosestainformacinnoessuficiente.
Ennuestrocasoenparticular,perfectamentepodemostenerlinkhaciaelrouterquenos
conectaconunISPyesterouternotenerconexinhaciainternet.Senecesitaalguna
formaexternadeverificarestaconexin.
ifstatedpermiteejecutarcomandosexternosytomaraccionesverificandoelstatusque
estoscomandosretornen.
Porejemplohaciendounpingdeunospocospaqueteshaciaunserverconocido,puede
indicarsilaconexinestactiva.
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.Enestecasoenque
seamasterenambasinterfaces.
Lavariablenet,dependedelaconectividadcondosIP.Paraverificarestoseenvaun
pingconunafrecuenciade10seg(palabraclaveevery).
Estadosenifstated
ifstatedoperaconestadosytransiciones.
Cadaestadotieneunabloquedeinicioyuncuerpo.
Elbloquedeinicio,seutilizaparainicializarelestadoyseejecutacadavezquese
ingresaenesteestado.
Elcuerpodelestadosoloseejecutacuandoelestadoeselactualyocurreunevento.
Lasaccionesatomardentrodeunciertoestadonormalmenteimplicanunooms
sentenciasif.Lasposiblesaccionesincluyenejecutaruncomandousandorunodisparar
unatransicinconsetstate.
Comoejemplomostramosdelarchivodeconfiguracinusadoenlaimplementacin.
#TestdeISP1eISP2
ISP1='("/etc/ifstated.scripts/test_ispisp1"every30)'
ISP2='("/etc/ifstated.scripts/test_ispisp2"every30)'
#AmbosISPactivos
statebothup{
init{
run"/etc/ifstated.scripts/start"
}
if(!$ISP1&&$ISP2)
setstateISP1down
if!$ISP2&&$ISP1
setstateISP2down
if!($ISP1||$ISP2)
setstatebothdown
}
#FallaISP1
stateISP1down{
init{
run"/etc/ifstated.scripts/isp2"
}
if($ISP1&&$ISP2)
setstatebothup
FirewallenaltadisponibilidadPgina:8de11

if!($ISP1||$ISP2)
setstatebothdown
if!$ISP2&&$ISP1
setstateISP2down
}
#FallaISP2
stateISP2down{
init{
run"/etc/ifstated.scripts/isp1"
}
if($ISP2&&$ISP1)
setstatebothup
if!($ISP1||$ISP2)
setstatebothdown
if!$ISP1&&$ISP2
setstateISP1down
}
#AmbosISPconfalla
statebothdown{
init{
run"/etc/ifstated.scripts/start"
}
if($ISP2&&$ISP1)
setstatebothup
if($ISP1&&!$ISP2)
setstateISP2down
if($ISP2&&!$ISP1)
setstateISP1down
}

Enelscripttest_ispseejecutaparacadaISPunpingadosdireccionesconocidas.
Previamentesesetearonlasrutasnecesarias.
Conquealmenosunadelasdosdireccionesrespondaelping,seconsideraqueelISP
estactivo.
Enlosscriptsisp1eisp2secambianlasreglasdepf,demaneradeenviareltipode
trficonormalmenteenviadoporelISPquefall,porelquequedactivo.
Paraevitarcargartodaslasreglasnuevamente,seusaelconceptodeanchorquetiene
pf.
Msalldeljuegoprincipaldereglas,pfpuedecargarreglasadicionales,enpuntos
denominadosanchors.
Unanchorpuedeincluirreglas,variableseinclusootrosanchor.
Laventajadeesteesquemaesquelasreglasquetieneelanchorpuedenestarfijascon
anterioridadomodificarseenformadinmica,peroencualquiercasopuedencargarsey
descargarsesinafectarlasotrasreglas,nilosestadosyaestablecidos.

FirewallenaltadisponibilidadPgina:9de11

Paraelejemploanterior,podranagregarse2anchorluegodelasreglasdefiltrado,de
maneraquequedarancomosigue:
#AceptamosenlainterfaceinternatrficohttpyhttpsyseruteaporISP1
passinon$int_ifrouteto($ext_if1)inetprototcpfrom$int_if:networktoanyport\
$www_portskeepstate
#Aceptamosenlainterfaceinternatrficosmtpypop3yseruteaporISP2
passinon$int_ifrouteto($ext_if2)inetprototcpfrom$int_if:networktoanyport\
$mail_portskeepstate
#Anchorporfalladeisp1
anchorisp1
#Anchorporfalladeisp2
anchorisp2
Enestecasotendramosdosarchivos,conlasreglasquedebecargarcadaanchor.
Porejemplo:
/etc/anchor.isp1,deberatenerelsiguientecontenido:
#Variables
ext_if1="if1"#interfacedondeseconectaelISP1
ext_if2="if2"#interfacedondeseconectaelISP2
int_if="if3"#interfacedondeseconectalaredinterna
www_ports="{"80443"}"#portspermitidosparanavegacin
mail_ports="{"25110"}"#portspermitidosparamail
#AceptamosenlainterfaceinternatrficohttpyhttpsyseruteaporISP2
passinon$int_ifrouteto($ext_if2)inetprototcpfrom$int_if:networktoanyport\
$www_portskeepstate

/etc/anchor.isp2,deberatenerelsiguientecontenido:
#Variables
ext_if1="if1"#interfacedondeseconectaelISP1
ext_if2="if2"#interfacedondeseconectaelISP2
int_if="if3"#interfacedondeseconectalaredinterna
www_ports="{"80443"}"#portspermitidosparanavegacin
mail_ports="{"25110"}"#portspermitidosparamail
#Aceptamosenlainterfaceinternatrficosmtpypop3yseruteaporISP1
passinon$int_ifrouteto($ext_if1)inetprototcpfrom$int_if:networktoanyport\
$mail_portskeepstate
Unpardeobservaciones:
FirewallenaltadisponibilidadPgina:10de11

EnlosanchornosetrasladanlasdefinicionesdeMACROS(variables)quesehayan
hechoenlareglaprincipal,porloquedebeserincludasencadadefinicin.
Enpfeslaltimareglaquevalidelaquesetomaencuenta.
Deestamaneralosarchivos/etc/ifstated.scripts/isp1y/etc/ifstated.scripts/isp2,quese
ejecutanen/etc/ifstated.conf,tendrnlassiguientesinstruccionesparacambiarlosreglas
defiltrado:
isp1:pfctlaisp1f/etc/anchor.isp1
isp2:pfctlaisp2f/etc/anchor.isp2
Aestopuedesernecesariocambiarrutasoalgnaotraconfiguracinasociadaconun
dadoISP.
Elesquemaesmuyflexibleyelmostradoessolounadelasopcionesposibles.
Conesteartculosemuestralasposibilidadesdeimplementacindeunfirewall
redundante,usandoOpenBSD.
ComoadicionalpuedeconfigurarseelfirewallcomoconcentradordeVPNsusandoIPSec.
ElsistemaoperativotienesoporteIPSecnativo,usandoeldaemonisakmpdyel
comandodeconfiguracinipsecctl.Valgaaclararquetambienpuedehacersequeeste
concentradorfuncioneenaltadisponibilidad,yaquesedisponedeldaemonsasyncd
quepermitemantenerlainformacindelasVPNsestablecidasenelfirewalldebackup.
SerecomiendaconsultarelsitiodeOpenBSD(www.openbsd.org)dondeseencontrar
excelentedocumentacineinclusolosmanualesdelosrespectivoscomandosyarchivos
deconfiguracin.
Cabeaclararquetodolodescriptohasidoprobadoenlaprcticayestfuncionandoenla
actualidadenmsdeunaorganizacinyhamostradosuscapacidadesreales.
NorbertoAltalef
RedKlee
Solucionesbasadasen
SoftwareLibre
www.redklee.com.ar
naltalef@redklee.com.ar
SanchezdeBustamante635
BuenosAiresArgentina
Tel:541148633074/Cel:54111550559853

FirewallenaltadisponibilidadPgina:11de11

S-ar putea să vă placă și