Bloqueia temporariamente a comunicação com o host se estiver conectando à porta X

1

Eu tenho um Linux VPS, e ele está sendo constantemente escaneado, reforçado por alguns IPs desonestos. Este VPS é meu servidor privado, que serve apenas para mim e eu sou o único usuário dele. Também sou o único usuário que deve ter permissão para se conectar a ele.

Eu gostaria de pedir a você, ServerFault, para comentar sobre o meu método de 'resolver' o problema e apontar-me qualquer problema com ele, já que não tenho experiência com iptables .

No meu servidor, estou usando dovecot na porta 993 e sshd na porta 22 . Mudei os dois serviços para portas não padrão para X e Y , para evitar ataques brutos de força bruta em portas conhecidas. Para o problema de varredura de porta, imaginei que gostaria de criar uma "interceptação" nas portas padrão 23 (telnetd), 22 (sshd), 110 (pop3), 80 ( httpd), etc. Se o firewall detectar que alguém deseja se conectar a essas portas, ele deverá bloquear o pacote inicial, junto com qualquer comunicação posterior com o host de origem pelas próximas 24 horas, mesmo para as portas X e Y . Para fazer isso, estou tentando usar o módulo recent de iptables :

iptables -I INPUT -m state --state NEW -m recent --update --seconds 86400 --hitcount 1 -j DROP
iptables -I INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m recent --set -j DROP
iptables -I INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set -j DROP
iptables -I INPUT -p tcp -m tcp --dport 23 -m state --state NEW -m recent --set -j DROP
iptables -I INPUT -p tcp -m tcp --dport 110 -m state --state NEW -m recent --set -j DROP

Dos meus testes, parece que funciona, mas existe uma maneira mais apropriada de executar o que estou tentando fazer?

    
por antonone 11.11.2014 / 18:32

1 resposta

2

Eu não acho que essa seja uma configuração irracional, por si só. Como você está fazendo tudo no espaço do kernel (versus algo como fail2ban , que é executado na userland e atua sobre as mensagens do syslog do kernel), ele deve ser razoavelmente eficiente.

Esteja ciente de que você tem um grande potencial de ataque de negação de serviço aqui, no entanto. Um invasor pode enviar SYNs com endereços de origem falsificados para qualquer uma dessas portas "trap" e obter esses IPs bloqueados. Enviar pacotes suficientes para bloquear grande parte da Internet não seria tremendamente difícil. Provavelmente, você deve pensar na inclusão explícita de todos os endereços que você costuma usar para acessar o servidor.

Se não for prático colocar na lista de permissões os IPs que você costuma usar para acessar o servidor, não acho que eu vá por esse caminho.

    
por 11.11.2014 / 20:53