Servidor Firewall Shorewall

download Servidor Firewall Shorewall

of 33

Transcript of Servidor Firewall Shorewall

ingeniera en sistemas computacionales

tpicos de redes

SHOREWALL

AlumnoS:

Guerrero Martnez Cesar AlejandroPea Olvera Jos David

CELAYA, GTO. A 11 DE junio de 2012

IntroduccinDuranteeltranscursodeldocumentorealizaremosdiferentestareas deconfiguracinenun Firewallconfuncionesdeenrutadoenunsistema conGNU/LinuxusandoladistribucinUbuntuServerLTS8.04.4,elsistema cuentacondosinterfacesdered,unaconectadadirectamenteaunroutero modemdelprovedordeInternetyotraconectadaalswitchdelaredlocal, enlaredlocalestnconectadosvariosservidoresyPCsdeusuarioas comoimpresorasenred.Lastareasmscomunesdeconfiguracin, administracinymonitorizacindeunFirewallserndescritaseneste documento,enlasiguientelistapodemosverlastareasarealizar:ConfigurarlosparametrosderedparasistemaGNU/Linuxdos interfacesdered(Multi-homed).InstalacindelosprerequisitosdelsistemaGNU/Linuxpara operarcomoRouteryFirewall.InstalacinyconfiguracinbsicadelFirewallShorewallenun sistemacondosinterfacesdered.ConfiguracindeEnnmascaramientodeIP(MASQUERADING/SNAT) para darsalidaaInternetalosusuariosdelaLANdeformaseguray controlada.CrearreglasdeFirewallparaProxyHTTPTransparente.CrearreglasdeNATPortForwarding(DNAT)pararedireccionar trficodesdeelInternetasistemasenlaredlocal.CrearreglasNATOne-to-One.ConfiguracindesistemadeLogsparaelregistrodeeventosdel FirewallShorewall.Monitorizandolasconexionesalfirewallyanchode banda.UsandoloscomandosdeoperacindelFirewallShorewall.Pararealizarlastareasantesdescritasserequierenconocimientos bsicosderedesTCP/IP,conocimientosbsicosdeadministracinde sistemasGNU/Linuxcomo:edicindearchivosdetexto,fluidezenlalnea decomandoseinstalacindepaquetes.Informacin de la red propuesta con el firewall ShorewallEnestaseccinsedescribenelesquemaderedenlaqueestar conectadoelfirewallShorewalldetallandolasconfiguracionesdelos diferentesequiposinvolucrados.Diagrama del esquema de red propuestoLaconexinalaredlocalserealizamedianteunswitchalaque estantambinconectadoslosservidores,PCseimpresorasdered,la conexinaInternetsereazaatravsdeunrouterprovistoporelISP, esunenlacede2MbpsconunpooldedireccionesIPpblicas.Elsiguientediagramadescribeelesquemadered:Figura1.EsquemadeRed

Enlasiguienteseccinsedescribenconmsdetalleslos parametrosdeconfiguracindelosequiposinvolucrados.Informacin sobre los componentes de redLosparametrosbsicosdereddeRouterdeliSPseresumeenla siguientetabla:Tabla1.InfomacindeparametrosdereddeRouterISPDireccin ValorInterfazdered EthernetDireccinMAC AA:CC:00:00:00:02DireccindeHost 10.0.99.1MascaradeSubred 255.255.255.024bitsLosparametrosdereddelfirewalldelaconexindeInternetse resumeenlasiguientetabla:

Tabla2.InfomacindeparametrosdereddeFirewall-InternetDireccin ValorInterfazdered eth1DireccinMAC 08:00:27:20:2b:09DireccindeHost 10.0.99.220MascaradeSubred 255.255.255.024bitsDireccindeBroadcast 10.0.99.255DireccindelGateway 10.0.99.1DireccinDNSPrimario 127.0.0.1(DNSCachelocal)SufijoDNS example.comLosparametrosdereddelfirewalldelaconexindelaredlocal seresumeenlasiguientetabla:Tabla3.InfomacindeparametrosdereddeFirewall-redlocalDireccin ValorInterfazdered eth0DireccinMAC 08:00:27:4c:a3:f6Direccindesubred 192.168.1.0/24DireccindeHost 192.168.221.254MascaradeSubred 255.255.255.024bitsDireccindeBroadcast 191.168.221.255Esimportantequemantengaactualizadaestainformacinsise realizancambiosenlaconfiguracindecualquiercomponentedered involucrado.Informacin de sistema operativo Ubuntu ServerEnlasiguientetablasedescribelainformacindelsistema operativoUbuntuServerusadoenlaimplementacindelfirewall:Tabla4.InformacindelsistemaoperativoUbuntuServerElemento Descripcin

SistemaOperativo UbuntuServerLTS8.04.4amd64Kernel Linux2.6.24-24-serverCPU AMDPhenom(tm)IIX2550ProcessorMemoria 256MBDiscoduro 80GBSATALosprogramasinstaladosparalasolucinsedescribenenla siguientetabla:Tabla5.ListadepaquetesadicionalesPaquete Versin DescripcinKernelLinux linux-image-2.6.24-24-server InstaladopordefaultenUbuntuServeriptables 1.3.8.0debian1-1ubuntu2 InstaladopordefaultenUbuntuServeriproute 20071016-2ubuntu2 InstaladopordefaultenUbuntuServerperl 5.8.8-12ubuntu0.4 InstaladopordefaultenUbuntuServershorewall 4.4.7 Instaladomanualmentevashorewall.netTodoslosprogramassonsoftwarelibre.Configuraciones de los parametros de red en Ubuntu ServerEnelarchivo /etc/hostname sedefineel nombredehostdelservidorfirewall.proxy.example.comEnelarchivodeconfiguracindeparametrosdered /etc/network/interfaces sedefinenlasinterfaces deredysusparametrosdeconfiguracin.Theloopbacknetworkinterfaceautoloifaceloinetloopback#InterfazLANautoeth0ifaceeth0inetstaticaddress192.168.221.254netmask255.255.255.0#InterfazWAN

autoeth1ifaceeth1inetstaticaddress10.0.99.220netmask255.255.255.0gateway10.0.99.1Enelarchivodeconfiguracin /etc/hosts se definelaresolucindenombresdehostslocal.127.0.0.1 localhost.localdomain localhost192.168.221.254 proxy.example.com proxyEnelarchvodeconfiguracin /etc/resolv.conf sedefinenlosparametrosdelos servidoresDNS.searchexample.comnameserver127.0.0.1Aseguresedetenercorrectamenteconfiguradoslosparametrosde redantesdeiniciarlainstalacinyconfiguracindelfirewall Shoerwall.Instalando los Pre requisitos para la instalacin deShorewall en Ubuntu ServerUnacorrectaimplementacindeunFirewallconShorewallsobre UbuntuServerocualquierotradistribucinGNU/Linuxrequieredelos siguientescomponentes:Netfilter -Elkernelinstalado debeincluirsoporteparafiltradodepaquetesNetfilter,en Debian/UbuntuelpaquetedekernelyaincluyeelsoporteNetfilterde formamodular,losmodulosdeIPTables/Netfilterestanenel directorio/lib/modules/`uname -r`/kernel/net/netfilter/.Paramsinformacin sobrelosparametrosdeconfiguracindelkernelrequeridosveael documento KernelConfiguration enladocumentacinoficialdeShorewall.IPTables -Elsistemadebe incluirelpaquete iptables elcual incluyeelprogramaiptables(8), iptables-save(8) e iptables-restore(8) loscualessonusadosporShorewallparaejecutarelscriptdereglasdefirewall.Serecomienda porlomenoslaversindeiptables1.3.3.iproute2 -Elsistemadebe tenerinstaladoelpaquete iproute, elcualincluyealprograma ip(8) paramostrary manipularrutas,dispositivos,policyroutingytuenelesademsdel programa tc(8) elcualesusadoparamostrary manipularlasconfiguracionesparaelcontroldetrfico.Perl -ShorewallutilizaPerl paragenerarycompilarelscriptdereglasdefirewallgeneradoa partirdelasreglasenlosarchivosdeconfiguracin.Sinotienetodosestospaquetessesuguierequelosinstaleantes deinstalarelpaquetedeShorewall,porejemplo:#apt-getinstalliptablesiprouteperlParamsinformacinacercadelosprerequisitosdeinstalacinvea lapagina ShorewallRequirements.Instalacin de Shorewall en Ubuntu ServerInstalaremoslaversinestablemsrecientedeShorewall,al momentodeescribirestedocumentoesShorewall4.4.7,descargueel paquetedelsitiooficialdeShorewallllendoalmen Downloads=>StandardDownloadSitesyelijaunrepositoriodesu preferencia.

