IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Definició

Un tallafoc (o firewall en anglès, que originalment vol dir "mur ignífug") és un element de maquinari o programari utilitzat en una xarxa d'equips informàtics per controlar les comunicacions, permetent-les o prohibint-les segons les polítiques de xarxa que hagi definit l'organització responsable de la xarxa.

Tallafocs

Implementacions:

  • Maquinari
  • Programari (Linux Box, firewalls personals)

Tipus de firewall:

  • Filtrat de paquets (nivell 3 xarxa)
    • Stateless firewalls
    • Stateful firewalls (tenen memòria sobre les connexions)
  • Nivell d'aplicació (TCP Wrappers) i d'aplicació (proxies)
  • Firewalls personals

Nivell 1. Interfície de xarxa (ethernet)

  • Filtratge per MAC

Nivell 2. Internet. IP

  • Filtratge per IP

Nivell 3. Transport. TCP

  • Filtratge per ports (similar amb UDP)

NetFilter/iptables

Els sistemes Linux porten un sistema integrat en el seu kernel anomenat iptables

Seguretat per defecte (en el nucli del sistema operatiu).

  • No es cap servei. Menys vulnerable.

Té un elaborat, complet i complexe sistema de passos pels quals passa un paquet

  • El més important per entendre iptables és conèixer la seva semàntica i les capçaleres dels protocols TCP/IP.

Conceptes

Jordiromerofirewall01.png

Els firewalls es configuren aplicant unes regles, l'ordre en que especifiquem una regla és molt important

  • RULES: condició + target. Les condicions poden ser:
    • ip d'origen o destinació, protocol, port, MAC, etc.
  • TARGETS: accions per dur a terme amb els paquets
    • ACCEPT, DROP, QUEUE, RETURN, REJECT, LOG, ULOG, DNAT, SNAT, MASQUERADE
  • CHAINS: grups de normes (ruleset) aplicables en cert moment del "cicle de vida" del paquet a iptables
    • INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING
  • TABLES: separació de conceptes (filtrar, manipular, NAT)
    • RAW, FILTER, MANGLE, NAT
  • POLICIES: són les regles per defecte:
    • DROP, ACCEPT

Exemples d'ús

Mostrar tota la informació sobre les regles existents

$ sudo iptables --line-numbers -nvxL 
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num      pkts      bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num      pkts      bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num      pkts      bytes target     prot opt in     out     source               destination

Bloquejar pings (ICMP)

Primer comprovem que ens podem fer un ping a nosaltres mateixos:

$ ping -c 4 127.0.0.1

PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.044 ms
64 bytes from 127.0.0.1: icmp_req=2 ttl=64 time=0.041 ms
64 bytes from 127.0.0.1: icmp_req=3 ttl=64 time=0.032 ms
64 bytes from 127.0.0.1: icmp_req=4 ttl=64 time=0.037 ms

--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2997ms
rtt min/avg/max/mdev = 0.032/0.038/0.044/0.007 ms

Ara bloquejarem el tràfic d'entrada ICMP que provingui de la màquina local

$ sudo iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP

NOTA: Aquesta comanda no només bloqueja els pings sinó que bloqueja tots els paquets del protocol [1]. La solució és la comanda:

$ sudo iptables -A INPUT -s 127.0.0.1 -p icmp --icmp-type echo-request -j DROP

Comprovem que s'ha afegit la nova norma a la cadena INPUT:

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       icmp --  localhost            anywhere            
DROP       icmp --  localhost            anywhere             icmp echo-request

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination