Guide pour protéger un serveur VPS avec Linux

{title}

Un serveur VPS (Virtual Private Server) est une partition logique d'un disque dur via une machine virtuelle. Un VPS nous donne plus de contrôle sur l'administration des ressources par rapport au service de serveur partagé.

Un VPS est idéal pour ceux qui souhaitent utiliser un serveur de manière professionnelle, mais à un coût inférieur à celui d'un serveur dédié, ainsi que pour ceux qui souhaitent démarrer et faire des tests sur l'administration du serveur, mais qui ne sont pas certains des aspects techniques, le serveur VPS est un bon option pour commencer. Il peut être utilisé pour tester des outils et des compétences sans avoir à investir trop d’argent et à risquer un serveur en production.

Nous pouvons créer un VPS comme indiqué dans le tutoriel:

  • Créer un serveur VPS local

Vous pouvez également utiliser certains modes de paiement. De nombreuses sociétés proposent des serveurs VPS par mois ou par jour, tels que DigitalOcean, pour tester des configurations dans un environnement réel.

{title}

Lors de l’administration d’un serveur, le plus important est de décider des mesures de sécurité à adopter. Bien que les mesures et les outils de sécurité soient nombreux, ils peuvent également être contre-productifs car ils consomment des ressources et peuvent ne pas permettre à certaines applications de fonctionner. Nous devons donc être conscients des risques, de la nécessité de pouvoir choisir l’équilibre entre facilité, performances du serveur et la sécurité

Dans ce tutoriel, je vais vous donner une série de paramètres recommandés pour un VPS sécurisé.

Blocage d'accès avec des pare-feu (pare-feu)
Les pare-feu constituent une barrière entre le trafic Internet général et le serveur. Il est important de réviser, filtrer et bloquer le trafic interne et externe.

Grâce à un ensemble de règles configurées par l'administrateur, un serveur utilisera uniquement des ports réseau spécifiques pour les services autorisés. Les autres ports n'ont pas été utilisés et doivent être protégés de manière sécurisée derrière un pare-feu pour interdire tout trafic destiné à ces lieux.

Pour ce tutoriel, nous supposerons que nous administrons un serveur Linux VPS pour prendre des mesures de sécurité. Pour établir les règles de base du pare-feu, nous devons d’abord déterminer quels ports nous avons ouverts pour cela, nous utilisons la commande suivante:

 ifconfig 
Nous déterminons l'ip:
 nmap -sT -O 192.168.0.11 

{title}

Cela vous permet de savoir quels ports écoutent et conditionnent l'utilisation des services dans certains cas. Bien configurer nos règles de pare-feu est une bonne base pour la sécurité du serveur et du réseau.

Il existe de nombreux pare-feu disponibles, certains sont:

  • Pare-feu IPCop
  • ConfigServer Security & Firewall

Le pare-feu le plus utilisé est Iptables qui est déjà fourni avec Linux, mais n’a pas d’interface graphique. Depuis la fenêtre du terminal (connectée via SSH), vous pouvez utiliser les commandes suivantes:

Bloquer une adresse IP d'entrée spécifique:

 sudo iptables -A SAISIE -s 190.160.45.60 -j DROP 
Bloquer une adresse IP entrante et un port via une interface réseau Ethernet ou filaire:
 iptables -A INPUT -i eth0 -s 190.160.45.60 --destination-port 25 -j DROP 
Bloquer une adresse IP entrante mais par WiFi:
 iptables -A SAISIE -i wlan0 -s 190.160.45.60 -j DROP 
Si je supprime le paramètre -s IP et laisse le port, je bloque le port pour toute adresse IP

Iptables est l'outil utilisé pour gérer le pare-feu Netfilter inclus dans le noyau Linux . L’avantage d’Iptables est qu’il a fait l’objet d’audits de sécurité très approfondis pour s’assurer de son bon fonctionnement et de son utilité.

Un autre aspect intéressant est que nous pouvons créer un script ou une interface pour définir les règles pour iptables, bien qu’il existe déjà de nombreuses options pouvant être configurées avec des jeux de règles de manière très flexible.

