Diferència entre revisions de la pàgina «UF3-NF1. Introducció als tallafocs»

De Wiki IES Marianao. Departament Informàtica
Dreceres ràpides: navegació, cerca
(iptables)
(iptables)
Línia 133: Línia 133:
  
  
=== iptables ===
+
=== iptables (StateLess) ===
  
 
En Linux la majoria de tallafocs es basen en ''iptables''. Aquesta eina permet implementar les polítiques de filtre típiques dels tallafocs, però a més afegeix altres funcionalitats com traducció d'adreces o modificació dels paquets.
 
En Linux la majoria de tallafocs es basen en ''iptables''. Aquesta eina permet implementar les polítiques de filtre típiques dels tallafocs, però a més afegeix altres funcionalitats com traducció d'adreces o modificació dels paquets.
Línia 143: Línia 143:
 
S'organitza en taules:
 
S'organitza en taules:
 
*'''FILTER''': Filtre, taula per defecte (Firewall)
 
*'''FILTER''': Filtre, taula per defecte (Firewall)
** Cadenes: INPUT, OUTPUT, FORWARD
+
** Cadenes: ''INPUT'', ''OUTPUT'', ''FORWARD''
 
*'''NAT''': Traducció d'adreces i reenviament
 
*'''NAT''': Traducció d'adreces i reenviament
 +
** Cadenes: ''POSTROUTING'', ''PREROUTING'' (També OUTPUT)
 
*MANGLE: Modificació de paquests, afinament
 
*MANGLE: Modificació de paquests, afinament
 
*RAW: Intercepta paquets en cru (abans que cap altre taula)
 
*RAW: Intercepta paquets en cru (abans que cap altre taula)
  
  
 +
