Assegurant la teva xarxa amb Iptables - Proxy - NAT - IDS: PART 1

Aquest post intenta aclarir una mica de com funcionen les xarxes i com convertir el nostre equip Linux en un Router que ens asseguri una mica més la nostra xarxa, ja sigui de llar i fins i tot empresarial. Així que anem a el tema:

Aquest contingut és basat en el llibre "Linux - Administració de sistema i explotació dels serveis de xarxa» - Sébastien Bobillier

Encaminament i filtrat

Per parlar i entendre sobre l'enrutament podem definir primer ¿quina és la funció de l'router ?. Per això podem dir que un router, a més de crear una xarxa i permetre connexió amb altres equips (sabent que això ho podem fer amb un AP, Switch, Hub o altres) té la capacitat de connectar dues xarxes diferents entre si.

enrutador

Com ho podem veure a la imatge, hi ha una xarxa local «10.0.1.0» que és creada pel router, i arriba a una de les seves dues interfícies. Després el router a la seva altra interfície, té una altra xarxa, amb la seva IP pública amb la qual pot connectar a Internet. La funció d'enrutament bàsicament és servir d'intermediari entre aquestes dues xarxes perquè puguin comunicar-se.

Linux com router.

De forma natural, el nucli de Linux ja té la capacitat de fer «forwarding», però per defecte ve desactivat, llavors si volem que el nostre linux pugui fer aquesta feina hem d'anar a l'arxiu.

/proc/sys/net/ipv4/ip_forward

Allà trobarem que és un arxiu que l'únic que conté és un zero «0», el que hem de fer és canviar-lo per un un «1» per activar aquest comportament. Això per desgràcia s'esborra quan reiniciem l'equip, per deixar-ho per defecte activat hem d'utilitzar la comanda:

sysctl net.ipv4.ip_forward=1

O editar directament a l'arxiu /etc/sysctl.conf. Depenent de la distribució aquesta configuració també pot estar en un arxiu en  /etc/sysctl.d/.

Per defecte nostre Linux ha de tenir una taula d'enrutament, que generalment és la configuració de la nostra xarxa lan i connexió amb el router. Si volem veure aquest enrutament podem usar dos comandos:

route -n

o

netstat -nr

Tots dos ordres haurien de tornar el mateix.

Captura de 2014 09:30:18

En general, aquesta configuració és suficient perquè el teu Linux serveixi com inici i altres equips puguin navegar a través del nostre equip. Ara bé, si volem que per exemple, el nostre Linux connecti dues o més xarxes ja siguin locals o no, podem fer ús de les rutes estàtiques.

Suposem que el meu Linux té dues interfícies de xarxa, en la primera té sortida a Internet la xarxa és 172.26.0.0 i en la segona (10.0.0.0) hi ha uns equips d'una altra xarxa local. Si volem encaminar paquets a aquesta altra xarxa podem usar:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

De forma general és:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

si donem ruta -n independentment que aquesta xarxa existeixi o no, estarà fixat aquest enrutament en la nostra taula.

Captura de 2014 09:30:18

Si volem eliminar aquest enrutament podem usar

route del -net 10.0.0.0 netmask 255.0.0.0

Iptables.

Bàsicament iptables és usat per al filtrat de paquets, sortints, entrants o altres, això fa que es converteixi en una gran eina per administrar el tràfic de la nostra xarxa. Doncs iptables així com ens permet filtrar el tràfic de el mateix equip, també permet filtrar el trànsit que passada a través d'ell. (Forwarding). Iptables pot dividir-se en taules, cadenes, i accions.

  • taules:  bàsicament poden haver dues taules, filtre, per filtrar paquets i  nit per traduir direccions, és a dir, per passar d'una xarxa a una altra.
  • cadenes: La cadena es refereix a el tipus de trànsit que desitgem filtrar o natear, és a dir, a qual trànsit anem aplicar les taules ?. i poden ser:  ENTRADA: Trànsit entrant, SORTIDA: trànsit sortint o AVANT: Trànsit que passa a través d'ell, però no és una connexió pròpia.
  • També pot aparèixer POSTROUTING, que s'usa per tractar el paquet d'una manera determinada després d'haver estat encaminament.
  • accions: Les accions bàsicament és l'acció que es va realitzar amb la cadena. Aquesta acció pot ser TIRAR que simplement destrueix aquest trànsit o ACEPTAR. que permet el tràfic fer aquesta acció.

Les regles de IPTABLES es guarden i s'executen en l'ordre que van ser creades, i si una regla suprimeix a una regla anterior, sempre queda aplicada la ultima regla en l'ordre.

Polítiques de Tallafocs.

En general, de forma natural els tallafocs treballen de dues maneres:

  1. Permetre tot el trànsit excepte, o
  2. No permetre cap trànsit excepte ...

Per aplicar polítiques s'usa IPTABLES - P CADENA ACCIÓ

On la cadena representa el tipus de trànsit (INPUT, OUTPUT, FORWARD, POSTROUTING ...) i l'acció és DROP O ACCEPT.

Vegem un exemple.

Captura de 2014 09:30:18

Aquí veiem que en principi vaig poder fer ping, després li vaig dir a IPTABLES que tot el trànsit OUTPUT (Sortint) fora DROP o no permès. Després li vaig dir a IPTABLES que ho acceptés.

Si anem a construir un tallafocs des de zero hem de sempre aplicar les regles de (No permetre cap trànsit excepte ... Per això llavors apliquem les regles

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Si s'apliquen aquestes polítiques no tindran cap tipus de connexió
.

Per tornar escrivim el mateix i reemplacem DROP per ACCEPT.

En aquest punt, ja que tot el trànsit està denegat, vam començar a dir-li al nostre IPTABLES quin és el trànsit que si pot tenir.

La sintaxi és:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

on:

cadena = INPUT, OUTPUT o FORWARD

ip_origen = Origen dels paquets, això pot ser una sola IP o una xarxa i en aquest cas hem d'especificar la mascara).

ip_destí = Cap a on es dirigeixen els paquets. això pot ser una sola IP o una xarxa i en aquest cas hem d'especificar la mascara).

protocol = Indica el protocol que fan servir els paquets (icmp, tcp, udp ...)

port = port destí de el trànsit.

acció = DROP o ACCEP.

Exemple:

Captura de 2014 09:30:19

S'apliquen les polítiques de TOT restringit.

Captura de 2014 09:30:19

Després afegim les regles per poder tenir trànsit pel port 80 HTTP i 443 HTTPS, amb el protocol TCP. Després el port 53 S'aplica perquè el client DNS doncs a resoldre els dominis, en cas contrari no navegaràs. Això funciona amb protocol udp.

La línia:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

És per les següents raons: Quan fas una petició HTTP per exemple, el teu et connectes a el port 80 de servidor, però el servidor per tornar-te la informació necessita connectar amb tu per un port qualsevol. (Generalment superior a 1024).

Com tots els nostres ports estan tancats això no s'aconseguirà si no és que obrim tots els ports superiors a 1024 (Mala idea). El que això diu és que s'accepta tot el trànsit entrant que provingui d'una connexió que jo mateix vaig establir. O sigui una connexió que en principi jo vaig iniciar.

A l'posar OUTPUT en les regles, això només s'aplica per a l'equip en qüestió, si estem fent servir el nostre equip com router per permetre aquestes connexions, hem de canviar OUTPUT per FORWARD. Atès que el trànsit passa per l'equip però no és iniciat per ell
Totes aquestes regles s'esborren després de la represa, per això cal crear scripts perquè s'inicien per defecte. Però això ho veurem en la propera

Espero que aquesta informació els hagi agradat. En la propera els parlaré de NAT, Proxy i scripts per al firewal.


12 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Rogelio Pinto va dir

    Aquesta és la base que prenen molts emprenedors per fabricar els seus propis tallafocs, per això hi ha al mercat tantes i tantes marques de tallafocs amb linux encastat, algunes bons i altres no tant.

  2.   Heber va dir

    Excel·lent article. Espero ansiós la segona part.

  3.   Milton va dir

    Molt bona explicació, em va servir per entendre el proxy del meu treball. gràcies

  4.   faustod va dir

    Hola Jlcmux,

    Excel·lent, em va agradar molt, quan estarà disponible l'altra part?

    Un salutacions i gràcies per compartir

    1.    @Jlcmux va dir

      Gràcies pel comentari.

      Jo mani l'altra part ahir, en el transcurs del dia crec que la estaran publicant.

      Salutacions.

  5.   Israel va dir

    Molt bon article amic @ Jlcmux, de debò q vaig aprendre amb el ja que em va esclarir alguns dubtes que tenia des de fa algun temps, per cert no et molestaria compartir el llibre de la font de l'article, el de Sébastien Bobillier, bé slau2s i ara a veure la 2ona part, salu2s.

    1.    @Jlcmux va dir

      Hola Gràcies per comentar Israel.

      Resulta que el llibre el tinc a físic. Però vaig trobar aquest link a Google Books. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      Crec que està complet.

  6.   Ariel va dir

    Molt bon article, afegeixo una consulta: Quina seria l'avantatge d'utilitzar linux com router, si és que hi ha alguna, pel que fa a un maquinari dedicat a això? O és només a manera d'exercici? Es que hi ha distros dedicades però no se si estan per rescatar velles pcs o proveeix una major flexibilitat en la configuració.

    1.    @Jlcmux va dir

      Bé, penso que els avantatges i desavantatges depenen de l'escenari on vagis a implementar això. Perquè segurament no vas a comprar un UTM o alguna cosa així per a la teva casa? I potser per a una empresa petita que no pugui pagar-tampoc. Igualment a manera d'exercici és bo, doncs t'ajuda a entendre tota la lògica d'això i pots configurar millor XNUMX FWall dedicat. A més de que gairebé tots aquests aparells realment el que tenen és Linux encastat.

      Salutacions.

  7.   Ariel va dir

    Hola, una pregunta, es pot generar una interfície «artificial» en linux per similar enrutament entre xarxes? (A l'estil packet tracer) per treballar amb màquines virtuals? ex si tinc eth0 (perquè tinc una sola placa clar) puc crear eth1 per fer una altra xarxa? Molt bo el tut!

    1.    ILAV va dir

      A Linux pots crear interfícies virtuals, evidentment. Si tens eth0, pots tenir eth0: 0, eth0: 1, eth0: 2 ... etc

  8.   chinoloc va dir

    Molt bo, gràcies per compartir