Tallafocs

Un firewall és un dispositiu que funciona com a tallafocs entre xarxes, permetent o denegant les transmissions d'una xarxa a l'altra. Un ús típic és situar-ho entre una xarxa local i la xarxa Internet, com a dispositiu de seguretat per evitar que els intrusos puguin accedir a informació confidencial.

Un firewall és simplement un filtre que controla totes les comunicacions que passen d'una xarxa a l'altra i, en funció del que siguin, permet o denega el seu pas. Per permetre o denegar una comunicació el firewall examina el tipus de servei al que correspon i, depenent del servei, el firewall decideix si ho permet o no. A més, el firewall examina si la comunicació és entrant o sortint i depenent de la seva adreça pot permetre-la o no.

D'aquesta manera un firewall pot permetre des d'una xarxa local cap a Internet serveis de web, correu i ftp que pot ser innecessari per al nostre treball. També podem configurar els accessos que es facin des d'Internet cap a la xarxa local i podem denegar-los tots o permetre alguns serveis com el de la web, (si és que posseïm un servidor web i volem que accessible des d'Internet). Depenent del firewall que tinguem també podrem permetre alguns accessos a la xarxa local des d'Internet si l'usuari s'ha autenticat com a usuari de la xarxa local.

Un firewall pot ser un dispositiu programari o maquinari, és a dir, un aparell que es connecta entre la xarxa i el cable de la connexió a Internet, o bé un programa que s'instal·la en la màquina que té el mòdem que connecta amb Internet. Fins i tot podem trobar ordinadors computadors molt potents i amb programaris específics que l'única cosa que fan és monitoritzar les comunicacions entre xarxes.

En quan a les seves característiques principals, podríem destacar:

  • Filtrat de paquets de xarxa en funció de la inspecció de direccions de xarxa (MAC, IP, port origen o destí).
  • Filtrat per aplicació: permet especificar les aplicacions i regles específiques per a cadascuna d'elles.
  • Filtrat dinàmic: moltes connexions d'inici es realitzen en un port estàtic, però moltes aplicacions acaben obrint momentàniament algun altre port (dinàmicament) i per aquests s'aplica aquest filtre.

Cóm funciona un Firewall?

Un sistema firewall conté un conjunt de regles predeterminades que permeten al sistema:

  • Autoritzar la connexió (permetre)
  • Bloquejar la connexió (denegar)
  • Rebutjar la comanda de connexió sense informar al que ho va enviar (negar)

Totes aquestes regles implementen un mètode de filtrat que depèn de la política de seguretat adoptada per l'organització. Les polítiques de seguretat es divideixen generalment en dos tipus que permeten:

  • L'autorització de només aquelles comunicacions que es van autoritzar explícitament:
       "Tot el que no s'ha autoritzat explícitament està prohibit"
  • El rebuig d'intercanvis que van ser prohibits explícitament

El primer mètode és sens dubte el més segur. No obstant això, imposa una definició precisa i restrictiva de les necessitats de comunicació.

Per tant, clarament veiem que hi ha dues polítiques bàsiques en la configuració d'un tallafoc i que canvien radicalment la filosofia fonamental de la seguretat en l'organització:

  • Política restrictiva: Es denega tot el trànsit excepte el que està explícitament permès. El tallafoc obstrueix tot el trànsit i cal habilitar expressament el trànsit dels serveis que es necessitin.
  • Política permissiva: Es permet tot el trànsit excepte el que estigui explícitament denegat. Cada servei potencialment perillós necessitarà ser aïllat bàsicament cas per cas, mentre que la resta del trànsit no serà filtrat.

La política restrictiva és la més segura, ja que és més difícil permetre per error trànsit potencialment perillós, mentre que en la política permissiva és possible que no s'hagi contemplat algun cas de trànsit perillós i sigui permès per defecte.

Filtrat simple de paquets

Un sistema de firewall opera segons el principi del Filtrat simple de paquets, o filtrat de paquets stateless. Analitza l'encapçalat de cada paquet de dades (datagrama) que s'ha intercanviat entre un ordinador de xarxa interna i un ordinador extern.

Així, els paquets de dades que s'han intercanviat entre un ordinador amb xarxa externa i un amb xarxa interna passen pel firewall i contenen els següents encapçalats, els quals són analitzats sistemàticament pel firewall:

  • L'adreça IP de l'ordinador que envia els paquets
  • L'adreça IP de l'ordinador que rep els paquets
  • El tipus de paquet (TCP, UDP, etc.)
  • El nombre de port (recordatori: un port és un nombre associat a un servei o a una aplicació de xarxa).

Les adreces IP que els paquets contenen permeten identificar l'ordinador que envia els paquets i l'ordinador de destí, mentre que el tipus de paquet i el nombre de port indiquen el tipus de servei que s'utilitza.

La següent taula proporciona exemples de regles del firewall:

