Eu tenho um pequeno servidor SVN, o velho dell optiplex executando o debian. Eu não tenho demandas tão altas no meu servidor, porque é apenas um pequeno servidor SVN ... mas quero que ele seja seguro.
Acabei de renovar meu servidor para um optiplex mais novo e melhor e comecei a procurar um pouco no servidor antigo. Tirei depois de ter problemas. Quando verifico os logs, está cheio de tentativas de força bruta e, de alguma forma, alguém conseguiu entrar na minha máquina. Essa pessoa criou um volume extra chamado "knarkgosse" com dois diretórios "root" e "swap1" ou algo assim. Realmente não sei por que e o que eles fazem, mas com certeza querem impedir que isso aconteça novamente. Acho isso um pouco estranho, porque eu mudo minha senha alguns meses mais ou menos, e as senhas são sempre letras e números aleatórios reunidos ... não é fácil a força bruta.
Sei que posso impedir que o root efetue login e usar sudoers ... e alterar a porta SSH, mas o que mais posso fazer?
Então, eu tenho algumas perguntas:
Como impedir o login por 5 minutos após a quantidade X de tentativas incorretas. Ou tentativas lentas para baixo após cada tentativa incorreta?
Existe algum tipo de lista negra central à qual um servidor pode se conectar? Uma lista negra que monitora os endereços IP "inseguros" e nunca deve ter acesso concedido?
O que mais posso fazer para aplicar segurança ao meu servidor?
Como eu disse anteriormente, estou executando o Debian 5 com Apache (problema do usuário dos dados www?), Svn, mysql, php, phpmyadmin, hudson. Está em uma rede doméstica com encaminhamento de porta 80, 443, 8080, 8180, 23 e 22.
fonte
Respostas:
Fail2ban e Port Knocking devem atender à maioria das suas necessidades.
Também é recomendável alterar a porta SSH e permitir apenas a autenticação baseada em chave.
Pode-se argumentar que você pode atingir um ponto de retorno decrescente ao adicionar medidas de segurança adicionais, mas, novamente, cabe a você decidir quando está "suficientemente seguro".
Também é uma boa idéia proibir o login root.
fonte
Não há substituto para senhas seguras E autenticação de chave. Dito isto, o Fail2Ban é uma ótima ferramenta para banir IPs de usuários que tentam se autenticar muitas vezes. Também está disponível como um pacote pré-construído para a maioria das distribuições. Esteja avisado de que você pode ser banido acidentalmente, portanto, tenha também um IP listado em recuperação ou um acesso fácil ao console ...
O Fail2Ban tem vários bons exemplos de como configurar tudo o que você pediu ... no entanto, não possui um repositório universal de endereços incorretos. Eu não acho que exista tal repositório em qualquer lugar devido à facilidade de obter outro IP (dhcp renew / ataques bot-net / etc ...). Eu também desativaria o logon via ssh usando nomes de usuário comuns do tipo 'administrador' (root / admin / administrator / sysop / etc ..), pois esses são os mais comuns.
fonte
Eu parei ataques de força bruta com:
fonte
Há várias boas sugestões oferecidas aqui. Eu respeitosamente sugiro que três coisas tornem isso relativamente seguro:
UsePAM não
Espero que isto ajude.
fonte
Eu sempre fui um grande fã do CSF / LFD, que pode bloquear endereços IP de pessoas que tentam bruteforce, portscan e algumas outras opções. É basicamente um enorme invólucro perl para tabelas IP, mas o arquivo de configuração não é difícil de ler e a documentação não é ruim.
fonte
Você também pode olhar para o sshguard. Eu não o usei, mas ouvi coisas boas.
Fontes:
http://isc.sans.edu/diary.html?storyid=9370
http://www.sshguard.net/
http://www.sshguard.net/docs/faqs/
"O Sshguard monitora os servidores de suas atividades de registro. Quando os registros mostram que alguém está fazendo algo ruim, o sshguard reage bloqueando-o um pouco. O Sshguard tem uma personalidade sensível: quando um perverso insiste em incomodar seu host, ele reage mais e mais firme ".
fonte
Eu tenho um servidor SSH conectado à Internet na porta padrão e nunca tive problemas.
espero que ajude!
fonte
Existe uma maneira melhor de fazer isso, usando fail2ban significa que você precisa adicionar um aplicativo e ele opera na camada de aplicativo.
Se você usa o iptables, é mais eficiente, pois opera na camada de rede e não é necessário instalar um aplicativo extra.
Use o módulo recente do iptables http://www.snowman.net/projects/ipt_recent/
fonte
Uma opção (a ser usada além de outras medidas de segurança) é ter o sshd listen em uma porta que não seja 22. Eu não tentei isso sozinho, mas ouvi dizer que reduz o número de ataques de força bruta por bots.
Devo enfatizar que isso não é uma segurança real, apenas reduz o número de ataques automatizados de força bruta. Muito trabalho para verificar todas as portas, eu acho.
fonte
telnet
embora. Geralmente é uma idéia melhor usar portas que não são reservadas, como> 60k. iana.org/assignments/port-numbers fornece uma lista de números de porta reservados.I don't use te[l]net on this machine
- mantenha assim. Embora você queira um cliente de telnet por vários motivos, não há motivo para executar um servidor de telnet quando o ssh estiver disponível. Senhas de texto sem formatação por cabo são ruins .Algo que não é mencionado aqui e realmente deveria estar limitando o acesso via firewall. Isso não se adequa a todas as situações, mas se você estiver se conectando ao host de um local consistente com um IP estático, poderá bloquear completamente o SSH, exceto esse IP. Isso garantirá que os invasores não possam entrar. Como eu mencionei, isso nem sempre é adequado a todas as situações, especialmente se o seu IP for dinâmico e mudar com frequência.
fonte
DenyHosts, http://denyhosts.sourceforge.net/ , é um bom projeto com o qual tive sorte. Se você definir denyhosts para sincronizar, ele fará o download de novos IPs para adicionar a uma lista de proibições que tiveram que forçar outros sistemas a usar denyhosts. Ele também expira IPs que não tentam usar força bruta por um tempo.
Usar a autenticação de chave pública e desativar o log de senhas é provavelmente a melhor coisa que você pode fazer. Derrota qualquer ataque de força bruta.
fonte
O que tem sido eficaz para mim:
Como já foi dito, sem login raiz, PasswordAuthentication definido como no (somente login com chaves) em sshd_config
Somente um ou dois usuários têm permissão para efetuar login via ssh e eles têm nomes quase obscuros que não estão nas listas de nomes de usuário comuns das ferramentas de força bruta (por exemplo, não "admin" ou "apache" ou "web" ou " johnny ")
Regras de firewall restritivas (basicamente, tudo está bloqueado, exceto minha porta de serviço e ssh). Eu até restringi o ping para afastar as verificações mais grosseiras (para grande desgosto do meu parceiro).
No meu host, restrinja o acesso a alguns endereços IP específicos - mas isso parece que não é uma opção para você. Certamente não posso fazer isso sozinho em todos os nossos anfitriões. Você também pode procurar em "porta batendo".
E o meu favorito: o módulo de resposta ativa da OSSEC para bloquear várias condições de força bruta e alertas sobre outros erros também. Ele detecta x logins inválidos em y quantidade de tempo e depois bloqueia (por meio de um comando iptables firewall-drop) por um determinado período de tempo. Estou bloqueando por cerca de 12 horas agora por diversão. :)
Uma coisa que faço aqui para garantir que não bloqueie muito a coisa errada é que no /etc/ossec.conf, defino a resposta ativa para um nível alto (que não existe na configuração padrão) e depois percorra o sshd_rules.xml e defina as regras que quero bloquear para esse nível e modifique os limites para o bloco vs. o alerta, conforme necessário.
Se você estiver executando o Apache, também poderá bloquear coisas que violem as regras do apache. Eu não bloqueio isso apenas por causa do problema da NAT, quero pensar em bloquear uma universidade inteira ou algo assim. :) Além disso, você pode escrever regras personalizadas para bloquear em determinadas condições nos arquivos de log, o que pode ser realmente útil.
fonte