PSAD: Port Scan Attack Detector

Neste artigo vamos conhecer o PSAD, um um software criado exclusivamente para agir como um detector de ataques como port scan e DDoS. Veremos suas principais características e como tirar proveito deste projeto muito interessante.

[ Hits: 105.663 ]

Por: Anderson L Tamborim em 25/10/2004 | Blog: http://y2h4ck.wordpress.com


Proof of Concept: testes de segurança



Agora que já configuramos basicamente o PSAD, vamos inicializá-lo:

# /etc/init.d/psad start
Starting the psad daemons.

Os seguintes daemons fazem parte do psad:
  • /usr/bin/perl -w /usr/sbin/psad
  • /usr/sbin/psadwatchd
  • /usr/sbin/kmsgsd

Agora ele está executando e protegendo nosso sistema.

Vamos realizar um teste com o nmap localmente:

# nmap -sT -v -PT localhost
Starting nmap 3.70 ( http://www.insecure.org/nmap/ ) at 2004-09-01 17:29 BRT
Note: Host seems down. If it is really up, but blocking our ping probes, try -P0
Nmap run completed -- 1 IP address (0 hosts up) scanned in 2.150 seconds

BINGO, como vimos não retornou nenhuma porta válida, agora vamos ver os emails:

# mail
"/var/spool/mail/root": 12 messages 1 new 12 unread
U 1 root@unsekurity.lo Wed Sep 1 17:27 52/1715 [psad-alert] DL2 src: loc
U 2 root@unsekurity.lo Wed Sep 1 17:27 52/1715 [psad-alert] DL2 src: loc
?1
Message 1:
From root@unsekurity.local Wed Sep 1 17:27:07 2004
X-Original-To: root@localhost
Delivered-To: root@localhost.unsekurity.local
Date: Wed, 01 Sep 2004 17:27:06 -0300
To: root@localhost.unsekurity.local
Subject: [psad-alert] DL2 src: localhost dst: localhost
User-Agent: nail 10.5 4/27/03
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
From: root@unsekurity.local (root)

=-=-=-=-=-=-=-=-=-=-=-= Wed Sep 1 17:27:06 2004 =-=-=-=-=-=-=-=-=-=-=-=


         Danger level: [2] (out of 5) Multi-Protocol

    Scanned tcp ports: [4-6112: 22 packets]
            tcp flags: [SYN: 22 packets, Nmap: -sT or -sS]
  Iptables chain: INPUT (prefix "Port Scan Attack"), 22 packets
    Scanned udp ports: [512: 1 packets, Nmap: -sU]
       Iptables chain: INPUT (prefix "Port Scan Attack"), 1 packets

               Source: 127.0.0.1
                  DNS: localhost

          Destination: 127.0.0.1
                  DNS: localhost

      Syslog hostname: RootSec

     Current interval: Wed Sep  1 17:27:01 2004 (start)
                       Wed Sep  1 17:27:06 2004 (end)

   Overall scan start: Wed Sep  1 17:26:40 2004
   Total email alerts: 5
   Complete tcp range: [4-44443]
   Complete udp range: [512]

   chain:   interface:   tcp:   udp:   icmp:  
   INPUT    lo           161    4      0      

[+] Whois Information:
Unknown AS number or IP network. Please upgrade this program.
?q

Como vimos ele detalhou o ataque: tipo de scan, protocolos utilizados e etc.

Vamos ver o syslog também:

# tail /var/log/messages
Sep 1 17:28:00 RootSec kernel: Port Scan AttackIN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=39 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=32771 DPT=512 LEN=19
Sep 1 17:28:01 RootSec kernel: Port Scan AttackIN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=40 TOS=0x00 PREC=0x00 TTL=39 ID=45715 PROTO=TCP SPT=54369 DPT=1427 WINDOW=4096 RES=0x00 SYN URGP=0
Sep 1 17:28:05 RootSec psad: scan detected: 127.0.0.1 -> 127.0.0.1 tcp=[142-1427] SYN tcp=2 udp=1 icmp=0 dangerlevel: 2
Sep 1 17:28:05 RootSec psad: sending email alert to: root@localhost
Sep 1 17:28:32 RootSec kernel: Port Scan AttackIN=ppp0 OUT= MAC= SRC=200.176.2.10 DST=200.232.209.247 LEN=115 TOS=0x00 PREC=0x00 TTL=53 ID=0 DF PROTO=UDP SPT=53 DPT=32776 LEN=95

O PSAD além de reportar com grande precisão o ataque, não permitiu que o atacante pudesse coletar informações sobre nosso servidor.

Página anterior     Próxima página

Páginas do artigo
   1. Prólogo
   2. Introdução: PSAD
   3. Instalação do PSAD
   4. Configuração do PSAD
   5. Proof of Concept: testes de segurança
   6. Considerações finais
   7. Append 1
Outros artigos deste autor

Seguraça extrema com LIDS

Jails em SSH: Montando sistema de Shell Seguro

Análise Forense - Aspectos de perícia criminal

Snort avançado: Projetando um perímetro seguro

PaX: Solução eficiente para segurança em Linux

Leitura recomendada

Sistemas e volumes criptografados e escondidos utilizando o TrueCrypt

Como fazer: chroot SSH (SSH mais seguro)

Trilhas de Certificação em Segurança da Informação - Qual caminho seguir?

Verifique a sua fortaleza com lsat - software de auditoria em servidores e desktops

Debian Sarge + Snort + MySQL + Acidlab + Apache

  
Comentários
[1] Comentário enviado por cvs em 25/10/2004 - 09:52h

Aprendeu do jeitinho que eu ensinei hein? :D ehehehhehe... muito bom o artigo, jã vou testar aqui.

[2] Comentário enviado por rfranzen em 25/10/2004 - 12:23h

Mais um excelente artigo do y2h4ck...

Parabéns !

[3] Comentário enviado por ygorth em 25/10/2004 - 12:25h

interessante o assunto. Só nao acho que o artigo ficaria chato se o .conf do PSAD fosse tratado com mais atencao. Porem, muito valido o artigo eu pessoalmente nao conhecia ferramenta.

[4] Comentário enviado por ygorth em 25/10/2004 - 12:30h

interessante o assunto. Só nao acho que o artigo ficaria chato se o .conf do PSAD fosse tratado com mais atencao. Porem, muito valido o artigo eu nao conhecia ferramenta.

[5] Comentário enviado por y2h4ck em 25/10/2004 - 13:12h

Caro controlc, o conf do PSAD vai ser postado na seção "Conf"
justamente para evitar ter que colar um .conf gigante aqui :)

