Sécurité de l`usager root
Transcription
Sécurité de l`usager root
Table des matières 1 SÉCURITÉ ROOT...................................................................................................... 2 1.1 Introduction .......................................................................................................... 2 1.2 Interdiction du login comme root ......................................................................... 2 1.3 Restriction de l’accès à la commande su .............................................................. 4 1.4 Exécution de commandes avec sudo .................................................................... 4 1.5 Utilisation du Shadow .......................................................................................... 5 1.6 Commande chage ................................................................................................. 7 _____________________________________________________________________ 2011 Hakim Benameurlaine 1 1 SÉCURITÉ ROOT 1.1 Introduction 1.2 Il ne faut jamais utiliser les privilèges du super-utilisateur, sauf pour les tâches d’administration qui les requièrent. Des dommages irréparables peuvent être faits en cas d’erreur de manipulation. Le super-utilisateur a tous les privilèges sur la machine concernée. C’est pourquoi les intrus recherchent généralement à s’approprier rapidement les privilèges root sur les machines qu’ils infiltrent. On a diverses parades pour limiter les accès au compte du super-utilisateur root : choix d’un mot de passe robuste interdiction du login comme root restriction de l’accès à la commande su exécution de commandes privilégiées avec sudo utilisation du shadow Interdiction du login comme root On peut empêcher le login comme root sur la console et tous les terminaux que l’on désire. Le fichier /etc/securetty contient la liste des terminaux depuis lesquels l’accès root est autorisé. Pour interdire le login comme root sur un terminal particulier, Il suffit de supprimer le nom du terminal dans le fichier /etc/securetty : Par exemple pour empêcher le login comme root sur le terminal 1 ( CTL-ALT-F1), supprimer l’entré tty1 du fichier /etc/securetty. Voici un exemple du fichier /etc/securetty : tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8 tty9 tty10 tty11 _____________________________________________________________________ 2011 Hakim Benameurlaine 2 _____________________________________________________________________ 2011 Hakim Benameurlaine 3 1.3 Restriction de l’accès à la commande su On peut autoriser seulement certaines personnes à faire des su pour obtenir les privilèges du super utilisateur. L’idée consiste à autoriser seulement un groupe particulier à exécuter la commande su. a) Interdire aux autres usagers d’exécuter la commande su. chmod o= /bin/su b) Créer un groupe quelconque. Par exemple suok groupadd suok c) Autoriser les usagers du groupe suok à exécuter la commande su. chgrp suok /bin/su Tous les su sont interdits, pas uniquement les su root. 1.4 Exécution de commandes avec sudo Il existe un utilitaire, sudo, qui permet à certains utilisateurs d’exécuter certaines commandes avec les privilèges du super-utilisateur. Cet outil nécessite le paquetage sudo-1.6.8p8-2.4 : sudo présente de nombreux avantages par rapport à l’utilisation de restrictions des groupes : le contrôle des accès aux commandes est centralisé dans le fichier /etc/sudoers tous les accès et tentatives d’accès par sudo sont journalisés dans le fichier /var/log/secure l’utilisateur doit s’identifier à sudo en donnant son mot de passe. _____________________________________________________________________ 2011 Hakim Benameurlaine 4 Le fichier /etc/sudoers contient pour chacun des utilisateurs : son login, sur quel ordinateur il est autorisé et quelles commandes il peut exécuter. Exemple du fichier /etc/sudoers : # sudoers file. # # This file MUST be edited with the 'visudo' command as root. # # See the sudoers man page for the details on how to write a sudoers file. # # Host alias specification # User alias specification # Cmnd alias specification # Defaults specification # User privilege specification root ALL=(ALL) ALL # Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL # # # # # Same thing without a password %wheel ALL=(ALL) NOPASSWD: ALL Samples %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom %users localhost=/sbin/shutdown -h now Exemple de /var/log/secure : Apr 14 18:11:38 localhost sudo: root : TTY=tty2 ; PWD=/var/log ; USER=root ; COMMAND=/bin/ls Apr 14 18:14:03 localhost sudo: root : TTY=tty1 ; PWD=/etc ; USER=root ; COMMAND=/bin/ls Apr 14 18:14:23 localhost sudo: hakimb : user NOT in sudoers ; TTY=tty1 ; PWD=/home/hakimb ; USER=root ; COMMAND=/bin/ls 1.5 Utilisation du Shadow Linux/Unix permet l’utilisation d’un système amélioré d’authentification par mots de passe appelé "shadow" Les mots de passe cryptés sont stockés dans un fichier illisible des utilisateurs normaux. Les dangers de vol de mots de passe pour une analyse de vulnérabilité sont donc considérablement réduits. _____________________________________________________________________ 2011 Hakim Benameurlaine 5 Ce système présente aussi certains autres intérêts du point de vue de la sécurité, dont la possibilité de spécifier des dates d’expiration automatiques pour les mots de passe et les comptes. Le fichier /etc/shadow s’utilise en complément de /etc/passwd. Les informations générales qui ne touchent pas les mots de passe demeurent dans /etc/passwd; seul le champ réservé au mot de passe crypté est invalidé (par un "*", un "!" ou un "x"). Le fichier /etc/shadow compte une ligne pour chaque utilisateur figurant dans /etc/passwd. Les champs de chaque ligne sont dans l’ordre : username :password :lastchg :min :max :warn :inactive :expire :flag username contient le login de l’utilisateur. password contient le mot de passe crypté de l’utilisateur. lastchg contient la date de dernière modification du mot de passe (en jours écoulés depuis le premier janvier 1970) min contient le nombre minimal de jours qui doivent s’écouler entre deux changements du mot de passe. max contient la durée maximale de validité d’un mot de passe (en jours) warn contient le nombre de jours de préavis avant l’expiration du mot de passe. inactive contient la durée maximale d’inactivité pour l’utilisateur (en jours) expire contient la date d’expiration pour le compte utilisateur (en jours écoulés depuis le premier janvier 1970) flag inutilisé et devrai contenir zéro Exemple du fichier /etc/shadow : root:$1$ÉóÎÂìRàq$sgOPFZ5BddwQDpqEKmO7Y.:12425:0:99999:7::: bin:*:12425:0:99999:7::: daemon:*:12425:0:99999:7::: adm:*:12425:0:99999:7::: lp:*:12425:0:99999:7::: sync:*:12425:0:99999:7::: shutdown:*:12425:0:99999:7::: halt:*:12425:0:99999:7::: mail:*:12425:0:99999:7::: news:*:12425:0:99999:7::: uucp:*:12425:0:99999:7::: operator:*:12425:0:99999:7::: games:*:12425:0:99999:7::: gopher:*:12425:0:99999:7::: ftp:*:12425:0:99999:7::: nobody:*:12425:0:99999:7::: vcsa:!!:12425:0:99999:7::: mailnull:!!:12425:0:99999:7::: rpm:!!:12425:0:99999:7::: _____________________________________________________________________ 2011 Hakim Benameurlaine 6 ntp:!!:12425:0:99999:7::: rpc:!!:12425:0:99999:7::: xfs:!!:12425:0:99999:7::: gdm:!!:12425:0:99999:7::: rpcuser:!!:12425:0:99999:7::: nfsnobody:!!:12425:0:99999:7::: nscd:!!:12425:0:99999:7::: ident:!!:12425:0:99999:7::: radvd:!!:12425:0:99999:7::: v1000:$1$zobaVD5P$1vRmL4IEOB6.M78oBjZ4n0:12495:0:99999:7::: v2000:!!:12425:0:99999:7::: v3000:!!:12425:0:99999:7::: xxx:!!:12425:0:99999:7::: hakimb:$1$zyxuyPYE$V2ysdL5Izcd6yDxQZcWKO1:12453:0:99999:7::: test:!!:12425:0:99999:7::: apache:!!:12425:0:99999:7::: u1:$1$QSnNSbnk$V1T.z/7Fk36Ix8LdXwoRF.:12425:0:99999:7::: u2:$1$ttwzKziZ$aEH3c1mx/Od2ngQcKeqgg1:12425:0:99999:7::: named:!!:12425:0:99999:7::: pcap:!!:12425:0:99999:7::: usager1:$1$7l5qjLYK$Ph5MDoIscGcyb4Q.BIq1h/:12474:0:99999:7::: usager3:!!:12474:0:99999:7::: usager4:$1$86KPfosI$4p2cqa8OVP8C4zaWL/QFe1:12474:0:99999:7::: x1:!!:12481:0:99999:7::: 1.6 Commande chage chage [ -l ] [ -m min_days ] [ -M max_days ] [ -W warn ] [ -I inactive ] [ -E expire ] [ -d last_day ] user Voir le fichier /etc/login.defs pour les défauts. [root@localhost root]# chage -l Minimum: 0 Maximum: 99999 Warning: 7 Inactive:-1 Last Change: Feb 05, 2004 Password Expires: Never Password Inactive: Never Account Expires: Never hakimb Exemple max : [root@localhost root]# chage -M 4 hakimb [root@localhost root]# grep hakimb /etc/shadow hakimb:$1$YY5OQVDz$0n7SY95gZv7N5ah72ELBj0:12522:2:4:7::: Exemple expire : _____________________________________________________________________ 2011 Hakim Benameurlaine 7 [root@localhost root]# chage -E 2004-08-01 hakimb [root@localhost root]# grep hakimb /etc/shadow hakimb:$1$YY5OQVDz$0n7SY95gZv7N5ah72ELBj0:12522:2:4:7::12631: Exemple warn : [root@localhost root]# chage -W 4 hakimb [root@localhost root]# grep hakimb /etc/shadow hakimb:$1$YY5OQVDz$0n7SY95gZv7N5ah72ELBj0:12522:2:4:4:: 12631: [root@localhost root]# su - hakimb Your account has expired; please contact your system administrator su: incorrect password [root@localhost root]# Exemple min : [root@localhost root]# chage -m 3 hakimb [root@localhost root]# grep hakimb /etc/shadow hakimb:$1$YY5OQVDz$0n7SY95gZv7N5ah72ELBj0:12522:3:4:4:: 12631: Exemple inactive : [root@localhost root]# chage -I 5 hakimb [root@localhost root]# grep hakimb /etc/shadow hakimb:$1$YY5OQVDz$0n7SY95gZv7N5ah72ELBj0:12522:3:4:4:5: 12631: Exemple last_day : [root@localhost root]# chage -d 2004-04-20 hakimb [root@localhost root]# grep hakimb /etc/shadow hakimb:$1$YY5OQVDz$0n7SY95gZv7N5ah72ELBj0:12528:3:4:4:5: 12631: [root@localhost root]# chage -d 2004-04-19 hakimb [root@localhost root]# grep hakimb /etc/shadow hakimb:$1$YY5OQVDz$0n7SY95gZv7N5ah72ELBj0:12527:3:4:4:5: 12631: _____________________________________________________________________ 2011 Hakim Benameurlaine 8