SSI-LDAP VS FREERADIUS

Transcription

SSI-LDAP VS FREERADIUS
SSI-LDAP VS FREERADIUS
Hamrouni Makram : hamrou_m
Poissenot Thomas : poisse_t
Roux Nicolas : roux_n
1 ............................................................................................................................... Maquette LDAP
Installation :.......................................................................................................................... 3
Initialisation de l’annuaire LDP : .................................................................................. 4
Installation du client LDAP: ............................................................................................ 5
Configuration du client LDAP: ........................................................................................ 5
Installation et configuration de l’authentification Unix: ...................................... 5
Client LDAP : ......................................................................................................................... 6
Configuration du serveur LDAP pour communiquer avec le serveur Samba:
................................................................................................................................................... 7
Installation du serveur Samba : ..................................................................................... 7
Configuration du serveur Samba : ................................................................................ 7
Installation des scripts smbldap-tools :...................................................................... 8
Génération des clefs et certificats :............................................................................... 9
Mise en place côté serveur : ............................................................................................ 9
Mise en place côté client : ............................................................................................. 10
Mise en place côté Serveur Samba :........................................................................... 10
2 Maquette Radius ....................................................................................................... 11
Installation :....................................................................................................................... 12
1 Maquette LDAP
1.1
Authentification de l’utilisateur par LDAP
1.1.1 Présentation de LDAP
LDAP (Lightweight Directory Access Protocol) est un protocole d'accès à un
annuaire. Un annuaire électronique est une base de donnée spécialisée, dont la
fonction première est de retourner un ou plusieurs attributs d'un objet grâce à
des fonctions de recherche multicritères.
1.1.2 Architecture des machines
1.1.3 Installation et configuration du serveur LDAP
Installation :
$ apt-get install slapd ldap-utils
Configuration du fichier du serveur LDAP:

Le fichier de configuration est : /etc/ldap/slapd.conf

La ligne suivante donne la racine de la base LDAP :

suffix "dc=domain,dc=local"
Ajouter cette ligne :

rootdn "cn=admin,dc=domain,dc=local"
On spécifie le mot de passe crypté par la commande suivante :

$ slappasswd
On copie la sortie de cette commande dans le fichier de configuration :
rootpw <Sortie de la commande slappasswd>



Paramétrage de l’accès en écriture de la base. Il faut indiquer le bon login et
la racine de la base :
access to attribute=userPassword
by dn="cn=admin,dc=domain,dc=local" write
by anonymous auth
by self write
by * none
Paramétrage de l’accès en lecture seule de la base. Il faut indiquer le bon
login et la racine de la base :
access to *
by dn="cn=admin,dc=domain,dc=local" write
by * read
Démarrer le serveur :
$ /etc/init.d/slapd start
Initialisation de l’annuaire LDP :

Créer un fichier temporaire base .ldif:
dn: ou=people, dc=domain, dc=local
objectclass: top
objectclass: organizationalUnit
ou: people
description: Branche gens

dn: ou=etudiants, ou=people, dc=domain, dc=local
objectclass: top
objectclass: organizationalUnit
ou: etudiants
description: Branche etudiants
Ajouter le contenu à la base de l’annuaire :

$ ldapadd -x -f base.ldif -W -D cn=admin,dc=domain,dc=local
Une fois initialisé on peut ajouter des utilisateurs à notre annuaire :
dn: uid=toto, ou=etudiants, dc=domain, dc=local
objectClass: top
objectClass: posixAccount
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: dupont
cn: Mimi toto
sn: Toto
givenName: Mimi
uidNumber: 1100
gidNumber: 1111
homeDirectory: /home/aware/toto
loginShell: /bin/bash
userPassword: titi
mail: [email protected]
l: France
1.1.4 Installation du client LDAP
Installation du client LDAP:
$ apt-get install libnss-ldap
Configuration du client LDAP:
 Le fichier de configuration /etc/ldap/ldap.conf doit ressembler à ça :
BASE dc=domain, dc=local
URI ldap://172.16.171.128
Installation et configuration de l’authentification Unix:

NSS : On ajoute un module à NSS qui lui permet d'interroger
notre annuaire LDAP
$ apt-get install libnss-ldap
Le fichier /etc/libnss-ldap.conf doit ressembler à ça :
base dc=domain,dc=local
uri ldap://172.16.171.128/
ldap_version 3
binddn cn=admin,dc=domain,dc=local
rootbinddn cn=admin,dc=domain,dc=local
bind_policy soft

PAM : On ajoute un module LDAP à PAM
$ apt-get install libpam-ldap
Le fichier de configuration de PAM /etc/pam_ldap.conf doit ressembler à ça :
host 172.16.171.128





base dc=domain,dc=local
uri ldap://172.16.171.128/
ldap_version 3
binddn cn=admin,dc=domain,dc=local
rootbinddn cn=admin,dc=domain,dc=local
bind_policy soft
Il suffit d'indiquer maintenant au système d'aller interroger notre annuaire
LDAP /etc/nsswitch.conf:
passwd:
compat ldap
group:
compat ldap
shadow:
compat ldap
hosts:
files dns
networks:
files
protocols: db files
services:
db files
ethers:
db files
rpc:
db files
netgroup:
nis
Le fichier /etc/pam.d/common-auth:
auth sufficient pam_ldap.so
auth sufficient pam_unix.so nullok_secure shadow use_first_pass
Le fichier /etc/pam.d/common-account:
account sufficient
account sufficient
pam_ldap.so
pam_unix.so
Le fichier /etc/pam.d/common-passwd:
password sufficient pam_ldap.so
password sufficient pam_unix.so
Le fichier /etc/pam.d/common-session:
session sufficient pam_ldap.so
session sufficient pam_unix.so
1.1.5 Captures du réseau
Client LDAP :
L’exécution de la commande getent passwd retourne :
toto:x:1004:513:Mimi toto:/home/toto:/bin/bash
L’exécution de la commande su – toto :
debian:~# su - toto
reenter password:
Pas de répertoire, connexion avec HOME=/
toto@debian:/$
1.2
Ajout des services : Samba
Configuration du serveur LDAP pour communiquer avec le serveur Samba:
On ajoute le schéma Samba à l’annuaire LDAP dans le fichier
/etc/ldap/sldap.conf sur le serveur ldap :
include
/etc/ldap/schema/samba.schema
Installation du serveur Samba :
$ apt-get install samba smbclient smbfs
Configuration du serveur Samba :
Le fichier /etc/samba/smb.conf doit ressembler à celui-ci :
[global]
workgroup = samba
netbios name = debian
server string = Samba-LDAP PDC Server
domain master = Yes
local master = Yes
domain logons = Yes
os level = 40
#passwd program = /usr/sbin/smbldap-passwd ?u %u
ldap passwd sync = Yes
passdb backend = ldapsam:ldap://172.16.171.128/
ldap admin dn = cn=admin,dc=domain,dc=local
ldap suffix = dc=domain,dc=local
ldap group suffix = ou=Groups
ldap user suffix = ou=Users
ldap machine suffix = ou=Machines
add user script = /usr/sbin/smbldap-useradd -m "%u"
ldap delete dn = Yes
delete user script = /usr/sbin/smbldap-userdel "%u"
add machine script = /usr/sbin/smbldap-useradd -w "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
#delete group script = /usr/sbin/smbldap-groupdel "%g"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
logon path = \\%L\profile\%U
logon drive = P:
logon home = \\%L\%U
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
case sensitive = No
default case = lower
preserve case = yes
short preserve case = Yes
#character set = iso8859-1
#domain admin group = @admin
dns proxy = No
wins support = Yes
hosts allow = 192.168.0. 127. 172.
winbind use default domain = Yes
nt acl support = Yes
msdfs root = Yes
hide files = /desktop.ini/ntuser.ini/NTUSER.*/
Installation des scripts smbldap-tools :
Ces outils facilitent la création des comptes Samba et aussi ils ajoutent
directement les comtes Unix dans l’annuaire LDAP :