Abraços

[6] Comentário enviado por cmarcelo em 25/10/2004 - 15:00h

Esta ferramenta é melhor que o Protsentry? Quais as principais diferenças? Qual você me recomendaria usar?

[7] Comentário enviado por neriberto em 25/10/2004 - 17:01h

Cmarcelo, mandou bem... o artigo tá legal mesmo...

[8] Comentário enviado por y2h4ck em 25/10/2004 - 18:30h

Cmarcelo, como o PSAD e o portsentry trabalham de maneira um pouco diferente, eu diria que isso iria depender um pouco do cenario que iria ser implantado.

Mas eu recomendo utilizar o PSAD integrado ao Snort, assim conseguiria uma solução mais Eficiente.

:)

Boa sorte

[9] Comentário enviado por tucs em 25/10/2004 - 20:17h

Realmente interessante, utilizo o guardian para esse serviço mas estarei estudando essa possibilidade, parabens.

Eduardo Assis

[10] Comentário enviado por naoexistemais em 26/10/2004 - 04:55h

Andeson,

Kd o Engos, reclamando do seu artigo, parabéns....

Falou,

[11] Comentário enviado por andreguerra em 26/10/2004 - 10:48h

Mais um artigo excelente, aliás como todos os outros do Anderson.

Abraço,

André Guerra

[12] Comentário enviado por naoexistemais em 29/10/2004 - 06:08h

Anderson,

Você testou em qual distribuição o PSAD, por se foi no Slackware você deve ter esquecido mencionar alguns provaveis problemas, exemplo como editar o install.pl e colocar o caminho correto do INIT_DIR.

Falou,

[13] Comentário enviado por y2h4ck em 29/10/2004 - 09:56h

