Como personalizar as configurações SSH para segurança máxima

Um arquivo de configuração SSH Unix controla como um shell seguro funciona. Ele pode ser usado para tornar o comando ssh mais fácil de usar, configurar funções específicas solicitadas pelo usuário ou aumentar a segurança contra ataques potenciais. Embora ações relativamente simples, como alterar a porta ssh em seus dispositivos, muitas vezes possam eliminar um grande número de “chamadas frias” em seu dispositivo, um arquivo de configuração ssh pode fazer muito mais do que isso.

Como personalizar as configurações SSH para segurança máxima - Linux

Onde está localizado o arquivo SSH?

Como personalizar as configurações SSH para segurança máxima - Linux

Em sistemas Linux, você pode encontrar o arquivo de configuração ssh de todo o sistema em “/ etc / ssh / ssh_config”.

في Sistemas MacOS , O próprio arquivo é encontrado em “/ private / etc / ssh / ssh_config”, que se vincula a “/ etc / ssh / ssh_config” para compatibilidade.

Um segundo arquivo ssh_config para o usuário pode ser especificado em “~ / .ssh / ssh_config” (o símbolo “~” representa o diretório inicial). Este arquivo substitui o arquivo de configuração de todo o sistema, permitindo definir opções específicas do usuário sem alterar a configuração do sistema. Os sistemas nem sempre vêm com o arquivo “~ / .ssh / ssh_config”, mas podem ser facilmente criados.

De agora em diante, vamos nos referir a este arquivo de configuração como “ssh_config“Para maior clareza e simplicidade.

Edite o arquivo ssh_config

Para editar o arquivo ssh_config, abra uma janela do Terminal e edite o arquivo com seu editor de texto favorito. Estaremos usando o nano nesta demonstração, mas vi ou emacs podem ser usados ​​em seu lugar.

sudo nano / etc / ssh / ssh_config

Isso abrirá um arquivo com dezenas de linhas suspensas explicando o que o arquivo faz, mas não é uma explicação completa.

Como personalizar as configurações SSH para segurança máxima - Linux

O que é ssh_config e o que ssh_config faz?

O arquivo ssh_config é usado para controlar como o shell seguro, conhecido como comando de terminal ssh, funciona em seu sistema. O arquivo ssh_config é organizado por hosts. Cada host possui configurações específicas para aquele host. Os curingas podem ser usados ​​como * Para combinar vários nomes de host com uma única instrução.

As opções são definidas usando o par chave / identificação. Existem várias teclas disponíveis. Uma explicação detalhada das funções de cada tecla pode ser encontrada na página homem ssh_config.

Configure o seu SSH

Bloquear arquivos: Antes de editar o arquivo, certifique-se de que os arquivos ssh_config e sshd_config tenham direitos de administrador e o usuário para definir a raiz. Na maioria dos casos, você também precisará proibir as permissões para qualquer pessoa, exceto para o root.

sudo chown root:root /etc/ssh/sshd_config

sudo chmod og-rwx /etc/ssh/sshd_config

Confirmação do protocolo 2 SSH

Certifique-se de que está usando o Protocolo 2 mais recente e mais recente em vez do Protocolo 1. O protocolo mais antigo funciona com uma verificação de integridade mais fraca e geralmente é menos seguro.

Para definir explicitamente o protocolo, use o seguinte em ssh_config:

Protocol 2

Você também pode definir seu próprio protocolo implicitamente usando Ciphers, que irá definir automaticamente o protocolo para 2 para Ciphers modernos usar.

Ciphers aes128-ctr، aes192-ctr، aes256-ctr

Não permitir senha em branco

Certifique-se de que cada conta SSH usa uma senha ao fazer login, bloqueando senhas em branco.

PermitEmptyPasswords no

Proibir login de root

O root raramente deve ser usado pela maioria dos usuários Linux. Isso permitirá que você bloqueie o login de root para bloquear especificamente as contas para o que é necessário e não conceder uso em todo o sistema. Esta também é uma conta alvo de ataques. As opções de PermitRootLogin incluem "sim", "sem senha", "somente ordens coercitivas" ou "não". O padrão é "Sim". Para parar completamente o login de root, precisamos escrever a linha abaixo.

PermitRootLogin no

Mude o número da porta

Você pode alterar o número da porta de 22 (o padrão) como uma forma de limitar o acesso direto ao seu servidor nesta porta. Isso restringirá a maioria das pessoas que usam um script que usa essa porta ou que atacam essa porta manualmente. No entanto, isso não limitará aqueles que procuram portas abertas e atacam o que quer que esteja aberto. Além disso, você precisará certificar-se de que qualquer pessoa que entrar por essa porta esteja ciente da nova contagem e que esse novo número de porta seja usado por qualquer cliente ou programa.

Para configurar a porta, edite o servidor ssh principal em “/ etc / ssh / sshd_config”. Você precisará adicionar uma nova linha definindo a porta que segue a sintaxe Porta XXXXX.

Como personalizar as configurações SSH para segurança máxima - Linux

Limitar o acesso

Se você tem várias pessoas acessando seu servidor, você pode querer restringir completamente o uso de ssh. Nesses casos, você pode permitir e bloquear usuários e grupos. Para isso, você precisará utilizar uma das seguintes chaves, seguidas dos valores que deseja permitir ou negar: DenyUsers, AllowUsers, DenyGroups e AllowGroups. Este comando foi concluído nesta ordem, portanto, mesmo que você deixe um usuário ver se ele está na seção "Aprovado", ele será rejeitado.

AllowUsers ramesh john jason

AllowGroups sysadmin dba

DenyUsers cvs apache jane

DenyGroups developers qa

Atualização LoginGraceTime

Por padrão, o tempo que uma pessoa deve ficar ociosa sem fazer login é de XNUMX minutos. Reduzir isso ajudará a evitar comunicações não autorizadas. Uma proposta típica é de um minuto ou menos. Defina a hora usando LoginGraceTime.

LoginGraceTime 1m

Personalizar configurações de SSH

Crie aliases

As opções de linha de comando Ssh podem ser especificadas por apelidos em ssh_config. Os seguintes apelidos permitem que um usuário se conecte a um servidor dev Com as opções especificadas simplesmente digitando desenvolvedor ssh Na linha de comando.

Host dev

    HostName dev.example.com

    Port 22222

    User foobar

Isso executa o seguinte comando quando executado:

ssh foobar@dev.example.com -p 22222

Observe que a porta ssh foi alterada para 22222 para impedir chamadas frias. Caso contrário, é uma conexão ssh muito simples, abreviada por muitos caracteres para sua conveniência.

Autenticação com chaves seguras

ssh é mais seguro e conveniente quando usado com chaves públicas / privadas para autenticação, ao invés de senhas. O arquivo ssh_config pode declarar uma chave específica para um host específico usando a chave IdentityFile.

Host dev

    HostName dev.example.com

    Port 22222

    User foobar

    IdentityFile ~/.ssh/dev.example.key

Como nos exemplos anteriores, este comando ssh é executado com ssh dev, executando o seguinte comando equivalente à linha de comando:

ssh -i ~ / .ssh / dev.example.key foobar@dev.example.com -p 22222

Coloque outras opções de ssh

As opções ssh abaixo são algumas das opções mais comuns encontradas nos arquivos ssh_config.

Compressão: Esta chave aceita "sim" ou "não" como argumento e é usada para habilitar e desabilitar a compactação do host. Isso geralmente não é necessário, a menos que a conexão seja incrivelmente lenta.

Nível de registro: Defina o nível de detalhe nos registros SSH do lado do cliente. Do menos detalhado para o mais detalhado, as opções são QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG1, DEBUG2 e DEBUG3.

Verificação StrictHostKey: Defina uma preferência para adicionar outro host ao arquivo known_hosts. Você nunca adicionará "sim" known_hosts. Sempre adicionará "não" a known_hosts. "Ask", que é o padrão, será solicitado pelo usuário antes de adicionar ao arquivo known_hosts. Sim fornece segurança máxima contra ataques de cavalos de Tróia, mas pode ser entediante usar um arquivo known_hosts mal gerenciado. Não é o menos seguro, mas pode tornar menos doloroso chamar um grande número de hosts temporários.

Arquivo de hosts conhecidos do usuário: Especifique o caminho para o arquivo known_hosts do usuário.

Encaminhamento de chamadas

Freqüentemente, o ssh é usado para encaminhar conexões, o que permite uma conexão local de túnel por meio de uma conexão remota. As seguintes opções podem ser usadas para configurar o encaminhamento de chamadas.

LocalForward: Defina uma conexão para redirecionar o tráfego da porta local para uma máquina remota. Esses são túneis de comunicação pela rede remota.

Avançar Remoto: Defina uma porta remota a ser roteada fora de uma porta local. Este é o oposto da opção acima.

DynamicForward: Configure uma porta local a ser usada com um protocolo de encaminhamento dinâmico.

Conclusão

A maioria das opções ssh_config existem para fornecer maneiras mais convenientes de realizar tarefas específicas com o comando ssh. É uma maneira de configurar aliases e acrônimos complexos que ajudam a aumentar a segurança, tornando as partes mais seguras do ssh mais fáceis de usar.

Ir para o botão superior