05- FIREWALL
Configuraciń de Firewall con IPTABLES.
FIREWALLS DE LINUX
Un firewall es un dispositivo que filtra el tráfico entre redes, como mínimo dos. El firewall puede ser un dispositivo físico o un software sobre un sistema operativo. En general debemos verlo como una caja con DOS o mas interfaces de red en la que se establecen una reglas de filtrado con las que se decide si una conexión determinada puede establecerse ono. Incluso puede ir más allá y realizar modificaciones sobre las comunicaciones, como el NAT.
IPTABLES
Es un firewall que se puede manejar por comandos o generando un script que lo haga automaticamente, ya que por comandos, al volver a arrancar el equipo, no se guardan los cambios.
El orden en el que se ponen las reglas de firewall es determinante. Normalmente cuando hay que decidir que se hace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta (match), y se hace lo que dicte esta regla (aceptar o denegar); después de eso NO SE MIRARÁN MÁS REGLAS para ese paquete.
Por lo tanto, se van poniendo reglas (limitaciones y permisos) de abajo arriba, es decir limitamos abajo todo y arriba vamos permitiendo lo que consideramos necesario.
Existen varios tipos de reglas:
INPUT es el trafico entrante (tablas filter)
OUTPUT es el trafico saliente (tablas filter)
FORWARD es redirigir input a output (tablas filter)
PREROUTING desde fuera (firewall) hacia dentro (red)(tablas NAT)
POSTROUTING desde dentro (red) hacia fuera (firewall) (tablas NAT)
COMANDOS
Las reglas se implementan con los siguientes comandos:
iptables -t [-A/-C/-D/...] [especificaciones]
-t
--> tabla a la que afecta (filter por defecto, NAT o mangle)
Argumentos:
-A
--> añade una regla (INPUT / OUTPUT / FORWARD / PREROUTING / POSTROUTING)
-C
--> comprueba que existe una regla
-D
--> elimina una regla (para trabajar con comandos)
-I
--> inserta una regla en una linea (para trabajar con comandos)
-R
--> reemplaza una regla por otra (para trabajar por comandos)
-E
--> renombra una cadena de comandos (para trabajar por comandos)
-N
--> nueva cadena (para trabajar por comandos)
-L
--> lista las reglas existentes de filter (se utiliza con -n siempre)
-S
--> lista las reglas existentes.
-F
--> limpia las tablas de reglas.
-X
--> elimina las cadenas de comandos
-Z
--> limpia las estadisticas
-P
--> marca la politica por defecto de una pila (ACCEPT / DROP)
Si es ACCEPT, se deben declarar al inicio
Si es DROP, se deben declarar al final.
Parametros:
-s
--> source (fuente) IP o red (IP + Subred)
-d
--> destiny (destino) IP o red (IP + Subred)
-p
--> protocolo (TCP / UDP / ICMP)
--dport
--> puerto de destino
--sport
--> puerto de origen
-j
--> accion
ACCEPT
--> acepta la conexion.
LOG
--> acepta la conexion pero la loguea en /var/log/syslog.
REJECT
--> la deniega y lo loguea en syslog.
DROP
--> la deniega.
REDIRECT
--> redirecciona trafico entrante de un puerto a otro. PREROUTING (--to-port [puerto]
)
MASQUERADE
--> SOLO NAT. las ips salen a internet con la IP publica del router. POSTROUTING.
DNAT
--> SOLO NAT. Permite trafico exterior a una IP de la red.--to [IP:PUERTO] --dport [PUERTO destino]
Comprueba la tabla NAT y si no lo encuentra, lo manda al puerto redirigido.
-i
--> interfaz de entrada (INPUT / FORWARD / PREROUTING)
-o
--> interfaz de salida (OUTPUT / POSTROUTING)
EJEMPLO DE DESPLIEGUE
1- Generar archivo iptables.sh
Cambiamos los permisos de iptables.sh
chmod 770 iptables.sh
Para ejecutar el firewall ejecutamos como cualquier script.
./iptables.sh
UFW FIREWALL
Es un firewall desarrollado para ubuntu, lo que significa que es mas sencillo que el iptables. Es muy basico y tiene menos opciones que el iptables. Permite usarlo con servicios en vez de con puertos.
COMANDOS GENERALES
ufw enable
--> activa el firewall
ufw disable
--> desactiva el firewall
ufw status
--> indica el estado del firewall (activo/inactivo)
ufw status verbose
--> estado pero mas desarrollado.
ufw status numbered
--> muestra las normas activas numeradas.
ufw app list
--> muestra las aplicaciones que utilizan puertos.
ufw app info [nombre de app]
--> muestra un resumen de informacion de la aplicacion con su puerto
COMANDOS PARA HACER REGLAS:
ufw default deny incoming
--> deniega trafico de entrada.
ufw default allow outgoing
--> acepta trafico de salida.
ufw allow 22
--> permite el trafico del puerto 22.
ufw allow 25/tcp
--> permite el trafico TCP en el puerto 25.
ufw logging o
n --> comienza a loguear la actividad de la red.
ufw allow sshd
--> permite el trafico generado por el protocolo ssh.
ufw deny pop3
--> deniega el trafico generado por el protocolo pop3.
ufw delete
--> borra una regla utilizando el numero de norma anterior.
ufw deny proto tcp from 192.168.1.0/24 to any port 22
--> Denegar el trafico TCP desde toda la red a cualquier IP por el puerto 22.
ufw allow proto tcp from any to any port 22,80,443
--> Permite el trafico TCP desde cualquier IP a cualquier IP para los puertos 22, 80 y 443.
ufw reject out to any port 80
--> Reenvio desde el equipo propio a cualquier IP por el puerto 80.
Última actualización