Está en la página 1de 13

LodescargasteenlaWebdeYoshiro

CursodeIptables

Por:MaikelStingaRuiz DanielFernndezGarrido

LodescargasteenlaWebdeYoshiro

ndice
Pg
3 5 6 7 9 12

1. ConfigurarunfirewallenLinuxconiptables 2. Quesiptables? 3. Caractersticasdelfirewallacrear 4. Usobsicodeiptables 5. Creacindelfirewall 6. Guardaryreusarnuestraconfiguracin


deiptables

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

$/sbin/iptablesA[chain][especificacin_de_la_regla][opciones] Parainsertarunareglaenunaposicindeterminadadelalista dereglasdeunachaindeterminada: $/sbin/iptablesI[chain][posicin][especificacin_de_la_regla] [opciones] Paraborrarunareglaenunaposicindeterminadadelalista dereglasdeunachaindeterminada: $/sbin/iptablesD[chain][posicin]

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.

Guardar y reusar nuestra configuracin de iptables


Pero,siunavezrealizadasestasconfiguraciones,apagsemos nuestroequipo,todoestoseperdera,ytendramosque volver a realizar una a una las sentencias de configuracin. Paraevitaresto,iptablescuentacondosprogramasauxiliares: iptablessave e iptablesrestore, el primero de los cuales nos permite sacar por salida estndar el contenido de nuestras tablas IP, y el seguno nos permite, a partir de la salida generada por iptablessave, recuperar la configuracin de las tablas.Demaneraqueparavolcarlaconfiguracindenuestro firewallenunficheroejecutaremos: $/sbin/iptablessavec>[fichero] Dondecesunaopcinquenospermiteguardarloscontadores del nmero de paquetes que activaron cada regla.Y, cuando queramos,podremosrecuperarlaconfiguracindelfirewallcon: $/sbin/iptablesrestorec<[fichero] En cuyo caso c tiene el mismo significado que con iptables saveEstasllamadasaiptablessaveeipatblesrestorepodrnser incluidasenlosscriptsadecuadosparaquesellevenacabode maneraautomticaenel arranquey elcierredelsistema.En casodeserusuariosdeRedHatLinux,apartirdesuversin 7.1,unavezconfiguradoelfirewallconiptablestalycomoseha descritoenesteartculo,yunavezsalvadalaconfiguracincon iptablessave en el archivo /etc/sysconfig/iptables, se pueden activar los scripts que arrancarn y cerrarn el firewall automticamentealarrancaryapagarelequipo,mediantela TextModeSetupUtility(/usr/sbin/setup),enlaseccinSystem Services.
12

LodescargasteenlaWebdeYoshiro

13

También podría gustarte