IMPLEMENTAR UN FIREWALL PERMIETRAL
JUSTIFICACIÓ TÈCNICA DE LES DECISIONS
Abans d’implementar el firewall, és fonamental justificar cada decisió tècnica presa.
ARQUITECTURA DE XARXA I NECESSITATS DE SEGURETAT
La passarel·la (10.0.0.1/28) actua com a punt únic d’entrada i sortida entre les xarxes internes i l’exterior. Per això, el firewall perimetral ha de:
1. Filtratge per ORIGEN:
- Permetre tràfic des de VLAN 10 (Servidors 10.0.10.0/27) cap a l’exterior de forma controlada
- Permetre tràfic des de VLAN 20 (Clients 10.0.20.0/24) amb restriccions segons perfil
- Denegar per defecte qualsevol tràfic no autoritzat
2. Filtratge per DESTINACIÓ:
- Permetre accés a serveis específics: LDAP (389), NFS (2049), DNS (53), DHCP (67/68), FTP (21)
- Denegar accés directe des de l’exterior als servidors interns
- Controlar quins serveis són accessibles des de cada VLAN
3. Filtratge per SERVEI:
- SSH (22): Només des de xarxa interna per a administració
- HTTP/HTTPS (80/443): Permès cap a l’exterior per a actualitzacions
- LDAP (389): Només entre VLANs internes
- NFS (2049): Només entre servidors VLAN 10
- FTP (21): Controlat segons necessitat
- ICMP: Permès internament, restringit cap a l’exterior
POLÍTICA PER DEFECTE
S’aplica política DROP (denegar tot per defecte) i s’afegeixen únicament les regles necessàries. Això segueix el principi de mínim privilegi, més segur que permetre tot i denegar excepcions.
INSTALACIÓ
sudo apt update
sudo apt upgrade -y
sudo apt install iptables iptables-persistent -y
HABILITAR IP FORWARDING
sudo nano /etc/sysctl.conf
Aplicar canvis
sudo sysctl -p
SCRIPT DE FIREWALL:
sudo nano /usr/local/bin/firewall.sh
#!/bin/bash
# ============================================
# FIREWALL PERIMETRAL – PASSAREL·LA 10.0.0.1
# Implementació amb iptables
# ============================================
# Variables de xarxa
WAN=”eth0″ # Interfície exterior
LAN_SERV=”enp2s0.10″ # Interfície VLAN 10 Servidors
LAN_CLI=”enp2s0.40″ # Interfície VLAN 20 Clients
RED_SERV=”10.0.10.0/27″ # Xarxa VLAN 10 Servidors
RED_CLI=”10.0.20.0/24″ # Xarxa VLAN 20 Clients
IP_GW=”10.0.0.1″ # IP Passarel·la
# IPs servidors específics
LDAP_SRV=”10.0.10.4″ # Servidor OpenLDAP
NFS_SRV=”10.0.10.5″ # Servidor NFS
# ============================================
# PAS 1: NETEJAR REGLES EXISTENTS
# ============================================
echo “[*] Netejant regles existents…”
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# ============================================
# PAS 2: POLÍTICA PER DEFECTE – DENY ALL
# Justificació: Principi de mínim privilegi.
# Tot el tràfic denegat per defecte,
# només es permet allò estrictament necessari.
# ============================================
echo “[*] Aplicant política per defecte DROP…”
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# ============================================
# PAS 3: PERMETRE LOOPBACK
# Justificació: Necessari per al funcionament
# intern del sistema operatiu.
# ============================================
echo “[*] Permetent tràfic loopback…”
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# ============================================
# PAS 4: PERMETRE CONNEXIONS ESTABLERTES
# Justificació: Permet el tràfic de retorn
# de connexions ja establertes i relacionades,
# necessari per a comunicació bidireccional.
# ============================================
echo “[*] Permetent connexions establertes…”
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
# ============================================
# PAS 5: REGLES INPUT – ACCÉS A LA PASSAREL·LA
# Justificació: Controla qui pot accedir
# directament a la pròpia màquina passarel·la.
# ============================================
echo “[*] Configurant regles INPUT…”
# SSH només des de xarxes internes (administració)
# Justificació: SSH únicament des de xarxa interna
# per evitar accés remot no autoritzat des de l’exterior.
iptables -A INPUT -i $LAN_SERV -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -i $LAN_CLI -p tcp –dport 22 -j ACCEPT
# ICMP des de xarxes internes (ping per a diagnòstic)
# Justificació: Necessari per a diagnòstic de xarxa
# però només des de xarxes internes controlades.
iptables -A INPUT -i $LAN_SERV -p icmp –icmp-type echo-request -j ACCEPT
iptables -A INPUT -i $LAN_CLI -p icmp –icmp-type echo-request -j ACCEPT
# DNS a la passarel·la (si actua com a DNS forwarder)
# Justificació: Permet resoldre noms de domini
# per als equips de les dues VLANs.
iptables -A INPUT -i $LAN_SERV -p udp –dport 53 -j ACCEPT
iptables -A INPUT -i $LAN_CLI -p udp –dport 53 -j ACCEPT
iptables -A INPUT -i $LAN_SERV -p tcp –dport 53 -j ACCEPT
iptables -A INPUT -i $LAN_CLI -p tcp –dport 53 -j ACCEPT
# DHCP (si la passarel·la actua com a servidor DHCP)
# Justificació: Permet l’assignació automàtica d’IPs
# als clients de la xarxa.
iptables -A INPUT -i $LAN_CLI -p udp –dport 67 -j ACCEPT
iptables -A INPUT -i $LAN_SERV -p udp –dport 67 -j ACCEPT
# ============================================
# PAS 6: REGLES OUTPUT – SORTIDA DE LA PASSAREL·LA
# Justificació: Controla el tràfic generat
# per la pròpia passarel·la cap a l’exterior.
# ============================================
echo “[*] Configurant regles OUTPUT…”
# DNS cap a l’exterior (resolució de noms)
# Justificació: La passarel·la necessita resoldre
# noms de domini externs.
iptables -A OUTPUT -p udp –dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 53 -j ACCEPT
# HTTP/HTTPS cap a l’exterior (actualitzacions)
# Justificació: Necessari per a actualitzacions
# del sistema operatiu de la passarel·la.
iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 443 -j ACCEPT
# ICMP cap a l’exterior (diagnòstic)
iptables -A OUTPUT -p icmp –icmp-type echo-request -j ACCEPT
# ============================================
# PAS 7: REGLES FORWARD – TRÀFIC ENTRE XARXES
# Justificació: Controla el tràfic que passa
# a través de la passarel·la entre xarxes.
# ============================================
echo “[*] Configurant regles FORWARD…”
# — VLAN 10 SERVIDORS → EXTERIOR —
# HTTP/HTTPS per a actualitzacions de servidors
# Justificació: Els servidors necessiten accés
# als repositoris per a actualitzacions de paquets.
iptables -A FORWARD -i $LAN_SERV -o $WAN -s $RED_SERV -p tcp –dport 80 -j ACCEPT
iptables -A FORWARD -i $LAN_SERV -o $WAN -s $RED_SERV -p tcp –dport 443 -j ACCEPT
# DNS des de servidors cap a l’exterior
# Justificació: Els servidors necessiten
# resolució de noms externs.
iptables -A FORWARD -i $LAN_SERV -o $WAN -s $RED_SERV -p udp –dport 53 -j ACCEPT
iptables -A FORWARD -i $LAN_SERV -o $WAN -s $RED_SERV -p tcp –dport 53 -j ACCEPT
# — VLAN 20 CLIENTS → EXTERIOR —
# HTTP/HTTPS per a navegació web
# Justificació: Els clients necessiten accés
# a internet per a la seva feina diària.
iptables -A FORWARD -i $LAN_CLI -o $WAN -s $RED_CLI -p tcp –dport 80 -j ACCEPT
iptables -A FORWARD -i $LAN_CLI -o $WAN -s $RED_CLI -p tcp –dport 443 -j ACCEPT
# DNS des de clients cap a l’exterior
iptables -A FORWARD -i $LAN_CLI -o $WAN -s $RED_CLI -p udp –dport 53 -j ACCEPT
iptables -A FORWARD -i $LAN_CLI -o $WAN -s $RED_CLI -p tcp –dport 53 -j ACCEPT
# — VLAN 20 CLIENTS → VLAN 10 SERVIDORS —
# LDAP des de clients cap al servidor LDAP
# Justificació: Els clients necessiten autenticar-se
# contra el servidor LDAP (10.0.10.4).
iptables -A FORWARD -i $LAN_CLI -o $LAN_SERV -s $RED_CLI -d $LDAP_SRV -p tcp –dport 389 -j ACCEPT
# NFS des de clients cap al servidor NFS
# Justificació: Els clients necessiten accedir
# al recurs compartit NFS (10.0.10.5).
iptables -A FORWARD -i $LAN_CLI -o $LAN_SERV -s $RED_CLI -d $NFS_SRV -p tcp –dport 2049 -j ACCEPT
iptables -A FORWARD -i $LAN_CLI -o $LAN_SERV -s $RED_CLI -d $NFS_SRV -p udp –dport 2049 -j ACCEPT
# SSH des de clients cap a servidors (administració)
# Justificació: Permet l’administració remota
# dels servidors des de la xarxa de clients.
iptables -A FORWARD -i $LAN_CLI -o $LAN_SERV -s $RED_CLI -d $RED_SERV -p tcp –dport 22 -j ACCEPT
# ICMP entre VLANs (diagnòstic de xarxa)
# Justificació: Necessari per a verificar
# connectivitat entre les diferents VLANs.
iptables -A FORWARD -i $LAN_CLI -o $LAN_SERV -p icmp –icmp-type echo-request -j ACCEPT
iptables -A FORWARD -i $LAN_SERV -o $LAN_CLI -p icmp –icmp-type echo-request -j ACCEPT
# — VLAN 10 SERVIDORS → VLAN 20 CLIENTS —
# Denegat per defecte excepte respostes establertes
# Justificació: Els servidors no han d’iniciar
# connexions cap als clients per seguretat.
# — EXTERIOR → XARXES INTERNES —
# Denegat completament (política DROP)
# Justificació: Cap connexió des de l’exterior
# ha de poder accedir directament a xarxes internes.
# ============================================
# PAS 8: NAT – EMMASCARAMENT DE XARXA
# Justificació: Permet que les xarxes internes
# accedeixin a internet usant la IP de la passarel·la,
# ocultant l’estructura interna de la xarxa.
# ============================================
echo “[*] Configurant NAT…”
iptables -t nat -A POSTROUTING -s $RED_SERV -o $WAN -j MASQUERADE
iptables -t nat -A POSTROUTING -s $RED_CLI -o $WAN -j MASQUERADE
# ============================================
# PAS 9: REGLES DE PROTECCIÓ ADDICIONAL
# Justificació: Proteccions contra atacs
# comuns de xarxa.
# ============================================
echo “[*] Aplicant proteccions addicionals…”
# Protecció contra SYN Flood
# Justificació: Limita connexions TCP noves
# per prevenir atacs de denegació de servei.
iptables -A INPUT -p tcp –syn -m limit –limit 1/s –limit-burst 3 -j ACCEPT
# Protecció contra escaneig de ports
# Justificació: Detecta i bloqueja intents
# d’escaneig de ports des de l’exterior.
iptables -A INPUT -i $WAN -m state –state NEW -m limit –limit 10/minute -j ACCEPT
# Bloquejar paquets invàlids
# Justificació: Els paquets amb estat invàlid
# poden indicar intents d’atac o spoofing.
iptables -A INPUT -m state –state INVALID -j DROP
iptables -A FORWARD -m state –state INVALID -j DROP
# ============================================
# PAS 10: REGISTRE DE TRÀFIC DENEGAT
# Justificació: Registra intents d’accés
# no autoritzat per a auditoria i detecció
# de possibles atacs.
# ============================================
echo “[*] Configurant registre (logging)…”
iptables -A INPUT -j LOG –log-prefix “[FIREWALL-INPUT-DROP] ” –log-level 4
iptables -A FORWARD -j LOG –log-prefix “[FIREWALL-FORWARD-DROP] ” –log-level 4
echo “”
echo “=========================================”
echo ” FIREWALL CONFIGURAT CORRECTAMENT”
echo “=========================================”
echo “”
iptables -L -v –line-numbers
Donem permisos:
sudo chmod +x /usr/local/bin/firewall.sh
Executem l’escript:
sudo /usr/local/bin/firewall.sh
Per desar les reglas permanentment:
sudo netfilter-persistent save
sudo netfilter-persistent reload
Verificar si s’han desat:
cat /etc/iptables/rules.v4
Habilitar l’inici automatic:
sudo systemctl enable netfilter-persistent
He creat un script de verificació per el firewall:
sudo nano /usr/local/bin/check_firewall.sh
#!/bin/bash
echo “=========================================”
echo ” VERIFICACIONS FIREWALL PERIMETRAL”
echo ” Passarel·la: 10.0.0.1″
echo ” $(date ‘+%Y-%m-%d %H:%M:%S’)”
echo “=========================================”
echo “”
echo “1. IP FORWARDING:”
echo “—————–“
FORWARD=$(cat /proc/sys/net/ipv4/ip_forward)
if [ “$FORWARD” = “1” ]; then
echo “[OK] IP Forwarding actiu”
else
echo “[ERROR] IP Forwarding desactivat”
fi
echo “”
echo “2. POLITICA PER DEFECTE:”
echo “————————“
iptables -L | grep “policy” | while read line; do
echo ” $line”
done
echo “”
echo “3. TOTAL DE REGLES PER CADENA:”
echo “——————————“
echo “INPUT: $(iptables -L INPUT –line-numbers | grep -c “^[0-9]”) regles”
echo “FORWARD: $(iptables -L FORWARD –line-numbers | grep -c “^[0-9]”) regles”
echo “OUTPUT: $(iptables -L OUTPUT –line-numbers | grep -c “^[0-9]”) regles”
echo “”
echo “4. REGLES NAT ACTIVES:”
echo “———————-“
iptables -t nat -L POSTROUTING -v –line-numbers
echo “”
echo “5. REGLES INPUT ACTIVES:”
echo “————————“
iptables -L INPUT -v –line-numbers
echo “”
echo “6. REGLES FORWARD ACTIVES:”
echo “————————–“
iptables -L FORWARD -v –line-numbers
echo “”
echo “7. TRAFIC DENEGAT (últimes entrades log):”
echo “——————————————“
sudo journalctl -k –since “1 hour ago” | grep “FIREWALL” | tail -10
echo “”
echo “=========================================”
echo ” FI DE LA VERIFICACIO”
echo “=========================================”
Donar permisos i executar:
sudo chmod +x /usr/local/bin/check_firewall.sh
sudo /usr/local/bin/check_firewall.sh
RESUM DE REGLES IMPLEMENTADES
| Origen | Destinació | Servei | Port | Acció | Justificació |
|---|---|---|---|---|---|
| VLAN 10 | Exterior | HTTP/HTTPS | 80/443 | ACCEPT | Actualitzacions servidors |
| VLAN 10 | Exterior | DNS | 53 | ACCEPT | Resolució de noms |
| VLAN 20 | Exterior | HTTP/HTTPS | 80/443 | ACCEPT | Navegació clients |
| VLAN 20 | Exterior | DNS | 53 | ACCEPT | Resolució de noms |
| VLAN 20 | LDAP (10.0.10.4) | LDAP | 389 | ACCEPT | Autenticació usuaris |
| VLAN 20 | NFS (10.0.10.5) | NFS | 2049 | ACCEPT | Recursos compartits |
| VLAN 20 | VLAN 10 | SSH | 22 | ACCEPT | Administració remota |
| Exterior | Xarxes internes | Tots | Tots | DROP | Seguretat perimetral |
| Qualsevol | Qualsevol | Invàlid | – | DROP | Protecció atacs |
COMANDES D’ADMINISTRACIÓ ÚTILS
Veure regles amb comptadors: