18.05.2020 Reglas para realizar un cortafuegos. Se puede filtrar: - Protocolos (icmp, UDP, TCP) - Servicios (o puertos) 53 DNS 80 http 22 ssh 25 smtp 443 https Todos los servicios están listados en /etc/services - Redes 192.168.0.0/16 10.0.0.0/8 172.16.0.0/16 172.31.0.0/16 Todas estas redes deben estar filtradas Para garantizar la seguridad se debe realizar lo siguiente: - Se denegan todos los servicios - Se habilitan los que queremos - Debe levantarse el loopback - Debe de levantar el dns - Proteger el servicio que queramos * Se hace un script con todas las reglas * Se ejecuta el script: quita todas la reglas y pone las nuevas Una puerta con la traducción de paquetes habilitada (NAT - Network Address Translation) Red interna: IP pública ---------------- 10.1.1.254/32 ---------------- | eth1--------| Red 1 | | | 192.168.10.0/24 | Puerta | Puerta <-> Internet | | | |--- eth0 | | 192.168.10.254 | ---------------- ---------------- SSH 22 http 80 https 443 DNS 53 TCP 10.1.1.10 (8.8.8.8) Habilitar el traspaso de paquetes: echo 1 > /proc/sys/net/ipv4/ip_forward Cada interfaz tiene por defecto tres cadenas: INPUT OUTPUT FORWARD Y habilitar la traducción de direcciones: #!/bin/sh # Configuración de una ZM con iptables PATH=/sbin LOOPBACK_INTERFAZ=lo INTERFAZ_EXT=eth0 IPADDR=10.100.1.4/32 REDLOCAL=10.100.1.0/24 # INTERFAZ_INT=eth1 REDINTERNA=192.168.10.0/24 UNIVERSO=0.0.0.0/0 # Limpiamos las reglas actuales iptables -F iptables -F -t nat # Quitamos cadenas propias iptables -X ##---------------------------------- # Intranet 1 # Red 192.168.10.0/24 # # Internet # Red 10.100.1.4/32 # ##---------------------------------- # Estacle las políticas por defecto. TODO DENEGADO iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP ##-------- # LOOPBACK # Tráfico sin límite en la interface iptables -A INPUT -i $LOOPBACK_INTERFAZ -j ACCEPT iptables -A OUTPUT -o $LOOPBACK_INTERFAZ -j ACCEPT # Todo el tráfico interno es enmascarado externamente iptables -A POSTROUTING -t nat -o $INTERFAZ_EXT -j MASQUERADE # SSH 22 # http 80 # https 443 # DNS 53 TCP 10.1.1.10 # SSH 22 # todos los usarios de la red interna pueden alcanzar servidor SSH fuera de la red # esos servidores deben de responderles iptables -A FORWARD -i $INTERFAZ_INT -o $INTERFAZ_EXT \ -p TCP \ -s $REDINTERNA --sport 1024: \ -d $UNIVERSO --dport 22 -j ACCEPT iptables -A FORWARD -i $INTERFAZ_EXT -o $INTERFAZ_INT \ -p TCP \ -s $UNIVERSO --sport 22 \ -d $REDINTERNA --dport 1024: -j ACCEPT