Comment créer un intranet avec OpenVPN sur Ubuntu 16.04

introduction

Intranets sont des réseaux privés créés par des organisations pour faciliter la communication et les transferts de données. Un intranet est construit en connectant plusieurs réseaux du monde entier pour créer un nouveau réseau virtuel. Les utilisateurs connectés à l'intranet peuvent accéder à certains sites Web internes ou à d'autres services réseau et contenus sur l'intranet. Par exemple, si un employé hors site souhaite accéder à des informations sensibles situées sur le réseau principal de son employeur, il se connecte à un serveur VPN situé sur le réseau principal du bureau. Cette connexion VPN créerait un tunnel sécurisé entre l'employé et le bureau. Sur le réseau, la connexion de l’employé apparaît comme s’il était connecté localement au réseau principal et n’utilisait pas de connexion hors site.

Dans ce didacticiel, vous allez configurer les services uniquement accessibles aux clients connectés au VPN, notamment les partages de fichiers et un site Web, et vous apprendrez à gérer l'accès à ces ressources. Lorsque vous avez terminé, vous disposez d’un intranet de base que vous pouvez facilement développer pour répondre à vos besoins.

Conditions préalables

Pour compléter ce didacticiel, vous aurez besoin des éléments suivants:

  • Un nouveau serveur Ubuntu 16.04.

  • Un compte utilisateur standard avec les privilègessudo. Vous pouvez configurer un compte standard en suivant les étapes 2 et 3 du didacticielInitial Server Setup with Ubuntu 16.04.

  • OpenVPN installé et configuré sur votre serveur. Terminez le didacticiel deHow to Set Up an OpenVPN Server on Ubuntu 16.04 avant de continuer. Nous supposerons que le serveur VPN est situé à l'adresse IP10.8.0.1 sur le VPN, qui est l'adresse utilisée dans le didacticiel OpenVPN, et que vous pouvez vous connecter au VPN depuis votre machine locale.

  • Un nom de domaine enregistré et un accès pour ajouter des entrées DNS. Nous utiliseronsexample.com tout au long de ce didacticiel et nous utiliserons le service DNS de DigitalOcean. Pour utiliser le service DNS de DigitalOcean avec votre domaine, suivez les étapes 1 et 2 de notre tutorielHow To Set Up a Host Name with DigitalOcean pour diriger votre nom de domaine vers les serveurs de noms de DigitalOcean.

  • Apache est installé avec deux hôtes virtuels configurés pour votre domaine. Suivez le tutorielHow to Set Up Apache Virtual Hosts on Ubuntu 16.04 pour configurer deux hôtes virtuels appelésexample.com etintranet.example.com, chacun avec une page HTML par défaut.

[[step-1 -—- installation-and-configuring-a-samba-file-server]] == Étape 1 - Installation et configuration d'un serveur de fichiers Samba

Commençons par configurer Samba afin que les utilisateurs de notre intranet puissent partager des fichiers. Samba diffère des autres applications de partage de fichiers telles que Dropbox en ce qu’il n’a pas d’interface Web ni de limite de stockage. Au lieu de cela, Samba partage des répertoires et des fichiers sur le serveur lui-même, ce qui vous évite de télécharger vos données sur des serveurs extérieurs que vous ne contrôlez pas.

Nous allons créer deux répertoires d'actions. Le premier répertoire sera accessible à tous les utilisateurs de notre réseau privé. Le deuxième répertoire ne sera accessible que par les utilisateurs spécifiés. Nous nommerons ces partsAllusers etRestricted, respectivement.

Tout d'abord, installez Samba et ses prérequis avec la commande suivante:

sudo apt-get install samba samba-common python-glade2 system-config-samba

Ensuite, faites une sauvegarde du fichier de configuration Samba au cas où nous ferions une erreur lorsque nous le modifierions plus tard.

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup

Samba a également besoin d'un accès via le pare-feu, ajoutez donc une règle pour le trafic Samba:

sudo ufw allow samba

Créez maintenant les répertoires que nous allons partager. Commencez par créer le répertoireallusers:

sudo mkdir -p /samba/allusers

Créez ensuite le répertoirerestricted:

sudo mkdir -p /samba/restricted

Modifions maintenant le fichier de configuration Samba pour configurer le service et définir les partages. Ouvrez le fichier de configuration Samba:

sudo nano /etc/samba/smb.conf

Puisdelete all the content car nous allons écrire notre propre configuration à partir de zéro pièce par pièce.

Premièrement, nous spécifions quelques paramètres globaux pour le serveur Samba. Ajoutez les lignes suivantes au fichier de configuration:

/etc/samba/smb.conf

[global]
        workgroup = WORKGROUP
        server string = Samba Server %v
        netbios name = ubuntu
        security = user
        map to guest = bad user
        dns proxy = no
        interfaces = 10.8.0.1/8
        bind interfaces only = yes

Décomposons chaque réglage:

Le paramètreworkgroup spécifie le groupe de travail sur lequel le serveur apparaîtra lorsqu'il sera interrogé par les clients. Le groupe par défaut est «WORKGROUP» pour Windows, mais vous pouvez le modifier si vous avez déjà un nom de groupe de travail que vous utilisez.

Les lignesserver string etnetbios spécifient respectivement le nom du serveur Samba et sa plateforme.

Le paramètresecurity spécifie qu'il s'agira d'un serveur de fichiers autonome avec ses propres comptes d'utilisateurs. Le paramètremap to guest traite toutes les connexions avec un nom d'utilisateur ou un mot de passe non valide comme des utilisateurs invités, et le paramètredns proxy indique à Samba de ne pas essayer de résoudre les noms de domaine car nous n'exécutons pas notre propre DNS pour cet intranet.

Avec le paramètreinterfaces, nous spécifions que nous n'écoutons que les connexions utilisant l'adresse IP du serveur VPN, et non une adresse IP accessible au public. Lebind interface dit à Samba de n'écouter que les requêtes provenant de notre VPN.

Ensuite, nous devons spécifier les paramètres de journalisation pour Samba. Ajoutez ce bloc de configuration au fichier, dans la section[global]:

/etc/samba/smb.conf

[global]
        ...

        ## Logging
        log level = 2
        log file = /var/log/samba.log.%m
        max log size = 50
        debug timestamp = yes

Le paramètrelog level détermine le niveau de détail souhaité dans vos fichiers journaux. Ces niveaux vont de 1 à 10, mais nous nous en tiendrons au niveau 2 car il s’agit d’un niveau de débogage relativement léger. Le paramètrelog file spécifie le chemin du fichier et le nom du fichier journal, lesmax log size limitant la taille du fichier journal. Le paramètredebug timestamp inclut les horodatages dans le journal.

Cela prend en charge les paramètres globaux de notre serveur. Créons maintenant les définitions de partage réelles. Ces paramètres spécifient les fichiers que nous voulons partager et qui est autorisé à accéder à ces fichiers.

Nous voulons deux parts; un appeléAllusers et un autre appeléRestricted. Définissons d'abord la part deAllusers. Pour ce partage, les utilisateurs peuvent parcourir, écrire et lire des fichiers dans le répertoire/samba/allusers. Ajoutez cette configuration au fichier:

/etc/samba/smb.conf

#============ Share Defenitions ==================
[Allusers]
        path = /samba/allusers
        browsable = yes
        writable = yes
        guest ok = yes
        read only = no
        force user = nobody

Le bloc[Allusers] indique que les paramètres qui suivent ne s'appliquent qu'au partageAllusers. Il définit également le nom du partage que les utilisateurs verront. Le paramètrepath spécifie le répertoire de fichiers du dossier que nous voulons partager sur notre intranet. La définition debrowsable etwritable suryes donne aux utilisateurs l'autorisation de parcourir ce dossier ainsi que de lire et d'écrire des fichiers.

