Topics

Funciones del(a) usuario(a)

Contacto

Por servir este blog desde un servidor "casero", con IP dinámica, no he configurado servidor de correo, dado que sería filtrado (blacklisted) por defecto por la autoridad competente como spam. Si deseas establecer contacto conmigo, o incluso si deseas crear una cuenta activa en el blog para generar tu propio contenido, por favor, sírvete enviarme un correo a forestux@openmailbox.org.
No dudes que te contestaré en cuanto pueda.
Quizás algún día contrate una IP estática, o puede que migre el blog a un hosting... Pero eso es otra historia.

Bienvenido(a) a forestux.es lunes, 17 diciembre 2018 , 06:31 CET

IPTABLES básico: conocimiento básico del firewall de GNU/Linux (IV, SINTAXIS)

ForestBOFH
  • Autor:
  • Lecturas
    179

En entradas anteriores leímos un poco sobre políticas a adoptar para el filtrado de paquetes, así como la definición de tablas, cadenas y reglas. Es el momento de comenzar a aplicar lo aprendido:

# iptables [-t TABLA] [-comando CADENA] [-parámetro parámetro]
Aparentemente sencilla, esta sintaxis esconde muchísimas posibilidades.

Lo primero a resaltar es el símbolo # del promt, que denota que el usuario activo es root. La configuración de iptables requiere permisos elevados, por lo que será el superusuario root el único con los privilegios necesarios para su configuración.

Se definen los comandos y parámetros más obvios y comunes, por partes:

¿Qué se entiende por comandos? Aquellas opciones, generalmente definidas mediante un guión (-) seguido de una letra, que especifican la acción que se desea ejecutar. Si no se indica lo contrario, iptables solo permite especificar un comando. Defino los más comunes, tal cual he sabido traducir del man iptables:

  • -A, --append chain rule-specification

    Añade (append) una o más reglas al final de la cadena seleccionada. Es la opción que más usaremos. Como se observa, el comando se puede especificar bien con guión seguido de letra (-A), o bien con el comando extendido (-append).

  • -C, --check chain rule-specification

    Comprueba (check) si una regla coincidente con la especificación existe en la cadena seleccionada.

  • -D, --delete chain rule-specification -D, --delete chain rulenum

    Elimina una o más reglas de la cadena seleccionada. Soporta dos sintaxis para especificar la regla:

    • 1. Como una coincidencia (rule-specification)
    • 2. Como un número en la cadena (NOTA: iptables numera cada regla que se añade (opción -A) numerándolas de 1 en adelante).
  • -I, --insert chain [rulenum] rule-specification

    Inserta una o más reglas en la cadena especificada.

  • -R, --replace chain rulenum rule-specification

    Reemplaza una regla en la cadena especificada. Fijáos que ya requiere un número de regla previamente definida (si queremos sustituir una regla, debemos definir cuál por su número); podemos ver todas las reglas con sus números de orden con el comando:

    
    # iptables [-t regla] -nvL –line-numbers
    
    (* Si no especificamos una tabla en concreto, se nos mostrarán las reglas de la tabla por defecto FILTER).

    IMPORTANTE: “El orden en el que se ponen las reglas de firewall es determinante. Normalmente cuando hay que decidir qué 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. ¿Cuál es el riesgo?: Si definimos reglas muy permisivas entre las primeras, puede que las siguientes no se apliquen y no sirvan de nada.“

  • -L, --list [chain]

    Muestra todas las reglas de la cadena especificada. Si no se especifica una regla, se mostrarán las de todas las cadenas. (¿Y qué tabla se mostrará por defecto si no se especifica ninguna?). La salida es muy básica. Se pueden añadir otros parámetros para una salida más amplia (-v, -n, -x. --line-numbers)

  • -S, --list-rules [chain]

    Graba todas las reglas de la cadena seleccionada. Si no se selecciona ninguna cadena todas las reglas se grabarán igual que lo haría el script iptables-save. (NOTA IMPORTANTE A -S: nunca usé esta opción, y no tengo claro que la traducción del man iptables sea la correcta: “Print all rules in the selected chain. If no chain is selected, all chains are printed like iptables-save.” Os remito al man iptables y al man iptables-save.

  • -F, --flush [chain]

    Elimina la cadena especificada, o todas ellas si no se especifica ninguna. Es el equivalente a borrar todas las reglas una por una. IMPORTANTE: Eliminar todas las reglas NO equivale a establecer la política por defecto. Con un ejemplo se ve claro:

    
    # iptables -L
    
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    
    Se han mostrado las políticas por defecto en una nueva instalación. sin embargo, si las "flusheamos", la salida del comando -L no es la misma:
    	
    # iptables -F
    # iptables -L
    
    Chain INPUT (policy DROP)
    target     prot opt source               destination         
    
    Chain FORWARD (policy DROP)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy DROP)
    target     prot opt source               destination         
    
    Chain bad_packets (0 references)
    target     prot opt source               destination         
    
    Chain bad_tcp_packets (0 references)
    target     prot opt source               destination         
    
    Chain icmp_packets (0 references)
    target     prot opt source               destination         
    
    Chain tcp_inbound (0 references)
    target     prot opt source               destination         
    
    Chain tcp_outbound (0 references)
    target     prot opt source               destination         
    
    Chain udp_inbound (0 references)
    target     prot opt source               destination         
    
    Chain udp_outbound (0 references)
    target     prot opt source               destination
    
    Se han mostrado las políticas después de haber liberado todas las cadenas con iptables -F.

  • -N, --new-chain chain

    Crea una nueva cadena con un nombre especificado por el usuario.

  • -X, --delete-chain [chain]

    Borra una cadena especificada por el usuario. No se permite borrar ninguna de las cadenas predefinidas para cualquier tabla. La cadena debe estar vacía (no debe contener ninguna regla).

  • -P, --policy chain target

    Configura la política por defecto para una cadena en particular, de tal forma que, cuando los paquetes atraviesen la cadena completa sin cumplir ninguna regla, serán enviados a un objetivo en particular, como puedan ser ACCEPT o DROP. (Ver la sección TARGETS del man)

  • -E, --rename-chain old-chain new-chain

    Renombra una cadena definida por el usuario. No afecta a la estructura de la tabla; es simplemente un arreglo “cosmético”.

  • -h

    Muestra la ayuda básica.


Trackback

Trackback URL for this entry:
http://www.forestux.es/trackback.php?id=iptables.basico.IV.SINTAXIS
  • IPTABLES básico: conocimiento básico del firewall de GNU/Linux (IV, SINTAXIS)
  • 0 comentarios
  • Crea una cuenta nueva

Los siguientes comentarios son de la persona que los haya enviado. Este sitio no se hace responsable de las opiniones expresadas por los participantes en los foros y secciones de comentarios, y el hecho de publicar las mismas no significa que esté de acuerdo con ellas.


¿Quién está conectado?

Usuarios invitados: 2

Lo más nuevo

NOTICIAS últimos 24 horas

No hay noticias nuevas

COMENTARIOS últimos 2 días

No hay comentarios nuevos

TRACKBACKS últimos 2 días

No new trackback comments

ENLACES últimos 2 semanas

No hay enlaces recientes