
Centralizar ou distribuir listas negras IPset
Este programa permite centralizar e distribuir listas negras de IPs.
Se você mantém um servidor na Internet, é muito provável que já tenha encontrado um ou mais ataques de força bruta. Sem problemas, basta instalar o fail2ban. Pronto.
Mas se você está executando vários servidores, cada um com sua própria instância do fail2ban, todos terão endereços IP diferentes na lista de banimento. Não seria legal ter uma lista de banimento compartilhada entre todas as suas instâncias do fail2ban? Ou, caso todas as suas máquinas estejam atrás de um roteador ou firewall que você mesmo controla, não seria legal descartar o tráfego malicioso na borda da sua rede?
É exatamente isso que o vallumd ajuda a alcançar.
O Vallumd se conecta a um broker MQTT, lê mensagens contendo endereços IP, e adiciona ou remove esses endereços IP de um ipset. Simples assim.
Isso significa que ele não é útil por si só, mas torna o vallumd muito flexível. Você pode decidir por si mesmo que tipo de regra iptables deseja referenciar o ipset. Integrá-lo com o fail2ban é tão simples quanto criar uma nova ação que usa o mosquitto_pub para enviar uma mensagem para o seu broker MQTT. E como existem bibliotecas MQTT para a maioria das linguagens comuns, não deve ser muito difícil integrar com seu IDS, IPS ou Honeypot favorito.
O nome vallumd vem da palavra latina "vallum", que significa muralha. E é exatamente isso que o vallumd faz: construir uma muralha para proteger seu império digital.
A melhor maneira de instalar qualquer pacote é usando o gerenciamento de pacotes da sua distribuição. No entanto, como este projeto é muito recente, ainda não foi incluído em muitas distribuições.
Um pacote que segue o branch master do git está disponível no AUR.
Certifique-se de ter o repositório EPEL habilitado.
sudo yum -y install cmake3 ipset-devel mosquitto-devel openssl-devel pkgconfig '@Development Tools'
Você pode agora gerar um pacote RPM com o cpack:
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake3 .
cpack3 -G RPM
sudo yum -y localinstall build/*.rpm
Testado de compilação no CentOS 7.
Você pode gerar um pacote DEB com o cpack:
sudo apt-get -y install build-essential cmake file libipset-dev libmosquitto-dev libssl-dev pkg-config
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake .
cpack -G DEB
sudo dpkg -i build/*.deb
Testado de compilação no Debian 10, 11, 12, 13 e Ubuntu 18.04, 20.04, 22.04, 24.04.
Você pode encontrar um ebuild live para o vallumd no meu Gentoo overlay
Se você está executando um snapshot do OpenWrt DD ou LEDE, o vallumd está disponível no feed de pacotes e pode ser instalado com opkg:
opkg update
opkg install vallumd
A instalação manual é muito fácil. Requisitos:
Instruções:
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake .
make
make install
Para usar o vallumd, você precisa de um broker MQTT, como o Mosquitto. Dependendo da sua configuração, você pode executá-lo no mesmo host que executa o vallumd, mas isso não é um requisito.
A próxima coisa que você precisa é de um IPset. Para dar a você controle total sobre o tipo de IPset e suas opções, o vallumd não criará o IPset por conta própria. Você pode escolher entre estes tipos de IPset:
Exemplo de criação de IPset:
ipset create blacklist hash:ip timeout 3600
Agora você pode iniciar o vallumd. As seguintes opções de linha de comando existem:
-h: host MQTT ao qual se conectar
-p: porta MQTT à qual se conectar (1883)
-u: nome de usuário MQTT
-P: senha MQTT
-t: tópico MQTT e nome do IPset
-V: exibir o número da versão e sair
-c: caminho para o arquivo CA
-T: usar TLS
As opções de host e tópico são obrigatórias, as demais são opcionais (valor padrão). É possível especificar múltiplos tópicos.
Iniciando o vallumd:
vallumd -h 192.168.0.1 -t blacklist
Isso fará com que ele escute mensagens no broker MQTT em 192.168.0.1, no tópico blacklist, e quando uma mensagem for recebida, o endereço IP na mensagem será adicionado ou removido do IPset chamado blacklist.
Agora temos tudo no lugar para começar a adicionar IPs à lista negra. Tudo o que precisamos fazer é configurar nosso IDS, IPS ou Honeypot para enviar endereços IP maliciosos para nosso broker MQTT.
Para o fail2ban, isso pode ser feito com o cliente Mosquitto mosquitto_pub.
Crie uma nova ação em /etc/fail2ban/action.d/vallumd.conf:
[Definition]
actionban = mosquitto_pub -h 192.168.0.1 -q 2 -t blacklist/add -m <ip>
actionunban = mosquitto_pub -h 192.168.0.1 -q 2 -t blacklist/del -m <ip>
E configure suas prisões do fail2ban para usar a ação vallumd.
Os pacotes gerados com o CPack suportam OpenRC, Upstart e systemd. Os arquivos de configuração do serviço estão onde você esperaria na sua distribuição:
Após editar o arquivo relevante para sua distribuição, inicie o serviço vallumd da mesma forma que iniciaria qualquer outro serviço no seu sistema.
O Vallumd usa syslog(3) para registro de logs.