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 de alojamiento privada en Pune, India. Se le hicieron muchas preguntas sobre una variedad de temas, sin embargo, ella 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 te ayude a descifrar tu entrevista.

Firewalld es la implementación más reciente 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.

¿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.

  1. Nat Table
  2. Mangle Table
  3. Filter Table
  4. Raw Table

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. Se puede utilizar 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.

    1. ACCEPT : Accept Packets
    2. QUEUE : Paas Package to user space (place where application and drivers reside)
    3. DROP : Drop Packets
    4. RETURN : Return Control to calling chain and stop executing next set of rules for the current Packets in the chain.

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

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

    Si necesita instalarlo, puede hacer yum para obtenerlo.

    # yum install iptables-services
    

    # 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
    

    # 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
    

     
    # iptables --flush OUTPUT
    

    Para limpiar todas las reglas de iptables.

    # iptables --flush
    

    # 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
    

    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
    

    # 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 HR 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 de estas entrevistas y le gustaría compartir su experiencia 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! Mantente conectado. También avíseme si podría haber respondido una pregunta de manera más correcta que lo que hice.