Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CursodeIptables
Por:MaikelStingaRuiz DanielFernndezGarrido
LodescargasteenlaWebdeYoshiro
ndice
Pg
3 5 6 7 9 12
LodescargasteenlaWebdeYoshiro
ConfigurarunfirewallenLinuxconiptables
Muchasson hoy endalas personasqueseconectan,deuna manerauotra,aInternet.Desdeempresasqueoperanen laredhastapersonasensuscasasquepasanunratodivertido navegandoporsuspginaspreferidas.Peropocasde estaspersonasentiendenrealmentelasconsecuenciasquetiene elabrirsussistemasinformticosaInternet,unas consecuencias que no slo son de carcter benigno e incluso beneficioso.ElbienqueobtenemosdeInternettieneun precio:Internetnoesunlugarseguro. Aligualqueencualquiersociedad,enInternetexistenbuenas intenciones,ayudas,compaerismo...perotambin existen mentes perversas y llenas de maldad. En Internet existenpersonasdecididasahacerdao,pocas,peroesun hechoqueexisten,ydebemosprotegernosdesusacciones,por insignificantesquepensemosquesomos.Escomn entrelosnavegantesmsomenoshabitualesdeInternet,que nuncahantenido,omejordicho,creenquenuncahan tenidounproblemadeseguridadensussistemas,elpensarque noesprobablequelleguenjamsarecibirunode estosataquesporelsimplehechodenoposeernadadeinters, denosernadieimportante.Estoes,claramente,falso. CualquierapuedeserpresadeunataqueenlaRed,cualquiera, porinsignificantequesepuedapensarqueunoes.Es
3
LodescargasteenlaWebdeYoshiro
precisamenteesasensacindesentirseasalvolaquehaceque seaestetipodegenteelquetome,porlogeneral,las menores precauciones, y por ello, al mismo tiempo, que se conviertanenlapresamsapetecibleparaaqullosque simplementedeseanhacerdao,porelplacerdehacerlo.Como ejemplo,valganlossorprendentesdatosrecogidospor mmismocomousuariodeunproveedordeserviciosInternet (ISP)comnenEspaa,detectandolosintentosde atacar el puerto TCP 80 (servidor web) de mi ordenador mientrasestabaconectadoaInternet,puertoquehabadejado abiertointencionadamente(aunque,naturalmente,protegiendo miservidorweb)paraguardarunlogdelosataquesque seintentabanllevaracabo.Losdatossonlossiguientes:Fechas: del19deSeptiembreal21deNoviembrede2001 Promediodehorasdeconexindiarias:1,5horas. Intentosdeataquealpuerto80/tcp:87 Lo cual nos da una idea del peligro que corre un usuario cualquieradeInternetquenotomelasprecaucionesmnimas, teniendo en cuenta que soy alguien tan insignificante como cualquierotroenlaRedyque,denoserporquedeseaba hacer ese estudio, posiblemente no hubiese podido detectar dichosataques,yporelloseguiraconsiderndomeseguro. Como dato, el 100% de los 87 ataques eran destinados a servidoresMicrosoftInternetInformationServeroMicrosoft PersonalWebServer(afortunadamenteyotengoApache),yse tratabadeintentosdeejecucindescriptsmalignos,de intentosdeejecucindecgi'speligrososydeexplotaralgntipo debufferoverflowenparmetrosdealgunosscriptsde estosservidores. Por tanto, una vez visto que el peligro existe, es la hora de hablardequesunfirewall. Unfirewalles,porlogeneral,unsoftware(puedesertambin unequipohardwarededicado)atravsdelcualnos conectamos a una red como Internet, y que sirve como filtro
4
LodescargasteenlaWebdeYoshiro
sobreeltrficoqueporlpasa,enambasdirecciones,y que en un momento dado puede rechazar cierto trfico en algunadelasdirecciones. Esoquieredecirque,medianteunfirewall,podemosdetectarel trficonodeseadohacianuestrossistemas,yen general, los posibles ataques de que seamos objeto. De esta manerapodremosaislarnuestrosequiposdelexterior, permitiendonuestrousodeInternetdemaneraabsolutamente normalperominimizandoenloposiblelaprobabilidadde padecerlasconsecuenciasdeunataque. As pues, ante la pregunta Necesito un firewall? queda ya suficientementepatentequelarespuestaes,sinlugara ningunaduda,s. Este artculo cubrir la configuracin de un tpico firewall domstico,quepermitaconectarseaInternetdeunamanera seguraycerrarlospuertosTCPyUDPquenospuedancausar problemas.
Quesiptables?
iptableseslaherramientaquenospermiteconfigurarlasreglas delsistemadefiltradodepaquetesdelkerneldeLinux, desde su versin 2.4 (en 2.2 era ipchains). Con esta herramienta, podremos crearnos un firewall adaptado a nuestras necesidades. Su funcionamiento es simple: a iptables se le proporcionanunasreglas,especificandocadaunadeellas unas determinadas caractersticas que debe cumplir un paquete.Adems,seespecificaparaesareglaunaaccino target.Lasreglastienenunorden,ycuandoserecibeoseenva unpaquete,lasreglasserecorrenenordenhastaque lascondicionesquepideunadeellassecumplenenelpaquete, ylareglaseactivarealizandosobreelpaquetelaaccin quelehayasidoespecificada.Estasaccionesseplasmanenlos
5
LodescargasteenlaWebdeYoshiro
quesedenominantargets,queindicanloquesedebe hacerconelpaquete.Losmsusadossonbastanteexplcitos: ACCEPT,DROPyREJECT,perotambinhayotros que nos permiten funcionalidades aadidas y algunas veces interesantes:LOG,MIRROR...Encuantoalospaquetes,el totaldelsistemadefiltradodepaquetesdelkernelsedivideen trestablas,cadaunaconvariaschainsalasquepuede pertenecerunpaquete,delasiguientemanera.
filter:Tablapordefecto,paralospaquetesqueserefierana nuestramquina INPUT:Paquetesrecibidosparanuestrosistema FORWARD:Paquetesenrutadosatravsdenuestrosistema OUTPUT:Paquetesgeneradosennuestrosistemayqueson enviados nat:Tablareferidaalospaquetesenrutadosenunsistema conMasquerading PREROUTING:Paraalterarlospaquetessegnentren OUTPUT:Paraalterarpaquetesgeneradoslocalmenteantes deenrutar POSTROUTING:Paraalterarlospaquetescuandoestna puntoparasalir mangle:Alteracionesmsespecialesdepaquetes PREROUTING:Paraalterarlospaquetesentrantesantesde enrutar OUTPUT: Para alterar los paquetes generados localmente antesdeenrutar Dadoqueelsoporteparaelfirewallestintegradoenelkernel deLinux(Netfilter),parapoderusariptablestendremos queasegurarnosdequenuestroncleoadmiteelusodeiptables yqueaadimosalaconfiguracindelncleotodos aquellos targets que vayamos a necesitar (aunque siempre es buenotenerlosmsposibles).
6
LodescargasteenlaWebdeYoshiro
Caractersticasdelfirewallacrear
Para crear nuestro sencillo firewall domstico, tendremos primeroquepreguntarnosquesloquedeseamosquehaga. Lo ms usual, en un equipo que se usa para conexiones a Internetdemaneranormal(noesservidordenada,etc...) esquedeseemosdenuestrofirewalllosiguiente: Que nos permita realizar conexiones TCP hacia afuera de nuestramquina(sino,nopodramoshacercasinada). Que no permita realizar conexiones TCP desde afuera hacia nuestramquina,paraevitarquealguienintenteconectarsea nuestrosservidoresweb,ftp,telnet,X... Que permita el trfico de paquetes TCP (paquetes que no establezcan conexiones) en ambas direcciones, pues necesitamos trfico bidireccional de paquetes al usar casi cualquiercosaenInternet. QueProhbaeltrficoUDPdesdeafueradenuestramquina, a excepcin del necesario para las respuestas por parte de nuestrosservidoresDNS,queprovendrndesupuertoUDP 53. En caso de tener una intranet, que no aplique estas restricciones al trfico proveniente de y enviado hacia la intranet, ya que en esta red interna probablemente s nos interesepoderaccederremotamenteanuestramquina.
Usobsicodeiptables
Para crear nuestro firewall, necesitaremos ejecutar algunos comandosbsicossobreiptables,como:Paracrearuna nueva regla al final de las ya existentes en una chain determinada:
LodescargasteenlaWebdeYoshiro
Paratodaslasreglasdeunachaindeterminada: $/sbin/iptablesF[chain] Paralistarlasreglasdeunachaindeterminada: $/sbin/iptablesL[chain] La especificacin de reglas se hace con los siguientes parmetros(especificandoaquellosquesenecesite): p[protocolo]:Protocoloalqueperteneceelpaquete. s [origen]: direccin de origen del paquete, puede ser un nombredehost,unadireccinIPnormal,ounadireccindered (conmscara,deformadireccin/mscara). d[destino]:Aligualqueelanterior,puedeserunnombrede host,direccinderedodireccinIPsingular. i[interfazentrada]:Especificacindelinterfazporelquese recibeelpaquete. o [interfazsalida]: Interfaz por el que se va a enviar el paquete. [!]f:Especificaquelareglaserefierealsegundoysiguientes fragmentosdeunpaquetefragmentado.Siseantepone !, se refiere slo al primer paquete, o a los paquetes no fragmentados.
8
LodescargasteenlaWebdeYoshiro
Y adems, uno que nos permitir elegir qu haremos con el paquete: j[target]:Nospermiteelegireltargetalquesedebeenviar esepaquete,estoes,laaccinallevaracaboconl. Algunasde las opciones que sepermiten en los comandos de arribason: v:Modoverboso,tilsobretodoconiptablesL. n: las direcciones IP y nmeros de puertos se mostrarn numricamente(sinresolvernombres). linenumbers:Muestralosnmeroderegladecadaregla,de maneraqueseamsfcilidentificarlaspararealizar operacionesdeinsercin,borrado...
Creacindelfirewall
Paracrearnuestrofirewall,iremosintroduciendounaaunalas reglasquenecesitamos:Primeraregla:permitiremos cualquiertrficoqueprovengadenuestrointerfazdeloopback (lo),paraelloinsertaremosenelchainINPUT(quese encarga de los paquetes que llegan con destino a nuestra mquina),delatablafilterlasiguienteregla: $/sbin/iptablesAINPUTilojACCEPT Atencin:esimportanteaqurespetarlasmaysculas,pueslos nombresdelchainydeltargetsonINPUTyACCEPT,no input o accept. Segunda regla: si disponemos de intranet, permitiremostodoeltrficoqueprovengadenuestrointerfaz de red interna. Por ejemplo, imaginando que tuvisemos una ethernetenelinterfazeth0,haramos: $/sbin/iptablesAINPUTieth0jACCEPT
9
LodescargasteenlaWebdeYoshiro
Elhechodequeomitamosladireccindeorigen,dedestino... implicaquenosreferimosatodas.Terceraregla: impediremoselpasodecualquierpaqueteTCPprovinientedel exteriorqueintenteestablecerunaconexinconnuestro equipo. Estos paquetes se reconocen por tener el flag SYN asertadoylosflagsACKyFINdesasertados.Paradecirlea la regla que reconozca especficamente estos paquetes, usaremosunaopcinquesepuedeusarcuandoelprotocolodel paqueteesdeclaradocomotcp,laopcinsyn.Delasiguiente manera: $/sbin/iptablesAINPUTptcpsynjREJECTrejectwith icmpportunreachable YvemostambinelusodeunaopcindeltargetREJECT,que nos permite elegir de qu manera debe ser rechazado el paquete.Posiblesvaloressonicmpnetunreachable,icmphost unreachable,icmpportunreachable,icmpproto unreachable,icmpnetprohibitedyicmphostprohibited.Cuarta regla:Antesdedeclararquedeseamosprohibircualquiertrfico UDPhacianuestramquina,ydadoquelasreglasserecorren en orden hasta que una de ellas se activa con el paquete, tendremosqueaadirahoraunareglaquenospermitarecibir las respuestas de nuestro/s servidor/es DNS cuando nuestro sistemalesrealicealgunaconsulta.Estasrespuestas,vaUDP, saldrndelpuerto53delservidorDNS.Laregla,pues,ser: $/sbin/iptablesAINPUTpudpsourceport53jACCEPT Dondesourceportesunaopcinpresentecuandoelprotocolo esudp(tambincuandoestcp)ynospermiteeneste casoespecificarquelaconsultaprovengadelpuertodestinado alDNS.Quintaregla:Prohibimosahoraelrestodel trficoUDP.LaregladeporsimplicaatodoeltrficoUDP, perocomounpaquetesloactivarestareglasinoha activado la anterior, los paquetes UDP referentes a una
10
LodescargasteenlaWebdeYoshiro
transaccinconunservidordenombresnosevernafectados. $/sbin/iptablesAINPUTpudpjREJECTrejectwithicmp portunreachable Dadoquelostargetspordefecto(denominadospolicyopoltica) enlatablafiltersonACCEPT,siunpaquetenoactiva ninguna de las reglas, ser aceptado, de manera que no tendremosquepreocuparnosde,porejemplo,lospaquetes detrficonormaldeTCP,yaqueestossernaceptadosalno activarreglaalguna.Siahoraescribimos: $/sbin/iptablesLv Deberamosobteneralgocomo: ChainINPUT(policyACCEPT3444packets,1549Kbytes)
pktsbytestargetprotoptinoutsourcedestination 113123413KACCEPTallloanyanywhereanywhere 00ACCEPTalleth0anyanywhereanywhere 00REJECTtcpanyanyanywhereanywheretcpflags:SYN,RST,ACK/SYN rejectwithicmpportunreachable 00ACCEPTudpanyanyanywhereanywhereudpspt:domain 0 0 REJECT udp any any anywhere anywhere rejectwith icmpport unreachable
ChainFORWARD(policyACCEPT0packets,0bytes) pktsbytestargetprotoptinoutsourcedestination ChainOUTPUT(policyACCEPT15046packets,4218Kbytes) pktsbytestargetprotoptinoutsourcedestination De modo que nuestro pequeo y bsico firewall domstico ya est configurado. Nuestro equipo es ahora muchsimo ms seguro, puesto que los ataques a nuestro sistema requeriran ahoramuchamselaboracin,tiempoyesfuerzoporpartedel
11
LodescargasteenlaWebdeYoshiro
atacante,demaneraquenuestracondicindeinsignificantesya empezaraserimportantecomogarantedeseguridad.
LodescargasteenlaWebdeYoshiro
13