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