Você está na página 1de 3

PortSentry: Uma alternativa eficiente Introduo

PortSentry uma aplicao muito simples de ser utilizada, escrita para sistemas GNU/Linux com o objetivo de ajudar usurios a manter crackers longe de seu precioso sistema, barrando portscanners e outras tentativas de burlar sua segurana. PortSentry foi desenvolvido pelo pessoal da Psionic.com, que hoje faz parte da CISCO como vocs podem ver aqui: http://newsroom.cisco.com/dlls/corp_102202.html

Projeto Sentry Tools


O PortSentry foi concebido como parte do projeto Sentry Tools, que tem alm dele o LogCheck, uma ferramenta de checagem de logs de maneira eficiente e bem simples tambm. Como podemos ver, o Projeto Sentry Tools veio para ajudar usurios e admins que no tem muita experincia em segurana de informtica a conseguir um padro um pouco mais elevado de segurana em seus sistemas de maneira simples e bem intuitiva. Recomendo uma visita ao site do projeto: http://sourceforge.net/projects/sentrytools/ Vamos ver agora como instalar e configurar o PortSentry e assim tornar nosso Linux ainda mais seguro.

Configurando
Essa a parte mais divertida porque garanto que cada um aps observar o arquivo de configurao do PS vai ver configuraes que lhe chamaro mais a ateno devido s suas opes totalmente inusitadas. Vou dar um exemplo de configurao de bloqueio para atacantes que tentam portscanning e um pequeno honey pot. Vamos dar uma olhada na pasta /usr/local/psionic/portsentry. Teremos alguns arquivos dentro dela, vamos utilizar o portsentry.conf. Vamos ver as primeiras configuraes interessantes que devemos fazer: # 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,,[..] # UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,[..] # # Use these if you just want to be aware: TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,[..]" UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,34555,[..]" # # Use these for just bare-bones # TCP_PORTS="1,11,15,110,111,143,540,635,1080,1524,2000,12345,[..]" # UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,32771,32772,[..]" Aqui esto as portas TCP/UDP que o PortSentry vai "guardar". Analise as portas que tem em cada lista, as portas verdadeiras de seu sistema no devem constar nesta lista, OK? Caso contrrio, o PS vai bloquear as tentativas de conexo nelas. Como vocs viram, o segundo conjunto de portas est habilitado, vamos utilizar ele como teste, depois podemos refinar essas portas e tudo mais que vocs queiram. Vamos continuar nossa anlise no arquivo de conf: IGNORE_FILE="/usr/local/psionic/portsentry/portsentry.ignore" HISTORY_FILE="/usr/local/psionic/portsentry/portsentry.history" BLOCKED_FILE="/usr/local/psionic/portsentry/portsentry.blocked" Bom, o primeiro arquivo so os hosts que o PortSentry deve ignorar, ou seja, os hosts que estiverem nesta list no sero analisados por ele. O segundo o history, ou seja, tudo que o PS j fez, desde analisar conexes at bloquear, tudo estar listado neste arquivo. Equivale a um ~/.bash_history. O terceiro a lista negra do PortSentry, os atacantes bloqueados por ele e os hosts que ele considera como perigosos. Nessa lista voc deve ficar esperto porque s vezes algum pode cair a por engano de um falso positivo, ento fique sempre analisando esta lista para no ficar sem determinados servios de comunicao. Vamos ver agora uma opo muito maneira do Port Sentry que a KILL_ROUTE. Esta funo como j diz o nome, killa a rota do atacante, passando a ignorar todo e qualquer pacote e requisio feita por ele pelo tempo que voc determinar (logo mostraremos como). Como usamos Linux, a opo que vamos habilitar ser a: KILL_ROUTE="/usr/local/sbin/iptables -I INPUT -s $TARGET$ -j DROP" Como voc pode ver, uma regra simples, voc pode melhorar a regra do jeito que achar melhor e tudo mais, iptables meu amigo, tem 10001 possibilidades. OBS: $TARGET$ = ip do atacante que ele detectou. Alm de bloquear pelo iptables voc tambm pode utilizar TCP Wrappers para isso: KILL_HOSTS_DENY="ALL: $TARGET$ # PortSentry blocked" No recomendo a seo de Droping Route porque d mais trabalho de liberar IPs bloqueados. KILL_ROUTE j mais que suficiente.

External Command
Essa parte permite voc realizar um comando externo ao PortSentry para reagir ao ataque ou para escrever algum log especial. # KILL_RUN_CMD="/some/path/here/script $TARGET$ $PORT$" Como podem ver, a sintaxe padro como se fosse executar um "contra ataque", mas isso no muito interessante no mesmo? Creio que para ns seria mais interessante escrever um log com os IPs atacantes e tal. Bom, fica a seu critrio, onde $PORT$ a mesma porta onde voc foi atacado.

Port Banner Section


Essa a parte mais legal do PortSentry. Como voc viu l em cima, ele fica analisando vrias portas, se algum passar um scan de portas e no for barrado por algum motivo, ele vai tentar conectar em alguma porta chamativa como 79 5555 e ter uma surpresa: PORT_BANNER="** Unauthorized Access Prohibited ** Your Connection attempt has been logged . . . GO AWAY!!" Ele ir ver essa mensagem em seu cliente telnet por exemplo e sua rota ser killada. Coloque algo ao seu gosto: