Está en la página 1de 13

LodescargasteenlaWebdeYoshiro

CursodeIptables

Por:MaikelStingaRuiz
DanielFernndezGarrido

LodescargasteenlaWebdeYoshiro

ndice
Pg

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

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

$/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