Instalando o Portsentry
# cd /tmp
# tar xvfz portsentry-1.2.tar.gz
# cd portsentry_beta/
# make linux
# make install
Portsentry será instalado em /usr/local/psionic/portsentry/.
Editar
/usr/local/psionic/portsentry/portsentry.conf e especificar as portas que você quer que o portsentry proteja:
# Un-comment these if you are really anal:
#TCP_PORTS="1,7,9,11,15,70,79,80,109,110,111,119,138,139,143,512,513,514,515,540,635,1080,1524,2000,[...]"
#UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,635,640,641,666,700,2049,31335,[...]"
#
# Use these if you just want to be aware:
TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,12345,12346,20034,27665,31337,[...]"
UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,34555,31335,32770,32771,32772,32773,32774,[...]"
#
# Use these for just bare-bones
#TCP_PORTS="1,11,15,110,111,143,540,635,1080,1524,2000,12345,12346,20034,32771,32772,32773,32774,[...]"
#UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,32771,32772,32773,32774,31337,54321"
Deve-se bloquear portas que não estão em uso no sistema. Por exemplo, se você usar o IMAP (porta 143 TCP) no servidor, deve remover 143 da lista acima. O resto do portsentry.conf é bem comentado, mas normalmente os valores padrão devem funcionar.
Agora precisamos criar um script para portsentry (
/etc/init.d/portsentry). Vamos executar o portsentry modalidade avançada chamada stealth, que é o meio mais poderoso para detectar portscans:
#!/bin/bash
case "$1" in
start)
echo "Starting Portsentry..."
ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry -atcp' | grep -iv 'grep' > /dev/null
if [ $? != 0 ]; then
/usr/local/psionic/portsentry/portsentry -atcp
fi
ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry -audp' | grep -iv 'grep' > /dev/null
if [ $? != 0 ]; then
/usr/local/psionic/portsentry/portsentry -audp
fi
echo "Portsentry is now up and running!"
;;
stop)
echo "Shutting down Portsentry..."
array=(`ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry' | grep -iv 'grep'
| awk '{print $1}' | cut -f1 -d/ | tr '
' ' '`)
element_count=${#array[@]}
index=0
while [ "$index" -lt "$element_count" ]
do
kill -9 ${array[$index]}
let "index = $index + 1"
done
echo "Portsentry stopped!"
;;
restart)
$0 stop && sleep 3
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
Depois execute o comando:
# chmod 755 /etc/init.d/portsentry
A fim de iniciar o portsentry em no boot faça o seguinte:
# ln -s /etc/init.d/portsentry /etc/rc2.d/S20portsentry
# ln -s /etc/init.d/portsentry /etc/rc3.d/S20portsentry
# ln -s /etc/init.d/portsentry /etc/rc4.d/S20portsentry
# ln -s /etc/init.d/portsentry /etc/rc5.d/S20portsentry
# ln -s /etc/init.d/portsentry /etc/rc0.d/K20portsentry
# ln -s /etc/init.d/portsentry /etc/rc1.d/K20portsentry
# ln -s /etc/init.d/portsentry /etc/rc6.d/K20portsentry
Agora nós iremos iniciar o portsentry:
# /etc/init.d/portsentry start
Atenção: se você executar o chkrootkit e o portsentry pode reportar um bindshell infectado:
Checking `bindshell'... INFECTED (PORTS: 31337)
Isso é normal e não temos nada para se preocupar.
Instalando o Logcheck
# cd / tmp
# logcheck tar xvfz-1.1.1.tar.gz
# cd logcheck-1.1.1/systems/<seu tipo de sistema, por exemplo, Linux>
Agora mude a variável SYSADMIN em logcheck.sh. SYSADMIN é a pessoa que receberá a saída do logcheck por e-mail (isso pode ser um endereço de e-mail ou um usuário no sistema onde você instalar o logcheck):
[...]
# CONFIGURATION SECTION
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ucb:/usr/local/bin
# Logcheck is pre-configured to work on most BSD like systems, however it
# is a rather dumb program and may need some help to work on other
# systems. Please check the following command paths to ensure they are
# correct.
# Person to send log activity to.
SYSADMIN=me@myself.tld
# Full path to logtail program.
# This program is required to run this script and comes with the package.
LOGTAIL=/usr/local/bin/logtail
[...]
Depois digite estes comandos:
# cd ../../
# mkdir -p /usr/local/etc/tmp
# make <seu tipo de sistema, por exemplo, Linux>
Isto irá instalar o logcheck em /usr/local/etc.
Agora temos que criar um job no cron para executar periodicamente logcheck. Edite o arquivo de cron do root (por exemplo /var/spool/cron/crontabs/root, ver tópico 2 "Instalando o Chkrootkit") e digite a seguinte linha:
0 3 * * * /usr/local/etc/logcheck.sh
Em seguida, execute:
# chmod 600 /var/spool/cron/crontabs/root
# /etc/init.d/cron restart
Isso irá chamar logcheck uma vez por dia às 3 da manhã. Ele irá informá-lo sobre eventos estranhos, as violações de segurança, os ataques do sistema etc. Se o seu sistema está exposto diretamente à internet, você notará que existem muitas atividades maliciosas na Internet e vai sentir uma sensação de segurança que é muito importante.
Links:
Mauro Risonho de Paula Assumpção
Fundador do BackTrack Brasil (BTB)
Pentester, Analista em Segurança
Desenvolvedor de Software
firebits@backtrack.com.br
http://www.backtrack.com.br
última palestra ministrada: 05-fev-2009 Intel Moblin Day 2008-2009
http://www.intel.com/portugues/pressroom/releases/2009/0205.htm