0% ont trouvé ce document utile (0 vote)
77 vues12 pages

Sécurisation Linux : Apache & Nginx

linux hardening

Transféré par

gamingirl699
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
77 vues12 pages

Sécurisation Linux : Apache & Nginx

linux hardening

Transféré par

gamingirl699
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Rendu Hardening partie II : Linux

Rendu Hardening partie II : Linux.........................................................................................1


Mise en place......................................................................................................... 1
Sécurisation des fichiers et répertoires.................................................................. 4
AppArmor............................................................................................................... 5
Désactiver les modules et fonctionnalités.............................................................. 6
Génération des certificats SSL............................................................................... 6
Configuration iptables...........................................................................................10
Journalisation et alertes........................................................................................11
Schéma de notre architecture

Mise en place

Voici les configuration que nous avons mis en place pour le serveur web apache et le
reverse proxy nginx

Apache :

nano /etc/http/[Link]

nano /srv/http/[Link]

systemctl restart httpd

Nginx :

Création de 2 dossiers pour ensuite configurer le reverse proxy


mkdir -p /etc/nginx/sites-available
mkdir -p /etc/nginx/sites-enabled

Maintenant écrivons le fichier de configuration du proxy

nano /etc/nginx/sites-available/[Link]

Activer la configuration du site grâce à un lien symbolique

ln -s /etc/nginx/sites-available/[Link] /etc/nginx/sites-enabled/

Modifications du fichier de configuration principale de nginx pour qu’il prenne en compte ce


nouveau fichier

nano /etc/nginx/[Link]

systemctl restart nginx

Nous pouvons tester notre configuration en faisant un curl depuis le proxy


Sécurisation des fichiers et répertoires

Créer un utilisateur nginx pour le service

useradd -r -s /sbin/nologin nginx

Modifier le fichier de conf pour qu’il utilise l’utilisateur nouvellement créé

nano /etc/nginx/[Link]

Créer un nouveau dossier séparé pour stocker les logs

mkdir /etc/logs_reverse
touch [Link]
chown nginx:nginx /etc/logs reverse/
chmod 700 /etc/logs reverse/

Modifier le fichier de configuration nginx pour qu’il pointe vers ce fichier d’erreur pour les
logs

nano /etc/nginx/[Link]
Définir les droits d’accès des fichiers nginx en suivant la politique du moindre privilège

chown -R root:root /etc/nginx


chmod 755 /etc/nginx
chmod 755 /etc/nginx/sites-available
chmod 755 /etc/nginx/sites-enabled
find /etc/nginx -type f -exec chmod 644 {} \;
chown root:root /etc/nginx/*
chmod 755 /usr/sbin/nginx

AppArmor

Il y a eu un problème au niveau de l'installation, il manquait des modules dans le noyau et il


aurait fallu le recompiler.
Néanmoins, voici la procédure que nous aurions suiv

AppArmor marche avec des profiles, on en crée un pour nginx

nano /etc/apparmor.d/usr/sbin/nginx
Après avoir créé ce profil, il faut le charger

apparmor_parser -r /etc/apparmor.d/usr/sbin/nginx

Et voilà, le profil est activé. Ceci est un exemple de ce que nous aurions pu mettre en place
sans les soucis de modules dans le noyau

Désactiver les modules et fonctionnalités

D’abord il faut savoir quels sont les modules utilisés par notre NGINX grâce à cette
commande
nginx -V 2>&1 | grep -- --with

Maintenant que nous avons la liste, il ne nous reste plus qu’à aller commenter dans le fichier
/etc/nginx/[Link] les lignes contenant “include” suivi du module que l’on souhaite
désactiver.
Exemple pour FastCGI

Pour ce qui est des restrictions d’accès, on pourrait imaginer que l’on souhaiterait que notre
site ne soit accessible que depuis le subnet interne de l’entreprise. On pourrait alors modifier
le fichier [Link] comme ceci

nano /etc/nginx/[Link]

Cependant dans notre cas nous n’allons pas l’implémenter car nous souhaitons que notre
site soit accessible depuis internet

Génération des certificats SSL


Afin de sécuriser la connexion entre les clients et le proxy, nous commençons par générer
une clé privée RSA à l’aide de la commande suivante : openssl genpkey -algorithm RSA
-out /etc/ssl/private/[Link] -aes256

Par la suite, nous créeons une demande de signature de certificat : openssl req -new -key
/etc/ssl/private/[Link] -out /etc/ssl/private/[Link]

On génère ensuite un certificat auto signé : openssl x509 -req -days 365 -in
/etc/ssl/private/[Link] -signkey /etc/ssl/private/[Link] -out
/etc/ssl/certs/[Link]
Nous allons ensuite modifier le fichier de configuration [Link] afin d’activer la
sécurisation par certificat SSl et d’incrémenter le certificat et la clé précédemment créés :

Nous en profitons également pour forcer l’utilisation des protocols TLS 1.2 et 1.3 afin de
limiter les risques de sécurité mais également pour désactiver les suites de chiffrement
faibles.
Nous ajoutons également le bloc nécessaire à la redirection des requêtes http vers Https.

Ensuite, nous alimentons le fichier de configuration du reverse proxy afin d’activer l’écoute
sur le port 443 et ajouter toutes les informations de configuration nécessaires :
Une fois cela effectué, nous vérifions la configuration à l’aide de la commande nginx -t et
redémarrons le service nginx :

Nous pouvons ensuite vérifier le bon fonctionnement de notre reverse proxy en tapant son
adresse dans le navigateur :
Tout est parfaitement fonctionnel, nous pouvons passer à la suite du devoir.

Configuration iptables

Nous allons implémenter des règles iptables sur nos 2 machines

Proxy

Web
Journalisation et alertes

Pour faire cela, nous allons utiliser un script bash

Il nous faut installer msmtp pour pouvoir envoyer les alertes par mail

pacman -S msmtp
nano ~/.msmtprc

chmod 600 ~/.msmtprc

Il ne reste plus qu’à le mettre dans le crontab pour qu’il soit exécuté régulièrement

crontab -e
Pour résumer, ce script recherche dans le fichier de logs nginx les lignes contenant error et
les stock dans un fichier temporaire.
Ensuite, si le fichier temporaire n’est pas vide, il envoie un mail d’alerte avec le détail des
erreurs contenues dans le fichier temporaire.
Grâce au crontab l’exécution de ce script est automatique et assure donc une surveillance
du service.

Vous aimerez peut-être aussi