13 preguntas de la entrevista sobre el firewall iptables de Linux


Nishita Agarwal, una visitante frecuente de Tecmint, compartió su experiencia (pregunta y respuesta) con nosotros con respecto a la entrevista de trabajo que acababa de dar en una empresa privada de alojamiento en Pune, India. Se le hicieron muchas preguntas sobre una variedad de temas, sin embargo, es una experta en iptables y quería compartir esas preguntas y su respuesta (ella dio) relacionada con iptables a otras personas que podrían dar una entrevista en un futuro próximo.

Todas las preguntas y su Respuesta se reescriben basándose en la memoria de Nishita Agarwal.

"¡Hola amigos! Mi nombre es Nishita Agarwal. He obtenido una licenciatura en tecnología. Mi área de especialización es UNIX y las variantes de UNIX (BSD, Linux) me fascinan desde el momento en que lo escuché. Tengo más de 1 año de experiencia en almacenamiento. Estaba buscando un cambio de trabajo que terminó con una empresa de alojamiento en Pune, India ".

Aquí está la recopilación de lo que me preguntaron durante la entrevista. He documentado solo aquellas preguntas y su respuesta que estaban relacionadas con iptables según mi memoria. Espero que esto le ayude a descifrar su entrevista.

Respuesta: He estado usando iptables durante bastante tiempo y conozco tanto iptables como firewall. Iptables es un programa de aplicación escrito principalmente en lenguaje de programación C y se publica bajo la licencia pública general GNU. Escrito para el punto de vista de la administración del sistema, la última versión estable de iptables 1.4.21. iptables se puede considerar como un cortafuegos para un sistema operativo tipo UNIX que se puede llamar iptables/netfilter, con mayor precisión. El administrador interactúa con iptables a través de la consola/herramientas de interfaz gráfica de usuario para agregar y definir reglas de firewall en tablas predefinidas. Netfilter es un módulo construido dentro del kernel que hace el trabajo de filtrado.

Firewalld es la última implementación de reglas de filtrado en RHEL/CentOS 7 (puede implementarse en otras distribuciones de las que yo no tenga conocimiento). Ha reemplazado la interfaz iptables y se conecta a netfilter.

Respuesta: Aunque he usado las herramientas de interfaz de usuario basadas en GUI para iptables como Webmin en GUI y el acceso directo a iptables a través de la consola. Y debo admitir que el acceso directo a iptables a través de la consola de Linux da una inmenso poder del usuario en forma de un mayor grado de flexibilidad y una mejor comprensión de lo que sucede en segundo plano, si no de cualquier otra cosa. La GUI es para administradores novatos, mientras que la consola es para experimentados.

Respuesta: iptables y firewalld tienen el mismo propósito (filtrado de paquetes) pero con un enfoque diferente. iptables elimina todo el conjunto de reglas cada vez que se realiza un cambio, a diferencia de firewalld. Normalmente, la ubicación de la configuración de iptables se encuentra en '/ etc/sysconfig/iptables' mientras que la configuración de firewalld se encuentra en '/ etc/firewalld /', que es un conjunto de archivos XML. Configuración de un firewalld basado en XML es más fácil en comparación con la configuración de iptables, sin embargo, la misma tarea se puede lograr utilizando la aplicación de filtrado de paquetes, es decir, iptables y firewalld. Firewalld ejecuta iptables bajo su capó junto con su propia interfaz de línea de comandos y archivo de configuración que está basado en XML, como se mencionó anteriormente.

Respuesta: Estoy familiarizado con iptables y está funcionando y si no hay nada que requiera un aspecto dinámico de firewalld, parece que no hay razón para migrar toda mi configuración de iptables a firewalld. En la mayoría de los casos , hasta ahora nunca he visto iptables creando un problema. También la regla general de la tecnología de la información dice "por qué arreglar si no está roto". Sin embargo, este es mi pensamiento personal y no me importaría implementar firewalld si la Organización va a reemplazar iptables por firewalld.

¿Cuáles son las tablas que se utilizan en iptables? Dé una breve descripción de las tablas utilizadas en iptables y las cadenas que soportan.

Respuesta: Gracias por el reconocimiento. Pasando a la parte de la pregunta, hay cuatro tablas utilizadas en iptables, a saber:

  1. Tabla Nat
  2. Mangle Table
  3. Tabla de filtros
  4. Tabla sin procesar

Tabla Nat: la tabla Nat se utiliza principalmente para la traducción de direcciones de red. Los paquetes enmascarados obtienen su dirección IP alterada según las reglas de la tabla. Los paquetes de la secuencia atraviesan la tabla Nat solo una vez. es decir, si un paquete de un chorro de paquetes está enmascarado, el resto de los paquetes del flujo no volverán a atravesar esta tabla. Se recomienda no filtrar en esta tabla. Las cadenas admitidas por la tabla NAT son la cadena PREROUTING, la cadena POSTROUTING y la cadena OUTPUT.

Mangle Table: como su nombre indica, esta tabla sirve para manipular los paquetes. Se utiliza para la modificación de paquetes especiales. Puede usarse para alterar el contenido de diferentes paquetes y sus encabezados. La tabla Destrozar no se puede utilizar para enmascaramiento. Las cadenas soportadas son Cadena PREROUTING, Cadena OUTPUT, Cadena Adelante, Cadena INPUT, Cadena POSTROUTING.