Sideseaverlalistadedenuevasfuncionalidadesagregadas, cambiosyproblemascorregidosdelaversin4.4.7veaelarchivo releasenotes.txt.InstalamosShorewall4.4.7usandoelpaquetetar.bz2descargado desdeelsitioweb.#mkdir-p~/paquetes/shorewallDescargamoselpaquete:#cd~/paquetes/shorewall/#wgethttp://www.shorewall.net/pub/shorewall/CURRENT_STABLE_VERSION_IS_4.4/shorewall-4.4.7/shorewall-4.4.7.5.tar.bz2InstalamosShorewallenelsistema:#tarjxvfshorewall-4.4.7.5.tar.bz2#cdshorewall-4.4.7.5/#./install.shElscript install.sh copiarlosscripts, directoriosyarchivosdeconfiguracinparainiciarlaconfiguracin,la siguientetablamuestraunresumendelosarchivosydirectoriosmsrelevantes:Tabla6.ArchivosydirectoriosrelevantesdeShorewallArchivooDirectorio Proposito/sbin/shorewall Scriptdecontroldelprograma/etc/init.d/shorewall Scriptdecontroldeejecucin/etc/shorewall Directorioprincipaldearchivosdeconfiguracin/etc/shorewall/shorewall.conf Archivodeconfiguracindeparametrosgenerales/etc/shorewall/zones Archivodedefinicionesdezonesdetrfico/etc/shorewall/interfaces Archivodedefinicindeinterfacesdered/etc/shorewall/policy Archivodeconfiguracindepoliticasdetrficopredeterminadas/etc/shorewall/hosts Archivodedefinicindehostsysubredes/etc/shorewall/rules Archivodedefinicindereglasdefiltradodetrficoy NAT(exclusionesalaplitica)/etc/shorewall/routestopped Archivoquecontrolaelflojodetrficoatravsdel firewallcuandoestaenestado'stopped'./etc/shorewall/nat ArchivodeconfiguracinparareglasdeNAT(NAT1-1)/etc/shorewall/params Archivodeconfiguracinparadefinirparametrosy variablesgenerales/etc/shorewall/masq ArchivodeconfiguracinparaEnmascaramientoNAT(SNAT, MASQUERADING)

/usr/share/shorewall/ DirectoriodearchivoscomunescomoAcciones,Macros, CompiladordereglasPerl,funcionescompartidas,/etc/logrotate.d/shorewall ArchivoderotacindelogspropiosdelscriptShorewall/etc/default/shorewall Archivodeconfiguracindeparametrosdecontrolde ejecucinNotaApartirdeshorewall4.4.8nosecopianautomticamentelos archivosdeconfiguracinaldirectorio /etc/shorewall,tendrquecopiarlosdesdeel directorio configfiles,porejemplo:#cp/usr/share/shorewall/configfiles/{zones,interfaces,policy,hosts,rules,routestopped,nat,params,masq}/etc/shorewall/Enlasiguienteseccinveremoscomoconfigurarelfirewall Shorewalldesdeelinicio.Configuracin del Firewall ShorewallEnestaseccinveremoslosdiferentesparametrosdeconfiguraciny reglasparalaconfiguracindeShorewall.Introduccin a los archivos de configuracin de ShorewallComosemencionenlaseccinanterior,Shorewallusaunconjunto dearchivosdeconfiguracinparalacreacindereglasdefirewall, enrutado,controldetrficoyanchodebanda.Lamayoradelos archivosdeconfiguracinestaneneldirectorio /etc/shorewall,Shorewallgenerarunscriptde iptablesusandolosparametrosdeconfiguracinyreglasdefinidosen dichosarchivos.Parafacilitarlaadministracindelosparametrosyreglasdel firewall,Shorewalpermiteelusodevariablesdeshellparahacer referenciaainformacindeusocomnentrelosdiferenescomponentes delfirewall.Lasvariablesdeshellsedefinenenelarchivo /etc/shorewall/params delasiguienteforma:VARIABLE_FIJA=valorVARIABLE_LISTA=valor1,valor2,valor3ImportanteLaslistasseparadasporcomassonusadasenmuchoscontextosen losarchivosdeconfiguracin,lasreglasparaescribirlistas son:NodebedetenerespaciosenblancoValida: routefilter,dhcp,arpfilter

Invalida:routefilter, dhcp, arpfilterLasentradasenunalistapuedenirencualquier ordenUnejemploprctico,esdefinirlasvariablesdeshellusadaspara laconfiguracindelfirewallbasadoenlainformacinderedantes descrita:LOG=infoNET_IF=eth1LOC_IF=eth0LOC_SUBNET=192.168.221.0/24Estasvariablespuedenserreferenciadasenlosarchivosde configuracinanteponiendoelsimbolo$antesdelnombredelavariable, porejemplo,enelarchivo/etc/shorewall/interfaces:net$NET_IF detect dhcp,routefilter=1,logmartians=1Recuerdesiempreescribirlasvariablesenmayusculasrecuerdeque puedeusarlasvariablesparadefinirACLsparalistasdedireccionesIP quepuedenserusadasenlasreglastantoparaelorigenopeticinde lapeticin,olistadepuertos.,porejemplo:LOC_IP_GERENTES=192.168.221.100,192.168.221.110,192.168.221.120Recuerdenousarespaciosenblancoenlaslistas.Definicion de parametros y variables de entorno para shorewallLoprimeroqueseaconsejaaliniciarlaconfiguracindel firewallShorewallescrearlasvariablesdeshellparadefinirel entornodered,lasvariableslasescribimosenelarchivo/etc/shorewall/params,porejemplo:#LoglevelLOG=info#InterfazWANNET_IF=eth1#InterfazLANLOC_IF=eth0#SubredLANLOC_SUBNET=192.168.221.0/24#ACLsLOC_IP_SYSADMIN=192.168.221.200LOC_IP_GERENTES=192.168.221.100,192.168.221.110,192.168.221.120Esimportantequesidefinelistascadaelementodebeestar separadoporcomaysinespacios.Paramsinformacinacercadelarchivodedefinicinde parametrosveaelmanualdeshorewall-params(5).Definicin de Zonas de trfico en ShorewallShorewallvelaredenlaqueesejecutadocomocompuestapor zonas(zones).EneldiagramaEsquemade Red sepuedenapreciar2redesdiferentes,InternetyLANlas cualespuedenservistascomozonasenlaterminologade Shorewall:Figura2.Entornoderedyzonasshorewall

Laszonassondeclaradasyselesasignauntipoenelarchivo /etc/shorewall/zones.Dadaslasredesdescritasen latabladearribapodemosdefinirlassiguienteszonasde trfico.################################################################################ZONE TYPE OPTIONS IN OUT# OPTIONS OPTIONSfw firewallnet ipv4 #ZonaInternetloc ipv4 #ZonaLocalNotequeShorewalreconocealsistemafirewallcomosupropa zona.Elnombredelazonaquedesignaalfirewallensi(usualmente 'fw'comosemuestraenelarchivo)esalmacenado enunavariabledeshell $FW lacualpuedeserusada atravsdelasconfiguracionesdeShorewallparareferenciarlazona firewall.NotaLazonafwestapredefinidayaqueeselrequerimientominimo paraunfirewallstandalone,ytambinesusadaparafirewallsconms deunainterfazdered.Lazonassernusadascomoreferenciaparadefinirpoliticasy reglasdetrfico,usualmenteusandounatrficooriginadoenunazonay condestinoenotra,porejemplo:

TrficooriginadoenelInternet(zonanet)condestinoalgn serviciolocalenelfirewall,ejemploServicioSSH,VPNentre otrosTrficooriginadoenelInternet(zonanet)condestinoalgn hostenlaLAN(zonaloc),esteseraunclasicoejemplodeNAT (NetworkAddressTranslation)paraPortForwardingTrficooriginadoenlaLAN(zonaloc)condestinoelInternet (zonanet),otroejemplodeNAT,enestecasoSourceNAT EnmascaramientodeIPTrficooriginadoenlaLAN(zonaloc)condestinoelfirewall (zonafw),porejemploserviciosderedlocalescomoDHCP,DNSy/o ProxyUnaformadeasignardireccionesderedcomosubredesyhostses asociarunazonaaunainterfazdered,estaasociacinserealizaenel archivo /etc/shorewall/interfaces /etc/shorewall/hosts quesevernenlassiguientes seccines.Paramsinformacinacercadelarchivodedefinicindezonasvea elmanualde shorewall-zones(5).Asociando una zona a una interfaz de red en ShorewallLaformamsfcildeasociardireccionesderedy/ohostsauna zonaesasociandounazonaconunainterfazderedusandoelarchivo /etc/shorewall/interfaces,porejemplo:#ZONE INTERFACE BROADCAST OPTIONSnet $NET_IF detect dhcp,routefilter=1,logmartians=1loc $LOC_IF detect dhcpElejemplodefinelazona net comotodoslos hostsIPv4quesecomunicanconelfirewallatravsdelainterfazde red $NET_IF (eth1),lazona loc comotodosloshostsIPv4quesecomunicanconelfirewallatravsde lainterfazdered $LOC_IF (eth0).Esimportante notarquelacomposicindeunazonaestadefinidaenterminosdela combinacindedirecciones einterfaces.Cuandouseelarchivo /etc/shorewall/interfaces paradefinirunazona, todaslasdireccionesestnincluidas;cuandoquieradefinirunazona limitadaporunsubconjuntodedelespaciodedireccionesIPv4,debe usarelarchivo /etc/shorewall/hosts opuedeusar laopcin nets= enelarchivo /etc/shorewall/interfaces:#ZONE INTERFACE BROADCAST OPTIONSnet $NET_IF detect dhcp,blacklist,logmartians=1,nets=(!$LOC_SUBNET),nosmurfs,routefilter=1,tcpflagsloc $LOC_IF detect dhcp,nets=($LOC_SUBNET)El ejemplodearribadefinelazonanetcomotodosloshostsIPv4quese comunicanconelfirewallatravsdelainterfaz $NET_IF (eth1)exceptoparalasubred 192.168.221/0/24, lazonaloccomoloshosts192.168.221.0/24 IPv4que secomunicanconelfirewallatravsdelainterfazdered $LOC_IF (eth0).Lacomuna BROADCAST sirveparaespecificarla direccinderedBrodcast(direccindedifusin)delainterfazen particular,siusaelvalorespecial detect,Shorewall detectarlaolasdireccionesdebroadcastportusandoelsoportede AddressTypeMatch deiptablesydelkernelLinux. SielsistemausaunainterfazP-T-Pcomo ppp0 lacolumasedejaenblanco.NotaParaversisusistemafirewallsoportalacapacidad AddressTypeMatch use shorewallshow capabilities,deberobtener: AddressTypeMatch: Available.

Enlacolumna OPTIONS sedefineunalista separadaporcomasdeopcionesdecontrolparaeltrficode/paradicha zona.Elordenenelquelasopcionessonlistadasnoessigificante, soloaseguresedequenoincluirespaciosenblanco.Paraconoceruna listadelasopcionessoportadasvea shorewall-interfaces(5).ImportanteSilainterfazderedobtieneladireccinIPvaDHCPosiel sistemafirewallofreceserviciosdeDHCPparalaredlocalusela opcin dhcp.Lasreglasacercadequetrficopermitiryquetrficorechazar esexpresadoenterminosdezonas.Paramsinformacinacercadelarchivodedezonasveaelmanual de shorewall-interfaces(5).Definiendo las Poltcas de trfico en ShorewallComohemosmencionadoanteriormente,lasreglasdetrficoson definidasenterminosdezonasyahoraqueyatenemosunainterfazy hostsasociadasalaszonaspodremosdefinirlaspoliticasyreglasde firewall.Shorewallpermitedefinirpoliticasyreglasdefiltradode unafomafcilycomodaparalafciladministracindelfirewall medianteelarchivo/etc/shorewall/policy.Lapoliticapredeterminadaparalasconexionesdeunazonaaotra sedefinenenelarchivo/etc/shorewall/policy,y laspoliticasaelejirson:ACCEPT -Aceptarla conexinDROP -Ignorarlapeticnde conexin,lapeticindelaconexinesrechazadasilenciosamente.REJECT -Rechazarlaconexin conunmensajedeerroralapeticindelaconexin.Elclientede conexinrecibeunmensajedeConexinrechazadaConnection refused.Laspeticionesdeconexinpuedenserregistradas(logging)como partedelapoliticayesaltamenterecomendadoregistrarenuna bitcoralaspoliticasDROPyREJECT.Unabuenapracticadeseguridadesdefinirunapoliticadela siguientemanera: Pordefaultrechazartodaslasconexinesa excepcindeaquellasexplicitamentepermitidas.Deestaformanosfacilitarlavidaalmantenerelconjuntodereglas(Ruleset) paraelsistemafirewall.ImportanteSiempreesmsfcilcerrartodoslos"puertos"ysolopermitir unconjuntobiendefinidoenlugardeestarcerrandolos65k disponibles.Lasexcepcionesalaspoliticaspredeterminadassondefinidasen elarchivo/etc/shorewall/rules.Paracadapeticin deconexinqueentraenelfirewall,lapeticinesprimerochecada contralasreglasdefinidasenelarchvo /etc/shorewall/rules.Siningunareglahace coincidenciaconlapeticindelaconexinentonceslaprimerpolitica en/etc/shorewall/policy quehagacoincidenciaes aplicada.

Laspoliticassedefinendelasiguientemanera:################################################################################SOURCE DEST POLICY LOG LIMIT: CONNLIMIT:# LEVEL BURST MASKfw net REJECT infonet fw REJECT $LOGSeaconsejadocumentarlapoliticadefiltradodeelfirewallen unatablacomolaquesemuestraacontinuacin.Tabla7.PoliticadefiltradodetrficodelFirewallZona Zona Accin Registr DescriptionOrig Desti arenen no Logsfw net Rechazar(REJECT) S RechazareltraficooriginadoenelFirewallcondestino elInternetyregistrarenloslogslasconexiones rechazadas.net fw Rechazar(REJECT) S RechazareltraficooriginadoenelInternet(exterior) condestinoalmismofirewallyregistrarenloslogslas conexionesrechazadas.fw loc Rechazar(REJECT) S Rechazareltraficooriginadoenelfirewallcondestino ahostsenlaRedLocalyregistrarenloslogslasconexiones rechazadas.loc fw Rechazar(REJECT) S RechazareltraficooriginadoenlaLANcondestinoal firewallyregistrarenloslogslasconexionesrechazadas.Esta politicanoafectaeltraficoforwardeadohacaelInternet.loc net Rechazar(REJECT) S RechazareltraficooriginadoporloshostsenlaLANcon destinoelInternetyregistrarenloslogslasconexiones rechazadas.net all Rechazar S RechazarsilenciosamentetodoeltraficoSilenciosamente originadoen Internetcondestinoacualquier(DROP) hostorednodefinidaenuna reglaopolitica.ReglaCatch-upparaprevenirataquesdesdeel internet.Esaltamenterecomendadoregistrarenloslogseste trafico.all all Rechazar(REJECT) S Rechazartodoeltraficoconorigenydestinounazonano definidanienunapoliticaniregla.ReglaCATCHUPpara bloquearabsolutamentetodo.Esaltamenterecomendadoregistrar enloslogsestetrafico.

Enbasealatabladepoliticasdefiltradodescritaarriba podemosdescribirlaspoliticasenShorewallusandoelarchivo /etc/shorewall/policy.################################################################################SOURCE DEST POLICY LOG LIMIT: CONNLIMIT:# LEVEL BURST MASK#PoliticadeTraficooriginadoenelInternet(net)condestinoelFirewall(fw)net fw REJECT $LOG#PoliticadeTraficooriginadoenelFirewall(fw)condestinoelInternet(net)fw net REJECT $LOG#PoliticadeTraficooriginadoenelFirewall(fw)condestinolaLAN(loc)fw loc ACCEPT $LOG#PoliticadeTraficooriginadoenlaLAN(loc)condestinoelFirewall(fw)loc fw REJECT $LOG#PoliticadeTraficooriginadoenlaLAN(loc)condestinoelInternet(net)loc net REJECT $LOG#net all DROP $LOG 8/sec:30#THEFOLLOWINGPOLICYMUSTBELASTall all REJECT $LOGParamsinformacinacercadelarchivo /etc/shorewall/policy vealapginadelmanualshorewall-policy(5).Definiendo Reglas de filtrado en ShorewallEnshorewalllasreglassonexcepcionesalapolitica predeterminadadescritaenelarchivo/etc/shorewall/policy.Lasreglasdefirewallson descritasenelarchivo /etc/shorewall/rules ycomo seexplicanteriormente,paracadapeticindeconexinqueentraenel firewall,lapeticinesprimerochecadacontralasreglasdefinidasen elarchvo /etc/shorewall/rules.Siningunaregla hacecoincidenciaconlapeticindelaconexinentonceslaprimer politicaen/etc/shorewall/policy quehaga coincidenciaesaplicada.Porejemplo,sisupoliticanet2fwes REJECT ydeseaconectartealfirewalldesde InternetusandoelSecureShell(SSH)ypoderhacerpingsdesdeel Internetalfirewall.RecuerdequeSSHusaelprotocoloTCPconpuerto 22,parapermitirestasconexionescreelareglaen/etc/shorewall/rules.Seaconsejadocumentarlasreglaspermitidasenelsistema firewallusandounatablacomolasiguiente:Tabla8.ReglasdefiltradodetrficodelFirewallAccin Zona Zona Protocolo Puerto Puerto DescripcinOrigen Destino origen DestinoPERMITIR Internet Firewall TCP 22 PermitirTCP/SSHDesdeelInternethaciael FirewallPERMITIR Internet Firewall ICMP 8 PermitirPings

ImportanteElcampodestinadoparaelpuertoorigenpuededejarsevacio,lo cualindicaquesepermitecualquierpuerto,estosedeseableyaque lamayoradeaplicacionesusanunpuertoorigenaleatorio.Lasreglasdelfirewallestanenumeradasenelordenenqueson creadas.Enelfirewalleltrayectoquellevaunpaquetealatravesar porelfirewalleselsiguiente:ElfirewallrecibeunpaqueteyexaminasudireccionIPorigeny destinoyloasociaaunazona,tambinexaminaelpuertoorigeny destino,conesainformaciondeterminaelprotocoloparaesetrafico.En esemomentoelfirewalliniciaraalprincipiodelasreglas(numero1)y seirahastaelfinaldelasreglas.Cuandounpaquetehacecoincidencia conunareglaespecificada,sepuedenaplicarlasaccionesACCEPT, REJECT,DROPyopcionalmentesepuedeespecificarquedichotraficosea registradoenloslogs.Enlamayoradecasostendrquecrearlasreglasenlasseccin NEW delarchivodeconifguracin /etc/shorewall/rules.Enshorewalllasreglassedefinen,porejemplo:.........############################################################################### ReglasdeaccesoparaconexionesNuevas(EstadoNEW) ###############################################################################SECTIONNEW## TraficooriginadoenelInternetcondestinoelFirewall:net2fw#ACCEPT:$LOG net fw tcp 22 #SSHACCEPT net fw icmp 8 #Ping## TraficooriginadoenelFirewallcondestinoelInternet:fw2net#ACCEPT fw net tcp 21 #FTPACCEPT fw net tcp 22 #SSHACCEPT fw net tcp 80 #HTTPACCEPT fw net tcp 53 #DNSQueriesACCEPT fw net udp 53 #DNSQueriesACCEPT fw net udp 123 #NTPACCEPT fw net icmp 8 #PING## TraficooriginadoenlaredLOCcondestinoelFirewall:loc2fw#ACCEPT:info loc fw tcp 22 #SSHACCEPT loc fw tcp 80 #HTTPACCEPT loc fw udp 53 #DNSQueriesACCEPT loc fw udp 123 #NTPACCEPT loc fw icmp 8 #PING## TraficooriginadoenlaredLOCcondestinoelInternet:loc2net#ACCEPT loc net tcp 80 #HTTP

ACCEPT loc net tcp 110 #POP3ACCEPT loc net tcp 143 #IMAPACCEPT loc net tcp 443 #HTTPSACCEPT loc net tcp 587 #SMTPSUbmissionACCEPT loc net tcp 993 #IMAPsobreSSLACCEPT loc net tcp 995 #POP3sobreSSLACCEPT loc:$LOC_IP_GERENTES net tcp 1863 #MSNMessengerACCEPT loc net tcp 5223 #JabberSSL/TLS#LASTLINE--ADDYOURENTRIESBEFORETHISONE--DONOTREMOVEAseguresedeverificarsufirewalldesdeelInternetusandoalgun tipodePortScannerytambinprobarlasreglasdetrficooriginadoen suRedLocalcondestinoelInternetparaprotegerlaseguridaddela redinterna.Paramsinformacinyejemplosdelasreglasdeshorewallveael manualde shorewall-rules(5).Aplicando las reglas de firewallAntesdeaplicarlasreglasdeshorewallbasadasenlosarchivos recieneditadosaseguresedeusarelsubcomando check delprograma shorewall(8) paravalidarlas configuracionesreciencreadas,porejemplo:#shorewallcheckChecking...Checking/etc/shorewall/zones...Checking/etc/shorewall/interfaces...DeterminingHostsinZones...PreprocessingActionFiles...Pre-processing/usr/share/shorewall/action.Drop...Pre-processing/usr/share/shorewall/action.Reject...Checking/etc/shorewall/policy...AddingrulesforDHCPCheckingKernelRouteFiltering...CheckingMartianLogging...CheckingMACFiltration--Phase1...Checking/etc/shorewall/rules...GeneratingTransitiveClosureofUsed-actionList...Processing/usr/share/shorewall/action.RejectforchainReject...Processing/usr/share/shorewall/action.DropforchainDrop...CheckingMACFiltration--Phase2...ApplyingPolicies...ShorewallconfigurationverifiedSilasconfiguracionesfueronverificadasahoraincieshorewall conelparametro start delprograma shorewall(8),porejemplo:#shorewallstartCompiling...Compiling/etc/shorewall/zones...Compiling/etc/shorewall/interfaces...DeterminingHostsinZones...PreprocessingActionFiles...Pre-processing/usr/share/shorewall/action.Drop...Pre-processing/usr/share/shorewall/action.Reject...Compiling/etc/shorewall/policy...AddingrulesforDHCPCompilingKernelRouteFiltering...CompilingMartianLogging...CompilingMACFiltration--Phase1...

Compiling/etc/shorewall/rules...GeneratingTransitiveClosureofUsed-actionList...Processing/usr/share/shorewall/action.RejectforchainReject...Processing/usr/share/shorewall/action.DropforchainDrop...CompilingMACFiltration--Phase2...ApplyingPolicies...GeneratingRuleMatrix...Creatingiptables-restoreinput...Compilingiptables-restoreinputforchainmangle:...Shorewallconfigurationcompiledto/var/lib/shorewall/.startProcessing/etc/shorewall/params...StartingShorewall....Initializing...Processing/etc/shorewall/init...Processing/etc/shorewall/tcclear...SettingupRouteFiltering...SettingupMartianLogging...SettingupProxyARP...SettingupTrafficControl...Preparingiptables-restoreinput...Running/sbin/iptables-restore...Processing/etc/shorewall/start...Processing/etc/shorewall/started...done.Sideseaverelestadodeshorewalluseelsubcomando status delprograma shorewall(8),porejemplo:#shorewallstatusShorewall-4.4.7.5Statusatproxy.example.com-SunFeb2816:04:48CST2010ShorewallisrunningState:Started(SunFeb2816:03:28CST2010)Enestecasoelmensaje Shorewallis running nosindicaquelasreglasdefirewallfueronaplicadas.Paramsinformacinacercadelcomando shorewall vealapginadelmanualdeshorewall(8).Desactivando las reglas de filtrado de ShorewallSideseadesactivarporcompletolasreglasdefiltradoyenrutado generadasporelscriptdeShorewalldebeusarsubcomando clear delprograma shorewall(8), porejemplo:#shorewallclearProcessing/etc/shorewall/params...ClearingShorewall....Processing/etc/shorewall/stop...Processing/etc/shorewall/tcclear...Running/sbin/iptables-restore...Processing/etc/shorewall/stopped...Processing/etc/shorewall/clear...done.Podemosverqueelcambiotomoefectousandoshorewall status:#shorewallstatusShorewall-4.4.7.5Statusatproxy.example.com-SunFeb2816:09:04CST2010ShorewallisstoppedState:Cleared(SunFeb2816:08:31CST2010)Sialgunaveztieneproblemasenelsistemaydeseadescartar cualquierproblemarelacionado

alasreglasdelfirewalldesactive shorewallconelsubcomando clear.Configurando el Enmascaramiento de IP (SNAT) en ShorewallSideseaquelosequiposenlaredlocalsalganaInternetde formaseguradeberdeactivarelenmascaramientodeIPusandoelmetodo SourceNAT (SNAT).ElenmascaramientoIPbsciamentepermite3cosas:1. Protegerunaredprivada,enelcasodequelasdireccionesIP delaredprivada(LAN)usedireccionesenelrango192.168.1.0/24, enInternetloshostsnosabrnquedireccionestienendichoshosts, yaqueladireccinIPenlospaquetesoriginadosenlaLANcon destinoelInternetserenmascaradaconladireccinIPpublica asignadaalaInterfazWAN.Ademssirveparapermitirquelas maquinasenlaLANpuedanusarserviciosenelInternetsin necesidadquecadaunadelasmaquinasenlaLANtenganuna direccinIPpublicaruteable.2. HacerPortForwarding,estatecnicadeNATesusadapara redirigireltraficooriginadoenInternethacaunequpoenlaLAN oDMZ.3. NAT1-to-1oStaticNAT:estaesunamezclaentrelosdos tiposanteriores,enelcasoqueelfirewalltengamsdeuna direccinIPpublicayqueramosdirigirtodoeltraficohacaunade estasdireccinesaunequpoenlaLANoDMZyqueademstodoeltraficooriginadoenestoshostscondestinoaInternetusecomo direccinIPorigenlaIPdelNATestatico.Paraactivarelenmascaramientoprimerodebedeactivarelre enviodepaquetes(IPForwarding)enelsistema,Shorewallpermite activarelIPForwardingdesdeelarchivodeconfiguracinprincipal definiendoelparametro IP_FORWARDING enelarchivo/etc/shorewall/shorewall.conf.ImportanteEnDebian/UbuntuelIPForwardingestadesactivadooconfigurado deformaquemantengalaconfiguracinactualdelsistema.ParaactivarelIPForwardingcambieelparametro IP_FORWARDING aOnenelarchivo/etc/shorewall/shorweall.conf,porejemplo:IP_FORWARDING=OnAdicionalmentedebedeactivarelenmascaramientodelas direccionesIPdelaredsubredlocalconladireccinIPdelainterfaz deredasociadaalazonanetenelarchivodeconfiguracin /etc/shorewall/masq,porejemplo:#INTERFACE SOURCE ADDRESS PROTO PORT(S)IPSEC MARK USER/# GROUP#EnmascaramoseltrficooriginadoporlasubredlocalcondestinoelInternet$NET_IF $LOC_SUBNETSielsistemafirewalltienemsdeunadireccinIPpublica,y deseaqueeltraficodeloc2netseaenmascaradoconunadireccinIP pblicaenparticularynolaprincipal,entoncesagreguedicha direccinIPenlacolumnaADDRESS.Porejemplo,elfirewalltieneladireccinIPprincipal 10.0.99.220yladireccinIP10.0.99.221adicional,configuremos ShorewallparaqueeltraficoseaenmascaradousandoladireccinIP

adicionaleditandoelarchivo /etc/shorewall/masq delasiguientemanera:#INTERFACE SOURCE ADDRESS PROTO PORT(S)IPSEC MARK USER/# GROUP#EnmascaramoseltrficooriginadoporlasubredlocalcondestinoelInternet$NET_IF $LOC_SUBNET 10.0.99.221ParaqueladireccinIP 10.0.99.221 seactiveautomticamenteenla interfaz NET_IF debeactivarelsoporte ADD_SNAT_ALIASES enelarchivo /etc/shorewall/shorewall.conf,porejemplo:ADD_SNAT_ALIASES=YesParaaplicarelenmascaramientoverifiquelasconfiguracionesde Shorewall:#shorewallcheckChecking...Checking/etc/shorewall/zones...Checking/etc/shorewall/interfaces...DeterminingHostsinZones...PreprocessingActionFiles...Pre-processing/usr/share/shorewall/action.Drop...Pre-processing/usr/share/shorewall/action.Reject...Checking/etc/shorewall/policy...AddingrulesforDHCPCheckingKernelRouteFiltering...CheckingMartianLogging...Checking/etc/shorewall/masq...CheckingMACFiltration--Phase1...Checking/etc/shorewall/rules...GeneratingTransitiveClosureofUsed-actionList...Processing/usr/share/shorewall/action.RejectforchainReject...Processing/usr/share/shorewall/action.DropforchainDrop...CheckingMACFiltration--Phase2...ApplyingPolicies...ShorewallconfigurationverifiedAhorareapliquelasregladefirewallyenmascaramientode IP.#shorewallrestartCompiling...Compiling/etc/shorewall/zones...Compiling/etc/shorewall/interfaces...DeterminingHostsinZones...PreprocessingActionFiles...Pre-processing/usr/share/shorewall/action.Drop...Pre-processing/usr/share/shorewall/action.Reject...Compiling/etc/shorewall/policy...AddingrulesforDHCPCompilingKernelRouteFiltering...CompilingMartianLogging...Compiling/etc/shorewall/masq...CompilingMACFiltration--Phase1...Compiling/etc/shorewall/rules...GeneratingTransitiveClosureofUsed-actionList...Processing/usr/share/shorewall/action.RejectforchainReject...Processing/usr/share/shorewall/action.DropforchainDrop...CompilingMACFiltration--Phase2...ApplyingPolicies...GeneratingRuleMatrix...Creatingiptables-restoreinput...Compilingiptables-restoreinputforchainmangle:...

Shorewallconfigurationcompiledto/var/lib/shorewall/.restartProcessing/etc/shorewall/params...ShorewallisnotrunningStartingShorewall....Initializing...Processing/etc/shorewall/init...Processing/etc/shorewall/tcclear...SettingupRouteFiltering...SettingupMartianLogging...SettingupProxyARP...SettingupTrafficControl...Preparingiptables-restoreinput...Running/sbin/iptables-restore...IPv4ForwardingEnabledProcessing/etc/shorewall/start...Processing/etc/shorewall/started...done.Sideseacontrolareltrficooriginadoenlaredlocalhacael Internetuselasreglasparatrficoloc2netenelarchivo /etc/shorewall/rules y /etc/shorewall/policy.Configurando un Proxy HTTP Transparente en ShorewallEnestaseccindescribiremoselprocedimientoparaconfigurar ShorewallcomoProxyHTTPTransparente(Interceptor),endondeenel mismofirewallseejecutaunProxyHTTPSquidescuchandoenelpuerto TCP3128.Elproxysquidestaescuchandopeticionesdeloshostsenlared localenelpuerto3128,lopodemosverenelparametrohttp_portdel archivodeconfiguracindesquid/etc/squid/squid.conf,porejemplo:http_port3128Paraconfigurarelproxytransparentedebemosconfigurarlaregla parapermitirqueloshostsenlazonalocpuedanaccederalpuerto3128 delainterfazlocaldelfirewall,adems,debemospermitirtrfico salientedesdeelFirewallhacaelInternetyaqueelprocesolocal squiddebeaccederasitiosremotosusandoelprotocoloTCP/80,agregue lassiguientereglasenelarchivo/etc/shorewall/rules:## TraficooriginadoenelFirewall(fw)condestinoelInternet(net):fw2net#......ACCEPT fw net tcp 21 #FTPACCEPT fw net tcp 80 #HTTP.........## TraficooriginadoenlaLAN(loc)condestinoelFirewall(fw)#...ACCEPT loc fw tcp 3128 #SquidProxyHTTP...Ahoraagregamoslaqueredireccionartodoeltrficoproveniente delaredlocalcondestinoelpuertoTCP80enelInternethacael puerto3128localdesquid:#

# TraficooriginadoenlaLAN(loc)condestinoelInternet(net):loc2net##ProxyTransparenteREDIRECT loc 3128 tcp 80......Talvezseanecesarioexcluiralgunoshostsdestinooredesdela redireccin,porejemploenelfirewallseejecutaunservidorwebenel quesemuestrangrficasdetrfico,paraexcluirlaredireccindel puertoTCP/80hacaladireccinIPinternadelfirewallusela siguienteregla:## TraficooriginadoenlaLAN(loc)condestinoelInternet(net):loc2net##ProxyTransparenteREDIRECT loc 3128 tcp 80 - !192.168.221.254......SitienealgnservidorWebenlaredinternaytambindesea agregarloalalistadedestinosaexcluirdelaredireccinpuedeusar unalistaseparadaporcomas,porejemplo:## TraficooriginadoenlaLAN(loc)condestinoelInternet(net):loc2net##ProxyTransparenteREDIRECT loc 3128 tcp 80 - !192.168.221.254,192.168.221.4......ParaqueelSquidfuncionecomoProxyTransparenteconShorewall debetenerconfiguradoSquidcuandomenosconlossiguientes parametros:http_port3128transparentaclloc_subnetsrc192.168.221.0/24http_accessallowloc_subnetNotaEstasconfiguracionessonparaSquid2.6superior.Recarguelaconfiguracindeshorewallparaqueloscambiostomen efecto:#shorewallrestartProbablementeexisteelrequierimientodeexcluiralgunossistemas internosdeusarelproxy,esdecir,hacerqueesossistemasvayan directoalInternet,paralogrardichalaborexcluyaladireccinIPdel sistemainternoenlareglayagregueunareglaparapermitirelacceso directoalpuertoTCP/80enelInternet:ACCEPT fw net tcp 80REDIRECT loc:!192.168.221.200 3128 tcp 80 - !192.168.221.254,192.168.221.4ACCEPT loc:192.168.221.200 net tcp 80Recarguelaconfiguracindeshorewallparaqueloscambiostomen efecto.Creando una regla de DNAT Port Forwarding en ShorewallEscomuntenerelrequierimientodeaccederdesdeelInterneta algnservicioqueseejecutaenunsistemaenlaredprivada,por ejemplo:unaaplicacinweb,unaconexinSSHaun

servidorLinux internoounaconexindeescritorioremotodeWindows,estetipodeconfiguracionesenunFirewallselesuelellamarPortForwardingoPAT (PortAddressTranslation),tecnicamenteesuntipodeNATenelcualse redireccionaeltrficocondestinounoovariospuertosenlainterfaz deredWANhacaunoomspuertosenunsistemaenlaredprivada LAN.ParacrearunareglaNATdetipoPortForwardingqueenla terminologadeNetfilteryShorewallsonreglasDNAT(DestinationNAT) yaquereescribeneldestinodelapeticinoriginalagregueunaregla comolasiguiente:DNAT net loc:192.168.221.5:443 tcp 443ImportanteParaqueestareglafuncionedebeteneractivadoelsoportede IP_FORWARDINGen /etc/shorewall/shroweall.conf.Lareglaanteriordicealgoascomo,cualquieropeticinde conexinoriginadaenelInternetcondestinoalpuertoTCP443enla direccinIPpredeterminadadelFirewallredirigelohacaelpuerto TCP/443delsistemaenlaredlocalcondireccinIP 192.168.221.5.TambinpuedecrearunareglaDNATusandounpuertodiferentedel ladodelInternet,porejemplo:DNAT net loc:192.168.221.5:22 tcp 3842SidesearestringuirelaccesodesdeelInternetalservicio internopuedeagregarladireccindelhostremotooredremotaenla definicindelorigennet,porejemplo:DNAT net:4.2.2.2 loc:192.168.221.5:443 tcp 443Lareglaanteriordicealgoascomo,cualquieropeticinde conexinoriginadaenelInternetporelhost4.2.2.2condestinoal puertoTCP443enladireccinIPpredeterminadadelFirewallre dirigelohacaelpuertoTCP/443delsistemaenlaredlocalcon direccinIP192.168.221.5.SitieneunadireccinIPpblicaquedeseareservarparalas conexionesdesdeelexterioralservidorWebdelaredinternapuede crearunareglaDNATconundestinooriginaldiferntealadireccinIP pblicadelFirewall,porejemplo:DNAT net loc:192.168.221.5:80 tcp 80 - 10.0.99.222La reglaanteriordicealgoascomo,cualquieropeticindeconexin originadaenelInternetcondestinoalpuertoTCP/80enladireccinIP 10.0.99.222delFirewallredirigelohacaelpuertoTCP/80delsistema enlaredlocalcondireccinIP192.168.221.5.ImportanteShorewallnoagregarladireccinIPautomticamentenial reiniciarlo,debeagregarunaliasdeIPalainterfaz NET_IF en /etc/network/interfaces.Recarguelaconfiguracindeshorewallparaqueloscambiostomen efecto:#shorewallrestartEstetipodereglasessolorecomendadoparaunescenariosimple, paraunsistemams

complejoyseguroserecomiendamoverlosservidores conserviciospblicosaunaZonaDesmilitarizada(DMZ)ousealgntipo deVPNparaaccederalosserviciosinternosdeformasegura.Creando reglas NAT One-to-One en ShorewallElNatOne-to-Oneesunamaneradehacerquesistemasatrsdel firewallyconfiguradosconunadireccinIPprivadaaparezcancomosi tuvieranunadireccinIPpblica.LasreglasNATOne-to-Oneenrealidad sonunacombinacindeunareglaDNATyIPMasquerading.EnestecasovamosaconfigurarunareglaNATOne-to-Onepara asignarunadireccinIPpblicadedicadaparalosserviciosdecorreo electrnicohospedadosenunservidorenlaredprivada,lareglaNAT One-to-Onequeconfiguraremosharlosiguiente:TodoeltrficooriginadoenelInternetdirigidoala direccinIPpblica 10.0.99.223searedireccionadohacaelservidorSMTPconladireccinIP privada 192.168.221.4(talcomouna reglaDNAT)TodoeltrficooriginadoenelservidorSMTPconladireccin IPprivadacondestinoelInternet(incluyendorespuestasa peticionesdesdeelInternet)seaenmascaradoconladireccinIP pblica10.0.99.221(talcomounaregladeSNAT)ParaconfigurarlareglaNATOne-to-Onedescritaarribaediteel archivodeconfiguracin/etc/shorewall/nat y agreguelasiguientelnea:################################################################################EXTERNAL INTERFACE INTERNAL ALL LOCAL# INTERFACES10.0.99.223 $NET_IF 192.168.221.4 no noImportanteParaqueestareglafuncionedebeteneractivadoelsoportede IP_FORWARDINGen /etc/shorewall/shroweall.conf.Estareglasolorealizarlastareasdereescribirladireccin IPorigenydestinodelospaquetesquecoincidanconlaspeticiones, mssinembargonopermiteningunaconexinexternadesdeelInternet hacaelservidordecorreos,parapermitireltrficodelosservicios decorreoagreguelasreglasenelarchivo /etc/shorewall/rules,porejemplo:#####################################################################################################################################################ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/MARK CONNLIMIT TIME# PORT PORT(S) DEST LIMIT GROUPACCEPT net loc:192.168.221.4 tcp 443 - 10.0.99.223ACCEPT net loc:192.168.221.4 tcp 25 - 10.0.99.223ACCEPT net loc:192.168.221.4 tcp 587 - 10.0.99.223ACCEPT net loc:192.168.221.4 tcp 465 - 10.0.99.223ACCEPT net loc:192.168.221.4 tcp 110 - 10.0.99.223ACCEPT net loc:192.168.221.4 tcp 143 - 10.0.99.223ACCEPT net loc:192.168.221.4 tcp 993 - 10.0.99.223ACCEPT net loc:192.168.221.4 tcp 995 - 10.0.99.223ParaqueladireccinIP 10.0.99.221 seactiveautomticamenteenla interfaz NET_IF debe

activarelsoporte ADD_IP_ALIASES enelarchivo /etc/shorewall/shorewall.conf,porejemplo:ADD_IP_ALIASES=YesRecarguelaconfiguracindeshorewallparaqueloscambiostomen efecto:#shorewallrestartEstetipodereglasessolorecomendadoparaunescenariosimple, paraunsistemamscomplejoyseguroserecomiendamoverlosservidores conserviciospblicosaunaZonaDesmilitarizada(DMZ).Sobre el registro de eventos en Shorewall y NetfilterHayquehacernotarqueshorewallporsisolonogeneraloslogs delfirewall,shorewallutilizalasfuncionalidadesdelogsdel subsistemaNetfilter,elcualpordefaultenvaloslogsalsistemasyslogutilzandoelfacility kern,enDebian/Ubuntu dichosmensajesvanalarchivodelogs/var/log/messages.Estecomportamientotiene algunaslimitacionesquesedescribenacontinuacin:Sipones,porejemplo, kern.info en /etc/syslog.conf pararedirigirloslogsdel firewallaunarchivodiferente,estotambienrecibiramensajesde nivel5(notice)hasta0(emerg).Todoslosmensajesde kern.info iranasu destino,ynosololosmensajesdeNetfilter.ShorewallpermiteelusodeltargetULOGdeiptables/netfilter, cuandoULOGesusado,Shorewallredireccionaralosmensajesde Netfilter/iptablesqueuseneltargetULOGaunprocesollamado ulogd yesteescribiralosregistrosporejemploen unarchivoaparte,oenunabasededatos,deestaformatendremosun mejorcontroldeloslogsdelsistemaoperativoydelfirewall.Enla siguienteseccinsevelaintegracindeShorewallyulogd.Configurando el registro de eventos con Shorewall y ulogdComosemencionoenlaseccinanterior,enlaconfiguracion predeterminadadeshorewall,todosloseventosdeconexionesrechazados opermitidossonregistradosenelarchivodelog/var/log/messages,estosignificaquesemezclan mensajesgeneralesdelsistema,comomensajesdelkerneluotros servicios.Paradiferenciarloseventosdelfirewall,serecomiendainstalarelprogramaulogd,elcualseencargaderecibirlosmensajes delfirewall,mejordicho,losmensajesderegistrodeLOGdelfirewall ylosmandaaunarchivoindividual,porejemplo:/var/log/firewall.log elcualsermantenidode formaindependientealoslogsdeldemoniosyslog.Sideseamosenviarloslogsdeiptables/netfilteraunarchivo independienteynousarelsistemasysloginstalaremoselservicioulogd paradirigirloslogsalarchivo/var/log/firewall.log.Instalamosulogd:#aptitudeinstallulogdAhoraeditamoselarchivodeconfiguracindeulogd /etc/ulogd.conf parapermitirlacargadelplugin ulogd_LOGEMU eindicarleenquearchivo escribirloslogs:...plugin="/usr/lib/ulogd/ulogd_LOGEMU.so"[LOGEMU]

file="/var/log/firewall.log"sync=1Ahorareinicieeldemonioulogdparaquelosambiostomen efecto:#invoke-rc.dulogdrestartIndiquemosashorewallquelosmensajesdelfirewallestanenel archivo /var/log/firewall.logusandoelparametro LOGFILE delarchivodeconfiguracin /etc/shorewall/shorewall.conf.LOGFILE=/var/log/firewall.logElparametro LOGFILE=/var/log/firewall.log le dicealprograma shorewall(8) dondebuscarloslogs delfirewallparacuandoseusenloscomandos show log y/o logwatch.Tambindebemosdeconfigurarlosparametros TCP_FLAGS_LOG_LEVEL ySMURF_LOG_LEVEL paraqueuseneltargetULOG.TCP_FLAGS_LOG_LEVEL=$LOGSMURF_LOG_LEVEL=$LOGAhoracambieelvalordelavariabledeshellLOGenelarchivo /etc/shorewall/params paraqueahoraapunteal tarjetaULOG,porejemplo:LOG=ULOGAhorareinicieShorewallparaqueloscambiostomenefectoylos logsdelfirewallseempiecenaescribirenelarchivo /var/log/firewall.log.#shorewallrestartAhorapuedehacerunapruebahaciendotelnetaunservicioexterno elcualnoestepermitido,porejemplo:#telnet4.2.2.2Trying4.2.2.2...telnet:Unabletoconnecttoremotehost:ConnectionrefusedYveaeleventoregistradoenellog /var/log/firewall.log.#tail/var/log/firewall.logFeb2816:56:41fwproxyShorewall:fw2net:REJECT:IN=OUT=eth1 MAC=SRC=10.0.99.220DST=4.2.2.2LEN=60TOS=10PREC=0x00TTL=64ID=47678CEDFPROTO=TCP SPT=51691DPT=23SEQ=4142977104ACK=0WINDOW=5840SYNURGP=0Ahoradebemosdecrearopersonalizarelarchivodelogrotatede ulogdparaqueloslogstantodelprocesoulogd /var/log/ulog/ulogd.log ydelfirewall /var/log/firewall.log seanrotadosperiodicamente.Editeelarchivo /etc/logrotate.d/ulogd par quequededelasiguienteforma:/var/log/ulog/ulogd.log/var/log/firewall.log {missingoksharedscriptscreate640rootadmpostrotate/etc/init.d/ulogdreloadendscript}Ahorasipuedeusarellegendariotailparamonitorizarloslogs delfirewall,porejemplo:#tail-f/var/log/firewall.logSerecomiendausarMultitailparamonitorizarloslogsdel firewallusandounesquemadecoloreadodelogsconmuchasotras capacidadesparalamonitorizacindelogs.

Instalando Multitail para monitorizacin y coloreado de Logs defirewallInstalaremoselpaquetemultitail:#aptitudeinstallmultitailEditeelarchivo/etc/multitail.conf parapersonalizarelesquema decoloreadoparaloslogsdelfirewall,alfinalagregue:##Shorewall:Linuxiptablesfirewall#colorscheme:shorewall:LinuxIPtables(2.6.xkernel)cs_re:cyan::cs_re:blue:^.......:..:..cs_re_s:red:Shorewall.*:.*(DPT=[0-9]*)cs_re_s:yellow:Shorewall.*:(IN=[^]*)cs_re_s:magenta:Shorewall.*:.*(OUT=[^]*)cs_re_s:cyan:Shorewall.*:.*(SRC=[^]*)cs_re_s:red:Shorewall.*:.*(DST=[^]*)cs_re_s:green:Shorewall.*:.*(PROTO=[^]*)cs_re_s:green:Shorewall:.*:.*(ACCEPT)cs_re_s:red:Shorewall:.*:.*(REJECT)#FIREWALLcs_re_s:blue:Shorewall:.*(fw2net)cs_re_s:blue:Shorewall:.*(fw2loc)cs_re_s:blue:Shorewall:.*(fw2dmz)cs_re_s:blue:Shorewall:.*(fw2vpn)#LOCcs_re_s:blue:Shorewall:.*(loc2fw)cs_re_s:blue:Shorewall:.*(loc2net)cs_re_s:blue:Shorewall:.*(loc2dmz)cs_re_s:blue:Shorewall:.*(loc2vpn)#DMZcs_re_s:blue:Shorewall:.*(dmz2fw)cs_re_s:blue:Shorewall:.*(dmz2net)cs_re_s:blue:Shorewall:.*(dmz2loc)cs_re_s:blue:Shorewall:.*(dmz2vpn)#VPNcs_re_s:blue:Shorewall:.*(vpn2fw)cs_re_s:blue:Shorewall:.*(vpn2net)cs_re_s:blue:Shorewall:.*(vpn2loc)cs_re_s:blue:Shorewall:.*(vpn2dmz)#NETcs_re_s:red:Shorewall:.*(net2fw)cs_re_s:red:Shorewall:.*(net2loc)cs_re_s:red:Shorewall:.*(net2dmz)cs_re_s:red:Shorewall:.*(net2all)Antesdepoderusarmultitailconesteesquemaserecomiendacrear unarchivodeconfiguracinparaelcontroldeejecucindemultitail paraelusuariorootparadesactivarelchequeodecorreos.#echo"check_mail:0">>~/.multitailrcAhorapuedeejecutarelcomandomultitailconelesquema shorewall,porejemplo:#multitail-cSshorewall-i/var/log/firewall.logUsandomultitailyelesquemashorewallloslogsdelfirewallse debendeveralgoas:

Figura3.MultitailShorewallLogsSilodesea,puedecrearunaliasdelshellparafacilitarla monitorizacindeloslogs,editeelarchivodealiasdelshellbash, porejemplo:#vim~/.bash_aliasesAgregueelaliasfwlogs:#FirewallShorewalllogsaliasfwlogs='multitail-cSshorewall-i/var/log/firewall.log'Paraquelosaliasdefinidosenelarchivo ~/.bash_aliases seancreadosaliniciodesesinediteel~/.bashrc:#vim~/.bashrcYdescomenteelbloque if que hacesourcealarchivo ~/.bash_aliases:#Aliasdefinitions.#Youmaywanttoputallyouradditionsintoaseparatefilelike#~/.bash_aliases,insteadofaddingthemheredirectly.#See/usr/share/doc/bash-doc/examplesinthebash-docpackage.if[-f~/.bash_aliases];then.~/.bash_aliasesfiAhorareinicielasesinohagasourcedelarchivo ~/.bashrc paracargarlosnuevosaliases:#.~/.bash_aliasesYuseelalias fwlogs parasustareas rutinariasdemonitorizacindelogs.Usando iftop para monitorizar el uso del ancho de bandaEsimpoirtantequemonitoriceconstantementeelusodelanchode banda,yaseadeconexionesentrantesosalientes,unejemplo,checar quelosusuariosnoconsumantodoelanchodebandaendescargasde Internet.Instaleelpaqueteiftop:#apt-getinstalliftopCreamos3archivosdeconfiguracinparaelcontroldela ejecucindeiftop,cada

configuracinmonitorizareltrficoasociado alaszonas.Creamosarchivodeconfiguracinparatrficoloc2net ~/.iftoprc.loc2net:interface:eth0#dns-resolution:yesport-resolution:yes#show-bars:yesport-display:onuse-bytes:yes#show-totals:yesmax-bandwidth:2M#filter-code:notdsthost192.168.221.1filter-code:notport53andnotport22Ahorauseelprogramaiftopasparamonitorizareltrficodela redlocalhacaelInternet.#iftop-c/root/.iftoprc.lan2netLainterfazdeiftopseveralgoas:Figura4.Iftoptrficoloc2netCreamosarchivodeconfiguracinparatrficofw2net ~/.iftoprc.fw2net:interface:eth1#dns-resolution:yesport-resolution:yes#show-bars:yesport-display:onuse-bytes:yes#show-totals:yesmax-bandwidth:2M#filter-code:notdsthost192.168.221.1#filter-code:notport53andnotport22Ahorauseelprogramaiftopasparamonitorizareltrficodela redlocalhacaelInternet.#iftop-c/root/.iftoprc.fw2netPuedecrearunaliasenelarchivo ~/.bash_aliases:#Monitoreotraficoyanchodebanda

aliasiftop-loc2net="iftop-c/root/.iftoprc.loc2net"aliasiftop-fw2net="iftop-c/root/.iftoprc.fw2net"Hagasourcealarchivo ~/.bash_aliases para detectarlosaliases.Administracin del firewall ShorewallEnestaseccinveremoslasoperacionesdeadministracinms comunesdeunfirewallShorewallenUbuntuServer.Verificando la configuracin de ShorewallCuandomodifiquelosarchivosdeconfiguracindeShorewall siempreesrecomendableverificarquelosarchivosnocontienenerrores desintaxis,useelsubcomandocheckparaverificarlas configuraciones:#shorewallcheckSilasconfiguracionesestanbienentoncesverelmensaje Shorewallconfigurationverified elcualleindicaquelasconfiguracionesestnbien,ypuedeejecutarel comandorequeridoparaaplicarlasnuevasreglas,delocontrario corrigaelerror.Controlando la ejecucin de ShorewallEnestaseccinveremosloscomandosparacontrolarlaejecucin deShorewall.Iniciando ShorewallCuandoseejecutaelprogramashorewallconelparametrostart Shorewallcompilalasreglasgeneradasapartirdelosarchivosde configuracinygeneraunscriptparaserejecutado,unavezqueel scriptfuejecutadoshorewallterminosutrabajo,esdecir,nohay ningundemoniollamadoshorewall,entonceselfiltradoesrealizado porelsubsistemadefiltradoNetfilterdelkerneldeLinux.Useelcomandoshorewallstartparainicializarelconfuntode reglasdefiltradoyconfiguracionesdeenrutadobsicoenel sistema.#shorewallstartSielcomandodevuelveelmensaje done. significaqueelscriptsecompilo correctamenteylasreglasfueronaplicadas.Paramayorseguridadaliniciarelfirewalluseelsubcomando safe-start.Activando el firewall Shorewall al inicio del sistemaParaquelasreglasdelfirewallShorewallseanaplicadasal iniciodelsistemadeformaautomticaediteelarchivo /etc/default/shorewall ycambieelvalordel parametro startup a1,porejemplo:startup=1Elinstaladordeshorewallconfiguroelsistemaparaque shorewallseainiciadoautomticamentesiempreycuandoelparametro startupenelarchivo /etc/default/shorewalleste en1.Deteniendo ShorewallSedeseadetenerlasreglasdelfirewallpuedeusarelsub comandostop,porejemplo:

#shorewallstopElcomandostopdetieneelfirewall.Todaslasconexiones existentessonrechazadas,exceptoaquelaslistadasen /etc/shorewall/routestopped opermitidasporla opcinADMINISABSENTMINDED enelarchivode configuracin/etc/shorewall/shorewall.conf. Elnicotrficonuevo permitidoatravsdelfirewallisdesistemaslistadosen/etc/shorewall/routestopped opermitidasporla opcin ADMINISABSENTMINDED lacualpermitequelas conexionesactivasenelmomentoenelqueShorewallsedetuvocontinuarntrabajandoascomolasnuevasconexionesoriginadasenel firewallytrficoDHCPsiesquelaopcindhcpseusoenalguna interfaz.Elformatodelarchivo /etc/shorewall/routestopped esel siguiente:TODORe iniciando ShorewallSimodificolasreglasopoliticasdelfirewalldebede reiniciarorecargarlasreglasusandoelsubcomando restart,recuerdesiempreejecutar shorewallcheck antesdeaplicarcambiosalas reglasdelfirewall.#shorewallrestartParamayorseguridaduseelsubcomando safe-restart.Desactivando ShorewallSideseadesactivarporcompletolasreglasdefiltradoy enrutadogeneradasporelscriptdeShorewalldebeusarsubcomando clear delprograma shorewall(8), porejemplo:#shorewallclearProcessing/etc/shorewall/params...ClearingShorewall....Processing/etc/shorewall/stop...Processing/etc/shorewall/tcclear...Running/sbin/iptables-restore...Processing/etc/shorewall/stopped...Processing/etc/shorewall/clear...done.Podemosverqueelcambiotomoefectousando shorewall status.Iniciando y Re iniciando Shorewall de forma seguraReiniciarShorewallusandoelsubcomandoshorewallrestart algunasvecespuedeseralgoarriesgadosillegaacometeralgunerror enlasreglasdefiltrado,unproblemacomnesquerechaceeltrfico deSSHyyanopuedaaccederalsistemadeformaremota.Shorewallproveelossubcomandossafe-startysafe-restartpara reiniciarelfirewalldeformasegura.Estossubcomandosverificany aplicanlasnuevasreglassolosiustedlasapruebaexplicitamente precionandoYenelshell,porejemplo:#shorewallsafe-restartCompiling...Compiling/etc/shorewall/zones...Compiling/etc/shorewall/interfaces...DeterminingHostsinZones...PreprocessingActionFiles...Pre-processing/usr/share/shorewall/action.Drop...

Pre-processing/usr/share/shorewall/action.Reject...Compiling/etc/shorewall/policy...AddingrulesforDHCPCompilingKernelRouteFiltering...CompilingMartianLogging...Compiling/etc/shorewall/masq...CompilingMACFiltration--Phase1...Compiling/etc/shorewall/rules...GeneratingTransitiveClosureofUsed-actionList...Processing/usr/share/shorewall/action.RejectforchainReject...Processing/usr/share/shorewall/action.DropforchainDrop...CompilingMACFiltration--Phase2...ApplyingPolicies...GeneratingRuleMatrix...Creatingiptables-restoreinput...Compilingiptables-restoreinputforchainmangle:...Shorewallconfigurationcompiledto/var/lib/shorewall/.startStarting...Processing/etc/shorewall/params...StartingShorewall....Initializing...Processing/etc/shorewall/init...Processing/etc/shorewall/tcclear...SettingupRouteFiltering...SettingupMartianLogging...SettingupProxyARP...SettingupTrafficControl...Preparingiptables-restoreinput...Running/sbin/iptables-restore...Settingupdynamicrules...IPv4ForwardingEnabledProcessing/etc/shorewall/start...Processing/etc/shorewall/started...done.Doyouwanttoacceptthenewfirewallconfiguration?[y/n] yNewconfigurationhasbeenacceptedSiporalgunaraznsebloquealacomunicacinSSHconel firewallynopuedepresionaryenlosprximos 60segundos entoncesShorewallusarlasreglas queaplicoenelltimostartorestart.SInoaproboloscambiosentoncespodrvolveraconectarseal firewallycorregirloscambios.Mostrando informacin relevante del firewall ShorewallMostrandolaversindeShorewall:#shorewallversion4.4.7.5Mostrandoloscapacidadesdelfirewall:#shorewallshowcapabilitiesShorewallhasdetectedthefollowingiptables/netfiltercapabilities:NAT:AvailablePacketMangling:AvailableMulti-portMatch:AvailableExtendedMulti-portMatch:AvailableConnectionTrackingMatch:AvailableExtendedConnectionTrackingMatchSupport:Notavailable

OldConnectionTrackingMatchSyntax:NotavailablePacketTypeMatch:AvailablePolicyMatch:AvailablePhysdevMatch:AvailablePhysdev-is-bridgedSupport:AvailablePacketlengthMatch:AvailableIPrangeMatch:AvailableRecentMatch:AvailableOwnerMatch:AvailableIpsetMatch:NotavailableCONNMARKTarget:AvailableExtendedCONNMARKTarget:AvailableConnmarkMatch:AvailableExtendedConnmarkMatch:AvailableRawTable:AvailableIPP2PMatch:NotavailableCLASSIFYTarget:AvailableExtendedREJECT:AvailableRepeatmatch:AvailableMARKTarget:AvailableExtendedMARKTarget:AvailableExtendedMARKTarget2:NotavailableMangleFORWARDChain:AvailableComments:AvailableAddressTypeMatch:AvailableTCPMSSMatch:AvailableHashlimitMatch:AvailableOldHashlimitMatch:AvailableNFQUEUETarget:AvailableRealmMatch:AvailableHelperMatch:AvailableConnlimitMatch:NotavailableTimeMatch:NotavailableGotoSupport:AvailableLOGMARKTarget:NotavailableIPMARKTarget:NotavailableLOGTarget:AvailablePersistentSNAT:NotavailableTPROXYTarget:NotavailableFLOWClassifier:NotavailableMostrandoelestadodeejecucindeShorewall:#shorewallstatusShorewall-4.4.7.5Statusatproxy.example.com-SunFeb2821:56:52CST2010ShorewallisrunningState:Started(SunFeb2816:56:22CST2010)Mostrandolaszonas:#shorewallshowzonesShorewall4.4.7.5Zonesatproxy.example.com-MonMar 101:36:55CST2010fw(firewall)net(ipv4)eth1:0.0.0.0/0!192.168.221.0/24loc(ipv4)eth0:192.168.221.0/24eth0:224.0.0.0/4Mostrandolaspoliticasdefiltrado:#shorewallshowpolicies

Shorewall4.4.7.5Policiesatproxy.example.com-SunFeb2821:55:57CST2010fw => net REJECTusingchainfw2netfw => loc ACCEPTusingchainfw2locnet => fw REJECTusingchainnet2fwnet => loc DROPusingchainnet2locloc => fw REJECTusingchainloc2fwloc => net REJECTusingchainloc2netMostrandolainformacinderedTCP/IP:#shorewallshowipShorewall4.4.7.5IPatproxy.example.com-SunFeb2821:46:29CST20101:lo:mtu16436qdiscnoqueueinet127.0.0.1/8scopehostlo2:eth0:mtu1500qdiscpfifo_fastqlen1000inet192.168.221.254/24brd192.168.221.255scopeglobaleth03:eth1:mtu1500qdiscpfifo_fastqlen1000inet10.0.99.220/24brd10.0.99.255scopeglobaleth1Mostrandolasconexionesestablecidas:#shorewallshowconnectionsShorewall4.4.7.5Connections(5 outof 8192)atproxy.example.com-SunFeb2821:58:21CST2010udp 173src=10.0.99.220dst=201.155.229.129sport=123dport=123packets=1bytes=76src=201.155.229.129dst=10.0.99.220sport=123dport=123packets=1bytes=76mark=0secmark=0use=1tcp 6431999ESTABLISHEDsrc=10.0.99.199dst=10.0.99.220sport=58485dport=22packets=9370bytes=701623src=10.0.99.220dst=10.0.99.199sport=22dport=58485packets=6382bytes=1093776[ASSURED]mark=0secmark=0use=1udp 1729src=10.0.99.5dst=255.255.255.255sport=68dport=67packets=20bytes=6560[UNREPLIED]src=255.255.255.255dst=10.0.99.5sport=67dport=68packets=0bytes=0mark=0secmark=0use=1udp 1726src=10.0.99.3dst=255.255.255.255sport=68dport=67packets=19bytes=6232[UNREPLIED]src=255.255.255.255dst=10.0.99.3sport=67dport=68packets=0bytes=0mark=0secmark=0use=1udp 1727src=10.0.99.6dst=255.255.255.255sport=68dport=67packets=23bytes=7544[UNREPLIED]src=255.255.255.255dst=10.0.99.6sport=67dport=68packets=0bytes=0mark=0secmark=0use=1Mostrandoloshits:#shorewallhitsShorewall4.4.7.5Hitsatproxy.example.com-SunFeb2821:59:45CST2010HITSIP DATE-------------------------710.0.99.220 Feb28HITSIP PORT------------------------710.0.99.220 23HITSDATE----------7Feb28HITS PORTSERVICE(S)-------------------7 23telnetParamsinformacindelcomandoshorweallveaelmanualde shorewall(8).