Sunteți pe pagina 1din 7

CSIRT POP-MG Grupo de Resposta a Incidentes de Segurana do POP-MG c http://www.csirt.pop-mg.rnp.br csirt@csirt.pop-mg.rnp.

br

Evitando ataques SSH Brute Force usando a ferramenta DenyHosts


Alison Carmo Arantes alison@csirt.pop-mg.rnp.br

Este documento foi produzido pelo CSIRT POP-MG e pode ser distribu gratuitamente desde que os crditos de produo sejam do e ca exclusivos do CSIRT POP-MG.

Outubro de 2006

Sumrio a
1 Introduo ca 2 Ferramentas 3 Instalao do DenyHosts ca 3.1 Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Instalando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Congurao do DenyHosts ca 4.1 Congurando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Colocando para funcionar . . . . . . . . . . . . . . . . . . . . . . . . 5 Referncias e 2 2 3 3 3 4 4 6 6

Introduo ca

E comum hoje em dia, acharmos em nossos logs, vrias tentativas de ataques de a em um servidor SSH. As ferramentas e dicionrios utilizados esto cada vez mais a a aprimorados. A idia deste tutorial fornecer um passo a passo de como instalar uma e e ferramenta que verica uma tentativa de ataque brute force de SSH e imediatamente bloquei o host de origem que estava tentando fazer o ataque.

Ferramentas

Na pesquisa feita foram encontradas vrias ferramentas para fazer o bloqueio de a ssh brute force. Todas se baseiam em ler o arquivo de syslog: /var/log/messages e analisar as mensagens que o sshd gera quando um login de ssh falha. A idia destas e ferramentas, com base na informao de falha de login com determinado hosts, e ca bloquear este host depois de um nmero n de tentativas. u O bloqueio por hosts, pode ser feito de duas formas: Usando regras de algum rewall (iptables, ipfw, pf) No usando regras de rewall a Algumas ferramentas: Baseadas em rewalls: bruteforceblocker: bloqueia ssh e gera regras para pf. Feito em perl. http://danger.rulez.sk/projects/bruteforceblocker/ blocksshd: bloqueia ssh e gera regras para os rewalls: iptables e pf. Feito em perl. http://blocksshd.sourceforge.net/ ssh block: bloqueia ssh. Feito em shell script. http://bluedogsecurity.cyberinfo.se/ssh block sshdlter: bloqueia ssh e gera regras para iptables. http://www.csc.liv.ac.uk/ greg/sshdlte No usando regras de rewall: a denyhosts: bloqueia ssh e bloqueia hosts usando o arquivo hosts.deny. Necessita do python http://denyhosts.sourceforge.net/ sshit: bloqueia ssh e ftp. Feito em perl. http://anp.ath.cx/sshit/ Todas as ferramentas possuem vantagens e desvantagens. Neste tutorial, ser a explicado a instalao e congurao do denyhosts. Essa ferramenta foi escolhida ca ca pois simples de instalar e congurar e no necessita de nenhum rewall instae a lado na mquina. Caso queira usar uma ferramenta que use rewalls, sugerimos o a bruteforceblocker (apenas para BSD). 2

3
3.1

Instalao do DenyHosts ca
Requisitos

Python >= 2.3 sshd server congurado com tcp wrappers support enabled. Na maioria das distribuies linux, o sshd j compilado com tcp wrappers co a e enabled. Para ter certeza, faa o teste: c 1. Logue como root no seu sistema linux que tem o sshd server. 2. Edite o arquivo: /etc/hosts.deny 3. Adicione a linha: $ sshd: 127.0.0.1 4. Salve o arquivo 5. Tente conectar localmente no sshd server: $ ssh localhost 6. Deve aparecer a seguinte mensagem de erro do ssh: ssh exchange identication: Connection closed by remote host Se a mensagem aparecer, ento, sshd foi compilado com tcp wrappers. a 7. Edite o arquivo: /etc/hosts.deny 8. Remova a linha que vc adicionou antes (sshd: 127.0.0.1) 9. Salve o arquivo

3.2

Instalando

Baixe o arquivo fonte de: http://sourceforge.net/projects/denyhosts/ DenyHosts-#.#.#.tar.gz Descompactando: $ tar zxvf DenyHosts-#.#.#-tar.gz Onde #.#.# a verso. e a (Neste tutorial foi usada a verso 2.5) a $ cd DenyHosts-#.#.# # python setup.py install Este comando instalar os mdulos do DenyHosts no diretorio de pacotes do a o python. Uma vez instalado o DenyHosts, o diretriio /usr/share/denyhosts ser criado. o a Este diretrio contem os arquivos de conguracao e arquivos gerados pelo denyhosts o tambm (diretrio data). e o Os arquivo denyhosts.cfg-dist o arquivo de congurao principal e o arquivo e ca daemon-control-dist um script para ser colocado no /etc/init.d para controle do e daemon do denyhosts.

4
4.1

Congurao do DenyHosts ca
Congurando

Vamos congurar o arquivo principal de conguo. Este ser o arquivo: denyhosts.cfg. ca a A congurao foi feita usando um linux suse 10.0. Os exemplos de congurao so ca ca a para este sistema, mas no prprio denyhosts.cfg tem explicao para utilizao em o ca ca outras distribuies. Vamos pegar o arquivo denhosts.cfg-dist e us-lo como base: co a # cp denyhosts.cfg-dist denyhosts.cfg # editdenyhosts.cfg O 1. 2. 3. arquivo denyhosts.cfg divido em 3 partes: e Conguraes Requeridas co Conguraes opcionais co Conguraes para o mode de daemon co

