Bon
Tôt ou tard, chaque entreprise a soudainement besoin d'un accès à distance.
Pratiquement tous les informaticiens sont confrontés à la nécessité d'organiser l'accès à distance à leurs réseaux dans l'entreprise.
Moi, comme beaucoup, ce besoin couvert par le timbre "hier". Après avoir analysé tous les avantages et les inconvénients, ainsi que pelleter des tonnes d'informations et creuser un peu en théorie, j'ai décidé de procéder à l'installation.
Pour des raisons de sécurité, j'ai choisi OpenVPN dans l'implémentation suivante: une machine virtuelle a été installée sur un serveur exécutant Windows Server 2012, Windows Server 2012 y était également installé, et à son tour, se trouvait un serveur OpenVPN qui émettait et signait des certificats.
Pour plus de commodité, nous l'appellerons un «serveur de certification». De plus, il a pris un certificat de serveur, l'a poussé dans Mikrotik, et sur le routeur Mikrotik a soulevé OpenVPN avec des comptes, des profils. J'ai également utilisé un serveur de certification pour émettre un certificat client.
La mise en œuvre, bien sûr, est horrible, et bien qu'à cette époque mon expérience dans de telles choses n'était pas, disons, suffisante en matière de sécurité, ce n'était pas une mauvaise décision.
Ce bundle a fonctionné pendant un certain temps et on m'a donné une nouvelle introduction: transférer le serveur de certification vers Linux, tout en maintenant la connexion avec Mikrotik - les clients ne devraient pas en souffrir.
Ma connaissance de Linux à cette époque s'est terminée sur Ubuntu 16.04LTS avec une interface graphique qui a été utilisée comme terminal pour se connecter via RDP à un serveur Windows. Autrement dit, sudo apt-get -f install -y, et pas un centimètre de plus.
Après avoir étudié la question de savoir quel système d'exploitation de la famille Linux est plus stable et prometteur pour mon organisation, je me suis installé sur CentOS 7 Minimal.
Pour commencer, j'ai décidé de me plonger un peu dans la théorie, de comprendre comment elle fonctionne et fonctionne généralement. J'ai regardé les didacticiels vidéo sur la chaîne
www.youtube.com/channel/UCKdRgZWgy42YxoFcTJ30LTA (En général, pas de publicité, ils m'ont juste eu le premier). La fille avec une voix agréable m'a présenté les bases du travail dans le système d'exploitation sélectionné.
Pour commencer, j'ai lancé Hyper-V sur mon ordinateur, y ai installé CentOS 7 Minimal, lors de l'installation j'ai créé l'utilisateur Admin et fermé complètement ssh pour root. Dire au revoir à un bel écran multicolore, plongé dans le monde noir et blanc du terminal.
Je pense que cela n'a aucun sens de décrire le processus d'installation du logiciel, il vaut mieux se concentrer sur les problèmes qui se sont posés dans le processus et pour lesquels j'ai dû écrire un petit script (il est sous un chat. Une description de chacun des utilitaires peut être trouvée sur Internet, mais à ce moment où je suis tout l'a fait, ce script n'était pas encore là, tout a été fait pour la première fois, au toucher et au hasard).
Dans le script, j'ai essayé d'automatiser l'installation des utilitaires minimum nécessaires pour le serveur, de désactiver Selinux, de connecter le référentiel Epel, d'installer OpenVPN, etc. Ci-dessous le script lui-même, c'est simple, mais il peut être utilisé. Je ne vais pas le démonter, mais si quelqu'un en a besoin, écrivez une réponse.
Après avoir utilisé le script, un serveur OpenVPN déjà configuré apparaîtra, clignotant d'un œil vert.
UPD: A fait quelques ajustements au script, tirant des conclusions des commentaires. Il n'a pas commencé à supprimer ses erreurs, mais a simplement commenté afin que le fil des commentaires ne soit pas perdu. Ajout de lignes repoussées pour la visibilité.
L'installation d'OpenVPN n'a pas été entièrement réussie.
Ne connaissant pas les caractéristiques de la politique des droits sur les systèmes Linux, j'ai passé beaucoup de temps à étudier les journaux et à attribuer à tous les fichiers les droits requis.
Lorsque le bouton OpenVPN est devenu vert, j'étais très heureux, mais il s'est avéré que ce n'était que le début. Par souci de simplicité, je m'attendais à remplacer les certificats racine et le fichier crl.pem, en espérant que tout fonctionnait. Par conséquent, j'ai dû transférer les fichiers suivants du serveur vers Windows:
Serv.crt - Certificat de serveur
Serv.key - Clé de serveur
Ca.crt - Certificat racine
Ca.key - Clé racine
Crl.pem - Fichier de révocation de certificats
Dh.pem - Clé Diffie-Hellman
Index.txt - Fichier contenant des informations sur les certificats actuels
Série - il est également responsable de la pertinence des certificats
Il nécessitait également le dossier certs_by_serial, le fichier vars et toutes les clés et certificats client.
À Mikrotik, les certificats sont restés en place, donc cela a fonctionné.
Des problèmes sont apparus lorsque j'ai essayé de révoquer le certificat, cela ne fonctionnait pas du tout - le fichier index.txt devait être converti au format Unix, mais je ne l'ai pas fait tout de suite. Utilisé l'utilitaire dos2unix.
Maintenant, les certificats ont été révoqués, mais ont continué à fonctionner sans aucun problème, car Mikrotik ne savait pas qu'ils avaient été révoqués et il devait en informer d'une manière ou d'une autre.
Après avoir lu les instructions et consulté Alexander ERI (merci beaucoup!), J'ai récupéré un simple serveur http Apache sur le serveur de certification et publié un fichier de certificats révoqués dessus. Accès complètement fermé, sauf pour le fichier publié à partir d'une adresse IP.
Dans le terminal Mikrotik, dans l'onglet / System / Certificates / CRL, indiqué le chemin vers le crl.pem publié. Ici, il convient de préciser que Mikrotik n'accepte que http et une adresse absolue pour l'onglet CRL, c'est-à-dire Cela devrait ressembler à ceci:
127.0.0.1/crl/1.crlTout a fonctionné, au moins pour les versions 6.4.2.x de RouterOS, mais j'ai dû créer des configurations client avec mes mains, et cela a été malheureux pour moi et a causé beaucoup de désagréments. Quand en une semaine j'ai eu besoin de créer des configurations pour environ 50 clients, j'ai décidé d'accélérer ce processus et pour cela j'ai utilisé un morceau du script de quelqu'un d'autre trouvé sur Internet.
Le script fonctionne comme ceci: après le lancement, spécifiez «nom du client», répondez à la question «définissez un mot de passe ou non», après quoi nous prenons le fichier de configuration prêt à l'emploi «client.ovpn», avec des certificats et des paramètres intégrés. Pour l'utiliser, vous devez avoir / etc / openvpn. Je vais signer komenty lignes dans lesquelles le chemin doit être remplacé par le vôtre. Il est également nécessaire de créer un fichier avec les paramètres client afin que le script les remplace dans le processus de création de la configuration.
Après un certain temps, une nouvelle interdiction d'introduction sur l'accès à distance a obligé à tuer à la fois ce serveur et le groupe de travail avec Mikrotik. Un nouveau serveur OpenVPN a été créé pour le service informatique, qui fonctionne désormais entièrement sur CentOS. Mais c'est une histoire complètement différente.
J'exprime ma gratitude à Ivan et Pavel pour leur aide dans la rédaction de l'article.