Shorewall: un tallafoc d'alt nivell per configurar servidors Linux


Configurar un tallafoc a Linux pot ser molt descoratjador per a un principiant o per a algú que no estigui molt familiaritzat amb iptables. Afortunadament, a Shorewall hi ha una solució molt fàcil d'utilitzar.

En aquest tutorial de diverses parts, us faré començar amb Shorewall i us guiaré per alguns temes més avançats amb aquest fantàstic sistema de tallafoc.

Què és Shorewall?

Shorewall és essencialment un front-end per a iptables, però és un front-end d'entorn de línia d'ordres que utilitza diversos fitxers de text per a la seva configuració. Tot i que Shorewall és un sistema de tallafocs robust que es pot escalar en xarxes molt grans que donen servei a nombroses màquines, començarem amb una configuració bàsica de dues interfícies i concretarem els conceptes bàsics.

Una configuració de dues interfícies consisteix en una màquina amb dos ports Ethernet, un d'entrada i un altre que surt a la xarxa local.

Instal·lació de Shorewall a Linux

Shorewall es pot instal·lar mitjançant les eines de gestor de paquets apt-get i yum.

$ sudo apt-get install shorewall6
$ sudo yum install shorewall6

Després de la instal·lació, hem de copiar una configuració de mostra del directori /usr/share/doc/shorewall al directori predeterminat de Shorewall /etc/shorewall.

$ sudo cp /usr/share/doc/shorewall/example/two-interfaces/* /etc/shorewall

I després cd a /etc/shorewall.

$ cd /etc/shorewall

Si fem un cop d'ull en aquest directori, veurem un munt de fitxers i un fitxer shorewall.conf. Shorewall veu la xarxa com un grup de zones diferents, de manera que el primer fitxer que volem fer-hi una ullada és el fitxer /etc/shorewall/zones.

Aquí, veiem que hi ha tres zones definides per defecte: net, loc i tot. És important tenir en compte que Shorewall tracta la pròpia màquina del tallafoc com la seva pròpia zona i l'emmagatzema en una variable anomenada $FW. Veureu aquesta variable a la resta de fitxers de configuració.

El fitxer /etc/shorewall/zones s'explica per si mateix. Tens la zona de xarxa (interfície orientada a Internet), la zona local (interfície orientada a LAN) i tot, que ho és tot.

Aquesta configuració deixa el següent:

  1. Permet totes les sol·licituds de connexió des de la zona de localització (LAN) a la zona de xarxa (Internet).
  2. Deixa anar totes les sol·licituds de connexió (ignora) de la zona de xarxa al tallafoc i a la LAN.
  3. Rebutja i registra totes les altres sol·licituds.

El bit LOG LEVEL hauria de ser familiar per a qualsevol persona que hagi administrat amb Apache, MySQL o qualsevol altre nombre d'altres programes FOSS. En aquest cas, estem dient a Shorewall que utilitzi el nivell d'informació de registre.

Si voleu tenir el vostre tallafoc disponible per administrar-lo des de la vostra LAN, podeu afegir les línies següents al fitxer “/etc/shorewall/policy”.

#SOURCE		DEST	POLICY		LOG		LEVEL		LIMIT:BURST
loc			$FW		ACCEPT
$FW			loc		ACCEPT

Ara que les nostres zones i política estan configurades, hem de configurar les nostres interfícies. Per fer-ho, editeu el fitxer /etc/shorewall/interfaces.

Aquí, hem configurat la nostra interfície orientada a Internet com a eth0 a la zona de xarxa. Al costat de la LAN, hem establert l'altra interfície, eth1, a la zona loc. Ajusteu aquest fitxer per iniciar la vostra configuració correctament.

Les diverses opcions que podeu col·locar per a qualsevol d'aquestes interfícies són extenses i s'expliquen millor en detall a la pàgina de manual.

$ man shorewall-interfaces

Un resum ràpid d'alguns d'ells és el següent:

  1. nosmurfs: filtren els paquets amb l'adreça de difusió com a font.
  2. logmartians: registre de paquets amb una adreça d'origen impossible.
  3. routefilter: filtratge de rutes del nucli per evitar la falsificació.

Per descomptat, ara que el nostre sistema està protegit amb tallafoc, necessitarem que es permetin determinades connexions per tal de fer el que hem de fer. Les definiu al fitxer de regles a /etc/shorewall/rules.

Aquest fitxer sembla confús al principi, principalment perquè les columnes se superposen, però les capçaleres s'explicaran força per si mateixes. Primer, teniu la columna ACCIÓ, que descriu el que voleu fer.

A continuació, teniu una capçalera SOURCE on definiu la zona d'on s'origina el paquet. Aleshores, teniu la vostra DEST, o destinació, que és la zona o l'adreça IP de la destinació. Utilitzem un exemple.

Suposem que voleu executar un servidor SSH darrere del vostre tallafoc a la màquina amb l'adreça IP de 192.168.1.25. No només haureu d'obrir un port al vostre tallafoc, sinó que haureu de dir al tallafoc que qualsevol trànsit que arribi al port 22 s'ha d'encaminar a la màquina a 192.168.1.25.

Això es coneix com a reenviament de ports. És una característica comuna a la majoria de tallafocs/encaminadors. A /etc/shorewall/rules, ho aconseguiríeu afegint una línia com aquesta:

SSH(DNAT)	net		loc:192.168.1.25

Més amunt, hem definit que qualsevol paquet destinat a SSH que vingui de la zona de xarxa al tallafoc s'ha d'encaminar (DNAT) al port 22 de la màquina amb l'adreça 192.168.1.25.

Això s'anomena traducció d'adreces de xarxa o NAT. La \D simplement li diu a Shorewall que es tracta d'un NAT per a una adreça de destinació.

Perquè això funcioni, heu de tenir el suport NAT habilitat al vostre nucli. Si necessiteu NAT i no el teniu, consulteu el meu tutorial sobre recompilar un nucli de Debian.

Enllaços de referència

Pàgina d'inici de Shorewall

En el següent article, repassarem alguns temes més avançats, però de moment n'hi hauria d'haver molts per començar. Com sempre, feu una ullada a les pàgines de manual per a una comprensió més profunda.