A les regles se'ls assigna una '''acció''' (target).
 +
* '''ACCEPT'''
 +
* '''DROP'''
 +
* Target extensions
 +
** REJECT, només a INPUT, UTPUT, FORWARD, en alguns casos pot retornar un error (ICMP), en qualsevol altre idèntica a DROP
 +
** '''LOG''', no finalitza, continua a la següent (Per tant en cas de refusar cal indicar 2 regles LOG + DROP)
  
  
 +
El resultat de les regles es mostra als missatges del nucli
  
Per a les funcions de tallafocs interessa principalment el filtrat (FILTER) que té 3 cadenes: INPUT, OUTPUT, FORWARD. També interessa NAT que s'utilitza per traducció i redirecció, cadenes: PREROUTING, POSTROUTING.
+
<pre>
 
+
/var/log/messages
Registre connexions entrants des de 192.168.1.215 (Inici de connexió, estat sync, es guarden als missatges del nucli)
+
</pre>
#iptables -I INPUT -s 192.168.1.215 -p tcp --syn -j LOG
 
  
 
Sintaxi bàsica
 
Sintaxi bàsica
  
 
<pre>
 
<pre>
#iptables -A FILTER -p tcp/udp [options] -j ACTION
+
iptables -A {CADENA} [options de filtre] -j {ACCIÓ}
 +
 
 +
#iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT
  
-A INPUT, OUTPUT, FORWARD: Afegir una regla
 
-D INPUT, OUTPUT, FORWARD: Esborrar una regla
 
-F INPUT, OUTPUT, FORWARD: Esborrar totes les regles d'un tipus
 
  
 
Algunes opcions:
 
Algunes opcions:
 +
 +
-A : Afegir una regla
 +
-D : Esborrar una regla
 +
-F : Esborrar totes les regles d'un tipus
 +
 +
-P : política per defecte per una cadena
  
 
-v : (Verbose) Permet veure els paquets tractats per cada regla
 
-v : (Verbose) Permet veure els paquets tractats per cada regla
  
 
-Z : Inicialitza els contadors
 
-Z : Inicialitza els contadors
 +
 +
 +
Filtres. Es poden negar amb el caràcter "!"
  
 
-p tcp/udp: A quin protocol s'aplica: tcp, udp, icmp o all
 
-p tcp/udp: A quin protocol s'aplica: tcp, udp, icmp o all
Línia 176: Línia 191:
 
-s IP/MASK: 0.0.0.0/0 per qualsevol xarxa
 
-s IP/MASK: 0.0.0.0/0 per qualsevol xarxa
 
-d IP: IP destí  
 
-d IP: IP destí  
-j DROP/ACCEPT/MASQUERADE # (Jump) Acció que cal fer si el paquet compleix les especificacions
+
-j DROP/ACCEPT # (Jump) Acció que cal fer si el paquet compleix les especificacions
-o eth0: Output
+
-o eth0: Output interfase
-i eth0: Input
+
-i eth0: Input interfase
 
--dport numero
 
--dport numero
 +
 +
 +
Cadenes personals
 +
 +
-N : crear una cadena personal
 +
 +
-X : Esborrar una cadena personal
 +
</pre>
 +
 +
 +
 +
=== iptables (traducció d'adreces, NAT) ===
 +
 
-t nat -A POSTROUTING .... -o eth0 -j MASQUERADE # NAT de sortida
 
-t nat -A POSTROUTING .... -o eth0 -j MASQUERADE # NAT de sortida
 
-t nat -A PREROUTING ... -j DNAT --to IP:port # PAT d'entrada, redirecció
 
-t nat -A PREROUTING ... -j DNAT --to IP:port # PAT d'entrada, redirecció
 +
 +
 +
 +
=== iptables (StateFull) ===
 +
 +
Addicionalment, iptables permet el tractament de l'estat de les connexions.
 +
 +
 +
 +
 +
 +
 +
 +
 +
<pre>
 +
Registre connexions entrants des de 192.168.1.215 (Inici de connexió, estat sync, es guarden als missatges del nucli)
 +
#iptables -I INPUT -s 192.168.1.215 -p tcp --syn -j LOG
 +
  
 
Exemple 1. NAT
 
Exemple 1. NAT

Revisió del 18:07, 5 gen 2012

tornar M11_-_Seguretat_i_alta_disponibilitat#UF3_-_Tallafocs_i_servidors_intermediaris


Tallafocs

Firewall és un dispositiu que té un conjunt de regles que especifiquen el tràfec de xarxa que s'accepta i el que es denega (Filtre), addicionalment poden tenir una tercera regla per indicar si es registre el tràfec (Log).

El funcionament bàsic d'un tallafocs és

  1. Examinar els paquets que rep o envia. Informació de xarxa, protocols, adreces, ports, interfases, estat de la connexió ...
  2. Aplicar les regles definides
  3. Decidir si el paquet passa o no


Els tallafocs es poden classificar

  • Segons el seu objectiu
    • Personals
    • De xarxa
  • Com s'implementen
    • Programari
    • Maquinari


Tallafocs Personals

Són sol·lucions de programari que filtren el tràfec entre un ordinador personal i la xarxa.

  • Firewall de Windows
  • Firestarter, Linux Firewall
  • Gufw, interfase de ufw (Uncomplicated Firewall), interface per a iptables

Filtren:

  • Connexions d'entrada, només útil en cas de servidors
  • Connexions de sortida, control de la navegació dels usuaris, possibles connexions de programari maliciós, p2p, etc...


Tallafocs de Xarxa

Implementen seguretat perimètrica a nivell de xarxa però no són sistemes alternatius als altres elements de la seguretat activa i passiva. En general els tallafocs més bàsics no comproven el contingut dels paquets (la informació), només comproven dades de xarxa.


El tallafoc es situa en el punt de connexió amb altres xarxes i analitza i filtra el tràfec de xarxa en ambdues direccions, entrant i sortint. Centralitza la seguretat en les comunicacions de la xarxa interna. També pot mantenir un registre (Log). La xarxa interna és el perímetre de seguretat.


Firewall.png


Filtren:

  • Connexions d'entrada, seguretat del propi firewall. Molt important, el firewall és un punt calent de la xarxa, si la seva seguretat es veu compromesa el perímetre es trenca.
  • Connexions de sortida, en general no cal controlar la sortida.
  • Connexions reenviades (xarxa interna <-> Internet), tant d'entrada com de sortida
    • Entrada, control de l'accés als serveis de xarxa que ofereix la LAN.
    • Sortida, accés a dels ordinadors de la zona de confiança a recursos externs (no confiables)

Implementacions

Programari, el tallafocs es pot implementar amb un ordinador i el programari necessari.

  • En general serà un ordinador dedicat sense gaires serveis addicionals per temes de rendiment.
  • Programari gratuït, existeixen múltiples distribucions de linux a tal efecte, en general GUI per a iptables
  • Programari propietari, en cas de fer servir sistemes Windows Server per exemple

Maquinari, amb un router o amb maquinari i programari específic

  • CISCO té famílies de Routers - Firewalls, CISCO ASA (successor CISCO PIX). Que a més inclouen moltes altres funcionalitats, VPN, IPS
  • http://www.checkpoint.com empresa desenvolupadora de FireWall-1


En qualsevol cas és normal que el tallafocs faci funcions d'encaminador també, donat la situació física on es troba (punt de sortida de la xarxa).

Exemples de programari per a Tallafocs de xarxa


IPcop


http://ipcop.org/

Linux
  • Firewall i proxy caché
Zentyal


http://www.zentyal.com/



Ubuntu

  • Firewall
  • Proxy caché
  • Servidor d'arxius
  • Servidor Domini
  • VPN
ISA Server Windows


Server

  • Firewall i proxy caché


Filtre d'informació. Regles

Existeixen dos paradigmes de seguretat:

  • Tot allò que no es prohibeix expressament està permès --> Naïf. Política per defecte ACCEPTAR
  • Tot allò que no està permès expressament es prohibeix --> Paranoic (Recomanat). Política per defecte NEGAR


Els filtres s'implementen amb política per defecte + Llista de Regles

Una regla simplement és una condició sobre el paquet, origen, destí, port, protocol, etc... i una acció associada (ACCEPT, DENY, DROP).

En general per a cada paquet, es repassa la llista de regles seqüencialment, si una compleix s'executa l'acció associada. Si no compleix cap s'executa la política per defecte.

Tipus de Filtres:

  • De paquets o de capa de xarxa, no miren informació de protocols d'aplicació (Estàtics). Són ràpids, p.e. iptables
    • Sense estat (Stateless).
    • Amb estat (StateFul Filtering i StateFull Packet Inspection).
  • De capa d'aplicació, més complexos doncs entenen els diferents protocols d'aplicació, més específics però més lents (Dinàmics). Generalment s'implementen en proxys i s'enfoquen a protocols concrets com HTTP, p.e. DansGuardian + SQUID, ISA Server


iptables (StateLess)

En Linux la majoria de tallafocs es basen en iptables. Aquesta eina permet implementar les polítiques de filtre típiques dels tallafocs, però a més afegeix altres funcionalitats com traducció d'adreces o modificació dels paquets.

Forma part del framework NetFilter integrat en el nucli de Linux i per tant funciona a molt baix nivell, per tant és ràpida i segura.

S'estructura en taules, cada taula té unes cadenes (Chains) associades, a partir de les quals es creen les regles que s'apliquen als paquets que passen pel tallafocs.

S'organitza en taules:

  • FILTER: Filtre, taula per defecte (Firewall)
    • Cadenes: INPUT, OUTPUT, FORWARD
  • NAT: Traducció d'adreces i reenviament
    • Cadenes: POSTROUTING, PREROUTING (També OUTPUT)
  • MANGLE: Modificació de paquests, afinament
  • RAW: Intercepta paquets en cru (abans que cap altre taula)


A les regles se'ls assigna una acció (target).

  • ACCEPT
  • DROP
  • Target extensions
    • REJECT, només a INPUT, UTPUT, FORWARD, en alguns casos pot retornar un error (ICMP), en qualsevol altre idèntica a DROP
    • LOG, no finalitza, continua a la següent (Per tant en cas de refusar cal indicar 2 regles LOG + DROP)


El resultat de les regles es mostra als missatges del nucli

/var/log/messages

Sintaxi bàsica

iptables -A {CADENA} [options de filtre] -j {ACCIÓ}

#iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT


Algunes opcions:

-A : Afegir una regla
-D : Esborrar una regla
-F : Esborrar totes les regles d'un tipus

-P : política per defecte per una cadena

-v : (Verbose) Permet veure els paquets tractats per cada regla

-Z : Inicialitza els contadors


Filtres. Es poden negar amb el caràcter "!"

-p tcp/udp: A quin protocol s'aplica: tcp, udp, icmp o all
-s IP: IP origen (Source)
-s IP/MASK: 0.0.0.0/0 per qualsevol xarxa
-d IP: IP destí 
-j DROP/ACCEPT # (Jump) Acció que cal fer si el paquet compleix les especificacions
-o eth0: Output interfase
-i eth0: Input interfase
--dport numero


Cadenes personals

-N : crear una cadena personal

-X : Esborrar una cadena personal


iptables (traducció d'adreces, NAT)

-t nat -A POSTROUTING .... -o eth0 -j MASQUERADE # NAT de sortida -t nat -A PREROUTING ... -j DNAT --to IP:port # PAT d'entrada, redirecció


iptables (StateFull)

Addicionalment, iptables permet el tractament de l'estat de les connexions.





Registre connexions entrants des de 192.168.1.215 (Inici de connexió, estat sync, es guarden als missatges del nucli)
#iptables -I INPUT -s 192.168.1.215 -p tcp --syn -j LOG


Exemple 1. NAT

## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN

# Al firewall tenemos acceso desde la red local

iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT

# Ahora hacemos enmascaramiento de la red local

# y activamos el BIT DE FORWARDING (imprescindible!!!!!)

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
Exemple 2. tallar ports bàsics sortida

# Aceptamos que vayan a puertos 80
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
# Aceptamos que vayan a puertos https
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT

# Aceptamos que consulten los DNS
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp --dport 53 -j ACCEPT

# Y denegamos el resto. Si se necesita alguno, ya avisaran
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP

Exemple 3. Obrir ports exemple d'entrada i una ip específica d'entrada a la màquina on estem

# Abrimos el puerto 25, hay que configurar bien el relay del servidor SMTP
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT
# Abrimos el pop3
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT

# Y abrimos el puerto pptpd para la ip del adsl de casa del jefe
iptables -A INPUT -s 211.45.176.24 -p tcp --dport 1723 -j ACCEPT Redireccion a màquina internes de la xarxa
## REDIRECCIONES

# Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos
# a una maquina interna
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.10.12:80

# Los accesos de un ip determinada a Terminal server se redirigen e esa
# maquina
iptables -t nat -A PREROUTING -s 221.23.124.181 -i eth0 -p tcp --dport 3389 -j DNAT --to 192.168.10.12:3389

En general aquestes comandes les posarem dins un script de linux amb els permisos adequats

#chmod 750 firewall1.sh
Per verificar la configuració

#iptables -L –n

Tutorial molt complet

http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html

Alguns exemples per a protocols concrets

http://ocw.uv.es/ingenieria-y-arquitectura/seguridad/3Seguridad_perimetrica.pdf

http://www.mmc.igeofcu.unam.mx/LuCAS/Manuales-LuCAS/doc-unixsec/unixsec-html/node252.html