SECURE LOG: Especica-se aqui o arquivo de syslog onde o sshd gera informao ca de log SECURE LOG = /var/log/messages HOSTS DENY: Especica o arquivo onde feito o acesso restrito de hosts. e HOSTS DENY = /etc/hosts.deny PURGE DENY: Remoo das entradas no HOSTS DENY que so mais antigas ca a ca que o tempo especicado em PURGE DENY. Esta opo funciona apenas quando rodamos o DenyHosts usando a ag purge. Para o modo daemon, devemos congurar outra linha do denyhosts.cfg Por exemplo, para congurao de 1 semana: ca PURGE DENY = 1w PURGE THRESHOLD: Dene o m nimo de vezes que o host pode ser removido. Se o valor for excedido, o host nao poder ser removido. Para desabilitar, use a PURGE THRESHOLD = 0 PURGE THRESHOLD = 0 BLOCK SERVICE: O servio que ser bloqueado no HOSTS DENY. Para maioc a res informaes: man 5 hosts access. co BLOCK SERVICE = sshd DENY THRESHOLD INVALID: Bloqueia cada host depois que o nmero de tentau tivas de login falhadas exceder este valor. Aplicado a tentativas de logins invlidos a (ex.: contas inexistentes). DENY THRESHOLD INVALID = 5 DENY THRESHOLD VALID: Igual ao DENY THRESHOLD mas aplicado para tentativas de logins vlidos. a DENY THRESHOLD VALID = 10

DENY THRESHOLD ROOT: Igual ao acima, mas aplicado para conta root. DENY THRESHOLD ROOT = 5 DENY THRESHOLD RESTRICTED: Igual ao acima, mas aplicado aos usernames que aparecem em:WORK DIR/restricted-usernames DENY THRESHOLD RESTRICTED = 3 WORK DIR: Diretrio onde o DenyHosts escreve seus dados o WORK DIR = /usr/share/denyhosts/data HOSTNAME LOOKUP: Para cada ip reportado, o hostname ser reportado, se a avaliado. HOSTNAME LOOKUP=YES LOCK FILE: Onde os arquivo pid sao mantidos. No SUSE, ca em: /var/run/denyhosts.pid LOCK FILE = /var/run/denyhosts.pid Vamos agora para as conguraes opcionais: co Conguraes para e-mail receber noticaes: co co E-mail que receber as noticaes quando determinado host bloqueado. a co e Obs.: No so geradas noticaes quando os hosts so removidos. a a co a ADMIN EMAIL = root@localhost SMTP HOST = localhost SMTP PORT = 25 SMTP FROM = DenyHosts nobody@localhost SMTP SUBJECT = DenyHosts Report SMTP DATE FORMAT = %a, %d %b %Y %H:%M:%S %z Existem algumas outras opes nesta segunda parte da congurao que no foco ca a ram mostradas. Mais informaes, no prprio arquivo de congurao: denyhosts.cfgco o ca dist Vamos agora para as conguraes do daemon: co DAEMON LOG: Especica arquivo de log quando denyhosts est rodando em modo a daemon. DAEMON LOG = /var/log/denyhosts DAEMON PURGE: Esta congurao, seta a frequencia que o daemon do denyhosts ca deve apagar as entradas antigas do HOSTS DENY baseado no tempo de PURGE DENY. DAEMON PURGE = 1h Temos uma rea do arquivo de congurao que espec a ca e ca para o modo de sincronizao: Esta sincronizao permite que o daemon do denyhosts periodicamente ca ca mande e receba arquivos de hosts que foram bloqueados. Este modo desabilitado e por default, mas pode ser interessante, se vc tem um servidor ssh muito utilizado e quer utilizar uma lista de hosts que j foram catalogados como fontes de brute force. a

No vamos cobrir estas conguraes aqui, qualquer coisa, verique as informaes a co co no arquivo de congurao. ca

4.2

Colocando para funcionar

Depois de devidamente congurado, vamos colocar o DenyHosts para funcionar. Vamos rodar o DenyHosts como um daemon. Antes de colocar o DenyHosts para funcionar, temos que ter o arquivo daemon-control e congurar 3 parametros neste arquivo. Copiando o arquivo do daemon-control: cp /usr/share/denyhosts/daemon-control-dist /usr/share/denyhosts/daemon-control-dist Temos que alterar 3 conguraes no arquivo denyhostsctl. co So elas: a DENYHOSTS BIN =/usr/bin/denyhosts.py Onde est arquivo principal do denyhosts a DENYHOSTS LOCK = /var/run/denyhosts.pid Onde cam os arquivos de pid da sua distribuio linux. No SUSE ca em /var/run/ ca DENYHOSTS CFG = /usr/share/denyhosts/denyhosts.cf g Onde ca o arquivo de congurao ca Como o arquivo ser executado pelo root: a chown root /etc/init.d/denyhostsctl chmod 700 /etc/init.d/denyhostsctl Vamos agora, colocar o denyhosts para iniciar automaticamente: Crie um link simblico em /etc/init.d: o # cd /etc/init.d # ln -s /usr/share/denyhosts/daemon-control denyhostsctl Para faz-lo funcionar, basta: e /etc/init.d/denyhostsctl start

Referncias e

Pgina principal do DenyHosts: a http://denyhosts.sourceforge.net/index.html

S-ar putea să vă placă și