Nexolinux
Sistemas Linux, servidores web, certificaciones, LPIC, Linux básico y profesional
Navigation
  • Home
  • Bash
  • LPIC
  • Noticias
  • Seguridad
  • Servicios
  • HowTo’s
You are here: Home › LPIC › Firewall con Iptables

Firewall con Iptables

6 noviembre, 2012 | Filed under: LPIC, Seguridad, Servicios and tagged with: configurar firewall linux, configurar iptables, firewall linux, iptables basico, iptables ubuntu, tutorial iptables

 

Los firewall son imprescindibles en temas de seguridad y sistemas, podemos tenerlos a nivel de red, nivel de sistema o perimetrales (entre LAN e Internet). Iptables de Netfilter es el firewall implementado en el Kernel Linux estándar, soporta filtrado de paquetes, toda clase de direcciones de red, traducciones de puerto (NAT/NAPT) o filtrado por rangos de IP.

Puede que a simple vista nos parezca el típico firewall integrado en otros conocidos sistemas, pero no tiene nada que ver, ya que es implementado tanto en máquinas clientes como en servidores de grandes empresas e incluso en el caso de los firewall perimetrales en modo bridge podemos tener servidores dedicados para filtrar todo lo que entra y sale de nuestra red.

En esta interesante página vemos que de las 100 mejores herramientas de seguridad, el primer software de Firewall en salir en el puesto 23 es del que hablamos, y en el cual justo comentan que en plataformas windows también hay muchos Firewall pero ninguno está en este listado.

Top 100 herramientas de seguridad

Hay unas cuantas cosas a tener en cuenta ya que con esta herramienta hay que tener mucho cuidado al gestionarla

Lo primero a destacar es que no tiene un fichero de configuración propiamente dicho, recordemos que está integrado en el propio kernel, esto es importante, dado que si en un momento dado la máquina se reiniciara podemos perder toda la configuración, si queremos evitar esto o al menos antes de hacer cambios guardarlo o cambiando uno a uno los parámetros podemos hacerlo así:

Guardamos configuración en ruta por defecto /etc/sysconfig/iptables

# iptables-save

Esto es recomendable antes de hacer cambios y a cada cambio que hacemos por si posteriormente tenemos problemas o tenemos que restaurar configuración, en entornos críticos no podemos ponernos a teclear todo a mano, cada segundo con una aplicación o servicio caído cuentan.

# iptables-save > /root/iptables.`date +%F`01.txt 

Con este comando guardamos las reglas en el directorio del usuario root con la fecha actual en formato iptables.2011101001.txt, siendo el último número (01) el cambio que hagamos, por tanto irá creciendo a medida que hagamos para diferenciarlos.

Para restaurar el iptables haremos esto de la ruta original:

iptables-restore

O por el contrario para un fichero determinado

iptables-restore < /root/iptables.2011101001.txt

Ahora vamos al lio, después de esta pedazo introducción esta es la forma de visualizar configuración actual y gestionar reglas.También podemos tener otras más de las que se explican aquí pero en este artículo quiero explicar las bases ya que la configuración se puede estirar sin límites y dependiendo de las necesidades.

Leer configuración actual del iptables.

# iptables --nL

Y esto es lo que veremos:

 

con el siguiente comando nos saldrán las reglas con números, que es algo muy útil si queremos quitar reglas:

#iptables -nL --line-numbers

 

 

Si tenemos muchas reglas, a la hora de borrar con el –line-numbers vemos de una forma fácil cual tenemos que quitar.

Hay tres cadenas en la configuración por defecto, INPUT, FORWARD, OUTPUT y luego una política.

– cadena INPUT – Filtrado de paquetes que llegan al firewall y por lo tanto acceden a la máquina.

– cadena FORWARD – Filtrado de paquetes que pasan a través de nuestro firewall y tienen destino otra máquina.

– cadena OUTPUT – Filtrado de paquetes que salen de nuestro servidor a diferentes destinos.

IMPORTANTE las reglas se leen en orden secuencial, comienza por la primera línea, verifica condiciones y si encuentra alguna que la cumple o la prohibe la ejecuta sin verificar las siguientes.

Gestionaremos el firewall con estos argumentos principalmente:

# iptables -A INPUT -s 0.0.0.0 -p tcp --dport 80 -j ACCEPT

Añade una regla a la cadena INPUT por ejemplo, de «source» cualquier dirección ip, en el protocolo tcp, por el puerto 80 y lo acepta.

# iptables -I CADENA 2 [regla que queremos insertar] -j [ACCEPT, DROP]

Inserta una regla antes que la regla número X en la cadena determinada, recordemos el orden de lectura.

# iptables -N EJEMPLO

Crear cadena personalizada nueva de nombre ejemplo, en entornos con muchísimos servidores es casi mejor hacerlo modular y separarlos.

# iptables -D EJEMPLO 3

Elimina la regla 3 de la cadena EJEMPLO

Si queremos meter una regla para permitir el acceso a SSH a ese servidor desde una determinada máquina 192.168.1.24 ponemos algo como esto:

# iptables -A INPUT -s 192.168.1.24 -p tcp --dport 22 -j ACCEPT

Si queremos denegar todas los demás accesos a SSH a este servidor la regla que tiene que ir debajo, (no a continuación pero es importante que la de aceptar esté por encima), va a ser algo así:

# iptables -A INPUT -s 0.0.0.0 -p tcp --dport 22 -j DROP

Pero no es necesario que denegar todas las reglas una a una como es obvio, para ello tenemos dos formas posibles, una muy común es poner en la última regla un parámetro de forma que aparezca así en todas las cadenas:

Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:www
DROP all -- anywhere anywhere

En este ejemplo sólo he puesto en la cadena INPUT, pero se pone en todas, en la última posición. Denegando todos los demás accesos que no estén en nuestra configuración.

Otra forma de hacerlo sería ponerlo en la Politica, si la ponemos por defecto como DROP, esto hace el firewall más seguro, tenemos que saber que hay que tener permitido y que no, con todo detalle. Es mucho más difícil de mantener y se administra diferente de poner la regla de DROP al final de cada cadena, con lo que de hacerlo hay que hacerlo desde el principio, porque si no es caos.

Regla de los puertos altos

Algunos protocolos son bidireccionales, una vez hecha la conexión como por ejemplo al conectarnos con SSH si ejecutamos un comando tan simple como «ls» el servidor nos manda esa información de vuelta por otro puerto que no es el 22 (SSH) con que hacemos la conexión del protocolo. Se pone en la cadena de OUTPUT normalmente para que deje abiertas las conexiones ESTABLISHED, tiene que quedar de la siguiente forma:

ACCEPT tcp -- anywhere anywhere tcp spt:smtp dpts 1024:65535 state ESTABLISHED

Comparte esto:

  • Facebook
  • Twitter
  • LinkedIn

Me gusta esto:

Me gusta Cargando...

Deja un comentarioCancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Categorías.

  • Bases de datos
  • Bash & Comandos
  • HowTo
  • Linux General
  • LPIC
  • LPIC-2
  • Nivel Avanzado
  • Nivel Basico
  • Noticias
  • Seguridad
  • Servicios
  • Servidor Web

Entradas y Páginas Populares

  • Comando fuser, Localizamos procesos que usan un fichero.
    Comando fuser, Localizamos procesos que usan un fichero.
  • Ejemplos usos mount y umount
    Ejemplos usos mount y umount
  • Ficheros de usuarios /etc/passwd y /etc/shadow
    Ficheros de usuarios /etc/passwd y /etc/shadow
  • Instruccion READ en Bash
    Instruccion READ en Bash
  • ¿Cómo cifra linux las contraseñas?
    ¿Cómo cifra linux las contraseñas?
  • Proxy Squid, control de accesos ACL (II)
    Proxy Squid, control de accesos ACL (II)
  • 15 dispositivos que funcionan con Linux
    15 dispositivos que funcionan con Linux
  • fichero fstab
    fichero fstab
  • HowTo:Ejecutar comando como otro usuario.
    HowTo:Ejecutar comando como otro usuario.
  • Comandos más usados para gestionar Iptables
    Comandos más usados para gestionar Iptables

© 2025 Nexolinux

Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrar publicidad relacionada con tus preferencias. cerrar Política de cookies
Privacidad y política de cookies

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR
 

Cargando comentarios...
 

    %d