Étapes pour sécuriser notre VPS

Ce tutoriel montre comment préparer et sécuriser un serveur privé virtuel (VPS) avec Debian GNU / Linux. Avant de commencer, certaines choses sont supposées:

  1. Vous avez un niveau intermédiaire de connaissance de GNU / Linux.
  2. Il existe un VPS à usage personnel auquel nous avons accès via SSH.
  3. Le VPS a l'ipv4 externe dédié 250.250.250.155 et notre fournisseur possède le bloc 250.250.0.0/16. (1)
  4. Dans notre VPS, seuls les services http, https et ssh seront activés pour un accès de l'extérieur.
  5. Le DNS externe ne sera pas activé car il est généralement effectué dans le panneau de notre fournisseur. (2)
  6. Cela fonctionnera en tant que superutilisateur.

Installations préconisées

Dans un premier temps, mettons à jour le serveur et installons quelques packages dont nous aurons besoin:

# aptitude update & aptitude safe-upgrade # aptitude -RvW installer dropbear gesftpserver sslh iptables-persistent ulogd fail2ban nginx-light apache2-utils dnsutils telnet ghostscript poppler-utils zip décompresser unzip sans arriere p7zip-full less multitail tee mc

configuration

Nous allons maintenant créer un utilisateur professionnel. Travailler en tant que root sur un serveur n'est pas sécurisé, nous allons donc d'abord créer un utilisateur spécial:

opérateur adduser usermod -aG opérateur sudo

La première commande crée l'utilisateur opérateur, la seconde l'ajoute au groupe sudo, qui vous permettra d'exécuter des applications en tant que root.

Ajuster les autorisations pour les super utilisateurs

Pour travailler régulièrement, nous utiliserons l'utilisateur opérateur précédemment créé, nous devons ajuster les options d'exécution de la commande en tant que superutilisateur, pour lequel nous exécutons la commande suivante:

visa

Cette commande permet essentiellement de modifier le fichier / etc / sudoers; dans lequel nous devrions contenir ces lignes:

Valeurs par défaut env_reset, timestamp_timeout = 0% sudo ALL = (ALL: ALL) ALL

Dans la première ligne, l'option est ajoutée aux valeurs par défaut horodatage_timeout qui vous permet de définir le délai d'expiration (en minutes) du mot de passe lorsque la commande sudo est exécutée. La valeur par défaut est 5, mais c'est parfois dangereux pour deux raisons:

  1. Si par inadvertance nous laissons notre ordinateur connecté avant l'expiration du mot de passe, quelqu'un pourrait exécuter une commande en tant que root sans aucune restriction.
  2. Si, par ignorance, nous exécutons une application ou un script contenant du code malveillant avant l'expiration du mot de passe, l'application pourrait avoir accès à notre système en tant que superutilisateur, sans notre consentement explicite.

Donc pour éviter les risques, nous avons mis la valeur à zéro, c'est-à-dire qu'à chaque fois que la commande sudo est exécutée, le mot de passe devra être saisi. Si une valeur négative est définie sur -1, l'effet est que le mot de passe n'expire jamais, ce qui produirait le résultat opposé de ce que nous voulons.

Dans la deuxième ligne, il est précisé que le groupe sudo peut exécuter n'importe quelle commande sur n'importe quel ordinateur, ce qui est habituel, bien qu'il puisse être ajusté. (3) Il y a ceux qui par commodité mettent la ligne comme suit pour éviter d'avoir à taper le mot de passe:

% sudo ALL = (TOUS: TOUS) NOPASSWD: TOUS

Cependant, comme nous l'avons expliqué auparavant, cela est risqué et n'est donc pas recommandé.

Désactiver le redémarrage

Pour des raisons de sécurité, nous désactiverons également le redémarrage à l'aide de la combinaison de touches Ctrl + Alt + Suppr, pour lequel il faut ajouter cette ligne dans le fichier /etc/inittab:

ca: 12345: ctrlaltdel: / bin / echo "Ctrl + Alt + Suppr a été désactivé."

Remplacez OpenSSH par DropBear

