La seguridad es una pieza clave en los sistemas Linux ya que esto abarca en su totalidad todo lo que realizamos como usuarios a nivel personal, a nivel de servicios y con las diversas aplicaciones y programas disponibles. Una de las formas mas vulnerables en cualquier distribución Linux es el trafico de red tanto entrante como saliente debido a que muchas de las amenazas en la red están presentes en este segmento por el alto flujo de datos que van y vienen, para ventaja nuestra en Linux, en este caso usaremos Ubuntu, contamos con una herramienta esencial para proteger este tipo de tráfico y es Iptables.
Iptables se encarga de administrar las reglas de filtrado de paquetes en la red local y esto se logra configurando y controlando el tráfico de red tanto entrante y saliente ya sea en servidores o equipos Linux cliente, esta gestión es posible ya que Iptables analiza en detalle cada paquete que está en el tráfico de red y en base a las reglas que están configuradas determina la acción a tomar con ese paquete, si autoriza o no que continue al equipo.
- Direcciones IP de origen y destino
- Los puertos
- Los protocolos de red
Cuando algún paquete no es confiable o no pasa la prueba de Iptables, será bloqueada su dirección IP o rangos de IP en caso de ser varias, esto se redirecciona a NAT (Network Address Translation) para que desde allí sea redireccionado el tráfico usando tras interfaces de red pero impidiendo que estas accedan a nuestro equipo.
- -A (append): añade una nueva regla al final de una cadena existente.
- -D (delete): permite eliminar una regla existente de una cadena.
- -I (insert): inserta una nueva regla dentro de una posición específica en una cadena.
- -L (list): nos permite ver todas las reglas de una o todas las cadenas.
- -P (policy): establece una política predeterminada para una cadena.
- -F (flush): elimina todas las reglas de una cadena.
- -N (new chain): se encarga de crear una nueva cadena.
- -E (rename chain): permite cambiar el nombre de una cadena.
- -s (source): indica la dirección IP o rango de direcciones IP de origen.
- -d (destination): hace referencia a la dirección IP o rango de direcciones IP de destino.
- -p (protocol): nos dice el protocolo de red a usar TCP, UDP o ICMP.
- -m (match): especifica un módulo adicional para realizar coincidencias avanzadas.
Ahora vamos a ver como a través de Iptables proteger el tráfico en nuestros equipos (servidores / clientes).
Cómo usar el firewall de Iptables para proteger el tráfico en Linux
Para comenzar abrimos la terminal y allí vamos a instalar el administrador de filtrado de paquetes Iptables usando el siguiente el comando:
sudo apt install iptables
Será necesario que ingresar la contraseña y luego confirmar este proceso con la letra S:
Una vez se haya instalado la utilidad, vamos a usar algún editor para acceder al archivo de configuración de las reglas IPv4, en este caso ejecutamos el siguiente comando:
sudo nano /etc/iptables/rules.v4
Pulsamos Enter e ingresamos la contraseña, en algunos casos veremos ya algún contenido disponible:
Vamos a la parte final de este archivo y allí vamos a ingresar lo siguiente:
*filter # Allow all outgoing, but drop incoming and forwarding packets by default :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] # Custom per-protocol chains :UDP - [0:0] :TCP - [0:0] :ICMP - [0:0] # Acceptable UDP traffic # Acceptable TCP traffic -A TCP -p tcp --dport 22 -j ACCEPT # Acceptable ICMP traffic # Boilerplate acceptance policy -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -A INPUT -i lo -j ACCEPT # Drop invalid packets -A INPUT -m conntrack --ctstate INVALID -j DROP # Pass traffic to protocol-specific chains ## Only allow new connections (established and related should already be handled) ## For TCP, additionally only allow new SYN packets since that is the only valid ## method for establishing a new TCP connection -A INPUT -p udp -m conntrack --ctstate NEW -j UDP -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP -A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP # Reject anything that's fallen through to this point ## Try to be protocol-specific w/ rejection message -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -j REJECT --reject-with icmp-proto-unreachable # Commit the changes COMMIT *raw :PREROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] COMMIT *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT *security :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] COMMIT *mangle :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT
Con estas líneas hemos agregado diversos permisos para los protocolos disponibles.
Guardamos los cambios usando la combinación de teclas siguiente:
Ctrl + O
Salimos del editor usando:
Ctrl + X
Ahora es momento de revisar los puertos usados en el sistema, para ello vamos a ejecutar el comando “sudo netstat -4plunt” el cual listará todos los detalles necesarios:
Los parámetros de netstat usados son:
- -p: despliega el PID y el nombre del programa asociado a cada socket.
- -l: muestra los sockets de escucha
- -u: muestra el tráfico UDP
- -n: genera la salida numérica en lugar de los nombres de los servicios
- -t: muestra el tráfico TCP
Es posible que sea necesario autorizar el acceso a determinados puertos como lo son el 80 y el 22, para esto vamos a acceder de nuevo al archivo de configuración de las reglas y en este archivo ubicaremos la sección llamada “Acceptable TCP traffic”, allí ya esta registrado el puerto 22 pero vamos a añadir el puerto 80 usando la sintaxis:
-A TCP -p tcp –dport 80 -j ACCEPT
Aplicamos los cambios.
Después de esto vamos a revisar que esté correctamente configurado, para ello vamos a ejecutar el comando:
sudo iptables-restore -t < /etc/iptables/rules.v4
Ahora vamos a revisar la dirección IP del sistema, ejecutamos el comando “ip -4 addr show scope global” y debemos tener presente tanto la dirección IP como el nombre del adaptador de red:
Abrimos de nuevo el archivo de configuración para agregar allí la IP y el nombre del adaptador de red con el fin de que se autorice el acceso a estos, estas líneas irán en la sección Acceptable TCP traffic:
-A TCP -p tcp –dport # -d Direccion_IP -j ACCEPT -A TCP -p tcp –dport # -i Adaptador -j ACCEPT
Aplicamos los cambios.
Después de esto debemos confirmar que todo lo que se ha ingresado este correcto, ejecutamos el comando:
sudo iptables-restore -t < /etc/iptables/rules.v4
Finalmente se puede cargar toda la configuración usando alguno de los siguientes comandos:
sudo service iptables-persistent reload sudo service netfilter-persistent reload
Solvetic te ha explicado como proteger el trafico en tu equipo Linux a través de pasos esenciales para contar con un sistema fiable.