Nous sommes en 2017 et l'utilisation d'un VPN est devenue une évidence. Entre le fardeau des préoccupations externes en matière de confidentialité et votre propre FAI pouvant vendre votre historique de navigation, rien ne justifie de ne pas en utiliser un.
Bien sûr, vous pouvez payer l'un des centaines de services VPN sur le marché, mais encore une fois, vous comptez sur quelqu'un d'autre avec vos données. La plupart sont excellents, en réalité, mais si vous souhaitez un contrôle total, vous pouvez créer votre propre VPN sur un serveur virtuel virtuel (VPS) ou louer votre propre serveur privé, si vous avez vraiment l’impression d’être hardcore.
Tout ce dont vous avez besoin pour construire un VPN est le logiciel OpenVPN Open Source et Linux (ou BSD). La configuration peut être impliquée, mais il n’est pas impossible, même avec des compétences de base en Linux, d’aboutir sur une distribution comme Ubuntu.
Pour ce guide, vous aurez besoin d’un VPS sous Ubuntu. Vous pouvez en prendre un très facilement chez quelqu'un comme DigitalOcean ou Linode . Suivez leurs guides de sécurité de base pour la configuration. Assurez-vous de ne pas commettre d'erreur de base, comme autoriser l'accès root sur SSH.
De plus, gardez à l’esprit que vous allez effectuer toute cette configuration en ligne de commande sur SSH vers votre VPS. Il n’ya rien qui nécessite une somme folle de connaissances en Linux, mais préparez-vous à taper au lieu de cliquer.
Obtenir ce dont vous avez besoin
Liens rapides
- Obtenir ce dont vous avez besoin
- Configurer le pare-feu
- Trouver l'interface
- Bases d'Iptables
- Configurez vos règles
- Bouclage
- Ping
- SSH
- OpenVPN
- DNS
- HTTP / S
- NTP
- TONNEAU
- Enregistrement
- Rejeter tout le reste
- Masquerading NAT
- Trafic IPv4 en avant
- Arrêtez toutes les connexions IPv6
- Importer et sauvegarder dans Iptables
Ubuntu emballe et distribue OpenVPN dans ses référentiels. Il vous suffit d'utiliser apt pour l'installer. Vous aurez également besoin de l'outil pour générer des clés de cryptage. Installez les deux.
$ sudo apt install openvpn easy-rsa
Configurer le pare-feu
Ensuite, vous devez prendre soin du pare-feu. C'est un élément important pour assurer la sécurité de votre VPN et pour empêcher à la fois les fuites de données et les accès indésirables.
Iptables est le principal pare-feu pour Linux et constitue votre meilleure option pour contrôler l'accès aux ports d'Ubuntu. Vous l'aurez déjà installé, vous pourrez donc commencer à configurer vos règles de pare-feu.
Trouver l'interface
Avant de commencer à écrire des règles dans iptables, recherchez l'interface avec laquelle votre serveur est connecté à Internet. Exécutez ifconfig pour afficher vos interfaces réseau. Celui qui a un inet addr: correspondant à l'adresse IP à laquelle vous êtes connecté est la bonne interface.
Bases d'Iptables
Ce n’est généralement pas une bonne idée de copier et coller des objets au hasard à partir d’Internet. Cela est particulièrement vrai lorsque vous traitez de sujets liés à la sécurité. Prenez donc le temps d’en apprendre un peu plus sur les règles iptables avant de commencer à les entrer.
Jetez un oeil à cet exemple de règle iptables.
-A INPUT -i eth0 -p tcp -m état -état ESTABLISHED -sport 443 -j ACCEPT
Bon, donc -A signifie que vous allez ajouter une nouvelle règle. Alors INPUT signifie qu’il s’agira d’une entrée sur votre serveur. Il y a aussi une sortie. L'option -i indique à iptables à quelle interface cette règle est destinée. Vous pouvez spécifier le protocole auquel la règle est destinée avec -p. Cette règle gère tcp. -m spécifie une condition qu'une connexion doit remplir. Dans ce cas, il doit correspondre à l'état spécifié. Bien entendu, alors –state spécifie un état, dans ce cas une connexion ESTABLISHED. La partie suivante indique à iptables à quel port cette règle est destinée. C'est le port 443, le port HTTPS, ici. Le dernier drapeau est -j. Il signifie «jump» et indique à iptables quoi faire avec la connexion. Si cette connexion remplissait toutes les conditions de la règle, iptables l'accepterait.
Configurez vos règles
Donc, vous devriez avoir une idée générale du fonctionnement des règles iptables maintenant. Le reste de cette section vous expliquera comment configurer vos règles pièce par pièce.
Le meilleur moyen de créer un ensemble de règles iptables est de créer un fichier contenant toutes les règles. Ensuite, vous pouvez tout importer dans iptables à la fois. Définir des règles une par une peut être déroutant, surtout si vous commencez un nouvel ensemble de règles.
Créez un fichier dans le répertoire / tmp pour créer vos règles.
$ vim / tmp / ipv4
Démarrez ce fichier avec * filter. Cela indique à iptables que ce qui suit va être des règles pour le filtrage de paquets.
Bouclage
La première section de règles verrouille l'interface de bouclage. Ils disent à iptables que le serveur doit accepter le trafic de lui-même sur l'interface de bouclage. Il devrait également rejeter le trafic venant de lui-même et non du bouclage.
-A INPUT -i lo -j ACCEPTER -A INPUT! -i lo -s 127.0.0.0/8 -j REJECTER -A SORTIE -o lo -j ACCEPTER
Ping
Ensuite, autoriser le ping. Vous devriez pouvoir envoyer une requête ping à votre serveur pour vous assurer qu'il est en ligne au cas où il serait inaccessible autrement. Dans ce cas, seules les demandes d'écho sont autorisées et le serveur s'autorise à envoyer une sortie ICMP.
-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT -A INPUT -p icmp -m état --stATE ESTABLISHED, RELATED -j ACCEPT -A SORTIE -p icmp -j ACCEPT
SSH
Vous avez besoin de SSH. C'est la seule façon pour vous d'atteindre votre serveur. Les règles SSH étant spécifiques à votre interface Internet, veillez donc à substituer eth0 à l'interface utilisée par votre serveur.
Ce pourrait également être une bonne idée de changer vos connexions SSH hors du port 22, car c’est le comportement par défaut que des attaquants potentiels essaieraient. Si vous le faites, assurez-vous de le changer également dans vos règles iptables.
-A INPUT -i eth0 -p tcp -m état --état NOUVEAU, ÉTABLI --dport 22 -j ACCEPTER -U SORTIE -o eth0 -p tcp -m état --état ESTABLISHED --sport 22 -j ACCEPT
OpenVPN
Cette pièce suivante autorise le trafic depuis et vers le serveur OpenVPN via UDP.
-A INPUT -i eth0 -p udp -m état --état NOUVEAU, ÉTABLI --port 1194 -j ACCEPTER -A SORTIE -o eth0 -p udp -m état --état ESTABLISHED - sport 1194 -j ACCEPT
DNS
Maintenant, autorisez les connexions DNS sur UDP et TCP. Vous voulez que votre VPN gère le DNS, pas votre FAI. C'est en partie la raison pour laquelle vous configurez un VPN.
-A INPUT -i eth0 -p udp -m état --état ESTABLISHED - sport 53 -j ACCEPTER -A SORTIE -o eth0 -p udp -m état --état NOUVEAU, ÉTABLI - rapport 53 -j ACCEPT -A INPUT -i eth0 -p tcp -m état --état ESTABLISHED - sport 53 -j ACCEPTER -A SORTIE -o eth0 -p tcp -m état --état NOUVEAU, ÉTABLI --dport 53 -j ACCEPT
HTTP / S
Pour qu'Ubuntu puisse se mettre à jour lui-même, vous devez ajouter un ensemble de règles permettant la connexion sortante HTTP et HTTPS. Notez que ces règles autorisent uniquement le serveur à établir des connexions HTTP. Vous ne pouvez donc pas l'utiliser en tant que serveur Web ni vous y connecter via le port 80 ou le port 443.
-A INPUT -i eth0 -p tcp -m état --état ESTABLISHED - sport 80 -j ACCEPTER -A INPUT -i eth0 -p tcp -m état - état ESTABLISHED - sport 443 -j ACCEPT -A OUTPUT - eth0 -p tcp -m état --état NOUVEAU, ÉTABLI --dport 80 -j ACCEPTER -A SORTIE -o eth0 -p tcp -m état --état NOUVELLE, ÉTABLI --dport 443 -j ACCEPTER
NTP
Pour que votre horloge serveur fonctionne correctement, vous aurez besoin du protocole NTP. NTP permet à votre serveur de se synchroniser avec les serveurs de temps du monde entier. Avoir une horloge incorrecte sur votre serveur peut causer des problèmes de connexion. Il est donc judicieux d'utiliser NTP. Encore une fois, vous ne devez accepter que les connexions sortantes et déjà établies.
-A INPUT -i eth0 -p udp -m état --état ESTABLISHED - sport 123 -j ACCEPTER -A SORTIE -o eth0 -p udp -m état --état NOUVEAU, ÉTABLI --dport 123 -j ACCEPT
TONNEAU
Débloquez l’interface TUN utilisée par OpenVPN pour canaliser le trafic.
-A INPUT -i tun0 -j ACCEPTER -A AVANCER -i tun0 -j ACCEPTER -A SORTIE -o tun0 -j ACCEPT
Vous devez autoriser TUN à transférer le trafic sur votre interface habituelle pour le VPN. Vous trouverez cette adresse IP dans la configuration OpenVPN. Si vous le modifiez dans la configuration, modifiez-le également dans vos règles.
-A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPTER -A FORWARD -m état --état ÉTABLI, CONNEXE -j ACCEPT
Enregistrement
C'est une bonne idée de garder des journaux de tout ce qui est rejeté par iptables. Dans ce cas, cela signifie tout ce qui ne correspond à aucune de ces règles. Les journaux vous permettent de voir s’il existe une activité malveillante ou des tentatives d’agissements néfastes sur votre serveur.
-A INPUT -m limite –limite 3 / min -j LOG – préfixe-journal “iptables_INPUT_denied:” –log-level 4
-A FORWARD -m limite –limite 3 / min -j LOG –fixe-journal «iptables_FORWARD_denied:» –log-level 4
-A OUTPUT -m limite -limite 3 / min -j LOG –fixe-journal «iptables_OUTPUT_denied:» –log-level 4
Rejeter tout le reste
Enfin, vous devez bloquer tout ce qui ne correspond pas à vos règles. C'est vraiment le but d'avoir un pare-feu en premier lieu.
-A INPUT -j REJET -A AVANT -J REJET -A SORTIE -j REJET
Fermez le fichier avec COMMIT pour indiquer à iptables de valider toutes les règles.
Masquerading NAT
Les connexions du VPN doivent ressembler à celles du serveur lui-même. Cette pièce ne peut pas être incluse dans le fichier iptables normal car elle utilise une table différente. Ce n'est pas grave, cependant, c'est juste une ligne.
$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Trafic IPv4 en avant
Vous devrez activer le transfert du trafic IPv4 afin qu'il puisse passer entre le VPN et l'interface réseau réelle de votre serveur. Ouvrez /etc/sysctl.d/99-sysctl.conf avec sudo.
Trouvez la ligne ci-dessous et décommentez-la en supprimant le #.
Arrêtez toutes les connexions IPv6
Désolé, vous n'en avez pas encore fini avec iptables. Vous devez bloquer tout le trafic IPv6. Ce serveur OpenVPN ne supportera que IPv4, ce qui est bien, car vous n’allez pas vous retrouver dans une situation où vous avez besoin d’IPv6. Par conséquent, toute connexion IPv6 peut potentiellement laisser échapper des informations, contrairement à ce que vous souhaitez lorsque vous utilisez un VPN.
Avant de définir les règles pour iptables, vous devez désactiver IPv6 partout ailleurs sur le système.
Ajoutez les lignes suivantes au fichier /etc/sysctl.d/99-sysctl.conf. Si vous avez fermé la section précédente, rouvrez-le avec sudo.
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.eth0.disable_ipv6 = 1
Activez vos modifications.
$ sudo sysctl -p
Commentez toutes les lignes IPv6 dans / etc / hosts. Tu vas avoir besoin de sudo ici aussi.
# :: 1 ip6-localhost ip6-loopback # fe00 :: 0 ip6-localnet # ff00 :: 0 ip6-mcastprefix # ff02 :: 1 ip6-allnodes # ff02 :: 2 ip6-allrouters
Enfin, vous pouvez écrire les règles IPv6 iptables. Créez un fichier pour eux à / tmp / ipv6.
* filtre -A INPUT -j REJECT -A FORWARD -j REJECT -A OUTPUT -j REJECT COMMIT
Vous voyez, ils sont simples. Rejeter tout.
Importer et sauvegarder dans Iptables
Vous devez importer ces règles pour qu'ils puissent faire quoi que ce soit. Alors, le moment est venu de le faire.
Commencez par vider tout le reste. Vous ne voulez pas que les anciennes règles vous gênent.
$ sudo iptables -F && sudo iptables -X
Importez vos règles IPv4 et IPv6.
$ sudo iptables-restore </ tmp / ipv4 $ sudo ip6tables-restore </ tmp / ipv6
Vous ne voudrez probablement plus jamais faire ça. Donc, vous allez avoir besoin d'un nouveau paquet pour sauvegarder vos règles de façon permanente.
$ sudo apt install iptables-persistent
Lors de l'installation, le package vous demandera de sauvegarder vos règles existantes. Répondez «oui»
Si vous apportez des modifications ultérieurement, vous pouvez également mettre à jour vos configurations enregistrées.
Sauvegarde persistante netfilter service $ sudo
Cela a pris un moment, mais votre pare-feu est prêt à fonctionner. Sur la page suivante, nous allons aborder la création des clés de chiffrement nécessaires.
Cliquez ici: Page suivante