La plupart des VPS sont livrés avec OpenSSH installé, ce qui est certainement très utile, mais à moins que nous ne devions exploiter toutes les fonctionnalités d'OpenSSH, il existe des alternatives plus légères pour un VPS, telles que dropbear, ce qui est généralement suffisant pour une utilisation régulière. Cependant, un inconvénient de cette application est qu'elle ne vient pas avec un serveur SFTP intégré, et c'est pourquoi au début nous avons installé le package serveur gesftp.

Pour configurer Dropbear, nous allons modifier le fichier / etc / default / dropbear afin qu'il contienne ces deux lignes:

NO_START = 0 DROPBEAR_EXTRA_ARGS = "- w -p 127.0.0.1:22 -I 1200 -m"

La première ligne active simplement le service, et la seconde fait plusieurs choses:

  1. Évitez l'accès root.
  2. Il fait écouter le service sur le port 22 de l'interface locale (nous vous expliquerons pourquoi plus tard).
  3. Définit le temps d'attente (20 minutes).

SSLH

Le port 22 (SSH) est bien connu et est généralement l'un des premiers que les pirates tentent de violer, nous utiliserons donc le port 443 (SSL) à la place. Il arrive que ce port soit utilisé pour une navigation sécurisée via HTTPS.

Pour cette raison, nous utiliserons le package sslh, qui n'est rien de plus qu'un multiplexeur qui analyse les paquets qui arrivent au port 443, et les achemine en interne vers un service ou un autre selon que le type de trafic est SSH ou SSL.

SSLH ne peut pas écouter sur une interface où un autre service écoute déjà, c'est pourquoi nous avons précédemment fait écouter Dropbear sur l'interface locale.

Maintenant, ce que nous devons faire est d'indiquer à sslh l'interface et le port par lequel il doit écouter et où rediriger les paquets en fonction du type de service, et pour cela nous allons modifier le fichier de configuration / etc / default / sslh:

DAEMON = / usr / sbin / sslh DAEMON_OPTS = "- utilisateur sslh --listen 250.250.250.155:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile / var / run / sslh / sslh. pid "RUN = oui

Enfin, nous redémarrons les services:

service ssh stop && service dropbear start && service sslh restart

Après la commande précédente, notre session sécurisée sera probablement interrompue, auquel cas il suffit de se reconnecter, mais cette fois avec l'utilisateur professionnel et en utilisant le port 443. Si la session n'est pas interrompue, il est conseillé de la fermer et de la recommencer. avec les valeurs appropriées.

Si tout fonctionne correctement, nous pouvons continuer à travailler en tant que root et si nous le souhaitons, désinstaller OpenSSH:

sudo su - aptitude -r purge openssh-server

pare-feu

La prochaine chose que nous ferons est de séparer les journaux du pare-feu dans le fichier séparé /var/log/firewall.log pour faciliter une analyse plus approfondie, c'est pourquoi nous avons installé le package ulogd au démarrage. Pour cela, nous éditerons le fichier /etc/logd.conf pour ajuster la section appropriée:

[LOGEMU] file = "/ var / log / firewall.log" sync = 1

Ensuite, nous modifierons le fichier de rotation des enregistrements / etc / logrotate / ulogd pour garder une rotation quotidienne (avec date) et enregistrer les salves compressées dans le répertoire / var / log / ulog /:

