Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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