Pesquisa de site

13 perguntas da entrevista sobre Linux iptables Firewall


Nishita Agarwal, uma visitante frequente da Tecmint compartilhou conosco sua experiência (perguntas e respostas) sobre a entrevista de emprego que ela acabara de dar em uma empresa privada de hospedagem em Pune , Índia. Ela recebeu muitas perguntas sobre vários tópicos, mas ela é uma especialista em iptables e queria compartilhar essas perguntas e suas respostas (ela deu) relacionadas ao iptables para outras pessoas que possam estar indo dar entrevista em um futuro próximo.

Todas as perguntas e suas respostas foram reescritas com base na memória de Nishita Agarwal.

"Olá amigos! Meu nome é Nishita Agarwal. Eu fiz bacharelado em tecnologia. Minha área de Especialização é UNIX e Variantes de UNIX (BSD, Linux) me fascinam desde que ouvi falar. Tenho mais de 1 ano de experiência em armazenamento. Eu estava procurando uma mudança de emprego que terminasse em uma empresa de hospedagem em Pune, na Índia. ”

Aqui está a coleção do que me foi perguntado durante a entrevista. Documentei apenas as perguntas e suas respostas relacionadas ao iptables com base na minha memória. Espero que isso ajude você a decifrar sua entrevista.

1. Você já ouviu falar de iptables e firewall no Linux? Alguma ideia do que são e para que servem?

Resposta: Eu uso o iptables há bastante tempo e conheço tanto o iptables quanto o firewall. Iptables é um programa aplicativo escrito principalmente em linguagem de programação C e é lançado sob GNU General Public License. Escrito para o ponto de vista da administração do sistema, a versão estável mais recente do iptables 1.4.21.iptables pode ser considerado um firewall para sistema operacional semelhante ao UNIX, que pode ser chamado como iptables/netfilter, mais precisamente. O administrador interage com o iptables por meio de ferramentas de front-end do console/GUI para adicionar e definir regras de firewall em tabelas predefinidas. Netfilter é um módulo construído dentro do kernel que faz o trabalho de filtragem.

Firewalld é a implementação mais recente de regras de filtragem no RHEL/CentOS 7 (pode ser implementada em outras distribuições das quais talvez eu não esteja ciente). Ele substituiu a interface iptables e se conecta ao netfilter.

2. Você usou algum tipo de ferramenta front-end baseada em GUI para iptables ou linha de comando do Linux?

Resposta: Embora eu tenha usado ferramentas de front-end baseadas em GUI para iptables como Shorewall em conjugação de Webmin em GUI e acesso direto a iptables via console.E devo admita que o acesso direto ao iptables via console Linux dá ao usuário imenso poder na forma de maior grau de flexibilidade e melhor compreensão do que está acontecendo em segundo plano, se não qualquer outra coisa. A GUI é para administradores novatos, enquanto o console é para administradores experientes.

3. Quais são as diferenças básicas entre iptables e firewalld?

Resposta: iptables e firewalld servem ao mesmo propósito (Filtragem de Pacotes), mas com abordagens diferentes. O iptables libera todas as regras definidas sempre que uma alteração é feita, diferentemente do firewalld. Normalmente, o local da configuração do iptables está em '/etc/sysconfig/iptables', enquanto a configuração do firewalld está em '/etc/firewalld/', que é um conjunto de arquivos XML .Configurar um firewalld baseado em XML é mais fácil em comparação com a configuração de iptables, porém a mesma tarefa pode ser realizada usando o aplicativo de filtragem de pacotes, ou seja, iptables e firewalld. O Firewalld executa o iptables sob seu capô junto com sua própria interface de linha de comando e arquivo de configuração baseado em XML e mencionado acima.

4. Você substituiria o iptables pelo firewalld em todos os seus servidores, se tivesse uma chance?

Resposta: Estou familiarizado com o iptables e ele está funcionando e se não houver nada que exija o aspecto dinâmico do firewalld, parece não haver razão para migrar toda a minha configuração do iptables para o firewalld.Na maioria dos casos, até agora nunca vi o iptables criando um problema. Além disso, a regra geral da tecnologia da informação diz “por que consertar se não está quebrado”. No entanto, este é o meu pensamento pessoal e eu nunca me importaria de implementar o firewalld se a organização fosse substituir o iptables pelo firewalld.

5. Você parece confiante com o iptables e o ponto positivo é que estamos usando o iptables em nosso servidor.

Quais são as tabelas usadas no iptables? Dê uma breve descrição das tabelas usadas no iptables e das cadeias que elas suportam.

Resposta: Obrigado pelo reconhecimento. Passando para a parte da pergunta, existem quatro tabelas usadas no iptables, a saber:

  1. Mesa Nacional
  2. Mesa Mangle
  3. Tabela de filtros
  4. Tabela Bruta

Tabela Nat: a tabela Nat é usada principalmente para tradução de endereços de rede. Pacotes mascarados têm seus endereços IP alterados de acordo com as regras da tabela. Os pacotes no fluxo atravessam a tabela Nat apenas uma vez. ou seja, se um pacote de um jato de pacotes for mascarado, o restante dos pacotes no fluxo não passará por esta tabela novamente. Recomenda-se não filtrar nesta tabela. As cadeias suportadas pela tabela NAT são PREROUTING Chain, POSTROUTING Chain e OUTPUT Chain.