Tabla de filtros: La tabla de filtros es la tabla predeterminada que se usa en iptables. Se utiliza para filtrar paquetes. Si no se definen reglas, la Tabla de filtro se toma como tabla predeterminada y el filtrado se realiza sobre la base de esta tabla. Las cadenas admitidas son cadena de ENTRADA, cadena de SALIDA, cadena de ADELANTE.

Tabla sin formato: la tabla sin formato entra en acción cuando queremos configurar paquetes que estaban exentos anteriormente. Soporta Cadena PREROUTING y Cadena OUTPUT.

Respuesta: A continuación se muestran los valores objetivo que podemos especificar en target en iptables:

    1. ACEPTAR: aceptar paquetes
    2. COLA: Paquete Paas al espacio del usuario (lugar donde residen la aplicación y los controladores)
    3. DROP: Drop Packets
    4. RETORNO: Regrese el Control a la cadena de llamadas y deje de ejecutar el siguiente conjunto de reglas para los Paquetes actuales en la cadena.

    ¿Cómo comprobará el rpm de iptables que se requiere para instalar iptables en CentOS?

    Respuesta: iptables rpm se incluyen en la instalación estándar de CentOS y no es necesario instalarlo por separado. Podemos comprobar las rpm como:

    # rpm -qa iptables
    
    iptables-1.4.21-13.el7.x86_64
    

    Si necesita instalarlo, puede hacer yum para obtenerlo.

    # yum install iptables-services
    

    Respuesta: Para verificar el estado de iptables, puede ejecutar el siguiente comando en la terminal.

    # service iptables status			[On CentOS 6/5]
    # systemctl status iptables			[On CentOS 7]
    

    Si no se está ejecutando, se puede ejecutar el siguiente comando.

    ---------------- On CentOS 6/5 ---------------- 
    # chkconfig --level 35 iptables on
    # service iptables start
    
    ---------------- On CentOS 7 ---------------- 
    # systemctl enable iptables 
    # systemctl start iptables 
    

    También podemos verificar si el módulo iptables está cargado o no, como:

    # lsmod | grep ip_tables
    

    Respuesta: Las reglas actuales en iptables se pueden revisar tan simple como:

    # iptables -L
    

    Salida de muestra

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
    ACCEPT     icmp --  anywhere             anywhere            
    ACCEPT     all  --  anywhere             anywhere            
    ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
    REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    Respuesta: Para vaciar una cadena de iptables en particular, puede usar los siguientes comandos.

     
    # iptables --flush OUTPUT
    

    Para vaciar todas las reglas de iptables.

    # iptables --flush
    

    Respuesta: El escenario anterior se puede lograr simplemente ejecutando el siguiente comando.

    # iptables -A INPUT -s 192.168.0.7 -j ACCEPT 
    

    Podemos incluir una barra oblicua estándar o una máscara de subred en la fuente como:

    # iptables -A INPUT -s 192.168.0.7/24 -j ACCEPT 
    # iptables -A INPUT -s 192.168.0.7/255.255.255.0 -j ACCEPT
    

    Respuesta: Con la esperanza de que ssh se esté ejecutando en el puerto 22, que también es el puerto predeterminado para ssh, podemos agregar reglas a iptables como:

    Para ACEPTAR paquetes tcp para el servicio ssh (puerto 22).

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

    Para RECHAZAR paquetes tcp para el servicio ssh (puerto 22).

    # iptables -A INPUT -s -p tcp --dport 22 -j REJECT
    

    Para NEGAR paquetes tcp para el servicio ssh (puerto 22).

     
    # iptables -A INPUT -s -p tcp --dport 22 -j DENY
    

    Para DROP paquetes tcp para el servicio ssh (puerto 22).

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

    Respuesta: Bueno, todo lo que necesito usar es la opción 'multipuerto' con iptables seguidas de los números de puerto para bloquear y el escenario anterior se puede lograr de una sola vez.

    # iptables -A INPUT -s 192.168.0.6 -p tcp -m multiport --dport 21,22,23,80 -j DROP
    

    Las reglas escritas se pueden verificar usando el siguiente comando.

    # iptables -L
    
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
    ACCEPT     icmp --  anywhere             anywhere            
    ACCEPT     all  --  anywhere             anywhere            
    ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
    REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
    DROP       tcp  --  192.168.0.6          anywhere             multiport dports ssh,telnet,http,webcache
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    Entrevistador: Eso es todo lo que quería preguntar. Es un empleado valioso que no nos gustaría extrañar. Recomendaré su nombre a RR.HH. Si tiene alguna pregunta, puede preguntarme.

    Como candidato, no quería matar la conversación, por lo tanto, sigo preguntando sobre los proyectos que estaría manejando si fuera seleccionado y cuáles son las otras vacantes en la empresa. Sin mencionar que la ronda de recursos humanos no fue difícil de romper y tuve la oportunidad.

    También me gustaría agradecer a Avishek y Ravi (de quien soy amigo desde hace mucho tiempo) por tomarse el tiempo para documentar mi entrevista.

    ¡Amigos! ¿Si hubiera concedido una entrevista de este tipo y le gustaría compartir su experiencia con la entrevista con millones de lectores de Tecmint en todo el mundo? luego envíe sus preguntas y respuestas a [email protected] o puede enviar su experiencia de entrevista utilizando el siguiente formulario.

    ¡Gracias! Manténgase conectado. También avíseme si podría haber respondido una pregunta de manera más correcta que lo que hice.