Como mencionei na pagina 2 ...
Plataforma: SuSE Linux 9.1 Professional

Aqui não tive problemas :)

Abraços

[14] Comentário enviado por Sabaote em 29/12/2004 - 08:23h

Eu instalei em um Sistema o PSAD e agora recebo e-mails a cada minuto.. chego a receber cerca de 5000 mil e-mails por dia avisando que alguém tentou scanear o sistema.. como posso parar com isso ?
Muito bom o artigo.. :)

[15] Comentário enviado por removido em 21/11/2006 - 07:40h

O PSAD trabalha com os logs gerados de algum firewall, geralmente o iptables, mas pelo que vi no artigo, você não colocou nenhuma regra de firewall para gerar logs. Você até comentou no começo, mas deve ter esquecido durante o artigo.

Para que ele envie a notificação via email é preciso está rodando o Sendmail, o PSAD usa esse Daemon para enviar os emails.

Para habilitar a diretiva "IPTABLES_BLOCK_METHOD" a diretiva "ENABLE_AUTO_IDS" tem que está ativa também, senão estiver não vai ter efeito a diretiva "IPTABLES_BLOCK_METHOD".

A respeito do usuário acima uma sugestão é você mudar o valor da diretiva "EMAIL_ALERT_DANGER_LEVEL" para 4 no arquivo de configuração do PSAD "/etc/psad/psad.conf". Para só enviar um email para as notificações mais importantes.
Outra solução é mudar o valor da diretiva "EMAIL_LIMIT" que por padrão seu valor é 0, ou seja, ilimitado. Defina o valor de quantos email você pode receber em um determinado IP, por exemplo:

EMAIL_LIMIT 5

Apesar de o PSAD não ter muita documentação, este artigo vai ser bem útil para vários administradores. Parabéns!

[16] Comentário enviado por fjbvn em 11/12/2007 - 21:15h

Bom artigo...

> /mybrower/bookmarks.

Vou implementar aqui e relato algum problema ocorrido!

[17] Comentário enviado por memory em 29/10/2008 - 21:33h

Concordo com leogemeostotino,
artigo esta bom mesmo bem facil de ser entendido para quem esta interessado no assunto.
http://www.4shared.com/file/71491619/b73f328d/Psad.html?
abracos

[18] Comentário enviado por condealisson em 04/11/2011 - 11:12h

Parabéns, excelente tutorial, simples e eficiente!

Vou deixar aqui minha experiencia.

Instalei o psad e nada dele monitorar, rodava normalmente, sem erros, porém sem reports.

Então lembrei que havia alterado meu rsyslogd.conf, aí a solução.

A linha que busca o arquivo de log continha:

IPT_SYSLOG_FILE /var/log/messages;

E eu alterei as mensagens de log do kernel para cairem todas no kern.log no rsyslogd.conf!!!

Então alterei a linha para:

IPT_SYSLOG_FILE /var/log/kern.log;

E está tudo funcionando agora.

Outra observação: caso o processo /usr/sbin/kmsgsd não exista é devido à configuração:

ENABLE_SYSLOG_FILE Y;

Se alterarmos para N o psad usará o kmsgsd para monitorar o iptables, mas assim ele vai inserir dados no arquivo de log, então, melhor deixar com Y mesmo e sem o kmsgsd para "estufar" os logs.

(Dica retirada de: <http://www.mail-archive.com/psad-discuss@lists.sourceforge.net/msg00015.html>)

Outro problema que encontrei foi a mensagem:

Starting psad: Undefined subroutine &main::LOG_DAEMON called at /usr/sbin/psad line 9443.

Isso se deve ao colocar a opção N na regra IPTABLES_BLOCK_METHOD.
Caso queira desativar o bloqueio de ips altere:

ENABLE_AUTO_IDS Y;

para:


ENABLE_AUTO_IDS N;

e não a opção:

IPTABLES_BLOCK_METHOD Y;

para:

IPTABLES_BLOCK_METHOD N;

Essa última deve ser sempre Y.

Forte abraço.

[19] Comentário enviado por jgama em 26/06/2014 - 11:11h

Esta maquina que vai ter o PSAD tem que ser o gateway da Rede?

Abraço


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts