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

Catégorie : Administrer et sécuriser les infrastructures réseaux

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 😉

    Fiche pratique : la mise en place d’un plan d’adressage réseau

    Préparer un plan réseau en amont est une étape cruciale pour toute organisation souhaitant optimiser ses opérations et garantir une infrastructure IT fiable et sécurisée.

    Cette démarche offre une multitude d’avantages, essentiels pour naviguer dans l’environnement technologique complexe et en constante évolution d’aujourd’hui. Voici pourquoi élaborer un plan réseau en amont est non seulement avantageux mais indispensable :

    1. Vision claire et cohérente : Un plan réseau permet d’avoir une vue d’ensemble de l’infrastructure actuelle et future, facilitant l’intégration harmonieuse des technologies et des services. Il aide à anticiper les besoins en matière de connectivité, de performance et de sécurité, évitant ainsi les improvisations de dernière minute.
    2. Optimisation des ressources : En identifiant précisément les besoins en équipements, logiciels et adresses IP, le plan réseau permet de faire des choix stratégiques sur l’acquisition de ressources, évitant le surdimensionnement ou le sous-dimensionnement des capacités réseau, qui peuvent entraîner des coûts supplémentaires ou des performances insuffisantes.
    3. Sécurité renforcée : Une planification détaillée inclut l’évaluation des risques et la mise en place de mesures de sécurité adaptées à chaque segment du réseau. Cela permet de construire une architecture résiliente face aux menaces externes et internes, protégeant ainsi les données critiques de l’entreprise.
    4. Scalabilité et flexibilité : Un plan bien conçu tient compte de la croissance future de l’organisation et de ses besoins évolutifs. Il offre une structure flexible qui peut s’adapter et s’agrandir sans perturbations majeures, assurant ainsi une continuité d’activité et une capacité à intégrer de nouvelles technologies.
    5. Efficacité opérationnelle : En prévoyant les interactions entre les différents composants du réseau, le plan permet d’optimiser le flux de données et d’améliorer la performance générale du système. Cela se traduit par une meilleure expérience utilisateur, une réduction des temps d’arrêt et une augmentation de la productivité.
    6. Support et maintenance facilités : Un plan réseau clair et documenté simplifie la tâche des équipes IT pour le dépannage, les mises à jour et la maintenance préventive. Cela réduit le temps de résolution des problèmes et augmente la fiabilité du réseau.

    En somme, la préparation d’un plan réseau en amont est un investissement stratégique qui met en lumière la direction à suivre pour une infrastructure IT solide, sécurisée et évolutive. Elle prépare le terrain pour une gestion efficace des ressources technologiques, essentielle au succès et à la compétitivité de toute entreprise moderne.

    La to-do list pour ne rien oublier au démarrage

    Pour élaborer un plan d’adressage réseau efficace, suivez les étapes ci-dessous pour cerner précisément vos besoins :

    Étape 1 : Analysez les besoins fondamentaux de votre réseau :

    • Identifiez le total des nœuds au sein de votre réseau. Ceci inclut tous les dispositifs connectés.
    • Déterminez si ces nœuds requièrent des adresses IP publiques ou privées, selon leur nécessité d’accès externe.
    • Évaluez la connectivité de vos nœuds : utilisez-vous des dispositifs de couche 2 (liaison), de couche 3 (réseau), ou un mélange des deux ? Si oui, précisez le nombre de nœuds par type de dispositif.
    • Prenez en compte les adresses IP supplémentaires éventuellement nécessaires pour la gestion. Ces adresses, souvent publiques, peuvent être destinées à l’administration à distance des équipements réseau.
    • Ajoutez au décompte les adresses IP de gestion nécessaires pour chaque dispositif réseau, sachant qu’elles peuvent être accessibles ou non via Internet.

    Étape 2 : Évaluez les besoins relatifs aux connexions WAN (Wide Area Network) :

    • Estimez le nombre de connexions WAN requises.
    • Calculez le nombre d’adresses IP nécessaires par connexion WAN.
    • En absence de fourniture d’adresses IP WAN par votre opérateur, utilisez la formule suivante pour déterminer vos besoins : IPs publiques = nombre de connexions WAN x IPs nécessaires par WAN. Puis, documentez le nombre total d’adresses IP publiques ainsi que leur équivalent en notation CIDR (Classless Inter-Domain Routing).

    Étape 3 : Définissez les besoins spécifiques à chaque service :

    • Comptabilisez le nombre de serveurs par service.
    • Déterminez le nombre d’adresses IP requis pour chaque serveur.
    • Identifiez les services nécessitant un accès Internet, ainsi que ceux uniquement disponibles en interne.

    Étape 4 : Considérez les exigences de vos utilisateurs finaux :

    • Pour chaque catégorie d’utilisateurs, évaluez le nombre d’adresses IP nécessaires.
    • Déterminez si un service exige l’attribution d’adresses IP publiques aux utilisateurs finaux, et le cas échéant, quantifiez ces besoins par utilisateur et par catégorie.
    • Recensez le nombre d’utilisateurs par catégorie.

    Après avoir détaillé les besoins et spécificités de votre réseau, récapitulez les informations collectées dans un tableau. Ce document servira de base pour votre planification et pourra être intégré à la documentation technique de votre projet.

    Un exemple concret : le point de vue « macro » :

    Imaginons un plan d’adressage réseau qui couvre différents services essentiels d’une PME de trente employés qui fabrique des crayons.

    Le tableau ci-dessous peut illustrer un exemple « global » de configuration réseau adaptée à de telles nécessités, en tenant compte de l’infrastructure réseau, des serveurs, des postes de travail des employés, et d’autres dispositifs nécessaires à l’activité de l’entreprise.

    ServicePlage d’adresses IPMasque de sous-réseauPasserelle par défaut
    Réseau administratif192.168.1.0 – 192.168.1.63255.255.255.192192.168.1.1
    Réseau de production192.168.1.64 – 192.168.1.127255.255.255.192192.168.1.65
    Serveurs (DHCP, File, Print)192.168.1.128 – 192.168.1.191255.255.255.192192.168.1.129
    Wi-Fi Employés192.168.1.192 – 192.168.1.255255.255.255.192192.168.1.193

    Détails du plan d’adressage :

    • Réseau administratif : Ce segment est destiné aux ordinateurs et périphériques utilisés par l’administration. Il supporte jusqu’à 62 appareils.
    • Réseau de production : Ce segment regroupe les machines de contrôle et les terminaux utilisés directement dans le processus de fabrication. Il est conçu pour accueillir jusqu’à 62 appareils spécifiques à la production.
    • Serveurs : Une plage réservée aux serveurs essentiels tels que DHCP (pour la distribution automatique des adresses IP), de fichiers (pour le stockage partagé) et d’impression. Cette plage peut supporter jusqu’à 62 serveurs ou dispositifs de réseau.
    • Wi-Fi Employés : Segment dédié à l’accès Internet sans fil pour les employés. Il offre la connectivité à jusqu’à 62 dispositifs.

    Chaque segment de réseau est configuré avec son propre masque de sous-réseau pour optimiser l’utilisation des adresses IP et est délimité par une passerelle spécifique, facilitant ainsi la gestion du trafic et l’accès à Internet.

    Ce plan est conçu pour être évolutif, permettant à l’entreprise de grandir ou de restructurer ses services sans nécessiter une refonte complète du réseau. De plus, il assure une séparation logique des différentes fonctions de l’entreprise, ce qui renforce la sécurité et l’efficacité du réseau.

    Et une version « micro » qui permet de détailler les postes

    Pour approfondir l’exemple précédent et illustrer comment les postes spécifiques pourraient être assignés au sein d’une PME fabricant des crayons, nous allons détailler la répartition des adresses IP pour certains rôles clés dans l’entreprise. Cela inclura la direction, le département de production, les services informatiques, et l’accès Wi-Fi pour les employés.

    ServiceAdresse IPMasque de sous-réseauPasserelle par défautDescription du poste
    Réseau administratif192.168.1.2255.255.255.192192.168.1.1Ordinateur du Directeur
    Réseau administratif192.168.1.3255.255.255.192192.168.1.1Poste de travail de la Comptabilité
    Réseau administratif192.168.1.4255.255.255.192192.168.1.1Poste de travail des Ressources Humaines
    Réseau de production192.168.1.66255.255.255.192192.168.1.65Terminal de gestion de ligne de production
    Réseau de production192.168.1.67255.255.255.192192.168.1.65PC de l’ingénieur de production
    Serveurs192.168.1.130255.255.255.192192.168.1.129Serveur DHCP
    Serveurs192.168.1.131255.255.255.192192.168.1.129Serveur de fichiers
    Wi-Fi Employés192.168.1.194255.255.255.192192.168.1.193Connexion pour tablette d’un employé

    Détails des rôles et configurations :

    • Ordinateur du Directeur (192.168.1.2): Cet appareil est utilisé pour les opérations administratives de haut niveau, y compris la prise de décision stratégique.
    • Poste de travail de la Comptabilité (192.168.1.3): Utilisé pour la gestion financière, les paiements et la facturation.
    • Poste de travail des Ressources Humaines (192.168.1.4): Sert pour la gestion du personnel, le recrutement et les dossiers des employés.
    • Terminal de gestion de ligne de production (192.168.1.66): Permet de contrôler les machines de fabrication et de suivre la production en temps réel.
    • PC de l’ingénieur de production (192.168.1.67): Utilisé pour la conception des produits, la maintenance des équipements et l’optimisation des processus de production.
    • Serveur DHCP (192.168.1.130): Attribue automatiquement des adresses IP aux dispositifs connectés au réseau pour faciliter leur configuration et gestion.
    • Serveur de fichiers (192.168.1.131): Centralise le stockage des fichiers importants de l’entreprise, facilitant l’accès et le partage sécurisé des données.
    • Connexion pour tablette d’un employé (192.168.1.194): Offre un accès Wi-Fi sécurisé pour les employés souhaitant se connecter au réseau de l’entreprise via des dispositifs personnels ou professionnels mobiles.

    Cette configuration démontre comment un plan d’adressage réseau peut être personnalisé pour répondre aux besoins spécifiques de chaque rôle au sein de l’entreprise, tout en assurant la sécurité, l’efficacité et la scalabilité du réseau.

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