[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Barrar port scans iptables - Não Resolvido



Pedro Debian wrote:
Rondineli Gama Saad escreveu:
Pedro Debian wrote:
Olá Pessoal,

Estou fazendo algumas implementações no firewall e uma das funcionalidade que gostaria de inserir é uma regra para barrar tentativas de escaneamento de portas externas. Fiz alguns testes usando módulo recent do iptables mas não tive muito sucesso para detectar a varredura para todas as portas.

Alguém já fez algum implementação neste sentido?

Obrigado


Abraços


Pedro


Olá Pedro,
Basta colocar no inicio do script as seguintes regras:

# Negar pacotes com bad flags
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j LOG --log-level alert --log-prefix "FIREWALL: Pkt Invalido! L1: "
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH         -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG --log-level alert --log-prefix "FIREWALL: Pkt Invalido! L2: "
iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j LOG --log-level alert --log-prefix "FIREWALL: Pkt Invalido! L3: "
iptables -A INPUT -p tcp --tcp-flags ALL NONE                -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j LOG --log-level alert --log-prefix "FIREWALL: Pkt Invalido! L4: "
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST         -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j LOG --log-level alert --log-prefix "FIREWALL: Pkt Invalido! L5: "
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN         -j DROP

Ou seja, estas regras vai barrar todas as tentativas de escaneamento de portas usando as combinações de flags do TCP e ainda vai criar logs das tentativas com seus respectivos supostos ips atacantes.

Espero ter ajudado.

Rondineli Saad


Olá,


Por algum motivo, aqui não funcionou. Todos os testes que fiz com o nmap ele conseguiu detectar as portas abertas. Exceto o momento que Dropei as tabelas INPUT e FORWARD mas neste caso mesmo sem qualquer regra ele bloqueou o acesso à máquina.

Tem algum script que consegue detectar o escaneamento da porta bloqueia por certo tempo qualquer tentativa deste ip acessar a máquina? Um artigo a Linux Magazine comentou que é possuivel fazer isso com o módulo recent do iptables mas não estou conseguindo montar.

Alguém pode dar um luz?


Obrigado

Pedro


Olá Pedro,
As regras citadas acima refere-se a tentativas de escaneamento de portas com flags anormais, ou seja quando o nmap usa combinações de flags que não seja SYN --> SYN+ACK --> SYN (three handshake) ele irá criar um log e dropar os pacotes. Quando vc configura um firewall onde no INPUT é liberado por exemplo as porta 22 e 80 vc esta dizdo que existe um servidor ssh e um servidor http, ou seja, se alguém tentar escanear usando as flags do three handshake as portas que foram liberadas (22 e 80) serão indicadas que estão abertas. Então imaginemos que alguém tente acessar via ssh, o invasor pode usar um script com varias senha que vai tentar acessar o seu servidor, ou seja, ela vai usar de tentativa brote force para invadir o seu servidor. Neste caso eu posso usar o modulo recent para bloquear todos os ips que tentou x vezes em um intervalo de tempo acessar o seu servidor. Sendo mais explicito: o firewall bloqueará o ip se em um intervalo de 60 seg tentou acessar 3 vezes. Abaixo umas regras que podem ser adicionadas no seu firewall:
# Regras Iptables para Bloquear ataques Brute Force no SSH
# copia da Dicas-L
# http://www.dicas-l.com.br/dicas-l/20060724.php
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name sshattack --set

iptables -A INPUT -p tcp --dport 22 --syn -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j LOG --log-prefix 'SSH REJECT: '

iptables -A INPUT -p tcp --dport 22 --syn -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j REJECT --reject-with tcp-reset

iptables -A FORWARD -p tcp --syn --dport 22 -m recent --name sshattack --set

iptables -A FORWARD -p tcp --dport 22 --syn -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j LOG --log-prefix 'SSH REJECT: '

iptables -A FORWARD -p tcp --dport 22 --syn -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j REJECT --reject-with tcp-reset


Para entender melhor o modulo recent acesse o link abaixo:
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=5551

Espero ter ajudado.

Rondineli Saad


Reply to: