Você está na página 1de 4

TCNICAS PARA MELHORIA DA SEGURANA

ALTERAR A
PORTA EM QUE O SERVIDOR

DO SERVIO

SSH

SSH

OUVE

Por default, o servio SSH atende conexes na porta 22. Invasores usam software de scan de portas para identificar se os computadores esto rodando o servio SSH. recomendvel mudar esta porta para um valor acima de 1024, visto que a maioria dos scanners de portas (inclusive o nmap), por default, no analisam portas altas. Edite o arquivo /etc/ssh/sshd_config e procure por uma linha como: Port 22 Altere o nmero da porta e reinicie o servio SSH: # /etc/init.d/ssh restart

PERMITA APENAS SSH

PROTOCOLO

Existem duas verses do protocolo SSH. Usar apenas a verso 2 do protocolo SSH muito mais seguro; a verso 1 do protocolo SSH est sujeita a problemas de segurana, inclusive o ataque man-in-the-middle e ataques de insero. Edite o arquivo /etc/ssh/sshd_config e procure por uma linha com o seguinte contedo: Protocol 2,1 Mude a linha para que especifique apenas a verso 2 do protocolo SSH.

PERMITA

O LOGIN VIA

SSH

APENAS PARA DETERMINADOS USURIOS

Voc no deve permitir login do usurio root via SSH, pois um risco de segurana grande e desnecessrio. Se um atacante consegue logar como root em seu sistema, ele pode causar mais danos do que se conseguisse acesso como um usurio comum. Configure seu servidor SSH de modo a impedir que o usurio root consiga fazer o login diretamente. Encontre a linha abaixo: PermitRootLogin yes Mude o valor yes para no e reinicie o servio. Voc poder fazer o login como qualquer outro usurio definido e mudar para o usurio root se precisar executar tarefas restritas ao superusurio. aconselhvel criar um usurio local sem nenhum privilgio no sistema usar este usurio para fazer o login com SSH. Desta forma, nenhum prejuzo poder decorrer se a conta deste usurio for comprometida. Ao criar este usurio certifique-se de que pertence ao grupo wheel, de forma a que ele possa se tornar o superusurio. Se voc deseja ter uma lista de usurios que so os nicos a poderem logar via SSH, voc pode especificar estes usurios no arquivo de configurao sshd_config. Por exemplo, digamos que eu queira permitir que os usurios anze, dasa e kimy possam logar via SSH. Ao final do arquivo sshd_config adicione uma linha como abaixo: AllowUsers anze dasa kimy

CRIAR

UM BANNER CUSTOMIZADO PARA O

SSH

Se voc quiser que qualquer usurio que se conecte atravs de seu servio SSH veja uma mensagem especfica, voc pode criar um banner SSH customizado. Basta criar um arquivo de texto (em meu exemplo este arquivo se chama /etc/ssh-banner.txt) e escrever dentro dele qualquer mensagem que desejar; por exemplo:

************************************************************* **** * Este um servio SSH privado. No para voc estar aqui * * Por favor, saia imediatamente. * ************************************************************* **** Ao terminar a edio, salve o arquivo. No arquivo sshd_conf, procure por uma linha que diz: #Banner /etc/issue.net Descomente a linha e coloque o caminho para o seu banner SSH customizado.

USANDO

CHAVE PBLICA

DSA

PARA AUTENTICAO

Ao invs de usar nomes de login e senhas para autenticao via SSH, voc pode usar chaves pblicas DSA. Observe que voc pode ter tanto nomes de login e autenticao por chaves pblicas DSA habilitados ao mesmo tempo. Ter a autenticao por chaves pblicas DSA habilitadas torna o seu sistema a prova de balas para ataques de dicionrio, porque voc no precisa de um nome de login e senha para se logar no servio SSH. Ao invs disto, voc precisa de um par de chaves DSA -- uma pblica e uma privada. Voc mantm a chave privada na sua mquina e copia a chave pblica para o servidor. Quando voc quiser estabelecer uma sesso SSH, o servidor verifica as chaves, e se elas baterem, voc recebe uma shell. Se as chaves no baterem, voc desconectado. Neste exemplo, a mquina pessoal (a partir da qual me conectarei ao servidor) station1 e a servidora server1. Em ambas as mquinas eu tenho o mesmo diretrio home; isto no ir funcionar se os diretrios home so diferentes nas mquinas cliente e servidor. Primeiro, voc precisa criar um par de chaves em sua mquina pessoal com o comando: $ ssh-keygen -t dsa Voc precisar especificar uma frase para sua chave privada, mas voc pode deix-la em branco, o que no recomendvel. Um par de chaves gerado. Sua chave privada ser gravada em ~/.ssh/id_dsa e sua chave pblica ser gravada em .ssh/id_dsa.pub. A seguir, copie o contedo de ~/.ssh/id_dsa.pub para server1, para o arquivo ~/.ssh/authorized_keys. O contedo de ~/.ssh/id_dsa.pub deve ser algo como: $ cat .ssh/id_dsa.pub

ssh-dss AAAAB3NzaC1kc3MAAACBAM7K7vkK5C90RsvOhiHDUROvYbNgr7YEqtrdfFCUVwM WcJYDusNG AIC0oZkBWLnmDu+y6ZOjNPOTtPnpEX0kRoH79maX8NZbBD4aUV91lbG7z604Z TdrLZVSFhCI/Fm4yROH Ge0FO7FV4lGCUIlqa55+QP9Vvco7qyBdIpDuNV0LAAAAFQC/9ILjqII7nM7aK xIBPDrQwKNyPQAAAIEA q+OJC8+OYIOeXcW8qcB6LDIBXJV0UT0rrUtFVo1BN39cAWz5puFe7eplmr6t7 Ljl7JdkfEA5De0k3WDs

9/rD1tJ6UfqSRc2qPzbn0p0j89LPIjdMMSISQqaKO4m2fO2VJcgCWvsghIoD0 AMRC7ngIe6btaNIhBbq ri10RGL5gh4AAACAJj1/rV7iktOYuVyqV3BAz3JHoaf+H/dUDtX+wuTuJpl+t fDf61rbWOqrARuHFRF0 Tu/Rx4oOZzadLQovafqrDnU/No0Zge+WVXdd4ol1YmUlRkqp8vc20ws5mLVP3 4fST1amc0YNeBp28EQi 0xPEFUD0IXzZtXtHVLziA1/NuzY= anze@station1.example.com Se o arquivo ~/.ssh/authorized_keys j existir, adicione o contedo do arquivo ~/.ssh/id_dsa.pub ao arquivo ~/.ssh/authorized_keys em server1. A nica coisa que resta fazer definir as permisses de leitgura e gravao corretas para o arquivo ~/.ssh/authorized_keys em server1. $ chmod 600 ~/.ssh/authorized_keys Agora, configure o arquivo sshd_conf para usar as chaves de autenticao DSA. Certifiquese de que as linhas a seguir esto descomentadas: RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys Reinicie o servio. Se voc configurou tudo corretamente, voc deve poder efetuar conexes SSH para o seu servidor e cair diretamente no seu diretrio home, sem a necessidade de qualquer tipo de interao. Se voc deseja habilitar apenas a autenticao DSA, certifique-se de descomentar e alterar a linha PasswordAuthentication no arquivo sshd_config de yes para no: PasswordAuthentication no Se algum tentar se conectar ao seu servio SSH e no possuir uma chave pblica no servidor, ele ser rejeitado sem ao menos ver o prompt de login, com o seguinte erro: Permission denied (publickey)

USANDO TCP WRAPPERS PARA PERMITIR A CONEXO

DE HOSTS ESPECFICOS

Esta tcnica til se voc deseja autorizar que apenas hosts especficos em uma rede se conectem ao seu servio SSH, mas voc no quer usar ou estragar a sua configurao do iptables. Ao invs disto, voc pode usar TCP wrappers; neste caso, o wrapper sshd. Criarei uma regra para autorizar a conexo ao meu servio SSH apenas para hosts em minha subrede local 192.168.1.0/24 e para o host remoto 193.180.177.13. Por default, TCP Wrappers primeiro consultam o arquivo /etc/hosts.deny para ver quais hosts no podem acessar qual servio. Em seguida, consultam o arquivo /etc/hosts.allow para verificar se existe alguma regra que permite que determinados hosts se conectem a servios especficos. Criarei uma regra como esta no arquivo /etc/hosts.deny: sshd: ALL Isto significa que, por default, todos os hosts so proibidos de acessar o servio SSH. Preciso fazer esta especificao, pois caso contrrio, todos os hosts teriam acesso ao servio SSH, pois o TCP Wrappers primeiro consulta o arquivo hosts.deny e se no existir nenhuma regra bloqueando o servio SSH, qualquer host poder se conectar.

Em seguida, crie uma regra em /etc/hosts.allow para autorizar apenas hosts especficos (como definido anteriormente) a usar o servio SSH: sshd: 192.168.1 193.180.177.13 Agora, apenas hosts da rede 192.168.1.0/24 e o host 193.180.177.13 podero acessar o servio SSH. Todos os outros hosts sero desconectados antes mesmo de chegar ao prompt de login, e recebero um erro como abaixo: ssh_exchange_identification: Connection closed by remote host

USANDO

IPTABLES PARA AUTORIZAR A CONEXO DE HOSTS ESPECFICOS

Uma alternativa ao TCP Wrappers (embora voc possa usar os dois ao mesmo tempo) limitar o acesso ao servio SSH com iptables. Aqui est um exemplo simples de como voc pode autorizar apenas um host especfico a se conectar usando o seu servio SSH: # iptables -A INPUT -p tcp -m state --state NEW --source 193.180.177.13 --dport 22 -j ACCEPT Certifique-se de que ningum mais tenha acesso ao servio SSH: # iptables -A INPUT -p tcp --dport 22 -j DROP Salve as suas novas regras e pronto.

SSH

TIME-LOCK

Voc pode usar parmetros diferentes do iptables para limitar as conexes ao seu servio SSH por perodos de tempo pr-determinados. Voc pode usar as diretivas /second, /minute, / hour ou /day, em qualquer dos exemplos abaixo. No primeiro exemplo, se o usurio fornece a senha errada, seu acesso ao servio SSH bloqueado por um minuto, e o usurio s pode tentar um login por minuto a partir daquele momento: # iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT # iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -j DROP Em um segundo exemplo, iptables configurado para permitir que apenas o host 193.180.177.13 se conecte ao servio SSH. Depois de trs tentativas mal sucedidas, o iptables permitir apenas uma tentativa de login por minuto: # iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -m limit --limit 1/ minute --limitburst 1 -j ACCEPT # iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -j DROP

CONCLUSO
Estes recursos no so difceis de serem configurados, mas so tcnicas poderosas para melhorar a segurana de seu servio SSH. um pequeno preo a ser pago para uma boa noite de sono.

Você também pode gostar