-
Regras corretas precisam ser restabelecidas a cada reinicialização. Ele não afetará diretamente outras regras, mas pode indiretamente (por exemplo, se outra regra permitir o IP por qualquer motivo, isso pode bloquear o IP ...)
-
Você está procurando o sempre popular fail2ban, que lê arquivos de logs e proíbe IPs de pessoas fazendo coisas "ruins".
Além disso, você também não quer continuar adicionando regras para cada banimento individual, isso poluirá rapidamente as regras. Você pode adicionar uma regra para bloquear uma tabela e adicionar os IPs à tabela. Uma tabela é apenas uma lista de IPs para que você possa aplicar facilmente regras a toda a tabela, em vez de especificá-las individualmente.
Por exemplo, eu tenho um script de firewall 'padrão' que eu uso, as duas primeiras regras neste script são:
00030 deny ip from "table(1)" to me
00031 deny ip from "table(2)" to me
A palavra-chave "eu" significa qualquer um dos meus endereços IP locais. A Tabela 1 é para o Fail2Ban, quando encontra um IP que não gosta, adiciona o IP a essa tabela por algum tempo. A Tabela 2 é para a lista DROP da Spamhaus, uma lista de sistemas de spam profissionais conhecidos (consulte o website deles para obter detalhes).
Você pode adicionar IPs a uma tabela manualmente com este comando:
ipfw table 2 add
Em meus servidores A Tabela 2 é preenchida automaticamente na inicialização por um script /usr/local/etc/rc.d/spamhaus-drop
da seguinte forma:
#!/bin/csh
fetch -i /tmp/drop.lasso -o /tmp/drop.lasso "http://www.spamhaus.org/drop/drop.lasso"
sed -i '' "s/;.*//" /tmp/drop.lasso
ipfw table 2 flush
foreach IP ( 'cat /tmp/drop.lasso' )
ipfw table 2 add $IP
end
É altamente recomendável que você escreva seu próprio script para configurar seu firewall. É muito fácil no FreeBSD com o ipfw, e eu não me incomodaria com uma GUI (eu sei que soa difícil quando tudo é novo, mas o básico é mais fácil do que você pensa).
Meu script de configuração está em /etc/ipfw.rules
e é assim:
#!/bin/sh
#FOR KEAIRA - The computer this script was customized for.
ipfw -q -f flush # Delete all rules
cmd="ipfw add"
# Ban tables
$cmd 00030 deny ip from "table(1)" to me
$cmd 00031 deny ip from "table(2)" to me
# Statefull firewall config, more secure
$cmd 00060 check-state
# Allow outbound traffic
$cmd 00130 allow ip from me to any keep-state
# SSH - I have SSH on port 2222 to keep the script kiddies out.
$cmd 11020 allow tcp from any to me dst-port 2222 setup keep-state
# DNS
$cmd 11090 allow tcp from any to me domain setup keep-state
$cmd 11092 allow udp from any to me domain
# NTP
$cmd 11100 allow tcp from any to me ntp setup keep-state
$cmd 11101 allow udp from any to me ntp
# General Network - ICMP & IGMP
$cmd 61001 allow icmp from any to any
$cmd 61002 allow igmp from any to any
# Deny the rest
$cmd 65500 deny ip from any to any
Este servidor está executando o SSH (em uma porta alternativa), DNS e NTP (hora). O resto é apenas material genérico que eu coloquei em todos os meus scripts de firewall. Se você tiver outros serviços que precisa abrir, é só me avisar e personalizarei o exemplo. A maioria dos nomes de serviço que você pode obter de /etc/services
, torna a gravação muito fácil. Não é estritamente necessário que cada regra tenha um número diferente, mas facilita o gerenciamento deles. As regras são processadas em ordem pelo número, mas por outro lado não há significado para os números.
Este script é "ativado" colocando essas linhas em /etc/rc.conf
firewall_enable="YES" # Firewall On
firewall_script="/etc/ipfw.rules" # Firewall Script
Configurar o Fail2Ban é um pouco mais trabalhoso, mas é bastante simples também. Se você quiser mais detalhes sobre isso, é só pedir.