Meu servidor está sendo constantemente atacado [fechado]

32

Sou bastante novo no mundo da administração de sistemas. Eu tenho trabalhado em um aplicativo recentemente e, quando verifico os logs do servidor de aplicativos, constantemente recebo vários endereços IP tentando ssh no servidor com força bruta. Aqui está um exemplo do meu log do servidor:

Feb 14 04:07:20 foodwiz3 sshd[1264]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:07:21 foodwiz3 sshd[1264]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:07:21 foodwiz3 sshd[1264]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:07:23 foodwiz3 sshd[1264]: Failed password for root from 23.249.167.223 port 32997 ssh2
Feb 14 04:07:23 foodwiz3 sshd[1264]: Received disconnect from 23.249.167.223: 11: Bye Bye [preauth]
Feb 14 04:13:04 foodwiz3 sshd[1289]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:13:05 foodwiz3 sshd[1289]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:13:05 foodwiz3 sshd[1289]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:13:07 foodwiz3 sshd[1289]: Failed password for root from 23.249.167.223 port 41562 ssh2

Isso é algo normal, ou devo me preocupar / fazer algo a respeito?

SivaDotRender
fonte
3
Tente alterar o número da porta e veja se ela persiste. Se eles não estiverem segmentando você especificamente, provavelmente não.
GOLDILOCKS
13
A melhor solução é desativar a autenticação de senha no SSH, pois isso certamente interromperá os ataques de força bruta!
Willem
3
@ William - não, desabilitar a autenticação de senha NÃO interromperá os ataques. Isso só os tornará malsucedidos (os invasores não perceberão que a autenticação por senha foi desativada e continuarão tentando).
Martin Vegter 17/02/2015

Respostas:

59

Bem-vindo ao maravilhoso mundo da Internet ... Você:

Mas a resposta real é: Sim, isso é normal : o BotNet Maffia sempre pode usar alguns servidores extra mal protegidos ...

Fabby
fonte
1
Prefiro não ter SSH na Internet selvagem. +1
Rui F Ribeiro
2
Além de alterar a porta padrão do ssh, também temos a porta batendo .
Pablo A
15

É bastante normal ter testes de login suficientes para criar um registro de inundação.

Alterar as portas SSH é mais um tipo de solução de 'segurança por obscuridade', mas ajuda com a inundação. Eu enfatizo que não é muito elegante; existem portas de fato para serviços por um motivo.

Como deve estar ativado por padrão, mas verifique se você não pode fazer o SSH no servidor como root. É o nome de usuário bastante consistente entre os servidores e, portanto, o principal objetivo das tentativas de login com força bruta de senha. Aplique a configuração com a seguinte linha em sshd_config:

PermitRootLogin no

Observe também fail2banque monitora os logs sshd para reincidentes. Por exemplo, 5 logins com falha em 3 minutos de um determinado IP teriam esse IP bloqueado por 10 minutos. Aumentei esse tempo de proibição para 24 horas para reduzir ainda mais o spam de log - com êxito. :)

unperson325680
fonte
1
O apt-get install fail2ban o ajudará basicamente a ser coberto #
Willem
7
"Aumentei o tempo de proibição para 24 horas para reduzir ainda mais o spam de log" Confie em mim. A menos que você tenha acesso físico ao servidor, um dia você se arrependerá profundamente. ;)
Daniel
8

Eu sugiro que você faça algumas coisas:

  1. Altere a porta em que o ssh está ouvindo (algo acima de 1024) e verifique se você não usa a versão 1 do protocolo:

/ etc / ssh / sshd_config

# What ports, IPs and protocols we listen for
Port 50022
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
  1. Instal fail2ban- monitora arquivos de log e proíbe temporária ou persistentemente endereços propensos a falhas, atualizando as regras de firewall existentes ( iptables).

  2. Verifique se você listou em branco seus locais confiáveis.

pawel7318
fonte
7

Sim, fique preocupado . Você pode nunca se queimar, mas deve seguir as melhores práticas de TI. Melhor prevenir do que remediar.

Sou administrador de rede de um hospital. É sempre uma idéia conectar uma caixa diretamente à Internet. O que você vê são todos os milhares de scanners automatizados que pesquisam vulnerabilidades na Internet. Vejo todo esse tipo de coisa (varreduras de portas, vários testes conhecidos de vulnerabilidade) para todos os tipos de software (ssh, telnet, ftp, etc.) aparecerem na nossa caixa de identificações
Sua máquina deve estar protegida por uma solução de firewall / NAT e você deve encaminhar as portas necessárias para a Internet (80, 443, etc.). É relativamente fácil de fazer.
Ter algo que você pode usar para gerenciamento (SSH telnet) é uma má idéia para ter acesso à Internet, porque se - por qualquer motivo - houver um bug no software SSH / telnet nesse servidor, o bot automatizado o detectará em um piscar de olhos e você vai se ferrar. Os erros no software acontecem o tempo todo e pode demorar um pouco para que um patch seja lançado ou para você lembrar de corrigi-lo.

Se você precisar gerenciar remotamente, tente configurar algo como uma solução VPN ou, se você usa o Windows, configure o gateway de serviços de terminal para a área de trabalho remota. Sei que você pode usar uma caixa Linux ou Windows separada com 2 NICs para configurar o roteamento e o acesso remoto para VPN e NAT se você for apenas uma pequena loja. Caso contrário, fornecedores como a Cisco têm soluções de firewall / NAT de hardware (Cisco ASA).

