Como estabelecer acesso seguro aos servidores no modo remoto



Aqui em Habré já existem dezenas de artigos dizendo como as pessoas experimentaram a transição para um lugar remoto, como experimentaram os primeiros dias de um site remoto, então - como foi a primeira semana e assim por diante. Às vezes, alguns conselhos práticos deslizavam entre a descrição das emoções. Nós, como pessoas com 12 anos de experiência em administração de servidores remotos, decidimos falar sobre uma ferramenta sem a qual o servidor remoto se transforma em um evento bastante perigoso para os seus negócios. Por quê? - Porque as pessoas pensam em qualquer coisa (antes de tudo, é claro, nos malditos 40 minutos gratuitos no “zoom”), mas não em segurança. Mais precisamente, é claro, você pensou sobre esse assunto - mas apostamos que ele não foi o primeiro da fila?

E a contra-pergunta: eu me pergunto a que seus pensamentos levaram. Afinal, seus colegas, sentados em apartamentos e casas aconchegantes, usam equipamentos desprotegidos por canais desprotegidos e tocam literalmente em todos os servidores da empresa ...

Queremos compartilhar com você uma versão de código aberto da ferramenta usada em nossa empresa como servidor bastião. É chamado servidor de autenticação DevOpsProdigy Isolate .

Como funciona


1. Isolate adiciona uma senha de uso único e autenticação de dois fatores ao login do SSH. Você pode usar o equipamento YubiKey ou o aplicativo Google Authenticator para isso . Mesmo que um usuário tenha perdido a senha de sua conta, sem uma chave OTP, um invasor não poderá usá-la e acessar o servidor Isolar. Para implementar a autenticação de dois fatores, usamos o módulo pam. Você pode ler mais sobre isso neste artigo antigo .

2. Os usuários não obtêm acesso direto aos servidores finais - a conexão passa pelo servidor Isolate e o sistema monitora e registra todas as suas atividades.

Todas as ações do usuário se resumem ao uso de dois comandos:

s <search-str>- para procurar informações por nome do projeto ou nome do servidor, as informações são armazenadas no banco de dados Redis interno, fechado por autorização.

g <ip-address> / g <project-name> <server-name>- uma chamada para este comando é iniciada /usd/bin/ssh . Os argumentos para a chamada (por exemplo, nome de usuário, endereço IP, porta, proxy) são obtidos do banco de dados.

3. É fácil gerenciar o acesso ao servidor de autenticação - adicionar / remover usuários, etc. Você pode encontrar um grande número de exemplos sobre o uso de comandos no leia-me auth-add-user, auth-add-hostetc.

Tecnicamente, é necessário gerar e colocar a chave do servidor Isolate nos servidores de destino, e seus usuários devem obter acesso regular ao servidor Isolate do sudo ao ssh.

E quando eles desejam se conectar ao servidor de destino, o sistema executará o comando ssh. Em seguida, um cliente ssh iniciado a partir de um usuário privilegiado receberá uma chave, usando a qual o sistema, por sua vez, obterá acesso ao servidor desejado.

Isso é tudo. O Isolate é executado na instalação do CentOS 7 / Ubuntu 16.04 / Debian 9 . Também é necessário o Ansible 2.3+ .

Não posso deixar de notar que o DevOpsProdigy IsolateTambém é útil em "tempo de paz": você pode se acalmar com isso em seus servidores, mesmo que alguém perca um laptop com uma chave SSH. E quando um funcionário que teve acesso deixar a empresa, você não precisará se apressar para alterar todas as senhas e chaves. Agora, estamos preparando uma lista de melhorias e recursos para a versão atual desta ferramenta, que são implementadas em nosso sistema interno. Estamos aguardando desejos, problemas, relações públicas em nosso repositório github . Para discussões e perguntas, também há um bate - papo por telegrama e um bate - papo no Slack .

Portanto, agora o trabalho remoto em sua empresa pode se tornar um pouco mais fácil. E com certeza - muito mais seguro. Boa sorte

All Articles