Els ports reconeguts (els nombres dels quals van del 0 al 1023) estan associats amb serveis ordinaris (per exemple, els ports 25 i 110 estan associats amb el correu electrònic i el port 80 amb la Web). La majoria dels dispositius de firewall es configuren almenys per filtrar comunicacions d'acord amb el port que s'utilitza. Normalment, es recomana bloquejar tots els ports que no són fonamentals (segons la política de seguretat vigent).

Per exemple, el port 23 sovint es bloqueja de forma predeterminada mitjançant dispositius de firewall, ja que correspon al protocol TELNET, el qual permet a una persona emular l'accés terminal a una màquina remota per executar comandes a distància. Les dades que s'intercanvien a través de TELNET no estan codificades. Això significa que és probable que un hacker observi l'activitat de la xarxa i robi qualsevol contrasenya que no estigui codificada. Generalment, els administradors prefereixen el protocol SSH, el qual té la reputació de ser segur i brinda les mateixes funcions que TELNET.

Filtrat dinàmic

El Filtrat de paquets Stateless només intenta examinar els paquets IP independentment, la qual cosa correspon al nivell de Xarxa del model TCP. No obstant això, la majoria de les connexions són admeses pel protocol TCP, el qual administra sessions, per tenir la seguretat que tots els intercanvis es duguin a terme en forma correcta. Així mateix, molts serveis (per exemple, FTP) inicien una connexió en un port estàtic. No obstant això, obren un port en forma dinàmica (és a dir, aleatòria) per establir una sessió entre la màquina que actua com a servidor i la màquina client.

D'aquesta manera, amb un filtrat simple de paquets, és impossible preveure quins ports haurien d'autoritzar-se i quins haurien de prohibir-se. Per solucionar aquest problema, el sistema de filtrat dinàmic de paquets es basa en la inspecció de les capes d'Internet i Transport del model TCP/IP, la qual cosa permet controlar la totalitat de les transaccions entre el client i el servidor. El terme que s'usa per denominar aquest procés és "inspecció stateful" o "filtrat de paquets stateful".

Un dispositiu de firewall amb "inspecció stateful" pot assegurar el control dels intercanvis. Això significa que pren en compte l'estat de paquets previs quan es defineixen regles de filtrat. D'aquesta manera, des del moment en què una màquina autoritzada inicia una connexió amb una màquina situada a l'altre costat del firewall, tots els paquets que passin per aquesta connexió seran acceptats implícitament pel firewall.

El fet que el filtrat dinàmic sigui més efectiu que el filtrat bàsic de paquets no implica que el primer protegirà l'ordinador contra els hackers que s'aprofiten de les vulnerabilitats de les aplicacions. Encara així, aquestes vulnerabilitats representen la major part dels riscos de seguretat.

Filtrat d'aplicacions

El filtrat d'aplicacions permet filtrar les comunicacions de cada aplicació. El filtrat d'aplicacions opera en la capa d'aplicacions del model TCP/IP, a diferència del filtrat simple de paquets que opera en la capa de Transport. El filtrat d'aplicacions implica el coneixement dels protocols utilitzats per cada aplicació.

Com el seu nom indica, el filtrat d'aplicacions permet filtrar les comunicacions de cada aplicació. El filtrat d'aplicacions implica el coneixement de les aplicacions a la xarxa i un gran enteniment de la forma en què en aquesta s'estructuren les dades intercanviades (ports, etc.).

Un firewall que executa un filtrat d'aplicacions es denomina generalment "passarel·la d'aplicacions" o ("proxy"), ja que actua com relé entre dues xarxes mitjançant la intervenció i la realització d'una avaluació completa del contingut en els paquets intercanviats. Per tant, el proxy actua com a intermediari entre els ordinadors de la xarxa interna i la xarxa externa, i és el que rep els atacs. A més, el filtrat d'aplicacions permet la destrucció dels encapçalats que precedeixen els missatges d'aplicacions, la qual cosa proporciona una major seguretat.

Aquest tipus de firewall és molt efectiu i, si s'executa correctament, assegura una bona protecció de la xarxa. D'altra banda, l'anàlisi detallada de les dades de l'aplicació requereix una gran capacitat de processament, la qual cosa sovint implica l'alentiment de les comunicacions, ja que cada paquet ha d'analitzar-se minuciosament.

A més, el proxy ha d'interpretar una gran varietat de protocols i conèixer les vulnerabilitats relacionades per ser efectiu.

Finalment, un sistema com aquest podria tenir vulnerabilitats pel fet que interpreta comandes que passen a través de les seves esquerdes. Per tant, el firewall (dinàmic o no) hauria de dissociar-se del proxy per reduir els riscos de comprometre al sistema.

Tipus de Firewalls

Per classificar el tipus de firewall ho podríem fer tenint en compte la capacitat de tractar el tràfic i la flexibilitat i facilitat de configuració que tenen. Una classificació possible podria ser per la ubicació en la que es trobi el firewall:

  • Firewalls basats en servidors: consta d'una aplicació de firewall que s'instal·la i executa en un sistema operatiu de xarxa (NOS), que normalment ofereix una serie de serveis com enrutament, proxy, DNS, DHCP, etc.
  • Firewalls dedicats: són equips que tenen instal·lats una aplicació específica de tallafocs i, per tant, treballen de forma autònoma i exclusivament com a tallafocs.
  • Firewalls integrats: s'integren en un dispositiu H/W per oferir la funcionalitat de firewall. Com per exemple trobem switches o routers que integren funcions de tallafocs.
  • Firewalls personals: s'instal·len en els diferents equips de la xarxa de manera que els protegeix individualment d'amenaces externes. Per exemple en un equip domèstic el tallafocs preinstal·lat en sistemes Windows.

