Quão arriscado é ter um servidor pessoal com ssh aberto na Internet?


25

A continuação do título seria "enquanto você tiver conhecimento limitado da segurança da Internet".

Recentemente, configurei um pequeno servidor com um computador de ponta executando o debian com o objetivo de usá-lo como um repositório pessoal do git. Eu habilitei o ssh e fiquei bastante surpreso com a rapidez com que ele sofreu ataques de força bruta e coisas do gênero. Então li que isso é bastante comum e aprendi sobre medidas básicas de segurança para evitar esses ataques (muitas perguntas e duplicatas sobre falha do servidor lidam com isso, veja, por exemplo, esta ou esta ).

Mas agora estou me perguntando se tudo isso vale a pena. Decidi configurar meu próprio servidor principalmente por diversão: eu podia confiar apenas em soluções de terceiros, como as oferecidas por gitbucket.org, bettercodes.org, etc. Embora parte da diversão seja aprender sobre segurança na Internet, eu não tempo suficiente para me dedicar a se tornar um especialista e ter quase certeza de que tomei as medidas corretas de prevenção.

Para decidir se continuarei a jogar com este projeto de brinquedos, gostaria de saber o que realmente arrisco ao fazê-lo. Por exemplo, em que medida os outros computadores conectados à minha rede também estão ameaçados? Alguns desses computadores são usados ​​por pessoas com conhecimento ainda menor do que o meu executando o Windows.

Qual é a probabilidade de eu ter problemas reais se eu seguir diretrizes básicas, como senha forte, acesso root desabilitado para ssh, porta não padrão para ssh e possivelmente desativar o login de senha e usar uma das regras fail2ban, denyhosts ou iptables?

Dito de outra forma, há alguns lobos maus que eu deveria temer ou tudo se resume a espantar as crianças do roteiro?


Acho que você acertou na cabeça quando mencionou que não tem tempo ou inclinação para se tornar um especialista em segurança da $ TECHNOLOGY; esse é o principal motivo para usar uma solução hospedada. O único outro argumento comum na avaliação interna versus hospedagem é o custo. Como o github e similares são gratuitos, você está essencialmente perdendo seu tempo pessoal apenas para obter o conhecimento de como executar um repositório git. Não podemos dizer o que você deve fazer com seu tempo pessoal, mas em uma situação profissional isso não faria sentido. (caveat emptor: situações complicadas têm mais variáveis).
Chris S

1
Se você decidir executar seu próprio servidor, adicione também à sua lista de tarefas verificando regularmente atualizações e vulnerabilidades de segurança para cada serviço executado. Apenas configurá-lo não é suficiente.
semana

Duas palavras: chaves públicas, como @Stephane colocou. Desative a keyboard-interactiveautenticação e use apenas pubkeyautenticação.
Kostix

Respostas:


14

O SSH da OMI é uma das coisas mais seguras para se ouvir na Internet aberta. Se você estiver realmente preocupado, escute em uma porta de ponta não padrão. Eu ainda teria um firewall (no nível do dispositivo) entre sua caixa e a Internet real e apenas usaria o encaminhamento de porta para SSH, mas isso é uma precaução contra outros serviços. O próprio SSH é bastante sólido.

Eu tinha gente bateu no meu servidor de casa SSH ocasionalmente (abrir para a Time Warner Cable). Nunca teve um impacto real.

Algumas coisas adicionais que você pode fazer para tornar o SSH mais seguro são impedir tentativas repetidas do mesmo endereço IP para uma máquina doméstica, algo como

MaxStartups 2:30:10

em / etc / ssh / sshd_config, que restringirá quantas conexões podem ser criadas em uma linha antes de efetuar login com êxito.


Meu provedor de serviços de Internet fornece um firewall cujos parâmetros eu vi ao abrir uma porta para ssh. É a isso que você se refere?
263 de Alfred M.

2
Pode ser que alguns ISPs ofereçam um dispositivo idiota, outros um roteador com um firewall embutido. Só estou dizendo que NUNCA é uma boa ideia colocar um SO de uso geral diretamente na Internet, independentemente das precauções que você tomar. Você deseja algum tipo de dispositivo de hardware (ou algo como DD-WRT) entre você e o desagradável.
TheFiddlerWins

1
Configure a autenticação de chave pública conforme mencionado em outra resposta e DESLIGUE ChallengeResponseAuthentication e PasswordAuthentication em / etc / ssh / sshd_config.
Randy Orrison

Sei que essa é uma pergunta estúpida, mas preciso comprar um domínio para acessar meu servidor (via ssh ou navegador) da Internet?
TheRookierLearner

@TheRookierLearner - não, você pode usar o endereço IP fornecido pelo seu ISP. No entanto, dependendo da configuração da sua rede doméstica, pode ser compartilhado por todos os seus dispositivos com algo chamado PNAT (a maioria das pessoas chama isso de NAT). Se você é como a maioria das pessoas, precisará descobrir o IP "NATed" do dispositivo específico que deseja acessar da Internet (apenas ifconfig / ipconfig no sistema, será 10.xxx, 172.16. xx ou 192.168 endereços veja a RFC 1918 para mais de você se preocupa com estes números) e, em seguida, informe o seu router "porta para a frente" ou "DMZ" porta 22.
TheFiddlerWins

10

A configuração de um sistema de autenticação de chave pública com SSH é realmente trivial e leva cerca de 5 minutos para ser configurada .

Se você forçar toda a conexão SSH a usá-la, ele tornará seu sistema praticamente o mais resistente possível, sem investir muito na infraestrutura de segurança. Francamente, é tão simples e eficaz (desde que você não tenha 200 contas - então fica confuso) que não usá-lo deve ser uma ofensa pública.


3
Para forçar as conexões SSH a usar a autenticação de chave pública após a configuração, desative DESATIVOS ChallengeResponseAuthentication e PasswordAuthentication em / etc / ssh / sshd_config. Esqueci isso uma vez, para meu arrependimento (apenas uma vez e nunca mais).
Randall Orrison

8

Também administro um servidor git pessoal aberto ao mundo no SSH e também tenho os mesmos problemas de força bruta que você, para que eu possa simpatizar com sua situação.

O TheFiddlerWins já aborda as principais implicações de segurança de ter o SSH aberto em um IP acessível ao público, mas a melhor ferramenta IMO em resposta a tentativas de força bruta é o Fail2Ban - software que monitora seus arquivos de log de autenticação, detecta tentativas de invasão e adiciona regras de firewall ao sistema. iptablesfirewall local da máquina . Você pode configurar quantas tentativas antes de uma proibição e também a duração da proibição (meu padrão é 10 dias).


Como meu comentário no post anterior afirmou, é isso que meu NAS usa em casa e, após alguns meses, a quantidade de tentativas foi significativamente reduzida.
precisa saber é

2

Outra maneira de lidar com isso é configurar uma VPN. Em vez de conectar-se diretamente às portas SSH no servidor doméstico, primeiro conecte-se à VPN e depois execute todo o seu tráfego pela conexão segura e criptografada.

A maneira ideal de lidar com isso é com um firewall que incorpora um ponto de extremidade da VPN, mas você também pode configurar um computador com Windows para atuar como um servidor VPN.

Aqui está um exemplo:

http://www.howtogeek.com/135996/

Agora, lembre-se de que uma configuração de segurança adequada envolveria um computador público (ou semi-público) isolado da sua rede interna. Um servidor da Web ou qualquer computador que hospede serviços publicamente disponíveis deve estar fora da rede segura da sua casa ou escritório. Você usaria 2 roteadores para criar uma zona segura, ou uma DMZ, entre você e a Internet.

Dessa forma, se seu servidor for invadido, ele não poderá ser usado como vetor para atacar seus outros computadores.

Portanto, a configuração seria assim:

Configuração DMZ


Desculpe pela pequena imagem ... Não consigo descobrir como editar minha postagem.
TomXP411

2

As respostas são muito boas, eu recomendaria apenas duas coisas:

  • Considere o acesso apenas pelo sistema de autenticação de chaves
  • Use Denyhosts : Ele banirá os hosts que tentam acessar seu servidor com autenticação inválida
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.