Nous voulons que tous les utilisateurs aient accès à ce partage, même s'ils n'ont pas de compte utilisateur sur le serveur. N'oubliez pas que dans la sectionglobal, nous avons spécifié le paramètremap to guest, ce qui signifie que les utilisateurs qui n'ont pas de compte ou d'informations de connexion valides peuvent toujours accéder aux fichiers partagés en tant qu'invité. Nous permettons à ces invités d'accéder à ce partage en définissantguest ok suryes, puis nous forçons cet utilisateur à assumer l'identité denobody avecforce user = nobody.

Le groupe d'utilisateursnobody est un groupe d'utilisateurs par défaut connu sur n'importe quel système Linux. Nous pouvons définir les autorisations souhaitées sur le dossier/samba/allusers pour l'utilisateurnobody. Ensuite, avec Samba, nous autorisons plusieurs invités à utiliser cette identité. De cette façon, nous pouvons facilement gérer l'accès des utilisateurs invités à notre système.

Pour plus d'informations sur l'utilisateurnobody, visitezthe Ubuntu wiki etthis answer on StackExchange.

Créons maintenant le partage de fichiersRestricted, qui ne devrait être accessible qu'aux membres du groupesmbrestricted:

/etc/samba/smb.conf

[Restricted]
        path = /samba/restricted
        valid users = @smbrestricted
        guest ok = no
        writable = yes
        browsable = yes

Une fois de plus, nous commençons par spécifier le répertoire que nous voulons partager et accorder des autorisations de navigation et d'écriture, comme nous l'avons fait avec le partageallusers. Ensuite, nous définissonsvalid users = @smbrestricted, qui indique à Samba de n'autoriser que les membres du groupesmbrestricted à accéder au partage. Nous allons créer ce groupe sous peu.

Cela le fait pour le fichiersmb.conf. Votre fichier devrait ressembler à l'exemple suivant:

/etc/samba/smb.conf

[global]
        workgroup = WORKGROUP
        server string = Samba Server %v
        netbios name = ubuntu
        security = user
        map to guest = bad user
        dns proxy = no
        interfaces = 10.8.0.1/8
        bind interfaces only = yes

        ## Logging
        log level = 2
        log file = /var/log/samba.log.%m
        max log size = 50
        debug timestamp = yes

#============ Share Defenitions ==================

[Allusers]
        path = /samba/allusers
        browsable = yes
        writable = yes
        guest ok = yes
        read only = no
        force user = nobody

[Restricted]
        path = /samba/restricted
        valid users = @smbrestricted
        guest ok = no
        writable = yes
        browsable = yes

Avec la configuration Samba en place, nous pouvons créer le groupesmbrestricted et créer notre premier utilisateur.

[[step-2 -—- configuration-access-to-samba-partages]] == Étape 2 - Configuration de l'accès aux partages Samba

Pour permettre l’accès à nos partages, nous devons créer un compte utilisateur et appliquer les autorisations appropriées aux dossiers que nous prévoyons de partager.

Commencez par créer le groupesmbrestricted avec la commande suivante:

sudo addgroup smbrestricted

Créez maintenant un compte utilisateur sur le serveur et ajoutez-le au groupesmbrestricted. Nous allons créer un compte pourclient1, qui correspond au nom de la connexion VPN créée dans le didacticiel des prérequis:

sudo useradd client1 -G smbrestricted

Enfin, nous devons attribuer un mot de passe Samba pourclient1. Avec la configuration que nous avons configurée, Samba utilise son propre système de vérification des informations d'identification, distinct du système de vérification normal du système Linux. C'est bien, car nous pouvons créer des utilisateurs pouvant accéder aux partages de fichiers avec Samba sans leur donner le droit de se connecter à la machine elle-même.

Créez le mot de passe Samba pour l'utilisateurclient1 avec la commande suivante:

sudo smbpasswd -a client1

[.note] #Note: Si vous avez des utilisateurs sur votre système que vous souhaitez également pouvoir accéder aux partages Samba, vous devrez également créer un mot de passe Samba pour ces utilisateurs, depuis la connexion les systèmes sont séparés avec cette configuration.
#

