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: 26.854 ]

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

Iptables 1.3.4 com Layer 7 e Kernel 2.6.14 no Debian 3.1

Script de firewall e análise de log

Utilizando a ferramenta Iptstate

Migrando do ipchains para o iptables

Gerenciando regras de Iptables com Firewall Builder

  
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