Bom
Toda empresa, mais cedo ou mais tarde, de repente, precisa de acesso remoto.
Praticamente todos os especialistas em TI enfrentam a necessidade de organizar o acesso remoto às suas redes na empresa.
Eu, como muitos, essa necessidade foi coberta com o carimbo "ontem". Tendo analisado todos os prós e contras, além de escavar toneladas de informações e cavar um pouco na teoria, decidi prosseguir com a instalação.
Por motivos de segurança, escolhi o OpenVPN na seguinte implementação: uma máquina virtual foi instalada em um servidor executando o Windows Server 2012, o Windows Server 2012 também foi instalado e, por sua vez, um servidor OpenVPN que emitiu e assinou certificados.
Por conveniência, chamaremos de "servidor de certificação". Além disso, ele pegou um certificado de servidor, colocou-o no Mikrotik e, no roteador, o Mikrotik criou o OpenVPN com contas, perfis. Eu também usei um servidor de certificação para emitir um certificado de cliente.
A implementação, é claro, é péssima e, embora naquela época minha experiência em tais coisas fosse, digamos, insuficiente, em questões de segurança, essa não foi uma decisão ruim.
Este pacote funcionou por um tempo e me foi dado um novo introdutório: transferir o servidor de certificação para o Linux, mantendo a conexão com o Mikrotik - os clientes não devem sofrer.
Meu conhecimento do Linux naquela época terminou no Ubuntu 16.04LTS com uma interface gráfica usada como terminal para conexão via RDP a um servidor Windows. Ou seja, sudo apt-get -f install -y, e nem um centímetro a mais.
Tendo estudado a questão de qual sistema operacional da família Linux é mais estável e promissor para minha organização, decidi pelo CentOS 7 Minimal.
Para começar, decidi me aprofundar um pouco na teoria, para entender como ela geralmente funciona e funciona. Eu assisti os tutoriais em vídeo no canal
www.youtube.com/channel/UCKdRgZWgy42YxoFcTJ30LTA (geralmente, não é um anúncio, eles me chamam primeiro). A garota com uma voz agradável me apresentou as noções básicas de trabalho no sistema operacional selecionado.
Para começar, iniciei o Hyper-V no meu computador, instalei o CentOS 7 Minimal lá, durante a instalação, criei o usuário Admin e fechei o ssh completamente como root. Dizendo adeus a uma bela tela multicolorida, mergulhou no mundo preto e branco do terminal.
Eu acho que não faz sentido descrever o processo de instalação do software, é melhor focar nos problemas que surgiram durante o processo e resolver os quais eu tive que escrever um pequeno script (está sob um gato. A descrição de cada um dos utilitários pode ser encontrada na Internet, mas naquele momento em que estou fiz isso, esse script ainda não estava lá, tudo foi feito pela primeira vez, ao toque e aleatoriamente).
No script, tentei automatizar a instalação dos utilitários mínimos necessários para o servidor, desativar o Selinux, conectar o repositório Epel, instalar o OpenVPN, etc. Abaixo está o próprio script, é simples, mas pode ser usado. Não vou desmontá-lo, mas se alguém precisar, escreva uma resposta.
Depois de usar o script, um servidor OpenVPN já configurado aparecerá, piscando com um olho verde.
UPD: Fiz alguns ajustes no roteiro, tirando conclusões dos comentários. Ele não começou a excluir seus erros, mas simplesmente comentou para que o fio dos comentários não se perdesse. Linhas adicionadas empurradas para trás para obter visibilidade.
A instalação do OpenVPN não foi totalmente bem-sucedida.
Sem conhecer os recursos da política de direitos nos sistemas Linux, passei muito tempo estudando logs e atribuindo a todos os arquivos os direitos necessários.
Quando o botão OpenVPN ficou verde, fiquei muito feliz, mas, como se viu, isso era apenas o começo. Por uma questão de simplicidade, esperava substituir os certificados raiz e o arquivo crl.pem, esperando que tudo desse certo. Como resultado, eu precisei transferir os seguintes arquivos do servidor para o Windows:
Serv.crt - certificado de servidor
Serv.key - Chave do Servidor
Ca.crt - certificado raiz
Ca.key - Chave raiz
Crl.pem - arquivo de revogação de certificado
Dh.pem - chave Diffie-Hellman
Index.txt - Arquivo com informações sobre certificados atuais
Serial - também é responsável pela relevância dos certificados
Também exigiu a pasta certs_by_serial, o arquivo vars e todas as chaves e certificados do cliente.
No Mikrotik, os certificados permaneceram no lugar, então funcionou.
Os problemas apareceram quando tentei revogar o certificado, que não funcionava com a palavra - o arquivo index.txt precisava ser convertido para o formato unix, mas não o fiz imediatamente. Utilizou o utilitário dos2unix.
Agora os certificados foram revogados, mas continuaram a funcionar sem problemas, porque Mikrotik não sabia que eles foram revogados e ele precisava de alguma forma informar sobre isso.
Depois de ler as instruções, bem como consultar Alexander ERI (muito obrigado!), Peguei um servidor http Apache simples no servidor de certificação e publiquei um arquivo de certificados revogados. Acesso completamente fechado a ele, exceto o arquivo publicado de um ip.
No terminal Mikrotik, na guia / System / Certificates / CRL, indicava o caminho para o crl.pem publicado. Aqui deve ser esclarecido que o Mikrotik aceita apenas http e um endereço absoluto para a guia CRL, ou seja, Deve ser algo como isto:
127.0.0.1/crl/1.crlTudo funcionou, pelo menos para as versões 6.4.2.x do RouterOS, mas eu tive que criar configurações do cliente com minhas mãos, e isso foi lamentável para mim e causou muitos inconvenientes. Quando, em uma semana, precisei criar configurações para cerca de 50 clientes, decidi acelerar esse processo e, para isso, usei um pedaço do script de outra pessoa encontrado na Internet.
O script funciona assim: após o lançamento, especifique “nome do cliente”, responda à pergunta “defina uma senha ou não”; depois disso, pegamos o arquivo de configuração pronto “client.ovpn”, com certificados e configurações integrados. Para usá-lo, você deve ter / etc / openvpn. Vou assinar quinze linhas nas quais o caminho deve ser substituído pelo seu. Também é necessário criar um arquivo com configurações do cliente para que o script os substitua no processo de criação da configuração.
Depois de um tempo, uma nova proibição introdutória no acesso remoto forçou a matar tanto este servidor quanto o pacote funcional do Mikrotik. Um novo servidor OpenVPN foi criado para o departamento de TI, que agora funciona completamente no CentOS. Mas esta é uma história completamente diferente.
Expresso minha gratidão a Ivan e Pavel por sua ajuda na edição do artigo.