Header Ads

As melhores maneiras de proteger seu servidor SSH

Proteja a conexão SSH do seu sistema Linux para proteger seu sistema e dados. Os administradores de sistema e os usuários domésticos precisam proteger e proteger os computadores voltados para a Internet, mas o SSH pode ser complicado. Aqui estão dez vitórias rápidas e fáceis para ajudar a proteger seu servidor SSH.

Noções básicas de segurança do SSH

SSH significa Secure Shell.O nome "SSH" ”é usado de forma intercambiável para significar o próprio protocolo SSH ou as ferramentas de software que permitem que administradores e usuários do sistema façam conexões seguras com computadores remotos usando esse protocolo.

O protocolo SSH é um protocolo criptografado projetado para fornecer uma segurançaconexão através de uma rede insegura, como a Internet.O SSH no Linux é construído em uma versão portátil do projeto OpenSSH.É implementado em um modelo clássico de cliente-servidor, com um servidor SSH aceitando conexões de clientes SSH.O cliente é usado para conectar-se ao servidor e exibir a sessão para o usuário remoto.O servidor aceita a conexão e executa a sessão.

Na configuração padrão, um servidor SSH escutará as conexões de entrada na porta 22 do TCP (Transmission Control Protocol). Como essa é uma porta conhecida e padronizada, é um alvo para atores de ameaças e bots maliciosos.

Atores de ameaças iniciam bots que examinam vários endereços IP à procura de portas abertas. As portas são examinadas para verificar se existem vulnerabilidades que podem ser exploradas. Pensando, eu estou seguro, existem alvos maiores e melhores do que eu para os bandidos mirarem, ”é falso raciocínio. Os bots não estão selecionando alvos com base em qualquer mérito;eles estão procurando metodicamente sistemas que podem violar.

Você se indica como vítima se não tiver protegido seu sistema.

Atrito de segurança

Atrito de segurança é a irritação de qualquer grau que usuários e outras pessoas experimentam quando você implementa medidas de segurança. Temos lembranças longas e podemos lembrar de apresentar novos usuários a um sistema de computador e ouvi-los perguntar, com voz horrorizada, se eles realmente precisavam digitar uma senha toda vez que efetuavam login no mainframe. Isso "para eles" era um atrito à segurança.

(Aliás, a invenção da senha é creditada a Fernando J. Corbató, outra figura no panteão de cientistas da computação cujo trabalho combinado contribuiu para ocircunstâncias que levaram ao nascimento do Unix.)

A introdução de medidas de segurança geralmente envolve algum tipo de atrito para alguém. Os empresários precisam pagar por isso. Os usuários do computador podem ter que mudar suas práticas familiares ou lembrar-se de outro conjunto de detalhes de autenticação ou adicionar etapas extras para se conectar com êxito. Os administradores do sistema terão trabalho adicional a ser feito para implementar e manter as novas medidas de segurança.

O fortalecimento e o bloqueio de um sistema operacional Linux ou Unix podem se envolver muito rapidamente.O que estamos apresentando aqui é um conjunto de etapas fáceis de implementar que melhorarão a segurança do seu computador sem a necessidade de aplicativos de terceiros e sem vasculhar seu firewall.

Essas etapas não são #8217; t a palavra final em segurança SSH, mas eles avançam muito nas configurações padrão e sem muito atrito.

Use a versão 2 do protocolo SSH

Em 2006, o protocolo SSH foi atualizado da versão 1 para a versão 2. Foi uma atualização significativa. Houve tantas alterações e melhorias, especialmente em relação à criptografia e segurança, que a versão 2 não é compatível com a versão 1. Para impedir conexões de clientes da versão 1, você pode estipular que seu computador só aceitará conexões de clientes da versão 2.

Para fazer isso, edite o arquivo / etc / ssh / sshd_config. Faremos muito isso ao longo deste artigo. Sempre que você precisar editar este arquivo, este é o comando a ser usado:

 sudo gedit / etc / ssh / sshd_config 

Adicione olinha:

 Protocolo 2 

E salve o arquivo. Vamos reiniciar o processo do daemon SSH. Novamente, faremos muito isso ao longo deste artigo. Este é o comando a ser usado em cada caso:

 sudo systemctl restart sshd 

Vamos verificar se nossa nova configuração está em vigor. Vamos pular para uma máquina diferente e tentar fazer o SSH em nossa máquina de teste.E usaremos a opção -1 (protocolo 1) para forçar o comando ssh a usar a versão 1. do protocolo

 ssh -1 dave@howtogeek. local 

Ótimo, nossa solicitação de conexão foi rejeitada. Vamos garantir que ainda possamos nos conectar com o protocolo 2. Usaremos a opção -2 (protocolo 2) para provar o fato.

 ssh -2 dave @ howtogeek. local 

O fato de o servidor SSH estar solicitando nossa senha é uma indicação positiva de que a conexão foi feita e você está interagindo com o servidor. Na verdade, como os clientes modernos do SSH usam o protocolo 2 como padrão, não precisamos especificar o protocolo 2 desde que nosso cliente esteja atualizado.

 ssh dave@howtogeek. local

E nossa conexão é aceita. Portanto, apenas as conexões mais fracas e menos seguras do protocolo 1 estão sendo rejeitadas.

Evite a porta 22

A porta 22 é a porta padrão para conexões SSH. Se você usar uma porta diferente, ela adiciona um pouco de segurança através da obscuridade ao seu sistema.A segurança através da obscuridade nunca é considerada uma verdadeira medida de segurança, e eu a critiquei em outros artigos. De fato, alguns dos bots de ataque mais inteligentes sondam todas as portas abertas e determinam qual serviço estão executando, em vez de depender de uma lista simples de portas e assumindo que eles fornecem os serviços usuais. Porém, o uso de uma porta não padrão pode ajudar a diminuir o ruído e o tráfego ruim na porta 22.

Para configurar uma porta não padrão, edite seu arquivo de configuração SSH:

 sudo gedit / etc / ssh / sshd_config 

Remova o hash # do início da porta ”alinhar e substituir o “ 22 ”com o número da porta de sua escolha. Salve seu arquivo de configuração e reinicie o daemon SSH:

 sudo systemctl restart sshd 

Vamos ver qual efeito isso teve. Em nosso outro computador, usaremos o comando ssh para conectar-se ao nosso servidor.O comando ssh usa como padrão a porta 22:

 ssh dave@howtogeek. local 

Nossa conexão é recusada. Vamos tentar novamente e especificar a porta 470, usando a opção -p (port):

 ssh -p 479 dave@howtogeek. local 

Nossa conexão é aceita.

Conexões de filtro usando TCP Wrappers

TCP Wrappers é uma lista de controle de acesso fácil de entender. Ele permite excluir e permitir conexões com base nas características da solicitação de conexão, como endereço IP ou nome do host. Os wrappers TCP devem ser usados ​​em conjunto com, e não em vez de, um firewall configurado corretamente. Em nosso cenário específico, podemos melhorar consideravelmente as coisas usando TCP wrappers.

TCP wrappers já estava instalado na máquina Ubuntu 18.04 LTS usada para pesquisar este artigo. Ele deveria ser instalado no Manjaro 18.10 e no Fedora 30.

Para instalar no Fedora, use este comando:

 sudo yum install tcp_wrappers 

Para instalar no Manjaro, use este comando:

 sudo pacman -Syu tcp-wrappers 

Existemdois arquivos envolvidos. Um contém a lista de permitidos e o outro a lista de negados. Edite a lista de negações usando:

 sudo gedit /etc/hosts. deny[/PREunette

Isso abrirá o editor gedit com o arquivo negado carregadonela.

Você precisa adicionar a linha:

 ALL: ALL 

E salve o arquivo. Isso bloqueia todo o acesso que não foi autorizado. Agora precisamos autorizar as conexões que você deseja aceitar. Para fazer isso, você precisa editar o arquivo de permissão:

 sudo gedit /etc/hosts. allow[/PREunette

Isso abrirá o gediteditor com o arquivo de permissão carregado nele.

Adicionamos o nome do daemon SSH, SSHD e o endereço IP do computador que revai permitir fazer uma conexão. Salve o arquivo e vamos ver se as restrições e permissões estão em vigor.

Primeiro, tentaremos conectar-se a partir de um computador que não esteja nos hosts. permitir arquivo:

A conexão foi recusada. Agora tentaremos conectar-se a partir da máquina no endereço IP 192.168.4.23:

Nossa conexão é aceita.

Nosso exemplo aqui é um pouco brutal — apenas um único computador pode se conectar. Os invólucros TCP são bastante versáteis e mais flexíveis que isso. Ele suporta nomes de host, curingas e máscaras de sub-rede para aceitar conexões de intervalos de endereços IP. Você é incentivado a verificar a página de manual.

Rejeitar solicitações de conexão sem senhas

Embora seja uma má prática, um administrador de sistema Linux pode criar uma conta de usuário sem senha. Isso significa que as solicitações de conexão remota dessa conta não terão senha para verificação. Essas conexões serão aceitas, mas não autenticadas.

As configurações padrão do SSH aceitam solicitações de conexão sem senhas. Podemos mudar isso com muita facilidade e garantir que todas as conexões sejam autenticadas.

Precisamos editar seu arquivo de configuração SSH:

 sudo gedit / etc / ssh / sshd_config 

Percorra o arquivo até ver a linha que lê com “ #PermitEmptyPasswords nº. ”Remova o hash # do início da linha e salve o arquivo. Reinicie o daemon SSH:

 sudo systemctl restart sshd 

Use chaves SSH em vez de senhas

As chaves SSH fornecem um meio seguro de fazer login em um SSHservidor. As senhas podem ser adivinhadas, quebradas ou forçadas de forma bruta. As chaves SSH não estão abertas para esses tipos de ataque.

Ao gerar chaves SSH, você cria um par de chaves. Uma é a chave pública e a outra é a chave privada.A chave pública está instalada nos servidores aos quais você deseja se conectar.A chave privada, como o nome sugere, é mantida segura em seu próprio computador.

As chaves SSH permitem fazer conexões sem uma senha que seja "contra-intuitivamente" mais segura do que as conexões que usamautenticação de senha.

Quando você faz uma solicitação de conexão, o computador remoto usa sua cópia da sua chave pública para criar uma mensagem criptografada que é enviada de volta ao seu computador. Como foi criptografada com sua chave pública, seu computador pode descriptografá-la com sua chave privada.

O computador extrai algumas informações da mensagem, principalmente o ID da sessão, criptografa e envia de volta para oservidor. Se o servidor puder descriptografá-lo com sua cópia da sua chave pública e se as informações contidas na mensagem corresponderem ao que o servidor enviou a você, sua conexão está confirmada como sendo de sua propriedade.

Aqui, uma conexãoestá sendo feito no servidor em 192.168.4.11, por um usuário com chaves SSH. Observe que não é solicitada uma senha.

 ssh dave@192.168.4.11 

As chaves SSH merecem um artigo exclusivo para elas. Comodamente, temos um para você. Veja como criar e instalar chaves SSH.

RELACIONADO: Como criar e instalar chaves SSH a partir do shell Linux

Desativar completamente a autenticação de senha

Obviamente, a extensão lógica do uso de chaves SSH é que, se todos os usuários remotos forem obrigados a adotá-las, você poderá desativar completamente a autenticação de senha.

Precisamos editar o arquivo de configuração SSH:

 sudo gedit / etc / ssh / sshd_config 

Role pelo arquivo até ver a linha que começa com “ #PasswordAuthentication yes.”Remova o hash # do início da linha, altere o "yes" ”para “ no ” e salve o arquivo. Reinicie o daemon SSH:

 sudo systemctl restart sshd 

Desativar encaminhamento do X11

O encaminhamento do X11 permite que usuários remotos executem aplicativos gráficos do seu servidor em um servidorSessão SSH. Nas mãos de um agente de ameaças ou usuário mal-intencionado, uma interface GUI pode facilitar seus propósitos malignos.

Um mantra padrão em segurança cibernética é se você não tiver um motivo genuíno para ativá-lo, Desligue isso. Faremos isso editando seu arquivo de configuração SSH:

 sudo gedit / etc / ssh / sshd_config 

Role peloarquivo até ver a linha que começa com “ # X11Envio no. ”Remova o hash # do início da linha e salve o arquivo. Reinicie o daemon SSH:

 sudo systemctl restart sshd 

Defina um valor de tempo limite ocioso

Se houver uma conexão SSH estabelecida no computador, enão há atividade por um período, isso pode representar um risco à segurança.Há uma chance de o usuário ter deixado sua mesa e estar ocupado em outro lugar. Qualquer pessoa que passe pela mesa deles pode sentar e começar a usar o computador e, via SSH, o computador.

É muito mais seguro estabelecer um limite de tempo limite.A conexão SSH será interrompida se o período inativo corresponder ao limite de tempo. Mais uma vez, editaremos seu arquivo de configuração SSH:

 sudo gedit / etc / ssh / sshd_config 

Role peloarquivo até ver a linha que começa com “ #ClientAliveInterval 0 ”Remova o hash # do início da linha, altere o dígito 0 para o valor desejado.Nós usamos 300 segundos, ou seja, 5 minutos. Salve o arquivo e reinicie o daemon SSH:

 sudo systemctl restart sshd 

Defina um limite para tentativas de senha

Definindo um limite para o númerotentativas de autenticação podem ajudar a impedir a adivinhação de senha e ataques de força bruta. Após o número designado de solicitações de autenticação, o usuário será desconectado do servidor SSH. Por padrão, não há limite. Mas isso é rapidamente remediado.

Novamente, precisamos editar seu arquivo de configuração SSH:

 sudo gedit / etc / ssh / sshd_config 

Percorra o arquivo até ver a linha que começa com "#MaxAuthTries 0". Remova o hash # do início da linha, altere o dígito 0 para o valor desejado.Nós usamos 3 aqui. Salve o arquivo quando você fez as alterações e reinicie o daemon SSH:

sudo systemctl restart sshd

Podemos testar isso tentando conectar-se e inserir deliberadamente uma senha incorreta.

Observe que o número MaxAuthTries parecia ser mais um que o número de tentativas permitidas pelo usuário. Após duas tentativas incorretas, nosso usuário de teste é desconectado. Isso ocorreu com MaxAuthTries definido como três.

Desativar logins raiz

É uma prática recomendada fazer login como root no seu computador Linux. Você deve efetuar login como um usuário normal e usar o sudo para executar ações que exijam privilégios de root. Ainda mais, você não deve permitir que o root efetue login no servidor SSH. Somente usuários regulares devem ter permissão para se conectar. Se eles precisam executar uma tarefa administrativa, também devem usar o sudo. Se você for forçado a permitir que um usuário root efetue login, você pode pelo menos forçá-lo a usar chaves SSH.

Pela última vez, teremos que editar seuArquivo de configuração SSH:

 sudo gedit / etc / ssh / sshd_config 

Role pelo arquivo até ver a linha que começa com “ #PermitRootLogin Proibir senha ”Remova o hash # do início da linha.

  • Se você quiser impedir que o root efetue login, substitua “ Proibir senha ”com “ no ”.
  • Se você permitir que o root efetue login, mas forçá-los a usar as chaves SSH, deixe “ Proibir senha ”

Salve suas alterações e reinicie o daemon SSH:

 sudo systemctl restart sshd 

A etapa final

Claro, se você não precisa de SSH em execução no seu computador, verifique se ele está desativado.

 sudo systemctl stop sshd 

 sudo systemctl disable sshd 

Se você não abrir a janela, ninguém poderá entrar.

Via: How to Geek

Veja Também:

Nenhum comentário