Site perso d'un administrateur systèmes & réseaux

Auteur/autrice : Al Page 1 of 8

Tout savoir sur le protocole DHCP

Le protocole DHCP (Dynamic Host Configuration Protocol) est un protocole réseau utilisé pour attribuer dynamiquement des adresses IP et d’autres paramètres de configuration réseau à des dispositifs sur un réseau.

Il simplifie grandement la gestion des adresses IP en automatisant le processus, permettant ainsi aux utilisateurs de se connecter facilement à un réseau sans avoir à configurer manuellement les paramètres IP.

1. Pourquoi a-t-il été créé ?

Le protocole DHCP a été créé pour résoudre les problèmes liés à la configuration manuelle des adresses IP dans les réseaux.

Avant le DHCP, les administrateurs réseau devaient attribuer manuellement une adresse IP unique à chaque dispositif sur le réseau, ce qui était non seulement fastidieux mais aussi sujet à des erreurs, comme les conflits d’adresses IP.

Le DHCP automatise ce processus, réduisant ainsi les erreurs humaines et facilitant la gestion des réseaux, en particulier les grands réseaux.

2. Quand et par qui a-t-il été créé ?

Le protocole DHCP a été développé dans les années 1990 par l’Internet Engineering Task Force (IETF) et est spécifié dans le RFC 2131, publié en mars 1997. Il s’agit d’une évolution du protocole BOOTP (Bootstrap Protocol), qui était utilisé pour effectuer des tâches similaires mais de manière moins automatisée et flexible.

3. Comment fonctionne le protocole DHCP ?

Le fonctionnement du DHCP repose sur un mécanisme de requête-réponse entre les clients DHCP (les dispositifs nécessitant une adresse IP) et les serveurs DHCP (les dispositifs attribuant les adresses IP). Le processus typique inclut les étapes suivantes :

  1. Découverte (DHCP Discover) : Le client DHCP envoie un message de découverte pour localiser les serveurs DHCP disponibles sur le réseau.
  2. Offre (DHCP Offer) : Les serveurs DHCP répondent avec une offre, proposant une adresse IP au client.
  3. Demande (DHCP Request) : Le client sélectionne une offre parmi celles reçues et envoie une requête pour demander l’attribution de l’adresse IP.
  4. Accusé de réception (DHCP Acknowledgment) : Le serveur DHCP confirme l’attribution de l’adresse IP en envoyant un accusé de réception au client.

Ce processus permet une allocation automatique et dynamique des adresses IP, facilitant ainsi la gestion des réseaux.

4. Port utilisé par le protocole

Le DHCP utilise principalement deux ports UDP : le port 67 pour le serveur DHCP et le port 68 pour le client DHCP. Ces ports sont utilisés pour la communication des messages DHCP entre les clients et les serveurs.

5. Niveau dans le modèle OSI

Le protocole DHCP opère principalement au niveau de la couche Application (couche 7) du modèle OSI. Il s’appuie sur le protocole UDP de la couche Transport (couche 4) pour la transmission de ses messages.

6. Évolution sécuritaire du protocole DHCP

Bien que le DHCP simplifie grandement la gestion des adresses IP, il présente également des risques de sécurité, tels que les attaques DHCP spoofing, où un attaquant configure un faux serveur DHCP pour distribuer des adresses IP malveillantes.

Pour contrer ces menaces, plusieurs mesures de sécurité ont été mises en place, comme l’utilisation de l’authentification DHCP et de la surveillance DHCP, qui permettent de sécuriser le processus d’attribution des adresses IP.

7. Anecdotes

Un fait amusant concernant le DHCP est que son prédécesseur, le protocole BOOTP, a été utilisé dans les années 1980 pour permettre aux ordinateurs sans disque de démarrer en téléchargeant leur système d’exploitation via le réseau. Le DHCP a amélioré cette fonctionnalité en automatisant davantage le processus et en ajoutant des capacités dynamiques.

8. Cas de détournement

Un exemple célèbre de détournement DHCP est l’attaque de type « Rogue DHCP Server ».

Dans cette attaque, un attaquant configure un serveur DHCP non autorisé sur le réseau, distribuant des adresses IP et des paramètres réseau malveillants aux clients, ce qui peut entraîner des redirections vers des sites malveillants ou l’interception de données sensibles.

9. Commandes utiles et logiciels

Pour utiliser le protocole DHCP, voici quelques commandes pratiques et logiciels associés :

Commande ipconfig

  • Usage : Affiche la configuration réseau actuelle du client DHCP et permet de libérer ou de renouveler l’adresse IP.
  • Logiciel/Appli : Disponible en ligne de commande sur Windows.
  • Exemple :
ipconfig /release
ipconfig /renew

Commande dhclient

  • Usage : Utilisé pour obtenir ou libérer une adresse IP via DHCP.
  • Logiciel/Appli : Disponible en ligne de commande sur Linux.
  • Exemple :
sudo dhclient -r
sudo dhclient

Le mot de la fin…

Le protocole DHCP est un élément essentiel des réseaux modernes, simplifiant la configuration des adresses IP et d’autres paramètres réseau. Grâce à ses mécanismes automatisés, il permet une gestion efficace et sans erreur des réseaux, tout en évoluant pour répondre aux défis de sécurité contemporains.

Configurer un serveur PHP sur Centos SELinux

SElinux est réputé pour être parfois un peu capricieux, et pour cause : cette distribution se veut être l’une des plus sécurisées au monde.

Voyons comment installer un serveur NGINX avec PHP 8 sur cette distribution qui semble énerver plus d’un admin système !

(Configuration de départ : l’OS d’origine est un CENTos « minimal »)

Installation de SELinux

1. Mettre à jour le système :

yum update -y

2. Installer les paquets nécessaires pour SELinux :

yum install -y selinux-policy selinux-policy-targeted policycoreutils setools setroubleshoot

3. Configurer SELinux :

nano /etc/selinux/config

Modifiez les lignes suivantes pour activer SELinux en mode « enforcing » (je reviendrai dans un autre article sur les spécificités de ce mode):

SELINUX=enforcing
SELINUXTYPE=targeted

4. Redémarrer la machine

reboot

5. Vérifier l’état de SELinux :

sestatus

Vous devriez voir quelque chose de ce genre :

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

6. (Optionnel) Configurer les règles de SELinux

Vous pouvez personnaliser les règles SELinux en fonction de vos besoins spécifiques. Utilisez les outils comme semanage et setsebool pour ajuster les politiques SELinux.

Exemple d’ajustement des règles pour un service spécifique (par exemple, HTTPD) :

setsebool -P httpd_can_network_connect on

7. (optionnel) configurer les règles de SELinux :

Si vous rencontrez des problèmes avec SELinux, utilisez audit2allow pour analyser et générer des règles permettant de corriger les problèmes.

Par exemple, pour analyser les erreurs et générer une politique d’autorisation :

grep AVC /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.pp

Avec ces étapes, votre Centos devrait être équipée de SELinux pour une sécurité renforcée. Passons maintenant à la mise en place d’un serveur NGINX

Installer et configurer NGINX sur SELinux

1. Installer NGINX

yum install -y epel-release
yum install -y nginx

2. Démarrer et activer NGinx :

systemctl start nginx
systemctl enable nginx

3. Configurer le firewall (si nécessaire) :

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

4. Vérifier l’état de SELinux

sestatus

5. Configurer les contextes SELinux pour Nginx :

SELinux utilise des contextes pour contrôler l’accès aux fichiers et aux répertoires. Nginx nécessite des contextes spécifiques pour fonctionner correctement.

Vérifier les contextes actuels des fichiers de Nginx :

ls -Z /etc/nginx
ls -Z /usr/share/nginx/html

Appliquer les contextes SELinux nécessaires

Appliquer le contexte correct aux répertoires et fichiers Nginx :

semanage fcontext -a -t httpd_sys_content_t "/usr/share/nginx/html(/.*)?"
restorecon -Rv /usr/share/nginx/html

semanage fcontext -a -t httpd_sys_content_t "/etc/nginx(/.*)?"
restorecon -Rv /etc/nginx

Permettre à Nginx d’écouter sur le réseau :

setsebool -P httpd_can_network_connect 1

6. Vérifier le bon fonctionnement de Nginx :

Accédez à l’adresse IP de votre serveur depuis un navigateur web pour vérifier que Nginx fonctionne correctement. Vous devriez voir la page d’accueil par défaut de CENTOS :

7. Dépannage et gestion des erreurs

Si vous rencontrez des erreurs, vous pouvez utiliser audit2allow pour créer des règles SELinux qui permettent les opérations nécessaires à Nginx.

Exemple d’utilisation d’audit2allow :

1. Reproduisez l’erreur.

2. Vérifiez les logs SELinux pour trouver les erreurs associées à Nginx :

    grep nginx /var/log/audit/audit.log

    3. Utilisez audit2allow pour générer et appliquer une nouvelle politique :

    grep nginx /var/log/audit/audit.log | audit2allow -M nginx_local
    semodule -i nginx_local.pp

    En suivant ces étapes, vous pouvez installer et configurer Nginx sur une machine avec SELinux en mode enforcing. La clé est de s’assurer que les contextes SELinux sont correctement définis pour permettre à Nginx de fonctionner sans restriction.

    On va pouvoir maintenant passer à l’ajout de PHP.

    3. Installer PHP sur Centos avec NGinx et SELinux

    Pour installer PHP sur une machine CentOS avec Nginx, suivez ces étapes :

    1. Installer EPEL et Remi Repository

    Les paquets PHP les plus récents sont souvent disponibles dans le dépôt Remi. Commencez par installer EPEL (Extra Packages for Enterprise Linux) et le dépôt Remi.

    sudo yum install -y epel-release
    sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

    2. Activer le dépôt Remi

    Activez le dépôt Remi pour PHP. Par exemple, pour PHP 8.0, utilisez la commande suivante :

    sudo yum install -y yum-utils
    sudo yum-config-manager --enable remi-php80

    3. Installer PHP et les modules nécessaires

    Installez PHP et quelques modules couramment utilisés :

    sudo yum install -y php php-fpm php-mysqlnd php-opcache php-gd php-xml php-mbstring php-mcrypt php-json

    4. Configurer PHP-FPM

    Ouvrez le fichier de configuration de PHP-FPM pour effectuer quelques ajustements nécessaires :

    sudo nano /etc/php-fpm.d/www.conf

    Assurez-vous que les lignes suivantes sont définies pour que PHP-FPM fonctionne avec Nginx :

    user = nginx
    group = nginx
    
    listen = /var/run/php-fpm/php-fpm.sock
    
    listen.owner = nginx
    listen.group = nginx
    listen.mode = 0660

    Ensuite, assurez-vous que le répertoire /var/run/php-fpm existe et que les permissions sont correctes :

    sudo mkdir -p /var/run/php-fpm
    sudo chown -R nginx:nginx /var/run/php-fpm
    sudo chmod -R 755 /var/run/php-fpm

    5. Démarrer et activer PHP-FPM

    Démarrez PHP-FPM et configurez-le pour qu’il démarre automatiquement au démarrage :

    sudo systemctl start php-fpm
    sudo systemctl enable php-fpm

    Vérifiez ensuite que le fichier de socket php-fpm a bien été créé :

    ls -l /var/run/php-fpm/php-fpm.sock

    Vous devriez voir quelque chose comme ceci :

    srw-rw---- 1 nginx nginx 0 Jun  3 23:30 /var/run/php-fpm/php-fpm.sock

    6. Configurer Nginx pour utiliser PHP

    Ouvrez le fichier de configuration du site Nginx. Par exemple, si vous utilisez la configuration par défaut :

    sudo nano /etc/nginx/conf.d/default.conf

    Modifiez le fichier de configuration pour traiter les fichiers PHP. Ajoutez ou modifiez les lignes suivantes dans le bloc server :

    server {
        listen       80;
        server_name  localhost;
    
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    
        location ~ \.php$ {
            include fastcgi_params;
            fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    
        error_page  404 /404.html;
        location = /40x.html {
        }
    
        error_page   500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

    7. Redémarrer Nginx

    Redémarrez Nginx pour appliquer les modifications :

    sudo systemctl restart nginx

    8. Tester l’installation de PHP

    Créez un fichier PHP de test pour vous assurer que PHP fonctionne correctement avec Nginx. Par exemple :

    sudo nano /usr/share/nginx/html/info.php

    Ajoutez le contenu suivant :

    <?php
    phpinfo();
    ?>

    Accédez à ce fichier via votre navigateur web en visitant http://your_server_ip/info.php. Vous devriez voir la page d’information PHP, indiquant que PHP fonctionne correctement avec Nginx.

    Le mot de la fin

    Et voilà, cette procédure vous permet à priori d’avoir un serveur PHP tournant sous SELinux prêt à l’emploi ! Je ne suis pas entré volontairement dans les détails sur certains points qui paraissent un peu obscurs mais je ne manquerai pas d’y revenir un peu plus tard 😉

    Qu’est-ce que le protocole DNS ?

    Le protocole DNS (Domain Name System) est un système de nommage hiérarchique et décentralisé utilisé pour traduire les noms de domaine lisibles par les humains en adresses IP compréhensibles par les machines. Par exemple, il convertit un nom de domaine comme www.example.com en une adresse IP comme 192.0.2.1, permettant ainsi aux utilisateurs d’accéder facilement aux sites web sans avoir à mémoriser des adresses IP complexes.

    1. Pourquoi a-t-il été créé ?

    Le protocole DNS a été créé pour résoudre le problème de la complexité croissante des adresses IP au fur et à mesure que l’Internet se développait. Avant le DNS, un fichier centralisé appelé HOSTS.TXT, maintenu par l’ARPANET, était utilisé pour la résolution des noms de domaine. Cependant, avec l’explosion du nombre de dispositifs connectés, cette approche est devenue impraticable. Le DNS a été conçu pour permettre une gestion plus flexible et évolutive de la résolution des noms de domaine.

    2. Quand et par qui a-t-il été créé ?

    Le protocole DNS a été créé en 1983 par Paul Mockapetris, un informaticien américain, sous la forme des RFC 882 et 883, remplacées plus tard par les RFC 1034 et 1035. Ce développement a été soutenu par l’Internet Engineering Task Force (IETF) pour répondre aux besoins croissants du réseau ARPANET, précurseur de l’Internet.

    3. Comment fonctionne le protocole DNS ?

    Le DNS fonctionne grâce à une structure en arborescence de serveurs de noms distribués. Lorsqu’un utilisateur saisit un nom de domaine dans son navigateur, une requête DNS est envoyée à un serveur DNS local, qui vérifie s’il possède la réponse en cache. Si ce n’est pas le cas, le serveur DNS local interroge d’autres serveurs DNS, en commençant par les serveurs racine, puis les serveurs TLD (Top-Level Domain), et enfin les serveurs faisant autorité pour le domaine recherché. Le processus se termine lorsque l’adresse IP associée au nom de domaine est trouvée et renvoyée à l’utilisateur.

    4. Port utilisé par le protocole

    Le DNS utilise principalement le port UDP 53 pour les requêtes de résolution rapide. Cependant, pour des transactions plus complexes ou sécurisées, il peut utiliser le port TCP 53.

    5. Niveau dans le modèle OSI

    Le protocole DNS opère principalement au niveau de la couche Application (couche 7) du modèle OSI. Il facilite la communication entre les applications en traduisant les noms de domaine en adresses IP, ce qui est essentiel pour l’acheminement des données à travers le réseau.

    6. Évolution sécuritaire du protocole DNS

    Au fil des ans, plusieurs améliorations de sécurité ont été apportées au DNS, notamment avec l’introduction de DNSSEC (DNS Security Extensions). DNSSEC ajoute des signatures cryptographiques aux enregistrements DNS pour vérifier leur authenticité et intégrité, empêchant ainsi des attaques telles que le spoofing DNS.

    7. Fait historique amusant

    Elizabeth J. Feinler, qui a dû avoir un sacré boulot de saisie à un moment de sa vie… !

    Un fait intéressant est que les premiers serveurs DNS étaient configurés manuellement à partir d’un fichier texte, le fichier HOSTS.TXT, qui contenait toutes les correspondances entre noms de domaine et adresses IP. Ce fichier était distribué par FTP à tous les ordinateurs connectés à ARPANET. La première personne responsable de la mise à jour et de la distribution de ce fichier était Elizabeth (Jake) Feinler, qui travaillait au Stanford Research Institute (SRI). Son travail était crucial pour le fonctionnement des premiers réseaux, illustrant à quel point les débuts d’Internet étaient rudimentaires comparés à aujourd’hui.

    8. Cas de détournement

    Un exemple célèbre de détournement du DNS est l’attaque de type « DNS Spoofing » ou « Cache Poisoning ». En 2008, une vulnérabilité critique, découverte par Dan Kaminsky, a montré comment des attaquants pouvaient empoisonner le cache DNS des serveurs pour rediriger le trafic vers des sites malveillants, entraînant des risques de vol de données et de phishing.

    9. Commandes utiles et logiciels

    Pour utiliser le protocole DNS, voici quelques commandes pratiques avec les logiciels ou applications associés :

    Commande nslookup

    • Usage : Utilisée pour interroger les serveurs DNS et obtenir des informations sur un nom de domaine.
    • Logiciel/Appli : Disponible en ligne de commande sur Windows, macOS et Linux.
    • Exemple :
    nslookup www.example.com

    Commande dig

    • Usage : Fournit des informations détaillées sur les requêtes DNS, idéale pour le dépannage avancé.
    • Logiciel/Appli : Disponible en ligne de commande sur macOS et Linux. Peut être installé sur Windows via Cygwin ou BIND.
    • Exemple :
    dig www.example.com

    Commande host :

    • Usage : Simple utilitaire de recherche DNS, similaire à nslookup mais avec une sortie plus concise.
    • Logiciel/Appli : Disponible sur Linux et macOS.
    • Exemple :
    host www.example.com

    Outil Wireshark

    • Usage : Permet d’analyser le trafic réseau en temps réel, y compris les requêtes et réponses DNS.
    • Logiciel/Appli : Application graphique disponible sur Windows, macOS et Linux.
    • Exemple : Filtrer le trafic DNS dans Wireshark avec le filtre :
    dns

    Le mot de la fin…

    Le protocole DNS est une composante fondamentale de l’Internet moderne, facilitant la navigation en traduisant les noms de domaine en adresses IP. Malgré les défis de sécurité auxquels il a été confronté, des améliorations comme DNSSEC ont renforcé sa robustesse.

    Le protocole TCP/IP en synthèse

    1. Qu’est-ce que le protocole TCP/IP ?

    Le protocole TCP/IP (Transmission Control Protocol/Internet Protocol) est un ensemble de protocoles de communication utilisés pour interconnecter des dispositifs sur des réseaux informatiques, y compris l’Internet. TCP/IP fournit les règles et les normes permettant la transmission des données entre les ordinateurs. Le protocole IP s’occupe de l’adressage et du routage des paquets de données, tandis que le protocole TCP assure la fiabilité de la transmission en vérifiant l’intégrité des données et en gérant les connexions entre les dispositifs.

    2. Pourquoi a-t-il été créé ?

    TCP/IP a été créé pour permettre une communication fiable et interopérable entre différents types de réseaux. Avant TCP/IP, les réseaux étaient souvent isolés et utilisaient des protocoles propriétaires.

    TCP/IP a été conçu pour fournir un standard ouvert qui permettrait à tous les réseaux de communiquer entre eux, facilitant ainsi le développement de l’Internet et l’interconnexion globale des réseaux.

    3. Quand et par qui a-t-il été créé ?

    TCP/IP a été développé dans les années 1970 par Vint Cerf et Robert Kahn. Le protocole a été défini pour la première fois en 1974 dans le cadre du projet ARPANET, financé par l’Agence pour les projets de recherche avancée de défense (DARPA) des États-Unis.

    Le modèle TCP/IP a été adopté comme standard par le Département de la Défense des États-Unis en 1982 et est devenu le fondement de l’Internet moderne.

    4. Comment fonctionne le protocole TCP/IP ?

    TCP/IP fonctionne en séparant les données en petits paquets qui sont ensuite envoyés indépendamment sur le réseau. Le protocole IP s’occupe de l’adressage et du routage de ces paquets, tandis que le protocole TCP assure la fiabilité de la transmission en vérifiant que les paquets arrivent bien à destination, dans le bon ordre, et sans erreurs.

    Si un paquet est perdu ou endommagé, TCP le retransmet. Cette architecture permet une transmission de données fiable et efficace sur des réseaux hétérogènes.

    5. Port utilisé par le protocole

    TCP/IP n’utilise pas de port spécifique car il s’agit d’une suite de protocoles. Cependant, différents services et applications utilisant TCP/IP emploient des ports bien définis. Par exemple, HTTP utilise le port TCP 80, HTTPS utilise le port TCP 443, et FTP utilise les ports TCP 20 et 21.

    6. Niveau dans le modèle OSI

    TCP/IP correspond à plusieurs niveaux du modèle OSI :

    • IP (Internet Protocol) fonctionne à la couche Réseau (couche 3).
    • TCP (Transmission Control Protocol) fonctionne à la couche Transport (couche 4).
    • Les applications utilisant TCP/IP, comme HTTP ou FTP, opèrent à la couche Application (couche 7).

    7. Évolution sécuritaire du protocole TCP/IP

    Au fil des ans, plusieurs améliorations de sécurité ont été apportées à TCP/IP. Par exemple, le protocole IPSec (Internet Protocol Security) a été développé pour sécuriser les communications au niveau IP en fournissant des services de cryptage et d’authentification.

    De plus, des extensions comme TLS (Transport Layer Security) ont été introduites pour sécuriser les connexions au niveau TCP, notamment pour les transactions en ligne et les communications sensibles.

    8. Fait historique amusant

    Un fait intéressant est que le premier message transmis via le protocole TCP/IP entre deux réseaux a été « LO ». Le message complet devait être « LOGIN », mais le système s’est écrasé après les deux premières lettres, marquant ainsi un début modeste pour ce qui deviendra l’Internet moderne.

    9. Cas de détournement

    Un exemple de détournement du protocole TCP/IP est l’attaque par usurpation de session (Session Hijacking).

    Dans cette attaque, un pirate intercepte une session TCP en cours entre deux hôtes pour en prendre le contrôle. Cela peut permettre à l’attaquant de voler des données sensibles ou d’injecter des commandes malveillantes dans la session.

    10. Commandes utiles et logiciels

    Pour utiliser et diagnostiquer les protocoles TCP/IP, voici quelques commandes pratiques avec les logiciels ou applications associés :

    1. Commande ping

    • Usage : Vérifie la connectivité réseau entre deux hôtes en envoyant des paquets ICMP Echo Request.
    • Logiciel/Appli : Disponible en ligne de commande sur Windows, macOS et Linux.
    • Exemple :
    ping www.example.com

    2. Commande traceroute / tracert

    • Usage : Affiche le chemin emprunté par les paquets pour atteindre une destination.
    • Logiciel/Appli : traceroute sur Linux et macOS, tracert sur Windows.
    • Exemple :
    traceroute www.example.com

    ou

    tracert www.example.com

    3. Commande netstat

    • Usage : Affiche les connexions réseau et les statistiques du protocole TCP/IP.
    • Logiciel/Appli : Disponible en ligne de commande sur Windows, macOS et Linux.
    • Exemple :
    netstat -an

    En bref

    Le protocole TCP/IP est la pierre angulaire de l’Internet, permettant une communication fiable et interopérable entre différents réseaux.

    Grâce à ses nombreuses évolutions et extensions, il reste sécurisé et adaptable aux besoins modernes.

    Nouvelle série d’article « 1 jour 1 protocole »

    Pour peaufiner mes compétences et mon savoir sur les protocoles, j’ai décidé de me lancer dans la création d’une série d’articles « 1 jour 1 protocole ».

    Pourquoi cette série ?

    Les protocoles réseaux sont essentiels pour permettre à nos dispositifs de communiquer entre eux de manière fluide et efficace. Pourtant, leur importance est souvent sous-estimée, et leur complexité peut décourager plus d’un.

    Mon objectif avec « 1 jour 1 protocole » est de rendre ces concepts plus accessibles à tous. Chaque jour, je vais vous proposer une fiche synthétique sur un protocole réseau différent, couvrant son histoire, sa conception et quelques astuces pratiques pour l’utiliser au quotidien.

    Structure des Articles

    Chaque jour, vous découvrirez un nouvel article consacré à un protocole spécifique. Voici ce que vous pouvez attendre de chaque fiche :

    1. Introduction et Historique :
      • Une petite présentation du protocole.
      • Un peu d’histoire pour comprendre d’où il vient et pourquoi il a été créé.
      • Les défis qu’il a permis de relever.
    2. Fonctionnement et Conception :
      • Comment le protocole fonctionne, expliqué de manière simple et claire.
      • Les concepts clés et les mécanismes qui le composent.
      • Les normes et standards associés.
    3. Utilisation Pratique :
      • Où et comment le protocole est utilisé dans le monde réel.
      • Des exemples concrets d’applications.
      • Ses avantages et ses limites.

    J’espère que vous prendrez autant de plaisir à les lire que j’en ai eu à les écrire.

    Rendez-vous dans le prochain article pour le premier sujet : le protocole TCP/IP !

    En quoi un algorithme de hashage permet d’assurer l’intégrité des données ?

    On voit souvent l’affirmation selon laquelle une fonction ou un algorithme de hashage permte d’assurer l’intégrité des données. Concrètement, pourquoi et comment ça marche ? C’est ce qu’on va tenter de comprendre simplement ici.

    Qu’est-ce qu’un algorithme de hashage ?

    Un algorithme de hashage prend une entrée (ou message) et produit une sortie de taille fixe appelée « haché » ou « digest ». Cette sortie est généralement une séquence de bits ou de caractères. Les algorithmes de hashage couramment utilisés incluent MD5, SHA-1, et les membres de la famille SHA-2 (comme SHA-256).

    Caractéristiques des fonctions de hachage cryptographiques

    1. Déterminisme :
      • Une fonction de hachage est déterministe, ce qui signifie que le même message d’entrée produira toujours le même haché. Cela permet de vérifier la consistance des données.
    2. Rapidité :
      • Les fonctions de hachage sont conçues pour être rapides à calculer, ce qui les rend pratiques pour une utilisation fréquente.
    3. Préimage résistante :
      • Il est computationnellement difficile de retrouver le message original à partir de son haché, ce qui protège les données contre certaines formes d’attaques.
    4. Résistance aux collisions :
      • Il est difficile de trouver deux messages distincts qui produisent le même haché. Cela assure que chaque message a un haché unique, renforçant ainsi l’intégrité des données.
    5. Avalanche effect :
      • Une petite modification de l’entrée (même un seul bit) entraîne un changement radical et imprévisible du haché. Cela permet de détecter même les plus petites altérations dans les données.

    Assurance de l’intégrité des données

    L’intégrité des données signifie que les données n’ont pas été altérées ou corrompues. Voici comment les fonctions de hachage contribuent à cette assurance :

    1. Vérification de l’intégrité :
      • Lorsque des données sont envoyées ou stockées, leur haché est souvent calculé et transmis ou stocké avec elles. Plus tard, pour vérifier que les données n’ont pas été modifiées, le haché des données reçues ou récupérées est recalculé et comparé au haché original. Si les deux hachés correspondent, les données sont considérées comme intactes.
    2. Détection de la corruption :
      • Si les données sont altérées de quelque manière que ce soit, même légèrement, le haché recalculé sera différent du haché original, signalant que l’intégrité des données a été compromise.

    Exemple pratique

    Prenons un exemple concret pour illustrer :

    Calcul initial du haché :

    • Supposons que vous avez un fichier appelé document.txt. Vous calculez son haché en utilisant un algorithme de hachage comme SHA-256 :
    sha256sum document.txt
    • Le résultat pourrait être quelque chose comme 3a7bd3e2360a3e756b81d7ba7e65a7ff.

    Transmission et stockage :

    Vous envoyez document.txt à un collègue et incluez le haché 3a7bd3e2360a3e756b81d7ba7e65a7ff.

    Vérification de l’intégrité :

    Votre collègue reçoit document.txt et recalcule son haché en utilisant la même commande :

    sha256sum document.txt

    Si le haché recalculé correspond à 3a7bd3e2360a3e756b81d7ba7e65a7ff, cela signifie que le fichier n’a pas été modifié pendant la transmission.

    En bref

    Les algorithmes de hachage assurent l’intégrité des données en fournissant un moyen simple et efficace de vérifier que les données n’ont pas été altérées. Grâce aux caractéristiques uniques des fonctions de hachage, telles que la résistance aux collisions et l’effet avalanche, même les plus petites modifications des données peuvent être détectées, garantissant ainsi que les données restent intactes et fiables.

    Aide-mémoire des commandes usuelles de Powershell pour un admin sys

    Voici une cheat sheet PowerShell pour les commandes de base les plus usuelles qu’un administrateur système doit connaître :

    Gestion des Fichiers et Répertoires

    Lister le contenu d’un répertoire :

    Get-ChildItem -Path <chemin>

    Alias : ls, dir

    Changer de répertoire :

    powershell
    Set-Location -Path <chemin>

    Alias : cd

    Copier un fichier ou répertoire :

    powershell
    Copy-Item -Path <source> -Destination <destination>
    

    Alias : cp

    Déplacer un fichier ou répertoire :

    Move-Item -Path <source> -Destination <destination>
    

    Alias : mv

    Supprimer un fichier ou répertoire :

    Remove-Item -Path <chemin> -Recurse
    

    Alias : rm, del

    Créer un répertoire :

    New-Item -Path <chemin> -ItemType Directory

    Gestion des Utilisateurs et Groupes

    Créer un nouvel utilisateur :

    New-LocalUser -Name <nom_utilisateur> -Password (Read-Host -AsSecureString "Enter Password")

    Ajouter un utilisateur à un groupe :

    Add-LocalGroupMember -Group <nom_groupe> -Member <nom_utilisateur>
    

    Lister les utilisateurs d’un groupe :

    Get-LocalGroupMember -Group <nom_groupe>

    Supprimer un utilisateur :

    Remove-LocalUser -Name <nom_utilisateur>

    Gestion des Processus

    Lister les processus en cours :

    Get-Process

    Alias : ps

    Arrêter un processus :

    Stop-Process -Name <nom_processus>

    Alias : kill

    Démarrer un processus :

    Start-Process -FilePath <chemin_exécutable>

    Informations Système

    Obtenir les informations sur le système :

    Get-ComputerInfo

    Vérifier l’espace disque :

    Get-PSDrive -PSProvider FileSystem

    Obtenir l’adresse IP :

    Get-NetIPAddress

    Gestion des Services

    Lister les services :

    Get-Service

    Démarrer un service :

    Start-Service -Name <nom_service>

    Arrêter un service :

    Stop-Service -Name <nom_service>

    Redémarrer un service :

    Restart-Service -Name <nom_service>

    Scripting et Automatisation

    Exécuter un script PowerShell :

    .\script.ps1

    Planifier une tâche :

    $action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File <chemin_script>" $trigger = New-ScheduledTaskTrigger -Daily -At "3AM" Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "Nom_Tache" -Description "Description de la tâche"

    Variables et Structures de Contrôle

    Déclarer une variable :

    $variable = "valeur"

    Boucle ForEach :

    foreach ($item in $collection) {
        # Actions à effectuer
    }

    Condition If :

    if ($condition) {
        # Actions si condition est vraie
    } elseif ($autre_condition) {
        # Actions si autre condition est vraie
    } else {
        # Actions si aucune condition n'est vraie
    }

    Désinstaller un agent Elastic sur Windows

    Voici une petite procédure toute simple à suivre pour désinstaller un agent Elastic (suite à un déploiement via Fleet par exemple) :

    Etape 1 : désinstaller l’agent

    Ouvrez le Command Prompt (ou Powershell) en mode administrateur

    Naviguez vers le répertoire d’installation de l’agent :

    cd "C:\Program Files\Elastic\Agent"

    Utilisez la commande de désinstallation :

    L’agent Elastic fournit un script de désinstallation. Exécutez la commande suivante pour désinstaller l’agent :

    .\elastic-agent.exe uninstall

    Étape 2 : Vérifier la Désinstallation

    Après la désinstallation, assurez-vous que l’agent a été complètement retiré :

    Vérifiez le répertoire d’installation :

    Assurez-vous que le répertoire C:\Program Files\Elastic\Agent a été supprimé ou est vide.

    Vérifiez dans les Services Windows :

    Tapez services.msc dans le menu Démarrer pour ouvrir la console des services et vérifiez que les services liés à l’agent Elastic ne sont plus listés.

    Installer Proxmox sur une machine dédiée

    Installer Proxmox VE (Virtual Environment) sur une machine dédiée est une excellente façon de mettre en place un environnement de virtualisation robuste chez vous. Voici les étapes détaillées pour installer Proxmox VE sur un serveur ou PC dédié.

    Prérequis

    1. Hardware Compatible: Assurez-vous que votre machine répond aux exigences minimales de Proxmox VE :
      • CPU 64 bits avec support de virtualisation (Intel VT ou AMD-V)
      • Au minimum 2 Go de RAM (8 Go recommandés pour une utilisation plus confortable)
      • Disque dur avec au moins 16 Go d’espace disponible
      • Carte réseau Ethernet
    2. Téléchargement de l’image ISO de Proxmox VE: Rendez-vous sur le site officiel de Proxmox pour télécharger la dernière version de Proxmox VE sous forme d’image ISO. (https://www.proxmox.com/en/downloads)
    3. Création d’un support d’installation USB: Utilisez un outil tel que Rufus (https://rufus.ie/en/) pour créer une clé USB bootable à partir de l’image ISO téléchargée.

    Installation

    1. Configurer le BIOS/UEFI :
      • Démarrez votre machine et accédez au BIOS/UEFI.
      • Modifiez l’ordre de démarrage pour démarrer en premier lieu à partir de la clé USB.
      • Assurez-vous que les options de virtualisation (Intel VT-x ou AMD-V) sont activées.
    2. Démarrer depuis la clé USB :
      • Insérez la clé USB bootable et redémarrez votre machine.
      • Sélectionnez l’option pour démarrer à partir de la clé USB.
    3. Installation de Proxmox VE :
      • Suivez les instructions à l’écran pour commencer l’installation.
      • Acceptez les conditions d’utilisation.
      • Sélectionnez votre disque dur pour l’installation de Proxmox.
      • Configurez votre adresse réseau (il est recommandé de configurer une IP statique).
      • Définissez un mot de passe pour l’utilisateur root et saisissez votre adresse email pour les alertes système.
      • Lancez l’installation.
    4. Redémarrage et première connexion :
      • Une fois l’installation terminée, retirez la clé USB et redémarrez le système.
      • Accédez à l’interface web de Proxmox VE en entrant l’adresse IP de votre serveur dans un navigateur web suivi de :8006 (exemple : https://192.168.1.100:8006).
      • Connectez-vous en utilisant le nom d’utilisateur root et le mot de passe que vous avez configuré.

    Configuration post-installation

    • Mise à jour du système : Connectez-vous à Proxmox VE et vérifiez les mises à jour système disponibles via l’interface web.
    • Créer des VMs ou des conteneurs : Commencez à créer des machines virtuelles ou des conteneurs LXC via l’interface de Proxmox.

    Sécurisation de votre installation

    • Changez les mots de passe par défaut et utilisez des mots de passe forts.
    • Configurez un pare-feu sur votre Proxmox VE ou en périphérie de votre réseau.
    • Mettez en place des backups réguliers de vos VMs et conteneurs pour éviter des pertes de données.

    Security Onion : installation et configuration

    Security Onion est une distribution Linux robuste et gratuite conçue spécialement pour la surveillance de sécurité et la détection d’intrusions sur les réseaux. Elle intègre une suite impressionnante d’outils et d’applications de sécurité open-source qui en font un choix privilégié pour les professionnels de la cybersécurité souhaitant analyser et protéger leurs réseaux contre les menaces.

    Fondé par Doug Burks en 2008, ce système est devenu une référence dans le domaine de la sécurité informatique, grâce à sa capacité à fournir une visibilité approfondie des activités réseau à travers une interface conviviale et des dashboards informatifs.

    L’installation de Security Onion nécessite une machine dédiée capable de gérer le traitement de données réseau en temps réel et l’exécution simultanée de plusieurs applications de surveillance.

    Dans le cadre de cet article, nous nous intéresserons à la mise en place de Security Onion sur un ordinateur recyclé, une démarche à la fois économique et écologique. La machine en question, qui date d’une dizaine d’années, a été équipée pour répondre aux besoins de cette tâche avec 24 Go de mémoire RAM, un disque SSD de 500 Go pour un accès rapide aux données, et un processeur Intel i5, assurant ainsi une base solide pour une installation efficace.

    Le but de ce premier article est de vous guider à travers les étapes initiales d’installation de Security Onion sur cet équipement. Je vous propose de commencer par explorer les prérequis, la préparation de la machine et le processus d’installation proprement dit, en veillant à optimiser la configuration pour tirer le meilleur parti de l’ancienne configuration matérielle. Cela permettra non seulement de sécuriser votre réseau, mais aussi de redonner vie à un équipement autrement obsolète, en lui offrant une seconde vie au service de la cybersécurité.

    Chapitre 1: Prérequis Minimaux pour l’Installation de Security Onion

    Avant de plonger dans le vif du sujet, il est essentiel de s’assurer que votre équipement répond aux exigences nécessaires pour installer et exécuter Security Onion efficacement. Ce système d’exploitation de sécurité est conçu pour analyser et surveiller votre réseau en temps réel, ce qui nécessite une certaine puissance de traitement et une configuration adéquate. Voici donc les prérequis minimaux pour que votre installation soit un succès.

    1. Configuration Matérielle Requise

    • Processeur: Un CPU multicœur est recommandé. Security Onion nécessite un processeur 64 bits, et un Intel i5 ou supérieur est idéal pour une performance optimale. Plus les cœurs sont nombreux et puissants, meilleure sera la capacité du système à gérer simultanément les divers outils de sécurité.
    • Mémoire RAM: Le minimum requis est de 8 Go de RAM, mais 16 Go ou plus sont fortement recommandés pour un traitement fluide des données, surtout si vous envisagez de surveiller un réseau de taille moyenne à grande.
    • Stockage: Un disque dur de 500 Go est le minimum requis pour commencer, mais un SSD (Solid State Drive) est préférable pour accélérer le démarrage des outils et le traitement des données. Un SSD de 500 Go ou plus est idéal, particulièrement si vous prévoyez de stocker et d’analyser beaucoup de données.
    • Carte réseau: Au moins deux interfaces réseau sont recommandées. Une sera utilisée pour la gestion de Security Onion et l’autre pour la surveillance du réseau. Des cartes réseau dédiées peuvent améliorer significativement la capacité de capture et d’analyse des paquets réseau.

    Avec ces prérequis en main, vous êtes prêt à installer Security Onion sur votre machine dédiée. Assurez-vous que votre équipement répond à ces exigences minimales pour garantir une installation fluide et efficace. Dans le prochain chapitre, nous explorerons les étapes détaillées de l’installation de Security Onion, transformant notre équipement ancien en une puissante station de surveillance réseau.

    Installation de l’OS

    Je vais écrire cet article sous forme de compte-rendu de ce qui a fonctionné pour moi.

    J’ai commencé par télécharger la version .iso sur le site officiel https://securityonionsolutions.com/software/ et plus particulièrement ici : https://github.com/Security-Onion-Solutions/securityonion/blob/2.4/main/DOWNLOAD_AND_VERIFY_ISO.md

    Ensuite, il a suffit de flasher cet iso sur une clé USB avec Balena Etcher pour avoir une clé USB d’installation bootable.

    L’installation est assez simple et bien documentée, vous pouvez la retrouver ici : J’ai suivi la documentation officielle : https://docs.securityonion.net/en/2.4/first-time-users.html

    J’ai choisi de faire une installation basique (sans interface de bureau) pour éviter de charger la mule – qui est déjà bien gourmande !

    En résumé, durant l’installation il va falloir entre autres définir une adresse IP pour la machine qui hébergera Security Onion (préférez une IP fixe) et définir également l’IP de la seule machine qui pourra passer le pare-feu intégré, avec login et mot de passe robuste (je me suis fait avoir lors de ma première tentative, en cliquant sur « non » il m’a fallu reprendre tout le processus d’installation !).

    Ne vous inquiétez pas si l’installation dure un peu : chez moi ça a bien mis une bonne heure !

    Une fois l’installation terminée vous devriez avoir le résumé des infos la façon de vous connecter depuis l’interface web :

    C’est là que ça devient amusant : avec votre machine autorisée à vous connecter, rdv sur l’adresse IP du serveur SOC, entrez les logins & mot de passe définis pendant l’installation et tadaa, vous voilà connectés :

    Ajouter une première machine

    Par défaut, en vous baladant un peu vous allez voir quelques graphiques : il s’agit des infos de la machine qui héberge Security Onion. C’est intéressant, mais l’objectif de cet outil est d’en faire un centre pour les appareils de votre réseau (et même de votre réseau lui-même !). Pour ce qui va suivre – et pendant que c’est frais dans ma tête – je vais me contenter d’être factuel et d’aller à l’essentiel ; je reviendrai plus tard sur les explications détaillées.

    Pour ce faire, c’est là encore d’une facilité déconcertante :

    • RDV dans l’onglet « Elastic Fleet » puis cliquez sur « ajouter un agent » :
    • Dans la fenêtre qui s’ouvre sur la droite, choisissez « Endpoints-initial »
    • Laissez l’étape 2 par défaut
    • A l’étape 3, choisissez le type de machine que vous souhaitez surveiller. Pour l’exemple j’ai commencé par choisir une machine classique « cliente » windows 10 (celle que j’utilise au quotidien)
    • Sur la machine a surveiller, ouvrez powershell en mode admin et tapez les commandes affichées par l’assistant de configuration. Par exemple :
    $ProgressPreference = 'SilentlyContinue'
    
    Invoke-WebRequest -Uri https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.10.4-windows-x86_64.zip -OutFile elastic-agent-8.10.4-windows-x86_64.zip
    
    Expand-Archive .\elastic-agent-8.10.4-windows-x86_64.zip -DestinationPath .
    
    cd elastic-agent-8.10.4-windows-x86_64
    
    .\elastic-agent.exe install --url=https://192.168.199.143:8220 --enrollment-token=AcvaANAFAZAFCZADZAp222031V023212321D221CD== --insecure

    NB : Le –insecure à la fin est volontaire, car à cette étape je n’ai pas activé le https sur mon réseau local, ce qui a posé problème lors d’une première tentative d’installation en suivant la doc officielle. Je le ferai plus tard, ça sera l’occasion de voir comment modifier la configuration de l’agent !

    A la fin de la procédure, l’agent devrait être repéré par le serveur :

    NB : si le poste que vous souhaitez auditer n’arrive pas à communiquer avec le serveur Elastic, assurez-vous que le firewall accepte bien son IP dans la configuration de Security Onion ; rdv dans « Configuration » -> « Firewall » -> « Hostgroups » puis dans « Elastic Agent Endpoint » ajoutez les IP (attention, il faut indiquer l’IP seule sans sa notation CIDR, c’est juste un réglage de firewall !) des postes à surveiller.

    Il suffit d’attendre quelques minutes pour commencer à voir remonter des infos de la machine monitorée :

    Voilà, c’est tout pour l’instant : le setup fonctionne, maintenant ne reste plus qu’à passer à partie « invisible » de l’iceberg : l’exploitation des données. Je vais creuser ça et je reviens rapidement ici pour donner quelques astuces & tutos supplémentaires !

    Page 1 of 8

    Fièrement propulsé par WordPress & Thème par Anders Norén