El teu blog de Linux en català

Configurar un tallafocs senzill amb iptables per a la nostra connexió inalàmbrica

Iptables és un potent mètode tallafocs per a GNU/Linux. De fet, és més que per a Linux; simplement, és, ja que forma part intrínseca del nucli 2.6. Bàsicament, és una utilitat de l’espai de l’usuari que, per mitjà d’ordres que generalment s’executen seqüencialment en un o diversos scripts del bash, ens permet crear un mur IP infranquejable i usar eines d’enrutament. Era anomenat ipchains per a nuclis iguals o anteriors a la sèrie 2.4. Les ordres d’iptables són sovint creades per frontends com ara el Shorewall, que l’únic que fan és embellir la interfície per a crear l’script que s’executarà. Com sempre dic: si afrontem els problemes des de la base segur que en sortirem molt més satisfets.

Hi ha bastanta literatura sobre el tema encarada a configuracions complexes, com és el cas de passarel·les per a subxarxes DMZ o tallafocs per a topologies de xarxa complicades. Jo em limitaré a explicar com crear un tallafocs d’interfície única (inalàmbrica en aquest exemple concret) per a l’usuari mig i que està pensat per a permetre les connexions de client típiques i denegar tota la resta, aquelles que podrien esdevenir insegures si serveis que no controlem hi escolten.

Vet aquí l’script:

#!/bin/sh
# TALLAFOCS SENZILL EN IPTABLES
#
echo "Executant allafocs en iptables"
#
echo "Esborrant normativa"
#
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
#
echo "Establint politica de denegacio per defecte"
#
iptables -P INPUT DROP
iptables -P OUTPUT DROP
#
echo "Establint normativa general"
#
UNIVERS="0.0.0.0/0"
#
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#
iptables -A INPUT -i wlan0 -s $UNIVERS -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# FTP (Passiu, comanda passive via prompt)
iptables -A OUTPUT -o wlan0 -d $UNIVERS -p tcp -m tcp --dport 20:21 -j ACCEPT
iptables -A OUTPUT -o wlan0 -d $UNIVERS -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
#
iptables -A OUTPUT -o wlan0 -d $UNIVERS -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -o wlan0 -d $UNIVERS -p udp --dport 25 -j ACCEPT
iptables -A OUTPUT -o wlan0 -d $UNIVERS -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -o wlan0 -d $UNIVERS -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -o wlan0 -d $UNIVERS -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -o wlan0 -d $UNIVERS -p tcp --dport 443 -j ACCEPT
#
iptables -A OUTPUT -o wlan0 -d $UNIVERS -p icmp --icmp-type echo-request -j ACCEPT

En primer lloc, diem a iptables que esborri qualsevol regla preexistent. La opció -P defineix la política per defecte del tallafocs: per a les cadenes INPUT i OUTPUT (connexions d’entrada i sortida respectivament) es denega tot. Es defineix una variable amb l’adreça IP comodí (0.0.0.0/0), que vol dir tothom.

Les comandes -A afegeixen (APPEND) regles seqüencialment al tallafocs. Les comandes -A van afegint les excepcions que permetem partint del fet que ho hem denegat TOT en un principi. També podriem haver-ho acceptat tot per defecte i, en acabat, anar restringint el necessari, però és menys segur.

Per començar, permetem a la interfície (-i) loopback entrar i sortir (permetem parlar amb nosaltres mateixos, vaja), i ho fem saltant (-j) a l’estat ACCEPT per les cadenes INPUT i OUTPUT.

Aleshores, per a la interfície inalàmbrica (aquí, wlan0) permetem totes les connexions entrants de qualsevol origen (-i wlan0, -s $UNIVERS) que derivin d’una connexió sortint preexistent. És a dir, que tota connexió que no haguem començat nosaltres no té entrada. Ho fem amb –state, i força aquí sockets establerts (ESTABLISHED) i/o relacionats (RELATED).

Finalment, diem a quins ports de destí pot connectar-se la nostra màquina. Cadena OUTPUT, qualsevol destinació (-d $UNIVERS), connexió nova (–state NEW, […]), ja que aquesta sí que la creem nosaltres, i, el més important, el protocol de transport (UDP o TCP) i el port del servei a destinació. Així, permetem connexions als ports de destí (–dport) associats als serveis FTP (passiu), SSH, SMTP, DNS, HTTP i HTTPS. També permetem l’ICMP, protocol de missatges de control, pel cas del ping sortint.

Per a acabar, salveu l’script i dieu a l’ordinador que l’executi en l’engegada, després de la configuració de la xarxa inalàmbrica, al final del segon runlevel, amb un enllaç simbòlic:

cd /etc/rc2.d
ln -s /cami/a/script.sh S95tallafocs.sh

Si no teniu gaires coneixements en el funcionament d’Internet, el que he explicat és infumable, ho sé. He tractat de simplificar-ho. Comenteu si us interessa.

Si voleu anar més enllà en els la definició de tallafocs podeu mirar aquest tutorial, que està molt bé.

Deixa un comentari

Your email address will not be published.