Utiliser SSH avec sécurité pour l'administration à distance
Lorsque nous devons gérer un serveur qui n'a pas d'accès local, nous devons le faire à distance. Pour cela, le service est utilisé via un protocole appelé SSH, acronyme de Secure Shell, qui vous permet de gérer complètement le serveur via un interpréteur de commandes.

SSH offre la possibilité de créer et de gérer un tunnel de trafic entre l’ordinateur et le serveur afin d’établir une connexion sécurisée puisque le tunnel transmet des données sur une connexion cryptée.

Bien que le protocole lui-même soit très sécurisé et qu'il ait été analysé et testé de manière approfondie pour la sécurité, nous pouvons ajouter certaines options de configuration pour le rendre plus sécurisé, tel que le changement de port, car par défaut le port de connexion SSH est 22, pour cela nous nous connectons via SSH puis éditons le fichier:

 / etc / ssh / sshd_config 
Nous nous connectons à l'aide de la commande suivante:
 ssh 

{title}

$config[ads_text6] not found

Ensuite, nous modifions le fichier et en changions le port pour un autre, à notre goût, qui n’interfère avec aucun service tel que 9200:

 nano / etc / ssh / sshd_config 

{title}

Nous enregistrons et redémarrons SSH pour adopter la nouvelle configuration, selon la distribution Linux:

Fedora, Centos

 sbin / service sshd redémarrer 
Debian, Ubuntu
 /etc/init.d/sshd restart 
Ensuite, nous devons accéder à nouveau, nous allons le faire comme suit:
 ssh -p 9200 
Ensuite, nous bloquons le port 22 afin qu’ils ne puissent pas nous scanner et tenter une attaque par force brute.
 iptables -A OUTPUT -p tcp --dport 22 -j DROP 

$config[ads_text5] not found

Installer un système IPS ou de prévention des intrusions
Un système de prévention des intrusions est un logiciel qui permet de surveiller et de contrôler les accès d’un réseau informatique afin de protéger les ressources ou un serveur contre les attaques et les intrusions. La technologie de prévention des intrusions est un complément indispensable aux côtés d’un système de détection d’intrusion (IDS), alors qu’un IPS sert de pare-feu, tandis qu’un IDS analyse le type de trafic qui circule sur le réseau, mais examine également le contenu et les performances. Que fait ce contenu?

Un exemple est Fail2Ban est une application développée sous Python pour la prévention des intrus, il s’agit d’un IPS, qui agit automatiquement en analysant et en bloquant les connexions distantes qui tentent un accès par force brutale.

$config[ads_text6] not found

Fail2ban utilise non seulement son propre journal des tentatives d’accès, il utilise également les journaux d’autres logiciels tels que iptables, qui spécifient les règles permettant d’appliquer un verrou.

Vous pouvez utiliser les règles créées par l'administrateur ou en créer de nouvelles en fonction de votre propre configuration, par exemple en bloquant une IP dont l'accès a échoué trois fois.

Nous pouvons le télécharger à partir d’une fenêtre SSH ou à partir de son site officiel. Si cela arrive dans les dépôts de notre distribution, nous l’installons.

 apt-get install fail2ban 
Ensuite, nous le configurons en éditant le fichier suivant:
 nano /etc/fail2ban/jail.conf 

{title}

Ici, nous éditons certains des paramètres les plus importants

  • ignoreip: ip qui ne sera jamais bloqué.
  • bantime: temps en secondes que durera le blocage de l'ip.
  • maxretry: nombre maximal de tentatives d'accès infructueuses avant d'être bloqué.

Ensuite, nous pouvons créer des filtres pour différentes applications que nous pouvons trouver dans le répertoire:

 cd /etc/fail2ban/filter.d 

{title}

Ce système de prévention des intrusions nous permettra d’atténuer de nombreuses attaques et d’accroître ainsi la sécurité globale de notre configuration VPS.

Fail2ban est un service qui surveille les fichiers journaux afin de déterminer si un accès est un utilisateur légitime et de bloquer temporairement le trafic provenant de l'adresse IP associée à l'utilisateur qui souhaite accéder à certains services tels que ftp, ssh, email., web, etc.

C'est un moyen facile de gêner automatiquement les méthodes de force brute, car il devra bloquer l'attaque et cesser de fonctionner aussi longtemps que nous l'indiquons. Cela suffit généralement à décourager les nouvelles tentatives de force brute.

$config[ads_text5] not found

Implémenter un système de détection d'intrusion ou IDS
Un système de détection d'intrusion, ou IDS, est le complément obligatoire d'un système de prévention d'intrusion. Un système IDS détecte les modifications des enregistrements ou des fichiers en effectuant des comparaisons avec ces états précédemment enregistrés pour savoir si les fichiers ont été modifiés ou si une configuration a été modifiée et pour enregistrer l'utilisateur qui l'a créé.

Il y a beaucoup d'IDS comme Snort, que nous avons vu dans le tutoriel:

  • Outils de sécurité et de prévention des hackers
Suricate, nous avons vu dans le tutoriel:
  • Système de détection d'intrus Meerkat
Tripwire nous avons vu dans le tutoriel:
  • Renforcement de la sécurité du serveur et du système d'exploitation.

$config[ads_text6] not found

Ces outils utilisent une base de données de fichiers système et protègent les fichiers de configuration. En configurant les règles et les exceptions, vous définissez les fichiers à protéger et ceux à signaler, afin que, lorsque vous démarrez la surveillance du système, vous examiniez les exécutions et toute modification des fichiers surveillés.

Tous les outils peuvent être configurés pour effectuer une révision automatique avec cronjob de temps en temps et même implémenter des notifications par courrier électronique en cas d'activité inhabituelle.

Si nous prenons par exemple Snort, nous l’installons à partir des référentiels:

 apt-get install snort 

{title}

Ensuite, nous allons au répertoire où se trouvent les fichiers de règles:

 cd / etc / snort / rules 

$config[ads_text5] not found

{title}

Par exemple, regardons le fichier mysql.rules

 nano mysql.rules 
Où nous voyons spécifié que tout accès utilisateur externe ou root au service MySQL doit être informé.

{title}

Un autre exemple consiste par exemple à surveiller les programmes de discussion à partir du serveur, d'un ordinateur du réseau ou d'un ordinateur externe utilisant notre serveur.

 règles de chat nano 

{title}

Nous pouvons également configurer chaque fichier de règle pour détecter les téléchargements depuis un navigateur ou l'accès à un service, la modification d'un fichier ou d'une page Web particulière.

$config[ads_text6] not found

Meerkat est plus moderne que Snort et Tripwire, car il fonctionne comme un moteur de renifleur pour analyser le trafic entrant et sortant d'un système réseau. Cependant, il faut beaucoup de ressources pour analyser et détecter les intrusions lorsqu’il fait double emploi en tant que IDS et IPS.

Il a également des plugins pour assigner des règles et analyser de nombreuses applications et programmes. Meerkat fonctionne sur toutes les couches du modèle OSI.

Vérifiez les virus et les logiciels malveillants avec Linux Malware Detect ou ClamAV
Bien que Linux soit moins sujet à de telles attaques, il n’est pas à l’abri des logiciels malveillants. Les outils d’un système de sécurité, associés à la mise en œuvre d’un système IPS et d’un système de détection d’identité pour détecter les tentatives d’intrusion, nécessitent un logiciel capable de rechercher et de détecter les logiciels malveillants afin d’identifier les traces d’activité indiquant que des logiciels dangereux sont installés dans le système. serveur

Dans le didacticiel Linux Malware Detect (LMD) pour sécuriser Linux, l'installation et l'utilisation de cet outil pour détecter les logiciels malveillants ont été expliquées, ne le manquez pas.

Un certain nombre de scanners de programmes malveillants disponibles pour les systèmes Linux peuvent être utilisés pour valider périodiquement l'intégrité des serveurs. Linux Malware Detect, également connu sous le nom de maldet ou LCD, est une option populaire qui peut être installée et configurée pour rechercher les signatures de programmes malveillants connus en fonction de sa base de données.

Il peut être exécuté manuellement pour effectuer des analyses uniques. Il peut également être utilisé avec cronjob pour effectuer des recherches et des analyses préventives régulières, notamment pour vérifier les courriels et les fichiers pouvant être téléchargés par FTP sur le serveur. Les rapports de ces analyses peuvent être envoyés par courrier électronique aux administrateurs du serveur.

$config[ads_text5] not found

  • 0