IPset - Bloqueie milhares de IPs com o iptables

Bloqueie eficientemente milhares de IPs, pares de IPs e MACs e portas TCP e UDP com uma única regra no iptables, utilizando para isso um recurso disponível desde a versão 2.6.x do kernel chamado de IPset.

[ Hits: 25.691 ]

Por: Jakson Wilker em 14/01/2015


Introdução ao IPset



O IPset é um recurso introduzido no kernel desde a versão 2.6.x que permite a criação de conjuntos para armazenar listas de IPs, pares de IPs e MACs e portas TCP/UDP.

Com a utilização desse recurso é possível bloquear milhares de IPs no iptables apenas com uma regra.

Para este artigo utilizarei duas máquinas virtuais com CentOS 6.4 para execução dos comandos.

Primeiro precisamos instalar o utilitário ipset como seguinte comando:

# yum install ipset

Criando os conjuntos

Depois de instalado, utilizaremos o comando ipset para criar os conjuntos:

# ipset create NOME_CONJUNTO hash:ip

A opção create adiciona um novo conjuto (set) e o hash:ip refere-se ao método de armazenamento e o tipo de dado que será armazenado separados pelo ":".

Para saber todos os tipos de conjuntos disponíveis basta digitar o seguinte comando:

# ipset help

Você também pode adicionar um timeout padrão para as entradas do conjunto:

# ipset create NOME_CONJUNTO hash:ip timeout 300

Assim todo IP adicionado ao conjunto permanecerá por 300 segundos até ser removido.

Para listar todos os conjuntos criados digite:

# ipset list [NOME_CONJUNTO]

Para adicionar um novo registro digite:

# ipset add NOME_CONJUNTO IP [timeout n]

Obs.: você só poderá utilizar a opção de timeout caso você tenha criado o conjunto com esta opção.

Para limpar todo o conteúdo de algum conjunto digite:

# ipset flush NOME_CONJUNTO

Para remover um conjunto digite:

#ipset destroy NOME_CONJUNTO

Antes de remover um conjunto certifique-se de remover todas as referências a esse conjunto no firewall, ou você não será capaz de remové-lo.

Depois dessa breve introdução a algumas opções do comando ipset, vamos criar um conjunto para nossos exemplos:

# ipset create ip_bloqueado hash:ip

Com o comando acima criamos o conjunto "ip_bloqueado" que utilizará o método hash e armazenará listas de IPs.

Vamos agora adicionar alguns IPs no conjunto:

# ipset add ip_bloqueado 192.168.200.2
# ipset add ip_bloqueado 192.168.200.3
# ipset add ip_bloqueado 192.168.200.4


Pronto, agora temos 3 registros no nosso conjunto.

Vamos criar um novo conjunto para armazenar pares de ip e mac:

# ipset create ipmac_list bitmap:ip,mac range 192.168.200.0/24

Perceba que há uma nova opção que é obrigatória para o tipo de conjunto, essa opção define a rede que poderá ser inserida no conjunto.

Agora vamos adicionar um registro nesse conjunto:

# ipset add ipmac_list 192.168.200.2,08:00:27:48:32:40

Vamos executar o seguinte comando para listar nossos conjuntos:

# ipset list

A saída do comando será mostrada como na imagem abaixo:
Linux: IPset
    Próxima página

Páginas do artigo
   1. Introdução ao IPset
   2. Adicionando as regras no firewall
   3. Salvando os conjuntos
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Hotspot - Atualização - CoovaChilli

Balanceamento de link + redundância

Iptables + módulo recent

Um pouco sobre IPtables

Firewall invisível com Proxy ARP

  
Comentários
[1] Comentário enviado por bleckout em 07/02/2022 - 14:15h




___________________________________________________________________
[i]"Vivemos todos sob o mesmo céu, mas nem todos temos o mesmo horizonte"[i] - Konrad Adenauer
Ubuntu 20.04.3 LTS - Core i7 3770K, 16GB RAM - nVIDIA GTX 1080 GALAX EXOC[/i]


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts