Guia ràpida: IP Forwarding amb IPTABLES

Ja fa temsp que no escric res així que he pensat en posar alguna coseta per a que no vaja oblidant-me d’aquest blog. Hui explicaré de forma ràpida com redirigir el tràfic rebut en un port cap a una altra IP:PORT. Per a que servix? doncs per exemple si tens un pc connectat directament a Internet i vols tenir un altre pc connectat al primer fent de servidor web per exemple (el que amb un router es fa ràpidament, anomenat NAT). També servix, com en el meu cas, per a accedir a serveis instal·lats a pcs que estàn en una xarxa diferent a la meva i el linux fa de passarela entre les dues xarxes (l’altra està aïllada, no tenen gateway ni res (si fas ping no contesten a no ser que estigues al seu rang).

Ho vaig a explicar per a deixar el routing fixe a debina/ubuntu, és a dir que quan es reinicie l’equip la configuració es quede guardada.

Primer es modifica a l’arxiu /etc/sysctl.conf la línia que diu net.ipv4.ip_forward deixant-ho a 1. Després es reinicia el servici amb /etc/init.d/procps restart
I ara ja es poden aplicar les regles de l’IPTABLES per a redirigir el tràfic. En aquest cas anem a suposar que volem donar servei web (port 80) al pc2 (IP: 192.168.0.2) que està connectat al pc1 (192.168.0.1), volem utilitzar el port per defecte de la web (80) per a que l’usuari que es vulga connectar no tinga que posar cap port al navegador web.

Aquesta és l’ordre a escriure per a aquest cas:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
I per a enmascarar també la resposta i ser un NAT complet després s’afegix la següent instrucció:
iptables -t nat -A POSTROUTING -j MASQUERADE
(aquesta última és general, es a dir que es poden configurar diferents redireccions de port i finalment posar aquesta ordre)

Per supost que aquestes ordres executades a la consola no es quedaran guardades si es fa un reinici del pc, així que ens queda crear un script amb aquestes ordres i afegir-lo a l’inici del sistema per a que s’execute. Fer l’script és fàcil, copiar i pegar a un arxiu i donar permisos d’execució (chmod +x nom_del_fitxer com a ROOT).

Per a afegir un script a l’inici del sistema s’ha de modificar el fitxer /etc/rc.local i posar la ruta del script abans del exit 0.

I ja està tot dit! Ho he extret dels següents enllaços:
http://blog.desdelinux.net/como-iniciar-reglas-de-iptables-automaticamente/
http://www.ducea.com/2006/08/01/how-to-enable-ip-forwarding-in-linux/
http://blog.desdelinux.net/como-iniciar-reglas-de-iptables-automaticamente/

Nanostation II. Tallafocs

El tallafocs que porta el Nanostation és el IPTABLES de tota la vida del linux, només que a la interfície web sols pots fer unex regles en especial, que s’apliquen al CHAIN ‘FIREWALL’, que el crea l’AP al habilitar el tallafocs, aquest chain s’aplica al FORWARD i al INPUT, però no al OUTPUT.

Aleshores la millor forma de configurar el tallafocs és via SSH, si no s’ha tocat el IPTABLES pot ser coste un poc al principi. El que s’ha de tindre clar és que FORWARD s’aplica als paquets que redirigix l’AP, INPUT als paquest que li arriben a l’AP (be via wifi o be via lan) i l’OUTPUT als paquets que ixen de l’AP. A partir d’aquest punt, en qualsevol exemple i amb el man del IPTABLES (al Nanostation no hi ha man)segur que resulta fàcil configurar-ho.

Via web sols es pot especificar l’interfície d’orige, IP, protocol (sols TCP, UDP o TOTS), port i IP i por de destí, no se si em dixe alguna cosa més.  Via ssh es pot especificar més protocols, si sols es vol en INPUT, OUTPUT o FORWARD (els canvis a la web s’apliquen a INPUT i FORWARD a l’hora). L’IPTABLES del Nanostation és una versió reduïda, segons he pogut comprovar, de l’original. Per exemple la opció de –match no funciona, dóna error a l’hora d’aplicar la regla.

Després hi ha un altre problema, les regles que s’apliquen no es queden guardades, hi ha dos solucions per a aquest problema:

  • Utilitzar un script per a que aplique les regles, igual com està indicat al post de les rutes estàtiques.
  • Modificant el fitxer de configuració a ma.

Vaig a explicar el segon punt, ja que el primer ja el vaig explicar en un altre post. Es descarrega el fitxer de configuració al pc des de la web i s’obri en qualsevol editor de text, si és en windows aconselle un tipus Notepad++, si és al linux.. ja sabreu quin us agrada més a cadascú i es busquen les següents línies de text:

iptables.1.cmd=-t nat -I POSTROUTING -o eth0 -j MASQUERADE
iptables.1.status=disabled
iptables.2.status=disabled
iptables.200.status=disabled
iptables.3.status=disabled
iptables.4.cmd=-t nat -N PORTFORWARD
iptables.4.status=disabled
iptables.5.cmd=-t nat -I PREROUTING -i eth0 -j PORTFORWARD
iptables.5.status=disabled
iptables.50.cmd=-N FIREWALL
iptables.50.status=enabled
iptables.51.cmd=-A INPUT -j FIREWALL
iptables.51.status=enabled
iptables.52.cmd=-A FORWARD -j FIREWALL
iptables.52.status=enabled
iptables.53.cmd=
iptables.53.comment=
iptables.53.status=disabled
iptables.54.cmd=
iptables.54.comment=

Cada 3 línies és una regla com es pot observar en la seua enumeració. cTé més entrades, però el que no he provat a posar-li jo és més entrades de les que té el fitxer de configuració, però igual si que les accepta encara que en la web no es mostren.

Es pot obersvar que les primeres regles és per a habilitar el NAT (pot ser que no estiguen d’aquesta forma si no s’habilita el NAT) i en les altres línies que no diu res és on podem posar les nostres regles, de tota la instrucció IPTABLES que s’escriu en consola, s’escriu tot en el iptables.XX.cmd= excepte la paraula IPTABLES, en el comment= es pot posar el que vulga (és informatiu) i en status es canvia a enabled. Així ja estarà configurada la regla, es puja el fitxer de configuració modificat al AP i es carrega la configuració.

Ara cal no modificar el tallafocs des de la web ja que desconfiguraria les regles aplicades manualment, si s’accedix via web al tallafocs es poden veure regles ‘extranyes’ ja que l’AP no ha sabut interpertar-les per a treure-les via web, però s’apliquen correctament, ho he comprovat

Més informació sobre IPTABLES:

http://es.tldp.org/Manuales-LuCAS/doc-iptables-firewall/doc-iptables-firewall.pdf

http://www.elrincondelprogramador.com/default.asp?pag=articulos%2Fleer.asp&id=14