Mangle Table : Como o nome sugere, esta tabela serve para desfigurar os pacotes. É usado para alteração de pacotes especiais. Pode ser usado para alterar o conteúdo de diferentes pacotes e seus cabeçalhos. A tabela Mangle não pode ser usada para mascaramento. As cadeias suportadas são PREROUTING Chain, OUTPUT Chain, Forward Chain, INPUT Chain, POSTROUTING Chain.

Filter Table : Filter Table é a tabela padrão usada no iptables. É usado para filtrar pacotes. Se nenhuma regra for definida, a Tabela de Filtro será considerada a tabela padrão e a filtragem será feita com base nesta tabela. As cadeias suportadas são INPUT Chain, OUTPUT Chain, FORWARD Chain.

Tabela Bruta : A tabela Bruta entra em ação quando queremos configurar pacotes que foram isentos anteriormente. Suporta cadeia PREROUTING e cadeia OUTPUT.

6. Quais são os valores alvo (que podem ser especificados em target) no iptables e o que eles fazem, seja breve!

Resposta: A seguir estão os valores de destino que podemos especificar em target no iptables:

    1. ACCEPT : aceita pacotes
    2. QUEUE : Pacote Paas para o espaço do usuário (local onde residem o aplicativo e os drivers)
    3. DROP : Descartar pacotes
    4. RETURN : Retorna o controle para a cadeia de chamada e interrompe a execução do próximo conjunto de regras para os pacotes atuais na cadeia.
7. Vamos passar para os aspectos técnicos do iptables, por técnico quero dizer prático.

Como você verificará o rpm do iptables necessário para instalar o iptables no CentOS?

Resposta: iptables rpm estão incluídos na instalação padrão do CentOS e não precisamos instalá-lo separadamente. Podemos verificar o rpm como:

rpm -qa iptables

iptables-1.4.21-13.el7.x86_64

Se precisar instalá-lo, você pode fazer yum para obtê-lo.

yum install iptables-services
8. Como verificar e garantir se o serviço iptables está em execução?

Resposta: Para verificar o status do iptables, você pode executar o seguinte comando no terminal.

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

Se não estiver em execução, o comando abaixo pode ser executado.

---------------- On CentOS 6/5 ---------------- 
chkconfig --level 35 iptables on
service iptables start

---------------- On CentOS 7 ---------------- 
systemctl enable iptables 
systemctl start iptables 

Também podemos verificar se o módulo iptables está carregado ou não, como:

lsmod | grep ip_tables
9. Como você revisará as regras atuais definidas no iptables?

Resposta: As regras atuais no iptables podem ser revisadas tão simples quanto:

iptables -L

Exemplo de resultado

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
10. Como você irá liberar todas as regras do iptables ou uma cadeia específica?

Resposta: Para liberar uma cadeia de iptables específica, você pode usar os seguintes comandos.

 
iptables --flush OUTPUT

Para liberar todas as regras do iptables.

iptables --flush
11. Adicione uma regra no iptables para aceitar pacotes de um endereço IP confiável (digamos 192.168.0.7)

Resposta: O cenário acima pode ser alcançado simplesmente executando o comando abaixo.

iptables -A INPUT -s 192.168.0.7 -j ACCEPT 

Podemos incluir uma barra padrão ou máscara de sub-rede na fonte 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
12. Como adicionar regras ao serviço ACCEPT, REJECT, DENY e DROP ssh no iptables.

Resposta: Esperando que o ssh esteja rodando na porta 22, que também é a porta padrão para o ssh, podemos adicionar regras ao iptables como:

Para ACEITAR pacotes tcp para serviço ssh (porta 22).

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

Para REJEITAR pacotes tcp para serviço ssh (porta 22).

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

Para NEGAR pacotes tcp para serviço ssh (porta 22).

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

Para DROP pacotes tcp para serviço ssh (porta 22).

 
iptables -A INPUT -s -p tcp --dport 22 -j DROP
13. Deixe-me apresentar um cenário. Digamos que haja uma máquina cujo endereço IP local seja 192.168.0.6. Você precisa bloquear as conexões nas portas 21, 22, 23 e 80 para sua máquina. O que você vai fazer?

Resposta: Bem, tudo que preciso usar é a opção 'multiport' com iptables seguido de números de porta a serem bloqueados e o cenário acima pode ser alcançado de uma só vez como .

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

As regras escritas podem ser verificadas usando o comando abaixo.

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 : Isso é tudo que eu queria perguntar. Você é um funcionário valioso que não gostaríamos de perder. Vou recomendar seu nome ao RH. Se você tiver alguma dúvida, pode me perguntar.

Como candidato não queria interromper a conversa, por isso fico perguntando sobre os projetos que estaria realizando se fosse selecionado e quais são as outras vagas na empresa. Sem falar que a rodada de RH não foi difícil de resolver e eu tive a oportunidade.

Também gostaria de agradecer a Avishek e Ravi (de quem sou amigo há muito tempo) por dedicarem seu tempo para documentar minha entrevista.

Amigos! Se você tivesse dado alguma entrevista desse tipo e gostaria de compartilhar sua experiência com milhões de leitores da Tecmint em todo o mundo? em seguida, envie suas perguntas e respostas para [email  ou envie sua experiência de entrevista usando o formulário a seguir.

Obrigado! Mantenha-se conectado. Informe também se eu poderia ter respondido a uma pergunta mais corretamente do que respondi.