Ensuite, nous définissons les autorisations pour les répertoires que nous voulons partager. Tout d'abord, nous allons définir les autorisations pour le répertoireallusers:

sudo chmod -R 766 /samba/allusers
sudo chown -R nobody:nogroup /samba/allusers

Cela accorde au propriétaire du répertoire des autorisations complètes et n'accorde que des autorisations de lecture et d'écriture pour le groupe et tout le monde.Nous changeons ensuite le propriétaire et le groupe du répertoire de partage ennobody:nogroup avec la commandechown.

Il y a, cependant, un petit problème avec le changement du propriétaire et du groupe ennobody:nogroup. La commandechmod -R 766 accorde uniquement des autorisations de lecture et d'écriture sur les fichiers / répertoires actuels et nouveaux dans le répertoire/samba/allusers, quel que soit le créateur de ces fichiers ou répertoires. Cela signifie que dès que vous essayez de créer un nouveau fichier dans un dossier situéwithin le répertoire/samba/allusers, vous obtiendrez une erreur d'autorisations insuffisantes. N'oubliez pas que lorsque vous travaillez dans le partageAllusers, vous assumez l'identité denobody et quenobody a des autorisations très limitées.

Pour surmonter ce problème, nous utilisonsAccess Control Lists, ou ACL. Les règles ACL nous permettent d'attribuer automatiquement des autorisations pour un utilisateur et / ou un groupe aux fichiers et répertoires nouvellement créés.

Définissez les règles ACL pour le dossier/samba/allusers avec les commandes suivantes:

sudo setfacl -dm g:nogroup:rw /samba/allusers/
sudo setfacl -dm u:nobody:rw /samba/allusers/

La commandesetfacl -dm indique que nous définissons de nouvelles règles d'autorisation pour un répertoire ou un fichier, et qu'à l'avenir, ces autorisations devraient également être appliquées aux objets nouvellement créés. g:nogroup:rw etu:nobody:rw sont les nouvelles règles ACL accordant des autorisations de lecture et d'écriture à l'utilisateurnobody et aux membres du groupenogroup.

Vous pouvez en savoir plus sur les ACL à partir desUbuntu Wiki.

Cela prend soin de la part d'invité. Maintenant, nous pouvons définir les autorisations pour le répertoirerestricted:

sudo chmod -R 770 /samba/restricted
sudo chown root:smbrestricted /samba/restricted

Cette fois, nous bloquons complètement l'accès à ce répertoire sauf pour le propriétaire et les membres du groupesmbrestricted avecchmod 770. Nous n'avons pas besoin de définir de règles d'ACL car les autorisations fonctionnent normalement dans ce dossier partagé, car nous utilisons des comptes d'utilisateurs authentifiés.

Maintenant que les partages sont configurés, redémarrez le serveur Samba pour qu'il utilise le nouveau fichier de configuration:

sudo service smbd restart

Nous pouvons maintenant nous connecter au serveur Samba pour télécharger ou télécharger des fichiers.

[[step-3 -—- connection-to-the-samba-server-from-a-client]] == Étape 3 - Connexion au serveur Samba depuis un client

L'objectif de notre intranet est d'accéder aux fichiers et de les partager dans un environnement sécurisé, comme si nous étions connectés au réseau principal. Lorsqu'un client se connecte à Samba, il monte les répertoires de partage dans l'explorateur de fichiers de ce client. Voyons cela.

Se connecter depuis Windows

Pour vous connecter à partir de Windows, ouvrez l'explorateur Windows. Dans la barre de navigation, saisissez l'adresse du serveur Samba,\10.8.0.1 et appuyez sur la toucheEnter.

Windows explore connection through the navbar

La connexion de Windows peut prendre quelques instants. Une fois la connexion établie, vous verrez les dossiers partagés hébergés sur l’intranet:

Available shares

Notez qu'un nouveau point de montage réseau est créé sous l'ongletNetwork de la barre d'outilsQuick access. Le nom du point de montage est10.8.0.1, identique à l’IP du VPN.

Vous accédez au partageAllusers comme n'importe quel autre dossier, car aucune information d'identification n'est nécessaire. Double-cliquez simplement sur le dossier pour afficher son contenu:

The Allusers share contents

Pour accéder au partageRestricted, double-cliquez sur le dossier nomméRestricted. Une fenêtre contextuelleWindows Security apparaîtra indiquant que les informations d'identification réseau sont nécessaires pour accéder.

Restricted share permissions prompt

Tapez le nom d'utilisateur et le mot de passe de l'utilisateur que vous avez créé et cochez éventuellement la case pour mémoriser vos informations d'identification. Cliquez ensuite surOk pour vous connecter.

The contents of the restricted share

Une fois connecté, vous pouvez créer de nouveaux fichiers ou dossiers, ou même faire glisser des dossiers sur votre serveur pour les télécharger.

Se connecter à partir d'Ubuntu

Pour vous connecter depuis Ubuntu, ouvrez l'explorateur de fichiers et sélectionnez l'optionConnect to Server dans la barre latérale à gauche. Cela ouvre un nouvel écran où nous pouvons entrer une adresse de serveur.

The Connect To Server option

Entrezsmb://10.8.0.1/ et cliquez sur le boutonConnect dans le coin inférieur droit. La connexion de votre ordinateur au serveur peut prendre quelques secondes, selon la vitesse de votre connexion. Une fois la connexion établie, un écran contenant tous les répertoires partagés du serveur apparaît:

Available shares

Pour accéder au partageAllusers, double-cliquez simplement sur le dossier. Un écran de connexion apparaît pour vous demander un nom d'utilisateur et un mot de passe. Le partageAllusers ne nécessite aucun nom d'utilisateur ni mot de passe, vous devez donc sélectionnerAnonymous pour l'optionConnect As. Cliquez surConnect et cela ouvrira le répertoire de partage pour vous.

Connecting anonymously

Notez comment ces répertoires de partage sont montés dans votre système de fichiers après que vous y avez accédé. Le partageAllusers est monté en tant que lecteur réseau aux côtés des autres lecteurs locaux.

Samba-6

Le lecteur restera monté jusqu'à ce que le système soit redémarré ou que le lecteur soit démonté.

Pour accéder au partageRestricted, vous avez besoin d'un nom d'utilisateur et d'un mot de passe valides pour la connexion. Double-cliquez sur le partageRestricted
et l'écran de connexion réapparaîtra. Pour l'optionConnect As, sélectionnezRegistered User et remplissez le nom d'utilisateur et le mot de passe
dans les champs appropriés, en laissant l'optionDomain telle quelle. Cliquez ensuite surConnect, et vous pourrez accéder aux fichiers partagés.

Connecting as the client1 user

Se connecter depuis un Mac

Pour vous connecter depuis votre Mac, ouvrez le Finder, sélectionnez le menuGo et choisissezConnect to Server…. Ensuite, utilisezsmb://10.8.0.1/ pour lesServer Address:

Connecting from a Mac

Le reste du processus de connexion est identique au processus de connexion à partir de Linux ou de Windows. Un nom d'utilisateur et un mot de passe vous seront demandés. Vous pourrez ainsi consulter et vous connecter aux partages disponibles.

Cela prend soin de votre serveur de fichiers. Voyons maintenant comment configurer Apache pour héberger des sites Web en interne et en externe sur le même serveur.

[[step-4 -—- configuration-access-to-apache-virtual-hosts]] == Étape 4 - Configuration de l'accès aux hôtes virtuels Apache

Avant ce tutoriel, vous avez créé deux hôtes virtuels, que nous allons configurer pour les utiliser sur notre serveur. Le premier hôte,example.com, sera accessible au grand public. Cela peut être le site Web public principal de votre domaine. Le deuxième hôte,intranet.example.com, ne sera accessible que par les clients connectés à l'intranet.

Pour restreindre l'accès àintranet.example.com, nous modifierons le fichier de configuration de cet hôte virtuel. Ouvrez le fichier/etc/apache2/sites-available/intranet.example.com.conf:

sudo nano /etc/apache2/sites-available/intranet.example.com.conf

Puis changez la déclarationVirtualHost de ceci:

example.com.conf’>/etc/apache2/sites-available/intranet.example.com.conf

pour ça:

example.com.conf’>/etc/apache2/sites-available/intranet.example.com.conf

Avant le changement, Apache servait les requêtes pourinternal.example.com sur toutes les interfaces réseau. Après ce changement, il ne sert que les requêtes sur notre interface intranet. Ceci est similaire à la configuration que nous avons utilisée pour Samba.

Enregistrez le fichier et redémarrez le service Apache:

sudo systemctl restart apache2

Nous devons également autoriser les connexions via UFW pour qu'Apache fonctionne correctement. Si vous ne l’avez pas déjà fait, exécutez cette commande pour autoriser le trafic à travers le pare-feu pour Apache:

sudo ufw allow http

Et si vous prévoyez d'autoriser le trafic HTTPS, autorisez-le également maintenant ou configurez-le plus tard avec:

sudo ufw allow https

Maintenant, configurons les noms de domaine pour que nous puissions accéder plus facilement à nos ressources.

[[step-5 -—- configuration-domain-names]] == Étape 5 - Configuration des noms de domaine

Dans cette étape, nous allons configurer notre nom de domaine pour rediriger le trafic vers l'intranet tout en desservant le site Web accessible au public. Avant de commencer cet article, vous devez avoir dirigé votre nom de domaine vers les serveurs de noms de DigitalOcean.

[.note] #Note: si vous avez vos propres serveurs de noms, vous souhaiterez plutôt définir ces paramètres dans le panneau de configuration de votre fournisseur DNS.
#

Connectez-vous à votre compte DigitalOcean et cliquez sur l'ongletNetworking dans la barre supérieure. Vous verrez alors un écran comme celui-ci:

Domain-screen-1

Pour ajouter un domaine à votre compte DigitalOcean, saisissez votre nom de domaine dans la première case sous l'en-têteAdd a domain. Dans la deuxième case, saisissez lespublic IP de votre serveur intranet et cliquez sur le boutonCreate record.

Domain-screen-2

Votre nouveau nom de domaine apparaîtra alors sous le sous-titreDomains comme dans la deuxième image. Cliquez maintenant surMore à côté du domaine que vous souhaitez utiliser, puis sélectionnezView domain.

View-domain

Cela ouvrira la page des paramètres pour ce domaine spécifique.

Domain-settings

Nous devons ajouter trois enregistrements pour ce domaine. Un pour l'intranet, et deux autres pour s'assurer que les demandes de notre site Web public sont résolues correctement.

Tout d'abord, créez un enregistrement pour l'intranet.

  1. Cliquez sur la case orange «A» sousSelect record type.

  2. Entrezintranet dans le champEnter Name.

  3. Pour l'adresse IP, entrez lesprivate IP address de votre serveur, qui doivent être10.8.0.1.

Creating the Intranet subdomain record

Ensuite, nous avons besoin d’un enregistrement qui dirige le trafic non intranet au bon endroit. Créez un autre enregistrement «A», définissez le nom sur@ et définissez l'adresse IP sur lespublic IP de votre serveur.

Creating the @ A record

Enfin, créez un enregistrement CNAME pourwww. Cliquez sur l'onglet CNAME dans le coin supérieur, définissez le nom surwww et entrez votre nom de domaine (example.com comme nom d'hôte:

Creating the www CNAME record

Lorsque vous avez terminé, vos enregistrements de domaine devraient ressembler à l'image suivante:

Reviewing All records

L'enregistrement Aintranet dirige les requêtes versintranet.example.com uniquement s'il provient du serveur VPN. Cela signifie que seuls les clients connectés au VPN pourraient accéder au contenu Web hébergé surintranet.example.com. Le deuxième enregistrement «A» et CNAME enregistrent le trafic direct qui n’a pas accès à l’intranet du site Web accessible au public.

[.note] #Note: La propagation de ces modifications DNS peut prendre jusqu'à 72 heures.
#

Accédez à votre navigateur et visitezhttp://intranet.example.comwithout being connected to the VPN. Votre navigateur devrait essayer de charger la page Web uniquement pour renvoyer une erreur. Maintenantconnect to your VPN et rechargez la page Web. Vous pouvez maintenant accéder à la page Web, car l'entrée DNS sera résolue.

Successful connection to the internal web site

Maintenant que nous avons entièrement configuré et testé notre intranet, voyons comment gérer l’accès à ce réseau nouvellement créé.

[[step-6 -—- Managing-access-to-the-intranet]] == Étape 6 - Gestion de l'accès à l'intranet

La dernière étape de ce tutoriel portera sur la gestion de l'accès à notre intranet et à ses fichiers partagés. Dans un premier temps, nous verrons comment révoquer les certificats clients pour un accès VPN. Ensuite, nous verrons comment supprimer des utilisateurs du groupesmbrestricted. Enfin, nous examinerons l'ajout d'utilisateurs supplémentaires et l'obtention de l'accès dont ils ont besoin.

Révoquer l'accès VPN

Pour révoquer l’accès au VPN, nous révoquerions le certificat du client. Cela nous permet de refuser l'accès à notre intranet sans générer de nouveaux certificats pour aucun autre client ou serveur.

Tout d’abord, nous devons ajouter une ligne supplémentaire au fichier de configuration de notre serveur VPN afin de nous permettre de révoquer tout certificat client sans modifier le certificat d’autorité de certification ou le certificat de serveur original. Cela rend le contrôle d'accès
beaucoup plus facile car vous pouvez désormais révoquer facilement un seul certificat à la volée sans interrompre les autres connexions client.

Ouvrez le fichier de configuration VPN:

sudo nano /etc/openvpn/server.conf

Ajoutez la ligne de code suivante à la fin du fichier:

/etc/openvpn/server.conf

crl-verify crl.pem

Cela indique au serveur VPN de rechercher le fichiercrl.pem, qui est une liste de révocation de certificats. Il contiendra une liste de tous les certificats qui ne sont plus autorisés à accéder à notre VPN.

Enregistrez et fermez le fichier de configuration, mais ne redémarrez pas encore le serveur; nous devons créer le fichiercrl.pem que notre configuration recherche.

Pour créer ce fichier, accédez au répertoire~/openvpn-ca/ sur votre serveur:

cd ~/openvpn-ca/

Supposons que nous devions révoquer les certificats declient1 car ils ne fonctionnent plus pour notre organisation. Pour ce faire, exécutez les commandes suivantes:

source vars
./revoke-full client1

Vous verrez le résultat suivant:

OutputUsing configuration from /home/intranetexapmle/openvpn-ca/openssl-1.0.0.cnf
Revoking Certificate 02.
Data Base Updated
Using configuration from /home/intranetexample/openvpn-ca/openssl-1.0.0.cnf
client1.crt: C = US, ST = NY, L = New-York City,
error 23 at 0 depth lookup:certificate revoked

La dernière ligne de la sortie doitalways indiquer unerror 23. Cette erreur confirme uniquement que les certificats ont été révoqués.

Cela crée égalementcrl.pem dans le répertoire~/openvpn-ca/keys/. Pour confirmer que les certificats sont révoqués, ouvrez le fichierkeys/index.txt avec n'importe quel éditeur de texte, ou affichez son contenu aveccat:

cat keys/index.txt

Il y aura un «R» à côté du client dont nous avons révoqué les certificats:

OutputV       260904153313Z           01      unknown /C=US/ST=NY/L=New York/O=DigitalOcean/OU=Community/CN=server/name=server/[email protected]
R       260904172539Z   160915150543Z   02      unknown /C=US/ST=NY/L=New York/O=DigitalOcean/OU=Community/CN=client1/name=server/[email protected]

Copiez maintenant le fichiercrl.pem dans le répertoire/etc/openvpn/, où nous avons dit à notre serveur OpenVPN de rechercher le fichier:

sudo cp keys/crl.pem /etc/openvpn/

Puis redémarrez le serveur OpenVPN pour que l'option de révocation de certificat prenne effet.

sudo systemctl restart openvpn@server

Le serveur OpenVPN consulte le fichiercrl.pem chaque fois qu'une nouvelle connexion est établie avec le serveur. Chaque fois que vous révoquez les certificats d'un client, vous remplacez l'ancien fichiercrl.pem par le nouveau. Vous n'avez pas besoin de redémarrer le serveur.

Il est important de noter qu'une fois qu'un certificat VPN a été révoqué, il ne peut plus être utilisé ultérieurement. Un client dont le certificat VPN a été révoqué aurait besoin d'un nouveau certificat si nous voulons qu'il puisse se reconnecter au réseau.

Blocage de l’accès d’un utilisateur au partage restreint.

Nous avons créé un répertoire partagé qui n'est accessible qu'aux utilisateurs du groupesmbrestricted. Pour refuser l'accès à un utilisateur déjà présent dans ce groupe, supprimons l'utilisateur de ce groupe. Par exemple, pour supprimerclient1, utilisez la commande suivante:

sudo deluser client1 -G smbrestricted

Vous verrez le résultat suivant:

OutputRemoving user `client1' from group `smbrestricted' ...
Done.

Si vous ne savez pas si un utilisateur est déjà inclus dans le groupe ou si vous souhaitez revérifier si un utilisateur a été supprimé, vous pouvez utiliser la commandemembers:

sudo apt-get install members
members smbrestricted

Tous les utilisateurs du groupe seront affichés à l'écran.

Ajout d'un nouvel utilisateur à l'intranet

Chaque nouvel utilisateur de l'intranet aura besoin de son propre certificat VPN, vous devez donc suivre les étapes du didacticielHow to Set Up an OpenVPN Server on Ubuntu 16.04 à partir des conditions préalables pour chaque utilisateur. Par exemple, pour créer un utilisateur appeléclient2, vous devez effectuer les opérations suivantes:

Tout d'abord, construisez la clé:

cd ~/openvpn-ca
./build-key client2

Générez ensuite la configuration du client:

cd ~/client-configs
./make_config.sh client2

Ensuite, sur votre ordinateur local, téléchargez la configuration du client:

sftp sammy@openvpn_server_ip:client-configs/files/client2.ovpn ~/

Pour accorder au nouvel utilisateur l'accès aux fichiers restreints, suivez les mêmes étapes que vous avez utilisées pourclient1 dans la section Samba de ce didacticiel:

  • Créez l'utilisateur et ajoutez-le au groupesmbrestricted.

  • Créez le mot de passe Samba pour l'utilisateur avecsmbpassword.

  • Testez la connexion.

Répétez ensuite cette procédure pour chaque utilisateur à ajouter.

Conclusion

Vous avez créé et sécurisé avec succès votre propre intranet privé avec OpenVPN, Samba et Apache. Vous avez un site Web interne et deux partages de fichiers.

Votre prochaine étape dépend de ce pour quoi vous utiliserez votre intranet. Comme la plupart des applications serveur utilisent une page Web pour afficher des informations, vous pouvez restreindre l'accès à cette page en utilisant une configuration d'hôte virtuel, à l'instar de celle décrite dans ce didacticiel. Vous pouvez étendre votre réseau en hébergeant plusieurs services à partir d'un réseau social interne, d'un wiki ou d'un service de messagerie, pour n'en nommer que quelques-uns. Et pour une gestion encore plus efficace des fichiers partagés, vous pouvez télécharger et installer lesSamba Web Administration Tool. En utilisant ce que vous avez appris ici, vous devriez pouvoir configurer un nombre illimité de services à utiliser avec votre nouvel intranet.