====== Différences ======
Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.
securisation:linux [2014/10/15 23:18] r.doiteau [IPTABLES] |
securisation:linux [2019/05/11 14:35] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Guide de sécurité /référentiel ====== | + | ====== Guide de sécurité /référentiel LINUX ====== |
+ | Download PDF : {{::guide_de_securite-referentiel.pdf|}} | ||
+ | ===== install Debian ===== | ||
- | ==== install Debian ==== | ||
- | + | ==== Partitionnement ==== | |
- | === Partitionnement === | + | |
Ligne 20: | Ligne 20: | ||
<note tip>http://formation-debian.via.ecp.fr/partitionner.html</note> | <note tip>http://formation-debian.via.ecp.fr/partitionner.html</note> | ||
- | ==== BIOS ==== | + | ===== BIOS ===== |
- | === Sécurisation du BIOS === | + | ==== Sécurisation du BIOS ==== |
Désactivation de tous les boot sauf le disque système | Désactivation de tous les boot sauf le disque système | ||
Désactivation du boot menu | Désactivation du boot menu | ||
+ | |||
+ | {{:securisation:bios_1.jpg?400|}} | ||
Mot de passe d'administration sur BIOS | Mot de passe d'administration sur BIOS | ||
+ | {{:securisation:bios.jpg?400|}} | ||
- | ==== Sécurisation de GRUB ==== | + | ===== Sécurisation de GRUB ===== |
- | === Version du GRUB === | + | ==== Version du GRUB ==== |
{{:securisation:version_grub.png|}} | {{:securisation:version_grub.png|}} | ||
Ligne 43: | Ligne 46: | ||
{{:securisation:version_grub.png|}} | {{:securisation:version_grub.png|}} | ||
- | === Définition et cryptage mot de passe GRUB === | + | ==== Définition et cryptage mot de passe GRUB ==== |
Ligne 77: | Ligne 80: | ||
- | ==== Système de fichiers /partitionnement ==== | + | ===== Système de fichiers /partitionnement ===== |
- | === A qoui sert le fstab ? === | + | ==== A qoui sert le fstab ? ==== |
Fichier de configuration qui contient les informations statiques sur le montage des systèmes de fichiers que vous utilisez régulièrement. | Fichier de configuration qui contient les informations statiques sur le montage des systèmes de fichiers que vous utilisez régulièrement. | ||
- | === * Option communes aux système de fichiers === | + | ==== Option communes aux système de fichiers ==== |
{{:securisation:fstab_options.png|}} | {{:securisation:fstab_options.png|}} | ||
- | === Permissions Linux === | + | ==== Permissions Linux ==== |
Ligne 96: | Ligne 99: | ||
x : execute (permet d'exécuter le fichier ou d’ouvrir les dossiers) | x : execute (permet d'exécuter le fichier ou d’ouvrir les dossiers) | ||
- | === Notion de propriété === | + | ==== Notion de propriété ==== |
Ligne 105: | Ligne 108: | ||
Les droits s’articule donc entre des autorisations données à des personnes (absence d’autorisation = non autorisé ). Exemple obtenu avec la commande ls -lh | Les droits s’articule donc entre des autorisations données à des personnes (absence d’autorisation = non autorisé ). Exemple obtenu avec la commande ls -lh | ||
- | === Le bit SUID === | + | ==== Le bit SUID ==== |
Ligne 127: | Ligne 130: | ||
Ceci est très pratique pour permettre à plusieurs personnes de travailler dans la même arborescence. Par exemple vous créez un groupe dans lequel vous mettez les utilisateurs concernés, puis vous mettez le bit sgid (bit de groupe) sur le répertoire de travail. Ainsi tous les fichiers créés sous ce répertoire appartiendront au même groupe et pourront dont être lu et/ou modifié (pensez à regarder votre umask) par tout le groupe. Notez que si c'est un sous répertoire qui est créé, il obtiendra lui aussi le bit suid. | Ceci est très pratique pour permettre à plusieurs personnes de travailler dans la même arborescence. Par exemple vous créez un groupe dans lequel vous mettez les utilisateurs concernés, puis vous mettez le bit sgid (bit de groupe) sur le répertoire de travail. Ainsi tous les fichiers créés sous ce répertoire appartiendront au même groupe et pourront dont être lu et/ou modifié (pensez à regarder votre umask) par tout le groupe. Notez que si c'est un sous répertoire qui est créé, il obtiendra lui aussi le bit suid. | ||
- | === Sécurisation des points de montage === | + | ==== chmod, chown et chgrg ==== |
+ | |||
+ | **chmod** permet de modifier les permissions sur un fichier | ||
+ | |||
+ | * En octal, chaque « groupement » de droits (pour user, group et other) sera représenté par un chiffre et à chaque droit correspond une valeur : | ||
+ | |||
+ | //exemple :// | ||
+ | Pour rwx, on aura : 4+2+1 = 7 | ||
+ | Pour rw-, on aura : 4+2+0 = 6 | ||
+ | Pour r--, on aura : 4+0+0 = 4 | ||
+ | <code=basch> | ||
+ | rwx r-x --- | ||
+ | 7(4+2+1) 5(4+0+1) 0(0+0+0) | ||
+ | |||
+ | chmod 750 dossier | ||
+ | </code> | ||
+ | |||
+ | **chown** permet le changement de propriétaire, seul les super-utilisateur ou le propriétaire peut utiliser la commande | ||
+ | <code=basch> | ||
+ | sudo chown utilisateur:group fichier | ||
+ | </code> | ||
+ | ** chgrp ** permet de changer le groupe actuel du fichier, Tous les membres de ce groupe seront concernés par les permissions du groupe de la 2ème série de rwx. Encore une fois, seuls le super-utilisateur ou le propriétaire actuel d'un fichier peut utiliser chgrp | ||
+ | <code=basch> | ||
+ | sudo chgrp group fichier | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== Sécurisation des points de montage ==== | ||
Ligne 157: | Ligne 187: | ||
- | ==== Limiter les terminaux utilisés par root (nombre et durée) ==== | + | ===== Limiter les terminaux utilisés par root (nombre et durée) ===== |
- | === En nombre === | + | ==== En nombre ==== |
On peut empêcher le login comme root sur la console et tous les terminaux que l’on désire. | On peut empêcher le login comme root sur la console et tous les terminaux que l’on désire. | ||
Ligne 178: | Ligne 208: | ||
</code> | </code> | ||
- | === En durée === | + | ==== En durée ==== |
Pour définir une variable d'environnement de manière à ce qu'elle affecte l'ensemble de la session d'un utilisateur, il suffit de placer une commande la définissant dans l'un des fichiers cachés de script présent dans le répertoire personnel de l'utilisateur. Voici les fichiers les plus courants qui peuvent être utilisés : | Pour définir une variable d'environnement de manière à ce qu'elle affecte l'ensemble de la session d'un utilisateur, il suffit de placer une commande la définissant dans l'un des fichiers cachés de script présent dans le répertoire personnel de l'utilisateur. Voici les fichiers les plus courants qui peuvent être utilisés : | ||
Ligne 193: | Ligne 223: | ||
<note tip>http://linuxfr.org/forums/astucesdivers/posts/terminal-d%C3%A9connexion-automatique</note> | <note tip>http://linuxfr.org/forums/astucesdivers/posts/terminal-d%C3%A9connexion-automatique</note> | ||
- | === Exclusion total === | + | ==== Exclusion total ==== |
Modifier le script qui permet le démarrage des processus | Modifier le script qui permet le démarrage des processus | ||
Ligne 213: | Ligne 243: | ||
</code> | </code> | ||
- | ==== Durcissements des comptes ==== | + | ===== Durcissements des comptes ===== |
PAM (Pluggable Authentication Modules) permet aux administrateurs système de choisir comment les applications authentifient les utilisateurs. | PAM (Pluggable Authentication Modules) permet aux administrateurs système de choisir comment les applications authentifient les utilisateurs. | ||
Ligne 234: | Ligne 264: | ||
* lcredit : si le chiffre est négatif, c'est qu'il faut au moins x fois de lettre minuscule pour que le mot de passe soit validé. (ici il faut au moins une minuscule) | * lcredit : si le chiffre est négatif, c'est qu'il faut au moins x fois de lettre minuscule pour que le mot de passe soit validé. (ici il faut au moins une minuscule) | ||
- | === Politique de mot de passe === | + | ==== Politique de mot de passe ==== |
Ligne 264: | Ligne 294: | ||
</note> | </note> | ||
- | ==== UMASK ==== | + | ==== Création de comptes automatisé ==== |
+ | <code=bash> | ||
+ | ####################################################### | ||
+ | # auteur : Romain Doiteau # | ||
+ | # # | ||
+ | # # | ||
+ | # 08/10/2014 # | ||
+ | # # | ||
+ | # LP ASUR # | ||
+ | # # | ||
+ | # Automatisation de la création ded'utilisateur # | ||
+ | # avce une condition de création de répertoire # | ||
+ | # # | ||
+ | ####################################################### | ||
+ | |||
+ | |||
+ | |||
+ | #!/bin/sh | ||
+ | |||
+ | echo "Entrer le nom de l'utilisateur" | ||
+ | read nom | ||
+ | echo " Entrer le numéro de groupe de l'utilisateur" | ||
+ | echo " Root = 0" | ||
+ | echo " Utilisateurs = 1001" | ||
+ | read groupe | ||
+ | echo "Entrer le mot de passe" | ||
+ | read -s mdp | ||
+ | echo "Voulez vous créer un répaertoire home ? (yes/no) " | ||
+ | # -s cahe l'affichage | ||
+ | read home | ||
+ | |||
+ | if [ $home = 'yes' ] | ||
+ | |||
+ | then | ||
+ | |||
+ | useradd -m -g $groupe -p $mdp -s /bin/bash $nom | ||
+ | |||
+ | |||
+ | # -m créer le répertoire | ||
+ | # -g affcete l' utilisateur au group | ||
+ | # -p détermine le mot de passe | ||
+ | # -s assigne l'interpréteur | ||
+ | |||
+ | if [ $? -eq 0 ] | ||
+ | |||
+ | # sortie d erreur 0 = tous c'est bien passé | ||
+ | |||
+ | then | ||
+ | echo "Utilisateur créé" | ||
+ | else | ||
+ | echo "Utilisateur existe dèjà" | ||
+ | |||
+ | fi | ||
+ | else | ||
+ | useradd -g $groupe -p $mdp -s /bin/bash $nom | ||
+ | |||
+ | if [ $? -eq 0 ] | ||
+ | |||
+ | then | ||
+ | echo "Utilisateur créé sans dossier home" | ||
+ | else | ||
+ | echo "Utilisateur existe déja !" | ||
+ | |||
+ | fi | ||
+ | fi | ||
+ | |||
+ | |||
+ | |||
+ | </code> | ||
+ | |||
+ | ==== PASSWD et SHADOW ==== | ||
+ | |||
+ | La différence entre /etc/passwd et /etc/shadow | ||
+ | |||
+ | /etc/passwd est lisible par tout le monde, le X correspond au mot de passe, stocker dans /etc/shadow, qui lui est lisble que par root | ||
+ | |||
+ | Ainsi leurs structures est différente : | ||
+ | |||
+ | passwd : 7 champs | ||
+ | |||
+ | <code=basch> | ||
+ | nom d'utilisateur:mot de passe encrypté:uid:gid:nom complet:répertoire perso:shell par défaut | ||
+ | </code> | ||
+ | |||
+ | shadow : 9 champs | ||
+ | |||
+ | <code=basch> | ||
+ | Nom:mot de passe crypté:nombre de jours écoulés depuis le 1er janvier 1970 jusqu'à la dernière modification du mot de passe:nombre de jours durant lesquels le mot de passe reste valide:nombre de jours après lesquels le mot de passe doit être modifié:nombre de jours avant l'expiration du mot de passe nécessitant d'avertir l'utilisateur:nombre de jours après l'expiration qui amène la désactivation du compte:numéro du jour depuis le 1er janvier 1970 à partir duquel le compte a été désactivé:champ réservé | ||
+ | </code> | ||
+ | |||
+ | ===== UMASK ===== | ||
- | === système === | + | ==== système ==== |
On peut penser que par défaut le système ne met pas en place de bonnes restrictions car lors de la création d’un fichier ou d’un dossier, tout le monde a le droit de le lire. On voudrait par exemple que le groupe ait le droit de lecture du fichier ou du dossier et que les autres utilisateurs n’aient aucun droit dessus. L’umask à appliquer serait alors « 027 ». On peut paramétrer cet umask pour qu’il s’applique par défaut à tous les utilisateurs. | On peut penser que par défaut le système ne met pas en place de bonnes restrictions car lors de la création d’un fichier ou d’un dossier, tout le monde a le droit de le lire. On voudrait par exemple que le groupe ait le droit de lecture du fichier ou du dossier et que les autres utilisateurs n’aient aucun droit dessus. L’umask à appliquer serait alors « 027 ». On peut paramétrer cet umask pour qu’il s’applique par défaut à tous les utilisateurs. | ||
Ligne 296: | Ligne 416: | ||
et laisse au groupe le droit de lecture et d’exécution | et laisse au groupe le droit de lecture et d’exécution | ||
- | === root === | + | ==== root ==== |
Les soucis et que l’umask par défaut s’applique aussi à root qui fait partie des utilisateurs. Nous pourrions penser que ce que root créé, seul root devrait pouvoir le relire par sécurité. On devrait donc définir un umask« 077 » pour root. Pour déjouer l’umask par défaut il faut modifier le .bashrc | Les soucis et que l’umask par défaut s’applique aussi à root qui fait partie des utilisateurs. Nous pourrions penser que ce que root créé, seul root devrait pouvoir le relire par sécurité. On devrait donc définir un umask« 077 » pour root. Pour déjouer l’umask par défaut il faut modifier le .bashrc | ||
Ligne 314: | Ligne 434: | ||
<note warning>Ainsi le masque le plus restrictif est 377, il ne laisse que le droit de lecture au propriétaire</note> | <note warning>Ainsi le masque le plus restrictif est 377, il ne laisse que le droit de lecture au propriétaire</note> | ||
- | ==== Packages et services ==== | + | ===== Packages et services ===== |
- | === Paquets inutiles === | + | ==== Paquets inutiles ==== |
* Repérage | * Repérage | ||
Ligne 339: | Ligne 459: | ||
</code> | </code> | ||
- | === Alléger sa distribution === | + | ==== Alléger sa distribution ==== |
* Liste les paquets installés | * Liste les paquets installés | ||
Ligne 347: | Ligne 467: | ||
</code> | </code> | ||
- | ==== SUDO ==== | + | ===== SUDO ===== |
Permet à un utilisateur particulier ou un groupe d'utilisateurs particulier d'exécuter une ou des tâches bien précises, avec ou sans saisie du mot de passe | Permet à un utilisateur particulier ou un groupe d'utilisateurs particulier d'exécuter une ou des tâches bien précises, avec ou sans saisie du mot de passe | ||
Ligne 356: | Ligne 476: | ||
<code=basch> | <code=basch> | ||
- | aptitude install | + | aptitude install sudo |
</code> | </code> | ||
Ligne 384: | Ligne 504: | ||
<note tip>http://doc.ubuntu-fr.org/sudoers</note> | <note tip>http://doc.ubuntu-fr.org/sudoers</note> | ||
- | ==== Utilisation de syslog (syslog-ng) ==== | + | ===== Utilisation de syslog (syslog-ng) ===== |
* Identification du fichier de conf | * Identification du fichier de conf | ||
Ligne 406: | Ligne 526: | ||
<note tip>https://www.isalo.org/wiki.debian-fr/Nettoyer_sa_Debian</note> | <note tip>https://www.isalo.org/wiki.debian-fr/Nettoyer_sa_Debian</note> | ||
- | ==== Visibilité Réseaux ==== | + | ===== Visibilité Réseaux ===== |
* Listage des ports ouverts | * Listage des ports ouverts | ||
Ligne 467: | Ligne 587: | ||
<note tip>{{:ressources:pdf:anssi-cspn_2009-04fr.pdf|}}Page14</note> | <note tip>{{:ressources:pdf:anssi-cspn_2009-04fr.pdf|}}Page14</note> | ||
- | ==== IPTABLES ==== | + | ===== IPTABLES ===== |
- | === Vidage des règles actuelles === | + | ==== Vidage des règles actuelles ==== |
<code=basch> | <code=basch> | ||
Ligne 482: | Ligne 602: | ||
- | === Tout interdire en entrée, sauf ssh === | + | ==== Tout interdire en entrée, sauf ssh ==== |
<code=basch> | <code=basch> | ||
#Supresion régle | #Supresion régle | ||
Ligne 503: | Ligne 623: | ||
</code> | </code> | ||
- | === Chargement des règles au démarrage === | + | ==== Chargement des règles au démarrage ==== |
<code=bash> | <code=bash> | ||
Ligne 569: | Ligne 689: | ||
</code> | </code> | ||
- | ==== SSHd ==== | + | ===== SSHd ===== |
- | === Empêcher l’accès en root === | + | ==== Empêcher l’accès en root ==== |
modifier vi /etc/ssh/sshd_config | modifier vi /etc/ssh/sshd_config | ||
Ligne 578: | Ligne 698: | ||
par <code=basch>PermitRootLogin no</code> | par <code=basch>PermitRootLogin no</code> | ||
- | === Changer le port d'écoute de ssh === | + | ==== Changer le port d'écoute de ssh ==== |
modifier /etc/ssh/sshd_config | modifier /etc/ssh/sshd_config | ||
Ligne 584: | Ligne 704: | ||
changer le port d'écoute <code=basch>Port 35022</code> | changer le port d'écoute <code=basch>Port 35022</code> | ||
- | === Authentification par clés === | + | modifier le firewall : port 35022 à la place du 22 |
+ | |||
+ | ==== Authentification par clés ==== | ||
Modification des paramètres ssh sur les deux serveurs | Modification des paramètres ssh sur les deux serveurs | ||
Ligne 642: | Ligne 764: | ||
<note tip>http://doc.fedorafr.org/wiki/SSH_:_Authentification_par_cl%C3%A9#L.27authentification_par_cl.C3.A9</note> | <note tip>http://doc.fedorafr.org/wiki/SSH_:_Authentification_par_cl%C3%A9#L.27authentification_par_cl.C3.A9</note> | ||
- | ==== CHROOT ==== | + | ===== CHROOT ===== |
- | === Définition === | + | ==== Définition ==== |
Chrooter un programme consiste à le lancer en utilisant la commande chroot. Cette commande permet de changer l'emplacement de la racine (/). | Chrooter un programme consiste à le lancer en utilisant la commande chroot. Cette commande permet de changer l'emplacement de la racine (/). | ||
Ligne 650: | Ligne 772: | ||
L'intérêt de cette manipulation est donc d'enfermer un programme afin qu'il ne touche que à ce qu'on lui autorise de toucher. | L'intérêt de cette manipulation est donc d'enfermer un programme afin qu'il ne touche que à ce qu'on lui autorise de toucher. | ||
- | === Installation === | + | ==== Installation ==== |
Installer les paquets nécessaires | Installer les paquets nécessaires | ||
Ligne 686: | Ligne 808: | ||
</code> | </code> | ||
- | === Plusieurs utilisations sont envisageables, par exemple : === | + | ==== Plusieurs utilisations sont envisageables, par exemple : ==== |
Recompilation d'application dans un contexte autre que la machine qui héberge le chroot (backport, cross-compilation, ...) | Recompilation d'application dans un contexte autre que la machine qui héberge le chroot (backport, cross-compilation, ...) | ||
Ligne 694: | Ligne 816: | ||
Sécurisation d'un service «chrooté» par rapport à la machine hôte (et vice-versa) | Sécurisation d'un service «chrooté» par rapport à la machine hôte (et vice-versa) | ||
- | ==== VSFTPD ==== | + | ===== VSFTPD ===== |
On utilisera donc vsftpd, un serveur ftp simple, sécurisé et efficace qui permet de limiter l’accès au système d’exploitation avec chroot simplement en paramètrant son fichier de configuration. | On utilisera donc vsftpd, un serveur ftp simple, sécurisé et efficace qui permet de limiter l’accès au système d’exploitation avec chroot simplement en paramètrant son fichier de configuration. | ||
- | === Installation === | + | ==== Installation ==== |
<code=bash> | <code=bash> | ||
aptitude install vsftpd | aptitude install vsftpd | ||
Ligne 724: | Ligne 846: | ||
service vsftpd restart | service vsftpd restart | ||
</code> | </code> | ||
- | === Test === | + | ==== Test ==== |
<note warning>Attention il faut rajouter une régle iptables (port 21) dans notre firewall </note> | <note warning>Attention il faut rajouter une régle iptables (port 21) dans notre firewall </note> | ||
+ | |||
Voilà, le serveur ftp est configuré. Après, on peut très bien faire des choses plus avancées comme par exemple limiter les utilisateurs autorisés à utiliser vsftpd : | Voilà, le serveur ftp est configuré. Après, on peut très bien faire des choses plus avancées comme par exemple limiter les utilisateurs autorisés à utiliser vsftpd : | ||
+ | <code=basch> | ||
root@modele:/srv# ftp localhost | root@modele:/srv# ftp localhost | ||
ftp: connect to address ::1: Connection refused | ftp: connect to address ::1: Connection refused | ||
Ligne 762: | Ligne 886: | ||
- | ==== Biblio ==== | + | ===== Bibliographie ===== |
- | ANSSI | + | ==== ANSSI ==== |
- | NSA | + | |
- | NIST | + | ** Agence nationale de la sécurité des systèmes d'information ** |
+ | |||
+ | les 10 commandements de la sécurité : http://www.securite-informatique.gouv.fr/gp_rubrique34.html | ||
+ | |||
+ | Recommandations "sécurité du poste de travail et des serveurs " : http://www.ssi.gouv.fr/fr/guides-et-bonnes-pratiques/recommandations-et-guides/#elem147 | ||
+ | |||
+ | Durcissement de la pile IP : Rapport de certification ANSSI-CSPN-2009/04 page 14 | ||
+ | |||
+ | |||
+ | ==== NSA ==== | ||
+ | |||
+ | ** National Security Agency ** | ||
+ | |||
+ | IAD’s Top 10 Information AssuranceMitigation Strategies : {{:securisation:slicksheet_top10iamitigationstrategies_web.pdf|}} | ||
+ | |||
+ | Vulnérabilité d'open SSL : {{:securisation:slicksheet_openssl_web.pdf|}} | ||
+ | |||
+ | Vulnérabilité du basch : https://www.nsa.gov/ia/mitigation_guidance/security_configuration_guides/bash_vulnerability.shtml | ||
+ | |||
+ | |||
+ | ==== NIST ==== | ||
+ | |||
+ | ** National Institute of Standards and Technology ** | ||
+ | |||
+ | Organisation traduite par "Institut national des normes et de la technologie" | ||
+ | |||
+ | ==== Securing Debian Manual ==== | ||
https://www.debian.org/doc/manuals/securing-debian-howto/ch3.fr.html#s3.2 | https://www.debian.org/doc/manuals/securing-debian-howto/ch3.fr.html#s3.2 |