Configurer le fichier /etc/smbldap-tools/smbldap_bind.conf :
slaveDN="cn=admin,dc=domain,dc=local"
slavePw=<mot de passe en clair du serveur LDAP>
masterDN="cn=admin,dc=domain,dc=local"
masterPw=<mot de passe en clair du serveur LDAP>
Changer les droitss sur le fichier pour des raisons de
sécurité :
$ chmod 600 /etc/smbldap-tools/smbldap_bind.conf
Configurer le fichier /etc/smbldap-tools/smbldap.conf :
slaveLDAP="172.16.171.128"
slavePort="389"
masterLDAP="172.16.171.128"
masterPort="389"
ldapTLS="0"
verify="require"
suffix="dc=domain,dc=local"
usersdn="ou=Users,${suffix}"
computersdn="ou=Machines,${suffix}"
groupsdn="ou=Groups,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
scope="sub"
hash_encrypt="SSHA"
crypt_salt_format="%s"
userLoginShell="/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
#Les mots de passe expirent dans 10ans

defaultMaxPasswordAge="3650"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
On crée le mot de passe admin pour communiquer avec le serveur LDAP :

$smbpasswd -w
Pour vérifier si tout fonctionne :

$ net getlocalsid
SID for domain DEBIAN is: S-1-5-21-4015663717-3667952096-1045129424
Création de l’architecture de l’annuaire :

$ smbldap-populate
Ajout d’un utilisateur à Samba :

$ smbldap-useradd -a -c "Hamrouni Makram" -m -P mhamrouni
Vérification de l’ajout de l’utilisateur dans l’annuaire:
Depuis un poste client la commande getent passwd retourne :
mhamrouni:x:1006:513:Hamrouni Makram:/home/mhamrouni:/bin/bash
1.3
Sécurisation des transactions
Par défaut les communications avec notre serveur LDAP se font en clair. Il
suffit de "sniffer" le réseau pour s'en rendre compte. Une personne mal
intentionnée pourrait donc intercepter toutes les informations qu'elle
désire, y compris les mots de passe de nos utilisateurs.
Nous avons choisi une manière simple de sécuriser nos transactions est de
passer par TLS (Transport Layer Security.)
Génération des clefs et certificats :
$ openssl genrsa -out serverkey.pem 1024
$ openssl req -new -key serverkey.pem -out servercert.req
$ openssl genrsa -out cakey.pem 1024
$ openssl req -new -x509 -key cakey.pem -out cacert.pem -days 365
$ openssl x509 -req -in servercert.req -out servercert.pem -CA cacert.pem CAkey cakey.pem -days 365 –Cacreateserial
Mise en place côté serveur :
 Ajouter dans la section globale du fichier /etc/ldap/slapd.conf:
TLSCertificateFile /etc/ldap/cert/servercert.pem
TLSCertificateKeyFile /etc/ldap/cert/serverkey.pem
TLSCACertificateFile /etc/ldap/cert/cacert.pem
Mise en place côté client :
 Copier le certificat cacert.pem dans le répertoire /etc/ldap/cert/.

Editer le fichier /etc/ldap/ldap.conf et ajouter:
TLS_CACERT /etc/ldap/cert/cacert.pem
ssl start_tls
tls_checkpeer yes
tls_cacertfile /etc/ldap/cert/cacert.pem
Mise en place côté Serveur Samba :
 Editer le fichier /etc/samba/smb.conf et ajouter:
lldap ssl = start_tls
ldap port = 389
1.4
Critique de l’architecture LDAP
1.4.1 Avantages

Centralisation des comptes

De nombreuses applications sont capables d'interroger un même annuaire
LDAP, Unix (pam_ldap) ou Windows (Samba) …

Les utilisateurs de tous ces services ne s'identifient alors qu'avec un seul
identifiant pour tous ces services.

Des mécanismes de réplication

Apport de la sécurité avec le support du SSL TLS.

S’adapte à n’importe quel structure de donnée.
1.4.2 Inconvénients

Langage pauvre en requêtes d’interrogation.

