Sécuriser l'accès à votre Fedora

version
                                                     anglaise version
                                                     francaise

I. Le necessaire, coté serveur

I.1 Les rpms


Installez ce rpm:

i686: opie-2.4-726.1.i686.rpm
x86_64: opie-2.4-726.1.x86_64.rpm
RPM source: opie-2.4-726.1.src.rpm
Ou alors directement la dernière version sur RPMFIND.

I.2 Parametrez L'Authentification des mots de passes (PAM ou Pluggable Authentication Modules)

A partir de Fedora 17, rajoutez la ligne suivante dans le fichier /etc/pam.d/system-auth-ac :
auth        sufficient    pam_opie.so
juste après la ligne:
 auth        required      pam_env.so

Jusqu'à Fedora 16, remplacez le contenu du fichier /etc/pam.d/system-auth-ac par celui-ci:
auth        required      pam_env.so
auth        sufficient    pam_opie.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

I.3 Configurer correctement openssh

Assurez-vous que le fichier /etc/ssh/sshd_config contient bien l'option suivante:
ChallengeResponseAuthentication yes

I.4 Authoriser uniquement les mots de passes jetables en ssh

A partir de Fedora 17, remplacez le contenu du fichier /etc/pam.d/sshd par ça:
auth       required    pam_sepermit.so
#auth       substack     password-auth
auth       sufficient   pam_opie.so
auth       required     pam_deny.so
auth       substack     pam_opie.so
auth       include      postlogin
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin


Jusqu'à Fedora 16, remplacez le contenu du fichier  /etc/pam.d/sshd  par ceci:

auth            sufficient      pam_opie.so             no_warn no_fake_prompts
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    include      system-auth
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke

I.5 Initialisation du mot de passe

Utilisez la commande  opiepasswd pour initialiser votre mot de passe et pas la commande passwd :

opiepasswd -c


I.6 La configuration de selinux


Il faut d'abord provoquer un message d'erreur dans le noyau, afin de pouvoir identifier sshd avec opiekeys pour SElinux.
Il faut aussi que le rpm policycoreutils-devel soit installé.
Tappez les commandes suivantes (en root lorsque le prompt se termine par #):

~$ ssh  localhost

user@localhost's password:
Permission denied, please try again.

~$ su -

~# grep type=AVC /var/log/audit/audit.log|grep sshd|awk 'NR == 1 {print;}'| audit2allow -M opiek
~# semodule -i opiek.pp

II. Le necessaire, coté client


II.1 Client pour GNU/Linux

Sur la machine cliente,  il vous suffit d'installer aussi le rpm opie-2.4-726.1.x86_64.rpm,  ce dernier contient aussi un calculateur de mot de passe jetable ( opiekey ):


~> ssh tux.seveur.org
otp-md5 490 oc1012 ext
Response:
 ~> opiekey 490 oc1012 
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
ROSE GAM BONA SITS NO BAIT

II.2 Client pour Windos

Vous trouverez sur l'internet le logiciel Winkey.exe qui sert à calculer les mots de passes jetables sous windos.

II.2 Client pour PalmOS

Il faut installer sur votre Palm les programes suivants:

PalmOTP.prc
SHALib.prc
mdlib.prc

Calculer son mot de passe jetable sur un Palm,  c'est à dire sur une mahcine non connectée à l'internet ou à un réseau informatique quelquonque est surement la meilleure solution du monde.

II.3 Client en java

Voici un client écrit pour la machine virtuelle java, donc fonctionnant sur toutes les plateformes:
jotp:
java jotp 490 oc1012 mon_mot_de_passe_secret md5
ROSE GAM BONA SITS NO BAIT

III. Plus d'informations


Vous trouverez une documentation interessante ici , ou encore ici , également à cet endroit, ainsi qu'ici pour Fedora 7.

III.1 Faille locale (anciennes versions)

Les anciennes versions de ce mécanisme d'authentification permettaient à un utilisateur local mal intentionné d'élever ses privilèges.