Protocolo de mensagem de controle da Internet, também conhecido como ICMP, é um protocolo usado para verificar a conectividade dos hosts em uma rede. Também podemos usar este protocolo para diagnosticar os problemas em uma rede. Mas, do ponto de vista da segurança, também pode ser usado por alguém para realizar um ataque de DDoS. Uma inundação de ping ou um ataque de negação de serviço distribuído (DDoS) é uma forma de ataque na qual alguém envia muitos pedidos de ping a um host e o host se torna quase inacessível ao tráfego de rotina. Para evitar esse tipo de situação, os administradores de rede geralmente bloqueiam o ICMP em sua rede. Neste artigo, aprenderemos como as tabelas IP podem ser usadas para bloquear o ICMP em nosso servidor.
Quais são as tabelas IP?
IP Tables é um programa de utilitário de firewall para sistemas operacionais Linux. Pode ser usado para aceitar, negar ou retornar o tráfego de rede para ou para uma fonte. Ele observa o tráfego de rede que se aproxima usando diferentes conjuntos de regras definidas em uma tabela. Esses conjuntos de regras são chamados de correntes. As tabelas IP observam pacotes de dados e quais pacotes correspondem às regras são direcionados para outra cadeia ou atribuídos um dos seguintes valores.
Instalando tabelas IP
Para a maioria das distribuições Linux, as tabelas IP vêm pré-instaladas. Você pode verificar se as tabelas IP estão instaladas ou não digitando o seguinte comando no terminal.
ubuntu@ubuntu: ~ $ iptables --versionSe as tabelas IP não estiverem instaladas, você poderá instalá -las executando o seguinte comando no terminal.
ubuntu@ubuntu: ~ update APT-Get Apt-GetPodemos verificar o status padrão das tabelas IP executando o seguinte comando no terminal.
ubuntu@ubuntu: ~ $ sudo iptables -l -vA bandeira '-l' lista todas as regras e a bandeira '-v' mostra informações detalhadas.
Como alternativa, também podemos listar todas as regras adicionadas às tabelas IP pela execução do seguinte comando no terminal.
ubuntu@ubuntu: ~ $ sudo iptables -sPor padrão, todas as correntes estão aceitando os pacotes e essas cadeias não têm regra atribuída.
Atribuindo regras a correntes
Inicialmente, nenhuma regra é atribuída a qualquer cadeia e todos estão aceitando o tráfego da rede. Agora nesta seção, veremos como podemos definir regras personalizadas para bloquear ou permitir o tráfego da rede. Para definir uma nova regra, usamos a bandeira 'A' (Apênder), que diz às tabelas IP que uma nova regra será definida. As opções a seguir também são usadas junto com a bandeira 'A' para descrever a regra.
-eu (interface): Esta opção indica através de qual interface você deseja que o tráfego de sua rede seja permitido ou bloqueado. Você pode obter uma lista de todas as interfaces em seu sistema executando o seguinte comando no terminal.
ubuntu@ubuntu: ~ ifconfig-p (Protocolo): Esta opção define qual protocolo você deseja filtrar usando tabelas IP. Pode ser TCP, UDP, ICMP, ICMPV6, etc. Você pode aplicar regras a todos os protocolos usando todas as opções.
-s (Fonte): Esta opção mostra a fonte do tráfego de rede, como endereço IP ou nome de domínio.
-Dport (Porta de destino): Esta opção é usada para indicar a porta de destino para tráfego de rede.
-j (Target): Esta opção é usada para mostrar o alvo. Pode ser aceito, soltar, rejeitar ou retornar. Esta opção é obrigatória para cada regra.
Em geral, a sintaxe básica para adicionar uma regra será a seguinte:
ubuntu@ubuntu: ~ $ sudo iptables -a -i -jBloqueando o ICMP usando tabelas IP
Até agora, temos um entendimento básico das tabelas de IP e seu uso para permitir ou bloquear o tráfego em portas específicas através de interfaces específicas. Agora, usaremos tabelas IP para bloquear o ICMP em nosso servidor.
O comando a seguir adicionará uma regra para bloquear o ICMP em sua máquina:
ubuntu@ubuntu: ~ sudo iptables -a input -j reject -p ICMP --icmp -type eco -requestDepois de executar o comando acima, agora verifique o status das tabelas IP.
ubuntu@ubuntu: ~ $ sudo iptables -l -vPodemos ver que uma regra foi adicionada à cadeia de entrada, o que mostra que todo o tráfego do ICMP será rejeitado. Agora, se formarmos nosso sistema de qualquer outro sistema da mesma rede, ele rejeitará a solicitação. Podemos ver o resultado fazendo uma solicitação de ping do host localizador
ubuntu@ubuntu: ~ $ ping 127.0.0.1Podemos ver que estamos recebendo mensagens de rejeição do sistema se tentarmos fazer uma solicitação de ping.
Como alternativa, os dois comandos a seguir podem ser usados para adicionar regras para bloquear o ICMP em nosso servidor.
ubuntu@ubuntu: ~ sudo iptables -a input -p icmp -j drop --icmp -type eco -requestDepois de adicionar essas duas regras, agora verifique o status das tabelas IP.
ubuntu@ubuntu: ~ $ sudo iptables -l -vPodemos ver que o comando acima adicionou duas regras, uma à corrente de entrada e a outra à cadeia de saída.
A diferença entre a queda e a rejeição é que, quando usamos a rejeição, ela nos mostra um aviso (porta de destino inacessível) quando fizemos ping porque a solicitação é rejeitada e não chega à porta. Por outro lado, quando usamos uma gota, ela simplesmente solta a saída. A entrada não é rejeitada, é processada, mas a saída não é exibida como mostrado abaixo
Conclusão
Os hackers adotam diferentes métodos para executar ataques de negação de serviço distribuídos (DDoS) aos servidores. Ping inunda também é uma forma de ataque de DDoS. Os hackers enviam tantas solicitações de ping para o servidor que o servidor usa toda a sua energia de computação para processar as solicitações de ping e não executa seu processamento real. Nesse cenário ou vários outros cenários, pode ser necessário bloquear o ICMP em seu servidor.
Neste artigo, aprendemos maneiras diferentes de bloquear o ICMP usando tabelas IP. Discutimos como podemos adicionar regras diferentes para bloquear o ICMP em nosso servidor. Da mesma maneira, podemos usar tabelas IP para bloquear qualquer tipo de tráfego em qualquer porta usando tabelas IP.