Création laborieuse et demande un beaucoup de maintenance.

La centralisation des comptes peut soulever des problèmes de sécurité
évidente : il faut limites les droits pour les utilisateurs et cela peut être très
laborieux.
1.4.3 Critique sur la montée en charge :
LDAP supporte bien la montée en charge, le nombre de requêtes échangées entre
le serveur et le client peuvent être diminuées par l’installation d’un système de
cache tel que nscd.
Pour accélérer la recherche dans l’annuaire on peut optimiser cela par l’ajout
d’index dans l’annuaire sur les objets les plus consultés. Cela n’est pas
négligeable dans le cas d’un grand parc informatique.
On peut utilise aussi des systèmes de cluster pour répartir la charge de travail.
1.5
Conclusion
LDAP est une solution d’authentification centralisé connu pour son adaptation à
tout type de donnée. Elle présente une solution de sécurité suffisante et ne
procure pas une sécurité forte. La configuration d’une telle solution est
laborieuse et difficile à maintenir.
2 Maquette Radius
2.1
Authentification de l’utilisateur par Radius
2.1.1 Présentation de Radius
Radius (Remote Authentication Dial-In User Service) est un protocole AAA
(Authentication, Authorization, Accounting) normalisé à travers 2 RFCs, RFC
2865 (RADIUS authentication) et RFC 2866 (RADIUS accounting). Sa fonction
première est d’assurer le transport de l’idenfication de l’utilisateur entre le poste
client et le serveur d’identification.
2.1.2 Architecture des machines
2.1.3 Installation et configuration de freeradius
Installation :
$ apt-get install freeradius
Configuration du fichier du serveur Radius:
La configuration de Radius est assez compliquée, mais la distribution propose un
fichier de configuration préexistant. Il a suffit de comprendre le fonctionnement
et enlever les choses non nécessaires à notre projet tell que l’identification LDAP.
Ci-dessous, voici le fichier de configuration principale et celui des clients
permettant de déclarer leurs adresses IP et clé secrète.

Le fichier de configuration est :
/etc/freeradius/radiusd.conf
prefix = /usr
exec_prefix = /usr
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = /var/log/freeradius
raddbdir = /etc/freeradius
radacctdir = ${logdir}/radacct
# Location of config and logfiles.
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/freeradius
log_file = ${logdir}/radius.log
libdir = /usr/lib/freeradius
pidfile = ${run_dir}/freeradius.pid
user = freerad
group = freerad
max_request_time = 30
delete_blocked_requests = no
cleanup_delay = 5
max_requests = 1024
bind_address = *
port = 0
hostname_lookups = no
allow_core_dumps = no
regular_expressions
extended_expressions
= yes
= yes
log_stripped_names = no
log_auth = no
log_auth_badpass = no
log_auth_goodpass = no
usercollide = no
lower_user = no
lower_pass = no
nospace_user = no
nospace_pass = no
security {
max_attributes = 200
reject_delay = 1
status_server = no
}
# PROXY CONFIGURATION
proxy_requests = yes
$INCLUDE ${confdir}/proxy.conf
# CLIENTS CONFIGURATION
$INCLUDE ${confdir}/clients.conf
# SNMP CONFIGURATION
snmp
= no
$INCLUDE ${confdir}/snmp.conf
# THREAD POOL CONFIGURATION
thread pool {
max_servers = 32
min_spare_servers = 3
max_spare_servers = 10
max_requests_per_server = 0
}
# MODULE CONFIGURATION
modules {
# Unix /etc/passwd style authentication
#
unix {
}
cache = no
shadow = /etc/shadow
radwtmp = ${logdir}/radwtmp
realm IPASS {
format = prefix
delimiter = "/"
ignore_default = no
ignore_null = no
}
# 'username@realm'
#
realm suffix {
format = suffix
delimiter = "@"
ignore_default = no
ignore_null = no
}
# 'username%realm'
#
realm realmpercent {
format = suffix
delimiter = "%"
ignore_default = no
ignore_null = no
}
#
# 'domain\user'
#
realm ntdomain {
format = prefix
delimiter = "\\"
ignore_default = no
ignore_null = no
}
checkval {
check-name = Calling-Station-Id
}
preprocess {
huntgroups = ${confdir}/huntgroups
hints = ${confdir}/hints
with_ascend_hack = no
ascend_channels_per_line = 23
with_ntdomain_hack = no
with_specialix_jetstream_hack = no
}
with_cisco_vsa_hack = no
files {
usersfile = ${confdir}/users
acctusersfile = ${confdir}/acct_users
preproxy_usersfile = ${confdir}/preproxy_users
}
compat = no
detail {
}
acct_unique {
key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IPAddress, NAS-Port"
}
$INCLUDE ${confdir}/sql.conf
radutmp {
filename = ${logdir}/radutmp
username = %{User-Name}
case_sensitive = yes
perm = 0600
callerid = "yes"
}
radutmp sradutmp {
filename = ${logdir}/sradutmp
perm = 0644
callerid = "no"
}
attr_filter {
attrsfile = ${confdir}/attrs
}
counter daily {
filename = ${raddbdir}/db.daily
key = User-Name
count-attribute = Acct-Session-Time
}
reset = daily
counter-name = Daily-Session-Time
check-name = Max-Daily-Session
allowed-servicetype = Framed-User
cache-size = 5000
sqlcounter dailycounter {
counter-name = Daily-Session-Time
check-name = Max-Daily-Session
sqlmod-inst = sql
key = User-Name
reset = daily
sqlcounter monthlycounter {
counter-name = Monthly-Session-Time
check-name = Max-Monthly-Session
sqlmod-inst = sql
key = User-Name
reset = monthly
always fail {
rcode = fail
}
always reject {
rcode = reject
}
always ok {
rcode = ok
simulcount = 0
mpp = no
}
expr {
}
digest {
}
exec {
}
wait = yes
input_pairs = request
exec echo {
wait = yes
program = "/bin/echo %{User-Name}"
input_pairs = request
output_pairs = reply
}
}
ippool main_pool {
cache-size = 800
session-db = ${raddbdir}/db.ippool
ip-index = ${raddbdir}/db.ipindex
override = no
maximum-timeout = 0
}
instantiate {
expr
}
authorize {
files
}
authenticate {
unix
}
preacct {
preprocess
}
files
accounting {
detail
unix
radutmp
}

session {
radutmp
}
post-auth {
}
Le fichier de configuration est :
/etc/freeradius/client.conf
client
ip {
secret =
testing123
shortname = client
}
2.2
Critique de l’architecture RADIUS
2.2.1 Avantages

Centralisation des comptes

Simplicité d’administration

Les utilisateurs de tous ces services ne s'identifient alors qu'avec un seul
identifiant pour tous ces services.
2.2.2 Inconvénients

Ajout de service passe par l’ajout de compte unix spécifiques

La centralisation des comptes peut soulever des problèmes de sécurité
évidente : il faut limites les droits pour les utilisateurs et cela peut être très
laborieux.
2.2.3 Critique sur la montée en charge :
Radius basé sur le fichier des utilisateur unix ne supporte pas bien la montée en
charge, en effet, comme dit plus haut les utilisateurs sont stockées dans un
fichier et non une base de données, il y’aura donc un temps de latence suivant la
position de l’utilisateur dans le fichier.
2.2.4 Critique sur l’ajout de services et la banalisation des postes:
La banalisation des postes suppose un contrôle moins strict sur l’accès aux
services.
L’ajout de nouveaux services implique l’ajout de nouvelles restrictions sur les
services pour un utilisateur d’où ajout des données dans la base RADIUS c’est à
dire dans un fichier. Cela implique une base de recherche plus importante et
donc un temps d’accès prolongé. Enfin, cela ralentit considérablement la solution
RADIUS.
2.3
Conclusion
Radius basé sur l’authentification unix est don un bon moyen d’authentification
pour les petites structures, mais nous préfèrerons LDAP à celui-ci dans le cas de
plus grosse structure pour une montée en charge nettement plus efficace.

Documents pareils