/var/log/ulog/*.log /var/log/firewall.log {Daily dateext missingok compress delaycompress sharedscripts create 640 root adm postrotate /etc/init.d/ulogd reload mv /var/log/firewall.log-* .gz / var / log / ulog / endscript}

Nous allons donc créer les règles netfilter en exécutant ce qui suit:

IPT = $ (dont iptables) IPEXT = 250.250.250.155 IPEXTBLK = 250.250.0.0 / 16 IPBCAST = 255.255.255.255 $ IPT -F $ IPT -X $ IPT -Z $ IPT -A INPUT -i lo -j ACCEPTER $ IPT - P INPUT DROP $ IPT -P FORWARD DROP $ IPT -P OUTPUT ACCEPT $ IPT -A INPUT -m state --state INVALID -j ULOG --ulog-prefix IN_INVALID $ IPT -A INPUT -p igmp -j ULOG --ulog -prefix IN_IGMP $ IPT -A INPUT -m pkttype --pkt-type broadcast -j ULOG --ulog-prefix IN_BCAST $ IPT -A INPUT -m pkttype --pkt-type multicast -j ULOG --ulog-prefix IN_MCAST $ IPT -A FORWARD -j ULOG --ulog-prefix FORWARD $ IPT -N ICMP_IN $ IPT -A INPUT!  -i lo -p icmp -j ICMP_IN $ IPT -A ICMP_IN -p icmp -f -j ULOG --ulog-prefix IN_ICMP_FRAGMENTED $ IPT -A ICMP_IN -p icmp -m icmp -m longueur!  --length 28: 1322 -j ULOG --ulog-prefix IN_ICMP_INVALIDSIZE $ IPT -A ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-above 4 / sec --hashlimit-mode srcip --hashlimit-srcmask 24 - -hashlimit-name icmpflood -j ULOG --ulog-prefix IN_ICMP_FLOOD $ IPT -A ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-jusqu'à 64kb / min --hashlimit-mode srcip --hashlimit-srcmask 24 - hashlimit -nom icmpattack -j ULOG --ulog-prefix IN_ICMP_FLOOD $ IPT -A ICMP_IN -p icmp -m icmp -m u32!  --u32 "0x4 & 0x3fff = 0x0" -j ULOG --ulog-prefix IN_ICMP_ATTACK $ IPT -A ICMP_IN -p icmp -m icmp!  --icmp-type echo-request -m state --state NEW -j ULOG --ulog-prefix IN_ICMP_INVALID $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type echo-request -j ULOG --ulog- préfixe IN_ICMP $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type echo-request -m limit --limit 1 / sec --limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type echo-reply -m limit --limit 2 / sec --limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type destination-uneachable -m limit - limit 2 / s --limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type temps dépassé -m limit --limit 2 / sec --limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type problème-paramètre -m limite --limit 2 / s --limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -j RETURN $ IPT -N UDP_IN $ IPT -A ENTRÉE!  -i lo -p udp -j UDP_IN $ IPT -A UDP_IN!  -Je voilà!  -p udp -f -j ULOG --ulog-prefix IN_UDP_FRAGMENTED $ IPT -A UDP_IN -p udp -m udp --sport 53 -m longueur!  --length 28: 576 -j ULOG --ulog-prefix IN_UDP_DNS_INVALIDSIZE $ IPT -A UDP_IN -p udp -m udp --dport 53 -m -state --state NEW -j ULOG --ulog-prefix IN_UDP_DNSREQUEST $ IPT - A UDP_IN -p udp -m udp --dport 53 -m -state --state NOUVEAU -j REJECT --reject-with icmp-port-unreachable $ IPT -A UDP_IN -p udp -m udp!  --sport 53!  -s $ IPEXTBLK!  -d $ IPBCAST -m état --state NEW -j ULOG --ulog-prefix IN_UDP $ IPT -A UDP_IN -p udp -m udp -m state --state ESTABLISHED, RELATED -j ACCEPT $ IPT -A UDP_IN -j RETOUR $ IPT -N TCP_IN $ IPT -A ENTRÉE!  -i lo -p tcp -j TCP_IN $ IPT -A TCP_IN!  -Je voilà!  -p tcp -f -j ULOG --ulog-prefix IN_TCP_FRAGMENTED $ IPT -A TCP_IN -p tcp -m tcp --sport 53 -m state --state ESTABLISHED, RELATED -m length!  --length 513: 1500 -j ULOG --ulog-prefix IN_TCP_DNS_INVALIDSIZE $ IPT -A TCP_IN -p tcp -m tcp --dport 53 -m state --state NEW -j ULOG --ulog-prefix IN_TCP_DNS $ IPT -A TCP_IN -p tcp -m tcp --dport 53 -m état --state NOUVEAU -j REJECT --reject-with icmp-port-unreachable $ IPT -A TCP_IN -p tcp -m tcp -m multiport!  --dports 80,443 -m state --state NEW -j ULOG --ulog-prefix IN_TCP $ IPT -A TCP_IN -p tcp -m tcp -m multiport --dports 80,443 -m state --state NEW -m hashlimit - hashlimit -upto 4 / sec --hashlimit-burst 16 --hashlimit-mode srcip --hashlimit-name navreq -j ACCEPTER $ IPT -A TCP_IN -p tcp -m tcp -m multiport --dports 80,443 -m state - state ESTABLISHED -m connlimit!  --connlimit-above 16 -j ACCEPTER $ IPT -A TCP_IN -p tcp -m tcp -m multiport! 

Avec la configuration précédente, notre VPS devrait être raisonnablement sécurisé, mais si nous le souhaitons, nous pouvons le sécuriser un peu plus, pour lequel nous pouvons utiliser des règles plus avancées.

Tous les VPS ne permettent pas l'installation de modules supplémentaires pour netfilter, mais un module très utile est psd, ce qui vous permet d'éviter les analyses de port. Malheureusement, ce module n'est pas intégré à netfilter par défaut, il est donc nécessaire d'installer certains packages puis de construire le module:

aptitude -RvW installer iptables-dev xtables-addons-source module-assistant module-assistant --verbose - installation automatique en mode texte xtables-addons-source

Une fois que ce qui précède est fait, nous pouvons ajouter une règle comme celle-ci:

iptables -A INPUT -m psd --psd-weight-threshold 15 --psd-delay-threshold 2000 --psd-lo-port-weight 3 --psd-hi-ports-weight 1 -j ULOG --ulog- préfixe IN_PORTSCAN

La règle précédente signifie essentiellement que nous allons créer un compteur qui augmentera de 3 à chaque fois qu'une tentative est faite pour accéder à un port inférieur à 1024 et de 1 à chaque fois qu'une tentative est faite pour accéder à un port supérieur à 1023, et lorsque ce compteur atteint 15 pouces moins de 20 secondes, les colis seront enregistrés par ulog comme une tentative de scan de ports. Les paquets peuvent toujours être supprimés à la fois, mais dans ce cas, nous avons l'intention d'utiliser fail2ban, que nous configurerons plus tard.

Une fois les règles créées, il faut prendre certaines précautions pour les rendre persistantes, sinon on les perdra au redémarrage du serveur. Il existe plusieurs façons d'accomplir cela; Dans ce tutoriel, nous utiliserons le package iptables-persistent que nous avons installé au début, qui stocke les règles dans /etc/iptables/rules.v4 y /etc/iptables/rules.v6 pour ipv6.

iptables-save> /etc/iptables/rules.v4

En fait, bien que l'utilisation d'ipv6 à Cuba ne soit pas encore répandue, nous pourrions bien créer quelques règles de base:

IPT = $ (dont ip6tables) $ IPT -P INPUT DROP $ IPT -P FORWARD DROP $ IPT -P OUTPUT ACCEPT $ IPT -A INPUT -i lo -j ACCEPT $ IPT -A INPUT! -i lo -m état --state ÉTABLI, ASSOCIÉ -j ACCEPTER IPT annulé

Ces règles peuvent également être rendues persistantes:

ip6tables-save> /etc/iptables/rules.v6

Enfin pour plus de sécurité, nous nettoyons le registre du pare-feu et redémarrons les services:

echo -n> /var/log/firewall.log service logrotate redémarrage service ulogd redémarrage service iptables-redémarrage persistant

Nginx

Nous utiliserons Nginx comme serveur Web, car les VPS ont tendance à avoir une quantité de RAM réduite par rapport à un vrai serveur, c'est donc généralement une bonne idée d'avoir quelque chose de plus léger qu'Apache.

Avant de configurer Nginx, nous allons créer un certificat (sans mot de passe) à utiliser sur HTTPS:

cd / etc / nginx openssl genrsa -des3 -out cert.key 4096 cp -v cert.key cert.key.original openssl req -new -key cert.key -out cert.csr openssl rsa -in cert.key.original - sortie cert.key openssl x509 -req -days 365 -in cert.csr -signkey cert.key -out cert.crt

Une fois cela fait, nous allons créer un fichier de mot de passe pour l'utilisateur "elusuario":

htpasswd -c .htpasswd l'utilisateur

Ensuite, nous modifierons le fichier / etc / nginx / sites-disponible / par défaut pour définir les préférences de site par défaut. Cela pourrait ressembler à ceci:

serveur {nom_serveur localhost; index index.html index.htm default.html default.htm; racine / var / www; location / {# définit l'ordre de vérification et la page à charger, si l'URI n'est pas trouvée try_files $ uri $ uri / /index.html; }} serveur {écoute 127.0.0.1:443; nom_serveur localhost; index index.html index.htm default.html default.htm; racine / var / www; ssl activé; ssl_certificate cert.crt; ssl_certificate_key cert.key; ssl_session_timeout 5m; # Activez HTTPS uniquement via TLS (plus sécurisé que SSL) ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # donner la préférence aux chiffrements à haute résistance [HIGH], # déplacer les chiffrements à force moyenne [MEDIUM] à la fin de la liste, # désactiver les chiffrements à faible intensité [LOW] (40 et 56 bits) # désactiver les chiffrements avec algorithmes d'exportation [EXP] # désactiver les chiffrements nuls [eNULL], sans authentification [aNULL], SSL (versions 2 et 3) et DSS (n'autorise que les clés jusqu'à 1024 bits) ssl_ciphers HIGH: + MEDIUM:! LOW :! EXP: ! aNULL:! eNULL:! SSLv3:! SSLv2:! DSS; # Préférez les méthodes de chiffrement du serveur (par défaut, les clients sont utilisés) ssl_prefer_server_ciphers on; location / {# enable authentication auth_basic "Login"; auth_basic_user_file /etc/nginx/.htpasswd; # définir l'ordre de vérification et le code de la page à charger, si l'URI try_files $ uri $ uri / = 404 introuvable; # autorise la création d'un index pour les utilisateurs authentifiés autoindex sur; autoindex_exact_size off; autoindex_localtime activé; }}

Nous vérifions que la configuration est correcte:

nginx -t

Enfin, nous redémarrons le service:

service nginx restart

Fail2Ban

Avant de commencer à configurer Fail2Ban, pour plus de sécurité, nous arrêtons le service et nettoyons le registre:

fail2ban-client stop echo -n> /var/log/fail2ban.log

Ensuite, nous créons le fichier de configuration /etc/fail2ban/jail.local avec le contenu personnalisé suivant:

# Fichier de configuration personnalisé /etc/fail2ban/jail.local # [DEFAULT] findtime = 43200; 12 heures bantime = 86400; 1 jour maxretry = 3; l'interdiction prendra effet après la 4e tentative [ssh] enabled = false [nginx-auth] enabled = true filter = nginx-auth action = iptables-multiport [name = NoAuthFailures, port = "http, https"] logpath = / var / log / nginx * / * error * .log [nginx-badbots] enabled = true filter = apache-badbots action = iptables-multiport [name = BadBots, port = "http, https"] logpath = / var / log / nginx * /*access*.log bantime = 604800; 1 semaine maxretry = 0 [nginx-login] enabled = true filter = nginx-login action = iptables-multiport [name = NoLoginFailures, port = "http, https"] logpath = / var / log / nginx * / * access *. log bantime = 1800; 30 minutes [nginx-noscript] enabled = true action = iptables-multiport [name = NoScript, port = "http, https"] filter = nginx-noscript logpath = /var/log/nginx*/*access*.log maxretry = 0 [nginx-proxy] enabled = true action = iptables-multiport [name = NoProxy, port = "http, https"] filter = nginx-proxy logpath = /var/log/nginx*/*access*.log bantime = 604800 ; 1 semaine maxretry = 0 [firewall] enabled = true action = iptables-multiport [name = Firewall] filter = firewall logpath = /var/log/firewall.log maxretry = 0

Une fois cela fait, nous créons dans le répertoire /etc/fail2ban/filters.d/ les fichiers suivants:

# /etc/fail2ban/filter.d/nginx-auth.conf # Auth filter # Bloque les adresses IP qui ne parviennent pas à s'authentifier à l'aide de l'authentification de base # [Définition] failregex = aucun utilisateur / mot de passe n'a été fourni pour l'authentification de base. * client: user. * est introuvable dans. * client: user. * incompatibilité de mot de passe. * client: ignoreregex =
# /etc/fail2ban/filter.d/nginx-login.conf # Filtre de connexion # Bloque les adresses IP qui ne parviennent pas à s'authentifier à l'aide de la page de connexion de l'application Web # Analyser le journal d'accès pour HTTP 200 + POST / sessions => échec de connexion # [Définition ] failregex = ^ -. * POST / sessions HTTP / 1 \ .. "200 ignoreregex =
# /etc/fail2ban/filter.d/nginx-noscript.conf # Noscript filter # Bloquer les IP essayant d'exécuter des scripts tels que .php, .pl, .exe et autres scripts amusants. # Correspond par exemple à # 192.168.1.1 - - "GET / quelque chose.php # [Définition] failregex = ^ -. * GET. * (\. Php | \ .asp | \ .exe | \ .pl | \ .cgi | \ scgi) ignoreregex =
# /etc/fail2ban/filter.d/proxy.conf # Proxy filter # Bloquez les adresses IP essayant d'utiliser le serveur comme proxy. # Correspond par exemple à # 192.168.1.1 - - "GET http://www.something.com/ # [Definition] failregex = ^ -. * GET http. * Ignoreregex =
# /etc/fail2ban/filter.d/firewall.conf # Filtre pare-feu # [Définition] failregex = ^. * IN_ (INVALID | PORTSCAN | UDP | TCP |). * SRC = . * $ ignoreregex =

Enfin, nous démarrons le service et chargeons la configuration:

fail2ban-service -b fail2ban-client reload

Vérification

En dernière étape, nous pouvons visualiser les enregistrements avec queue -f o multi-queue –suivre tout. En fait, cette dernière application offre l'avantage de vous permettre de visualiser plusieurs fichiers en même temps et de mettre en évidence la syntaxe de base.

Si un compte de messagerie n'est pas configuré dans le VPS, il est conseillé de désactiver un message d'avertissement qui apparaît au démarrage du multitail, pour lequel nous exécuterons la commande suivante:

echo "check_mail: 0"> ~ / .multitailrc

En fait, on pourrait bien faire un alias (4) pour visualiser les logs rapidement avec une commande courte, par exemple, "flog":

alias flog = 'multitail --follow-all /var/log/firewall.log /var/log/fail2ban.log'

1) Ce sont des valeurs fictives.
2) L'activation d'autres services est facile une fois que vous comprenez comment cela fonctionne.
3) Pour plus de détails, exécutez man sudoers.
4) Peut éventuellement être ajouté au fichier ~ / .bash_aliases


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   msx dit

    Il y a des choses intéressantes, +1

  2.   Yukiteru dit

    @Hugo cette ligne dans la configuration:

    protocoles_ssl SSLv3 TLSv1 ;

    Je retirerais SSLv3 car ce protocole n'est plus sécurisé, même dans Debian Jessie, de nombreux services ont été configurés pour éviter d'utiliser ce protocole pour cette raison.

    Informations sur le sujet ici:

    https://www.linode.com/docs/security/security-patches/disabling-sslv3-for-poodle
    http://disablessl3.com/

    1.    Hugo dit

      L'idée n'était pas vraiment de proposer les principaux services sur HTTPS, mais d'expliquer comment utiliser le port 443 pour SSH sans perdre la possibilité de l'utiliser pour HTTPS si nécessaire, mais merci pour l'avertissement.

      Quoi qu'il en soit, j'ai mis à jour l'article pour modifier un peu la configuration de nginx et inclure accessoirement quelques commentaires pour clarifier un peu plus les choses avec ceci des mécanismes de cryptage, et pour corriger quelques erreurs mineures.

  3.   Daniel PZ dit

    Merci beaucoup pour ce super tuto, je vais maintenant le mettre en pratique ! :D, continue comme ça DesdeLinux, ils me surprennent toujours, Salutations du Pérou.

  4.   Ñandekuera dit

    Merci beaucoup pour le partage.

  5.   fernando dit

    très bon guide et cela vient de perles maintenant que j'ai commencé dans ce blog mais encore plus maintenant que je suis sur le point de monter mes premiers vps et toujours avec de nombreux problèmes mais cet article m'a sorti de nombreux doutes, merci et salutations