IPS - Intrusion Prevention System / Bloqueio de Port Scanning

O IPS também é um mecanismo de defesa que impede que o atacante execute seu port scanning com sucesso, colocando seu ip em uma lista de bloqueio. Para isso, vamos utilizar o portcentry. Ele vai simular algumas portas falsas na nossa máquina e misturar com as portas originais, assim que o atacante fizer um scan em uma dessas portas falsas, o sistema já dispara uma ação para realizar o bloqueio.

sudo apt install portsentry

O portsentry fica localizado em /etc/portsentry. Se utilizarmos o netstat para ver as portas abertas, teremos apenas duas (antes de utilizar o portsentry).

┌──(user㉿kali)-[~/Desktop]
└─$ netstat -nlpt
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::80                   :::*                    LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      -                   

Quando startamos o serviço, podemos perceber que ele irá gerar as portas falsas.

┌──(user㉿kali)-[~/Desktop]
└─$ netstat -nlpt           
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:1080            0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:12345           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:12346           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:635             0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:49724           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:540             0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:1               0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:20034           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:32771           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:32772           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:40421           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:32773           0.0.0.0:*               LISTEN      -                              
tcp        0      0 0.0.0.0:1524            0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:119             0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::80                   :::*                    LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      - 

No portsentry.conf há um parte em que você pode fazer o bloqueio de porta TCP e UDP, basta passar o valor de "1".

Por agora, vamos deixar como 0 para vermos alguns detalhes.

Outras configurações que vamos fazer, é comentar essa linha. Essa configuração basicamente adiciona uma regra de bloqueio de rota do IP que está atacando.

Ao invés de usar essa regra, vamos utilizar a do iptables. Que vai adicionar uma regra de DROP para o alvo. Nesse caso vamos descomentar a linha.

Pronto, configurações finalizadas.

Quando fazemos um scan para detectar qual é o tipo de serviço que está rodando em determinada porta, ele retorna "tcpwrapped" para aquelas portas que o portsentry subiu como portas falsas. As demais que realmente estavam abertas, a resposta vem normalmente dizendo qual o tipo de serviço.

Quando o nmap retorna com esse "tcpwrapped", é muito provável que tenha um firewall ou algum IPS bloqueando esse serviço (o alvo estabeleceu o 3WH, só que depois ele bloqueou o acesso, ou enviou um RST de volta, etc). Esse detalhe é muito importante, por isso não foi habilitado ainda para bloqueio, para que pudéssemos ver como que é retornado caso acontecer isso.

Agora, vamos setar as configurações para bloquear.

Precisamos reiniciar o portsentry após isso.

Ao fazer o scan, percebemos que não há resposta alguma, e nosso IP foi colocado em uma lista de bloqueio.

Porém, precisamos de saber um detalhe. Para isso, vamos apagar o nosso IP da lista de bloqueio e resetar as regras do iptables com o comando iptables -F. O que acontece é que quando fazemos um Syn Scan, mesmo com esse bloqueio, ele retorna as portas. Para isso não ocorrer, precisamos setar uma outra configuração no portsentry.

Primeiramente precisamos parar o serviço do portsentry com service portsentry stop. Vamos localizar onde está o binário do portsentry com whereis portsentry. Vamos direto onde está o binário dele para aplicar uma outra configuração.

Esse -stcp é justamente para evitar scans "sealth", ele não aguarda o 3WH ser concluído para dropar. Executamos então

Pronto, agora está bloqueando Syn Scan.

Last updated

Was this helpful?