Em resumo, coloque sua máquina atrás do NAT. Somente porta encaminha as portas necessárias para executar a finalidade do serviço. Não envie serviços de encaminhamento usados ​​para gerenciamento à Internet; procure a VPN para gerenciamento remoto.

PS A alteração das portas SSH pode ajudar com o volume do log, mas na verdade não impede o acesso ao SSH. Qualquer um dos milhares de localizadores automatizados de vulnerabilidades pode e fará varreduras de portas para ver quais portas estão atendendo a quais serviços. Você pode fazer isso sozinho com uma ferramenta chamada nmap .

pessoa
fonte
7
Na verdade, uma solução VPN não é mais ou menos segura que um servidor SSH. Ambos contam com a implementação correta dos protocolos criptográficos e com a configuração correta dos serviços. Por meios diferentes, eu diria que eles fornecem exatamente o mesmo nível de segurança. Então, se eu entendi bem, você colocou um SSH atrás de uma VPN, sim, esse é um nível mais seguro.
Lgeorget
Sim, você está correto que é o que eu quis dizer, o uso de VPN para obter passado o ssh, em seguida, firewall / NAT para o servidor
pessoa
1
fwiw A maioria das configurações de VPN passa por várias camadas de autenticação de clientes, além de fornecer um ponto único de tráfego externo que pode alcançar a rede interna. Versus tendo muitos nós. Os concentradores de VPN também geralmente não são alvos interessantes por si só, em comparação com o servidor que provavelmente hospeda a sshdinstância. Um ssh jumpbox pode ser tão seguro quanto a maioria das configurações de VPN, mas, em geral, não é assim que funciona.
Bratchley
5

Você pode configurar o firewall interno do kernel por iptables . Para que apenas algumas máquinas possam fazer ssh no servidor e deixar cair outros pacotes IP. Veja man iptablespara mais informações.

Por exemplo, se 192.168.1.67 é o host do qual você ssh, no tipo de servidor:

sudo iptables -A INPUT -p tcp --dport ssh -s 192.168.1.67 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport ssh -j DROP
sudo iptables-save
cff
fonte
2
Observe que você ficará ferrado se o gerenciamento remoto for a sua única opção. A maioria dos IPs é apenas semi-permanente. Mude o hardware e você será queimado.
mastro
3

Você realmente precisa do seu servidor na internet? Se você realmente deseja tê-lo na internet, verifique se ele é seguro antes de colocá-lo lá.

Alterar a porta é apenas segurança através da obscuridade. Se o invasor for mais sofisticado do que apenas executar scripts, isso não ajudará.

Algumas coisas já mencionadas que eu recomendo também:

  1. Concordo com o Fail2Ban, e a configuração adequada manterá os scripts e os hackers mais sofisticados afastados.
  2. Definir PermitRootLogin como no é uma obrigação.
  3. Configure um firewall. Normalmente, simplesmente edito as regras do iptables, mas algo como UFW ou firehol também funcionará.

Acabei de ingressar nesta comunidade porque há duas coisas que acho que não foram abordadas adequadamente.

  • No bloco de configuração do firewall, desative absolutamente tudo o que não é completamente necessário. Antes de abrir qualquer porta, pergunte-se: "Eu realmente preciso deste serviço da Internet?" Cada porta / serviço que você abre se torna outro vetor em potencial que alguém pode explorar. Se houver um bug nesse serviço que permita obter acesso root ao servidor, eles poderão acessar tudo nele. Sua segurança é tão forte quanto o elo mais fraco.
  • Agora, a última coisa e sem dúvida a mais importante. Os scripts que você viu tentando acessar o ssh podem adivinhar sua senha com o tempo. O Fail2Ban os atrasará bastante, mas eles ainda podem adivinhar. Se o fizerem, você deseja autenticação de dois fatores nos serviços acessíveis. Por isso, recomendo uma conta gratuita no Duo Security. https://www.duosecurity.com/docs/duounix
moral
fonte
1
Alterar a porta tem a vantagem de limpar os arquivos de log: como as crianças de script geralmente não atacam portas não padrão, você sabe que qualquer entrada de log representa uma ameaça séria.
Mark
Alterar a porta também não é de uso zero contra uma ameaça real. Uma lombada não é uma parede muito grande, mas ainda é uma lombada, e existem maneiras de transformá-la em uma lombada um pouco maior. Além disso, embora a autenticação de dois fatores seja certamente uma boa idéia para ser usada sempre que possível e quase sempre seja possível, existem casos extremos. Se houver um período mínimo específico de tempo, você pode ter certeza de que o Fail2Ban os atrasará, simplesmente alterando sua senha com mais freqüência do que isso os forçará a reiniciar repetidamente e nunca terminar.
Matthew Najmon
2

Outro exemplo da resposta @cff, se você pretende banir quaisquer "tentativas" sucessivas no seu servidor SSH:

sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --update --seconds 600 --hitcount 4 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP
sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource
sudo iptables-save

Essa conexão de 'etiqueta' tenta e, se mais de 4 ocorrerem em 600s (10mn), a origem será 'banida'. Use isso em vez da solução @cff, porque é mais seguro (se você se bloquear, aguarde 10 minutos e tente novamente).

xryl669
fonte