Neste artigo vamos conhecer o trojan-scan, um software criado para detectar qualquer processo que venha ficar em modo listen em nosso sistema e assim, enviar um e-mail para o administrador para notificá-lo de que há um daemon não autorizado rodando no servidor.
O objetivo neste artigo é montar um sistema de monitoração de processos locais em um servidor, pois quando houver algum processo que não esteja autorizado no arquivo de configuração do trojan-scan, ele informa o administrador sobre tal evento, podendo assim, tomar uma ação mais eficiente caso alguma backdoor for instalada no servidor e levantar uma porta alta.
Instalação do trojan-scan
OBS: Para a instalação e utilização do PSAD estou levando em consideração que o leitor possua conhecimentos prévios em manipulação de arquivos compactados (.tar.gz).
Sistema Operacional: Debian Stable 3.1
Primeiramente instale o lsof:
# apt-get install lsof
Agora vamos fazer download do trojan-scanHomepage:
# wget http://www.derks.it/trojan-scan-1.2.tgz
Agora vamos descompactar:
# tar zxvf trojan-scan-1.2.tgz
Ele irá descompactar 2 arquivos:
- trojan-scan.conf
- trojan-scan.sh
Crie o diretório trojan-scan no /etc e copie o trojan-scan.conf pra ele:
# mkdir /etc/trojan-scan
# cp trojan-scan.conf /etc
Agora copie o trojan-scan.sh para /usr/local/sbin/:
# cp trojan-scan.sh /usr/local/sbin/
Para configuração vamos até o diretório /etc/trojan-scan, lá encontraremos o arquivo a seguir: # cd /etc/trojan-scan # ls -l -rw-r--r-- 1 root root 1628 2005-10-07 11:21 trojan-scan.conf Vamos editar este arquivo: # vi trojan-scan.conf Vamos mudar as variáveis: |
RECIPIENTS="security@security.com" |
Coloque nesta variável seu e-mail. |
SUBJECT="[`hostname -s`] Trojan scanner report" |
Esta variável se refere ao assunto que será enviado junto a mensagem, você pode alterar se quiser e deixar algo como "ALERTA!!! TROJAN". |
ALLOWED="$ALLOWED httpd:{80,443}:{apache,root}" ALLOWED="$ALLOWED mysqld:3306:mysql" ALLOWED="$ALLOWED named:53:named" ALLOWED="$ALLOWED sendmail:25:mail" ALLOWED="$ALLOWED ftpd:21:!@any@!" ALLOWED="$ALLOWED sshd:22:sshd" ALLOWED="$ALLOWED xinetd:113:root" |
Estas variáveis se referem a quais daemons ele não vai checar, no exemplo acima, estas variáveis vem por padrão, no meu caso, eu instalei em um firewall, então ficou assim: |
#ALLOWED="$ALLOWED httpd:{80,443}:{apache,root}" #ALLOWED="$ALLOWED mysqld:3306:mysql" #ALLOWED="$ALLOWED named:53:named" ALLOWED="$ALLOWED postfix:25:postfix" #ALLOWED="$ALLOWED ftpd:21:!@any@!" ALLOWED="$ALLOWED sshd:22:root" ALLOWED="$ALLOWED master:25:root" #ALLOWED="$ALLOWED xinetd:113:root" |
Eu comentei todas as outras e deixei somente o ssh e o postfix. No ssh eu mudei o final e deixei como root e não mais como sshd, pois meu ssh roda como root. No postfix eu alterei a linha ALLOWED="$ALLOWED sendmail:25:mail" deixando assim: ALLOWED="$ALLOWED postfix:25:postfix" e adicionei a linha: ALLOWED="$ALLOWED master:25:root" Como podemos ver, a configuração é bem simples, agora vamos para a ultima variável: |
LSOF_MD5="00000000000000000000000000000000" |
Esta variável vem assim por padrão, precisamos alterar esta linha e adicionar o md5sum do binário lsof nela. Podemos fazer assim: $ whereis lsof lsof: /usr/bin/lsof /usr/sbin/lsof /usr/share/man/man8/lsof.8.gz $ md5sum /usr/bin/lsof 44323131e794221f135f7356ce75e5cd /usr/bin/lsof Bom...este foi o retorno do meu comando md5sum, agora vamos adicionar este valor na variável LSOF_MD5, ficando assim: |
LSOF_MD5="44323131e794221f135f7356ce75e5cd" |
Agora salve o arquivo e saia. Vamos adicionar o trojan-scan no nosso crontab: # crontab -e Agora adicione esta linha dentro dele: |
*/5 * * * * /usr/local/sbin/trojan-scan.sh -F |
Salve e saia. |
Testando o trojan-scan |
Agora que já configuramos basicamente o trojan-scan, vamos testá-lo.
Vou levantar o inetd, pois não liberei ele no arquivo de configuração, logo, qualquer processo que subir que não esteja no meu arquivo de configuração, o trojan-scan vai me avisar.
# /etc/init.d/inetd start
Agora vamos verificar nosso e-mail:
De: root <root@server>
Para: security@security.com
Assunto: [firewall] Trojan scanner report 2005/Out/07 12:21
Data: Fri, 7 Oct 2005 12:21:23 -0300 (BRT)
The following (probable) trojans where found:
UNKNOWN: /usr/sbin/inetd (inetd:113:root)
ls: -rwxr-xr-x 1 root root 20216 2004-10-24 13:28 /usr/sbin/inetd*
ps: root 10752 1 0 12:20 ? 00:00:00 /usr/sbin/inetd
lsof:
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
inetd 10752 root cwd DIR 8,2 536 2 /
inetd 10752 root rtd DIR 8,2 536 2 /
inetd 10752 root txt REG 8,8 20216 3830 /usr/sbin/inetd
inetd 10752 root mem REG 8,2 90248 6200 /lib/ld-2.3.2.so
inetd 10752 root mem REG 8,2 1244688 6203 /lib/libc-2.3.2.so
inetd 10752 root mem REG 8,2 34520 6211 /lib/libnss_files-2.3.2.so
inetd 10752 root 0u CHR 1,3 406 /dev/null
inetd 10752 root 1u CHR 1,3 406 /dev/null
inetd 10752 root 2u CHR 1,3 406 /dev/null
inetd 10752 root 4u IPv4 86201 TCP *:auth (LISTEN)
BINGO!!
Nosso sistema detectou a porta 113 listen e nos avisou via e-mail. Como vimos, é fácil implantar o trojan-scan e tornar nosso sistema mais seguro contra backdoors e quaisquer serviços que subam em modo listen em nossa máquina sem que tenhamos autorizado.
Espero ter ajudado a todos com este artigo e que ele venha tornar a vida de nós, administradores de rede, mais tranqüila.
Abraços
Bruno Moreira Zanelato
Administrador de Redes Linux
Linux Security Certified
Conectiva Linux Certified
Unix Administration Certified
chroot_@hotmail.com
0 comentários:
Postar um comentário