Como parar crackers com o PortSentry

Você pode esquecer os scans no seu computador Linux rapidamente com este pequeno pacote de software

Resumo

O PortSentry é uma aplicação fácil de instalar que é feita para ajudar um usuário em suas tentativas de parar os crackers de coração frio que tentam invadir a poderosa fortaleza que é sua máquina Linux.

Por Joshua Drake

(LinuxWorld) -- Minha última coluna SysAdmin foi uma modesta tentativa de trazer alguma capacidade básica de firewall ao Linux 2.4. Esta semana iremos continuar no caminho focado em segurança, dando uma batelada de conhecimentos para os não-iniciados. O tópico: PortSentry da Psionic Software.

O PortSentry é uma aplicação fácil de instalar que foi feita para auxiliar um usuário Linux em suas tentativas de parar os crackers de coração frio que tentam invadir a poderosa fortaleza que é sua máquina Linux. Especificamente, o PortSentry é executado como um daemon no host protegido. Quando está rodando, ele fica atento às portas TCP/IP que você especificar. Se ele detectar um port scan, ele irá bloquear o IP que está fazendo o scan para que não se conecte à sua máquina.

Não faça login como root

Você deve logar como root somente quando absolutamente necessário. Se você puder usar o comando su com a flag -c para obter o mesmo resultado, faça-o. Se você não tem certeza da sintaxe do comando su, veja a página man do mesmo.

O PortSentry se mostrou tão efetivo no que faz, que é incluído em muitas das mais novas distribuições Linux. Entre estas estão o Turbo Linux, o Red Hat, e o Debian. Você pode fazer download do PortSentry gratuitamente de muitos lugares. Como iremos instalar o PortSentry do zero, iremos fazer o download do código fonte da Psionic Software. Não iremos executar nenhuma análise exaustiva do PortSentry. se você está interessado em mais informações e informação mais detalhada que a fornecida por este artigo, sugiro uma visita no Web site da Psionic Software.

Após você ter feito o download dos 45 kbytes do pacote, você vai querer descompactar o mesmo em um local apropriado em sua máquina. Como é usual, assume-se que você entende o básico do Linux e seus comandos associados como o tar.

Quando você descompactar o código fonte, entre no diretório do mesmo e execute make linux. Sim, é assim simples! O PortSentry deve compilar sem erros em qualquer plataforma Linux moderna. Sim, o Red Hat 6.2 é moderno (apesar de eu ter minhas suspeitas sobre o 7.1). Após o PortSentry ter sido compilado, utilize o comando abaixo para instalar a aplicação em sua estrutura de diretório(/usr/local/psionic): su -c "make install". Você precisará da senha do root para executar este comando.

Agora que temos o PortSentry instalado, iremos verificar a configuração básica. O arquivo de configuração para o PortSentry é chamado de portsentry.conf, e é localizado em /usr/local/psionic/portsentry/. Você terá que usar o su -c ou ser root para editar o arquivo portsentry.conf.

O arquivo de configuração do PortSentry é grande, mas não é complicado. A primeira seção do arquivo que discutiremos se parece com o seguinte:

# 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,[...]"
#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,[...]"
UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,[...]"

#
# Use these for just bare-bones
#TCP_PORTS="1,11,15,110,111,143,540,635,1080,1524,2000,[...]"
#UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,32771,[...]"

Da mesma forma que scripts shell, e algumas linguagens de programação, você comenta o arquivo de configuração usando o símbolo #. Se você executar o PortSentry como ele está, ele irá monitorar as portas identificadas pelo comentário "Use these if you just want to be aware". Esta é a configuração que a maioria dos usuários irá provavelmente usar. O primeiro conjunto é extremamente restritivo, e o terceiro é um pouco embaçado de um ponto de vista de segurança.

Se você escolher as configurações padrão de portas, eu sugiro que remova a porta 143 da lista. A porta 143 é utilizada pelo IMAP.

A próxima parte do arquivo de configuração que iremos explorar é parecida com isto:

######################
# Configuration Files#
######################
#
# Hosts to ignore
IGNORE_FILE="/usr/local/psionic/portsentry/portsentry.ignore"

# Hosts that have been denied (running history)
HISTORY_FILE="/usr/local/psionic/portsentry/portsentry.history"

# Hosts that have been denied this session only (temporary until next restart)
BLOCKED_FILE="/usr/local/psionic/portsentry/portsentry.blocked"

Esta parte do arquivo é usada para especificar onde você quer que os arquivos de configuração fiquem. Se você estiver utilizando a configuração padrão, os arquivos de configuração irão ficar na árvore de diretórios em /usr/local/psionic. Entretanto, você pode querer mover os mesmos para outro local. O uso de /etc/portsentry é muito popular em várias distribuições Linux.

Conforme seguimos em nossa viagem sem paradas para a euforia da detecção de port scanning, devemos determinar o que o nosso host protegido deve fazer se detectar um scan. Isto é feito na seção Dropping Routes, que se parece com isto:

# ipfwadm support for Linux
#KILL_ROUTE="/sbin/ipfwadm -I -i deny -S $TARGET$ -o"
#
# ipfwadm support for Linux (no logging of denied packets)
#KILL_ROUTE="/sbin/ipfwadm -I -i deny -S $TARGET$"

#
# ipchain support for Linux
#KILL_ROUTE="/sbin/ipchains -I input -s $TARGET$ -j DENY -l"

#
# ipchain support for Linux (no logging of denied packets)
#KILL_ROUTE="/sbin/ipchains -I input -s $TARGET$ -j DENY"

#
# iptables support for Linux
#KILL_ROUTE="/usr/local/bin/iptables -I INPUT -s $TARGET$ -j DROP"

#

Se você estiver usando uma versão do Linux que ainda use o comando ipfwadm, você está precisando fazer uma atualização. Se você estiver utilizando um kernel 2.2 no seu Linux. escolha o seguinte:

# ipchain support for Linux
#KILL_ROUTE="/sbin/ipchains -I input -s $TARGET$ -j DENY -l"

Finalmente, se você estiver usando um kernel 2.4 no seu Linux escolha a seguinte:

# iptables support for Linux
#KILL_ROUTE="/usr/local/bin/iptables -I INPUT -s $TARGET$ -j
DROP"

Lembre que você deve "descomentar" (retirar o #) a linha para que a mesma fique ativa. Certifique-se de somente descomentar o comando KILL_ROUTE, e não o comentário que o precede.

O comando KILL_ROUTE é, (IMHO) a parte mais poderosa do PortSentry. A forma que o KILL_ROUTE funciona é assim: se o PortSentry detecta um scan, o comando KILL_ROUTE é executado. Através da configuração padrão do PortSentry, isto significa que todos os pacotes TCP/IP futuros do host que está fazendo o scan serão descartados, ou negados. Em outras palavras, tudo que seu hacker potencial ouve no outro lado da linha é "desculpe, todos os circuitos estão ocupados! Tente fazer a chamada mais tarde." Para sorte do host progegido, não fará diferença se o agressor tentar novamente mais tarde. Os circuitos sempre estarão ocupados para ele.

A última coisa a falar sobre é como executar o PortSentry. O PortSentry deve ser parte da inicialização normal do sistema, e a forma mais fácil de fazer o PortSentry iniciar automaticamente é colocar o mesmo no arquivo rc.local. Se você estiver rodando uma nova versão do Red Hat ou Mandrake, pode haver um script service que você pode utilizar. Se você estiver usando o rc.local para iniciar o PortSentry, você pode acrescentar as seguintes linhas ao mesmo:

echo "Starting PortSentry"
/usr/local/psionic/portsentry/portsentry -atcp
/usr/local/psionic/portsentry/portsentry -audp
echo "Done"

Existem outras opções disponíveis para o PortSentry, mas elas estão fora do escopo deste artigo. Por sorte, a maior parte das opções padrão do arquivo de configuração do PortSentry são suficientes para uma máquina Linux. Entretanto, eu sugiro que você estude a documentação inclusa. A documentação é razoavelmente abrangente, e pode dar algumas dicas sobre o que NÃO fazer.


Sobre o autor

Joshua Drake é co-fundador da Command Prompt, Inc., uma empresa de desenvolvimento PostgreSQL e Linux. Ele é o autor atual do Linux Networking HOWTO, Linux PP HOWTO, e o Linux Consultants HOWTO. Seu projeto que mais consome seu tempo neste momento é um novo livro para a O'Reilly, Practical PostgreSQL.

Recursos

Histórias Relacionadas

Sites Relacionados

Copyright © 2001 IDG.net


* Você encontra uma tradução deste artigo em Firewall iptables em 10 minutos

** Você encontra uma tradução deste artigo em Como saber se seu Linux foi invadido

1