Les arquitectures de firewalls més implementades són:

  • Screening router: com a separador d'una xarxa privada i la xarxa pública es troba un router que realitza tasques de filtrat.
  • Dual Homed_Host: com a separador entre dues xarxes es disposa un equip servidor que realitzarà les tasques de filtrat i enrutament mitjançant com a mínim dues tarjetes de xarxa, permetent una major flexibilitat en la configuració i instal·lació d'aplicacions de seguretat.
  • Screened Host: combina un router com equip fronterer exterior i un servidor proxy (bastió) que filtrarà i permetrà afegir xarxes de filtrat en les aplicacions més utilitzades.
  • Screened-subnet: mitjançant la creació d'una subxarxa intermitja, denominada DMZ o zona desmilitaritzada, entre la xarxa externa i la xarxa privada interna, permetrà tenir dos nivells de seguretat, un una mica menor en el tallafocs més extern i un de superior nivell de seguretat en el tallafocs d'accés a la xarxa interna. Des de la xarxa DMZ no es podrà accedir a la xarxa privada interna, però tant des de la xarxa interna com de l'externa, sí que es podrà accedir a la DMZ. Normalment en la DMZ es situen els servidors HTTP, DNS, FTP i altres que siguin de caràcter públic.

Tallafocs de tres víes

Doble tallafocs

IPTABLES

Les IPTABLES és una de les eines de firewall més utilitzades en sistemes GNU/Linux, que permeten el filtrat de paquets de xarxa així com realitzar funcions de NAT. Venen per defecte en el nucli de GNU/Linux i no cal instal·lar-ho.

S'ha d'anar amb compte perquè l'ordre en que s'executen les cadenes de regles és molt important ja que les llegeix de forma seqüencial, és a dir, comença per la primera i verifica que es compleixla condició, i en cas afirmatiu l'executa sense verificar les següents.

Per tant, si la primera regla en una determinada taula és refusar qualsevol paquet, les següents regles ja no seran verificades.

El funcionament i estructura serien el següents:

Estructura

iptables -t [taula] --[tipus operació] --[cadena] --[regla amb paràmetres] --[acció]

Exemple:
        iptables -t filter -A FORWARD -i eth0 -s 192.168.2.100 -p tcp --dport 80 -j ACCEPT

Les taules que se solen utilitzar són la filter, per acceptar o rebujar paquets, i la nat, per modificar l'origen o el destí d'un paquet.

Les cadenes de la taula filter són:

  • INPUT — Aplica als paquets amb destinació a la màquina.
  • OUTPUT — Aplica als paquets generats localment.
  • FORWARD — Aplica als paquets enrutats a través de la màquina.

Les cadenes de la taula nat són:

  • PREROUTING — Aplica als paquets quan arriben.
  • OUTPUT — Aplica als paquets generats localment abans de sortir fora.
  • POSTROUTING — Aplica als paquets abans de sortir fora.

Les accions que estaran sempre al final de cada regla (després de l'opció -j) que determinarà que fer amb els paquets afectats són:

  • ACCEPT: Paquet acceptat.
  • REJECT: Paquet refusat. S'envia notificació a través del protocol ICMP.
  • DROP: Paquet refusat. Sense notificació.
  • MASQUERADE: Emmascarament de l'adreça IP origen de forma dinàmica. Aquesta acció només és vàlida en la taula NAT en la cadena POSTROUTING.

Nota: S'ha de tenir en compte que per poder fer un FORWARD a través del Firewall des d'una altre màquina, hem d'activar l'arxiu ip_forward posant-lo a 1.

echo 1 > /proc/sys/net/ipv4/ip_forward

Guardar les regles

Les regles creades amb la comanda iptables són emmagatzemades en memòria. Si el sistema és reiniciat abans de guardar el conjunt de regles iptables, es perdran totes les regles. Perquè les regles de filtrat de xarxa persisteixin després d'un reinici del sistema, aquestes necessiten ser guardades. Per fer-ho, escriurem:

$sudo iptables-save

La propera vegada que s'iniciï el sistema, l'script d'inici de iptables tornarà a aplicar les regles guardades utilitzant la comanda /sbin/iptables-restore.

Encara que sempre és una bona idea provar una regla d'iptables abans de confirmar els canvis, és possible copiar regles iptables en aquest arxiu des d'una altra versió del sistema d'aquest arxiu. Això proporciona una forma ràpida de distribuir conjunts de regles iptables a moltes màquines. Si realitzem aquestes còpies, perquè sorgeixi efecte en les noves màquines haurem d'utilitzar la comanda:

$sudo iptables-restore