404Blog

8 June , 2011
by seynhaeve
0 comments

Drupal7 + Posgresql sur Debian Squeeze

Installer les paquets suivants:

apt-get install apache2 php5 postgresql php5-pgsql php5-gd -y

Créer l’utilisateur et la base de données qui seront utilisés par Drupal:

su - postgres
createuser --pwprompt --encrypted --no-createrole --no-createdb drupal7
Saisir le mot de passe pour le nouveau rôle :
Le saisir de nouveau :
Le nouveau rôle est-il super-utilisateur ? (o/n) n

createdb --encoding=UTF8 --owner=drupal7 drupal7

Récupérer l’archive de la dernière version de Drupal sur http://drupal.org/download et la décompresser sous /var/www/:

cd /var/www
wget http://ftp.drupal.org/files/projects/drupal-7.2.tar.gz
tar -xvzf drupal-7.2.tar.gz
mv drupal-7.2 drupal
chown -R root:www-data drupal

Créer et donner les bons droits sur les fichiers pour terminer l’installation via l’interface web:

chmod g+w /var/www/drupal/sites/default
cp -p /var/www/drupal/sites/default/default.settings.php /var/www/drupal/sites/default/settings.php
chmod g+w /var/www/drupal/sites/default/settings.php

Pour terminer l’installation rendez-vous sur http://votre_adresse_ip/drupal et remplissez les champs avec ce que vous avez renseigné lors de la création de l’utilisateur et de la base de données.

Une fois l’installation terminée vous pouvez retirer les droits d’écriture sur le settings.php et /var/www/drupal/sites/default

chmod g-w /var/www/drupal/sites/default/settings.php
chmod g-w /var/www/drupal/sites/default

20 April , 2011
by seynhaeve
0 comments

Openssl – générer et signer une demande de signature(CSR)

Dans l’article précédent, nous avons vu comment créer un autorité de certification(CA). Le but de cette autorité de certification est de pouvoir signer des certificats. Dans cet article nous allons voir comment générer une demande de signature(CSR: Common Signing Request) et comment la signer avec notre autorité de certification.

Générer une demande de signature(CSR)

On commence par générer la clef privée pour notre certificat, c’est elle qui va nous permettre de déchiffrer la clef de session que le client aura chiffrée avec notre clef publique(voir étape 3 de l’article Openssl – création d’une autorité de certification). Dans ce cas-ci, la clef privée ne sera pas protégée par un mot de passe. Nous allons tester notre certificat avec le serveur web Apache, si nous mettons un mot de passe sur cette clef, il faudra le taper à chaque fois que le serveur Apache sera démarré.

Générer le clef privée:

openssl genrsa 1024 > www.test.net.key

Cette clef ne doit être lisible que par l’utilisateur root:

chmod 600 www.test.net.key

On génère la demande de signature(CSR):

openssl req -new -key www.test.net.key -out www.test.net.csr

Signature du CSR avec notre CA

openssl ca -in www.test.net.csr -out www.test.net.crt

On peut copier le certificat www.test.net.crt dans /etc/ssl/certs et la clef privée www.test.net.key dans /etc/ssl/private sur le serveur web.

Tester le nouveau certificat avec Apache

Installer Apache:

apt-get install apache2

Activer le module ssl:

a2enmod ssl

Activer le virtual host default-ssl:

a2ensite default-ssl

Il faut maintenant indiquer le chemin vers la clef et le certifcat que nous avons créés auparavant.
Dans /etc/apache2/sites-available/default-ssl, on remplace:

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

Par:

SSLCertificateFile /etc/ssl/certs/www.test.net.crt
SSLCertificateKeyFile /etc/ssl/private/www.test.net.key

On redémarre apache:

/etc/init.d/apache2 restart

Si on se connecte en https sur notre serveur web on reçoit un avertissement. Si l’on veut éviter ce problème, il suffit d’importer le CA que nous avons créé dans l’article précédent sur notre navigateur.

Sur Firefox on peut l’installer via:

Edit -> Préférences -> Advanced -> View Certificates -> Import

Commandes openssl utiles

Afficher tout ce qui se trouve dans le certificat:

openssl x509 -in www.test.net.crt -text

Afficher le sujet du certificat:

openssl x509 -in www.test.net.crt -noout -subject

Afficher l’issuer du certificat:

openssl x509 -in www.test.net.crt -noout -issuer

20 April , 2011
by seynhaeve
0 comments

Openssl – création d’une autorité de certification

Explication d’un échange entre un serveur web et en client chiffré avec SSL.

  1. Le client se connecte au serveur web via son navigateur.
  2. Le serveur web présente son certificat qui contient sa clef publique. Ce certificat est signé par une autorité de certification, ce qui permet de valider l’identité du serveur avec lequel on dialogue. Pour valider l’identité de ce serveur il faut que le certificat de l’autorité de certification qui a signé ce certificat soit installé sur le navigateur.
  3. Le client génère une clef de session et la chiffre avec la clef publique du serveur qui se trouve dans le certificat. Cette clef de session chiffrée est envoyée au serveur web.
  4. Le serveur web déchiffre la clef de session grâce à sa clef privée.
  5. Le client et le serveur web peuvent maintenant chiffrer leur trafic grâce à cette clef de session.

Création d’une autorité de certification (CA) avec openssl

  1. modifier le fichier /etc/ssl/openssl.conf.

Dans la section [CA_default]:

# L'endroit où l'on va stocker les différents fichiers
dir = /etc/ssl/CA
certificate = $dir/my-ca.crt # Le certificat de mon CA
crl = $dir/my-ca.crl # Liste de révocation de certificat
private_key = $dir/private/my-ca.key # La clef privée de mon CA

Les autres paramètres de la section [CA_default] ne changent pas.

Il faut maintenant créer l’arboresence avec les différents dossiers pour notre CA.

mkdir -p /etc/ssl/CA/{certs,crl,private,newcerts}
chmod -R 700 /etc/ssl/CA

Il faut également créer le fichier serial qui contiendra le numéro de série du prochain certificat signé par notre CA et index.txt qui contiendra certaines informations concernant les certificats signés par notre CA.

touch /etc/ssl/CA/index.txt
echo 01 > /etc/ssl/CA/serial

Une fois que l’on a modifié le fichier de configuration et créé l’arboresence, il faut créer la clef privée de notre CA qui sera protégée par un mot de passe. C’est ce mot de passe qui sera demandé à chaque fois que l’on signera un nouveau certificat.

openssl genrsa -out /etc/ssl/CA/private/my-ca.key -des3 2048

Une règle de bonne pratique est de mettre des droits assez restrictifs sur cette clef privée qui ne devrait être lisible que par l’utilisateur root.

chmod 600 /etc/ssl/CA/private/my-ca.key

On peut maintenant créer notre certificat auto-signé, ce certificat pourra être installé sur les clients (navigateur web, client mail…) pour éviter que nos utilisateurs ne recoivent une alerte lorsqu’il se connecteront sur un service qui présente un certificat signé par notre autorité de certification.

Création du self signed:

openssl -req -new -x509 -key /etc/ssl/CA/private/my-ca.key -days 3650 > my-ca.crt

Enter pass phrase for private/my-ca.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [BE]:
State or Province Name (full name) [Hainaut]:
Locality Name (eg, city) [Kain]:
Organization Name (eg, company) [Test, Inc.]:
Organizational Unit Name (eg, section) []:Test CA
Common Name (eg, YOUR name) []:Test Certificate Authority
Email Address []:test@test.net

Toutes les paramètres qui se trouvent entre crochets sont les valeurs par défaut que l’on peut définir dans la section req_distinguished_name du fichier /etc/ssl/openssl.conf.

Tout est en place pour signer les demandes de signatures de certificats (CSR) pour nos différentes services.

11 April , 2011
by seynhaeve
0 comments

Chiffrement d’une partition avec cryptsetup

Formater le partition avec cryptsetup:

cryptsetup luksFormat /dev/sdb1

Ouvrir la partition chiffrée afin de pouvoir la formater:

cryptsetup luksOpen /dev/sdb1 usb_crypted

Créer le filesystem sur la partition que l’on va retrouver déchiffrée sous /dev/mapper/usb_crypted:

mkfs.ext4 /dev/mapper/usb_crypted

La partition est maintenant accessible comme n’importe quelle autre partition.
Lorsque vous montrez la partition, vous devrez taper le mot de passe que vous aviez fourni lors de la première étape.

Autre commande utile:

Fermer la partition pour qu’elle ne soit plus accessible:

cryptsetup luksClose /dev/mapper/usb_crypted

6 May , 2010
by seynhaeve
0 comments

Apache2 + Webdav + openldap + ssl

Installation des paquets:

[root@webdav:~]$apt-get install apache2

Apache

On active les modules nécessaires pour le webdav, le ssl et l’authentification ldap:

[root@webdav:~]$a2enmod authnz_ldap ssl dav dav_fs dav_lock
Considering dependency ldap for authnz_ldap:
Enabling module ldap.
Enabling module authnz_ldap.
Enabling module ssl.
See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
Enabling module dav.
Run '/etc/init.d/apache2 restart' to activate new configuration!

On créé un répertoire qui sera accessible pour l’utilisateur test:

[root@webdav:~]$mkdir -p /var/www/webdav/test
[root@webdav:~]$chmod 770 /var/www/webdav/test
[root@webdav:~]$chown .www-data /var/www/webdav/test

On créé le fichier lock pour webdav:

[root@webdav:~]$mkdir /var/lock/DAVLock
[root@webdav:~]$touch /var/lock/DAVLock/DAVLock
[root@webdav:~]$chown -R www-data:www-data /var/lock/DAVLock

On créé le fichier virtual host:

<VirtualHost *:443>
ServerAdmin webmaster@frites.be
ServerAlias webdav.frites.be

SSLEngine on

SSLCertificateFile /etc/apache2/ssl/webdav.frites.be.pem
SSLCertificateKeyFile /etc/apache2/ssl/webdav.frites.be.key

DocumentRoot /var/www/webdav

ErrorLog /var/log/webdav_ssl_error.log
CustomLog /var/log/webdav_ssl_access.log combined
LogLevel warn

#WEBDAV

DavLockDB /var/lock/DAVLock/DAVLock

DAVMinTimeout 600

<Directory /var/www/webdav/test>
Dav On
AuthType Basic
AuthName "Accès RÉSERVÉ"
AuthName DAV
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPRemoteUserIsDN off
AuthLDAPGroupAttributeIsDN off
AuthLDAPURL ldaps://ldap.frites.be/ou=Webdav,dc=frites,dc=be?uid?sub?(objectClass=*)
require ldap-filter &(uid=test)
</Directory>
</VirtualHost>

On active le virtual host:

a2ensite webdav

Ne pas oublier de créer le dossier /etc/apache2/ssl et d’y placer le certificat et la clef du serveur webdav.frites.be

On redémarre apache:

[root@webdav:~]$/etc/init.d/apache2 restart

Authentification:

On modifie le fichier /etc/ldap/ldap.conf où l’on indique le seveur ldap et l’endroit où se trouve le ca:

#
# LDAP Defaults

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

BASE dc=frites,dc=be
URI ldaps://ldap.frites.be
TLS_CACERT /etc/ssl/certs/cacert.pem

#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never

Il ne faut pas oublier de placer le ca dans le répertoire /etc/ssl/certs

Accès au répertoire

On peut accéder au répertoire en lecture via un navigateur web à l’adresse suivante https://webdav.frites.be/test avec comme login test et le mot de passe qui se trouve dans le ldap.

Si l’on veut faire des modifications il faut utiliser un autre client, sous Linux on peut y accéder en ligne de commande via cadaver, en graphique via nautilus par exemple.
Sous Windows on peut rajouter un favori réseau afin d’éditer, créer et lire ce qui se trouve dans le répertoire test.
Attention le bloc-notes de Windows n’est pas compatible avec webdav, si l’on veut modifier/lire un fichier texte avec le bloc-notes il faudra le rapatrier en local et ensuite le copier avec les modifications sur le serveur.

13 July , 2009
by seynhaeve
0 comments

Samba pdc

apt-get install samba

Pour que samba joue le rôle de pdc il faut remplir les 5 conditions suivantes:

1 activer security=user
2 activer le support des mots de passe cryptés encrypt password = yes
3 avoir un partage netlogon
4 le pdc doit être l’explorateur maître de son domaine domain master = yes
5 le pdc doit être serveur de connexion de son domaine domain logons = yes

Voici le /etc/samba/smb.conf pour remplir les 5 conditions ci-dessus:

[global]
netbios name = samba-server
workgroup    = samba
security     = user
encrypt passwords = yes
enable privileges = yes

domain master = yes
domain logons = yes

add machine script = /usr/sbin/useradd -g machines -s /bin/false %u

logon script = %U.bat

[netlogon]
path = /home/netlogon
read only = yes
write list = +ntadmin

Ajout de l’utilisateur root:

samba:~# smbpasswd -a root

Il faut ensuite associer les groupes unix aux groupes windows pour permettre la gestion du domaine (ajout d’une machine, création d’un partage,…).
On commence par ajouter le groupe ntadmin qui sera associé au groupe Administrators

samba:~# addgroup ntadmin

Pour pouvoir associer le groupe ntadmin au Builtin group Administrators il faut récupérer le sid du domaine que l’on vient de créer:

samba:~# net getlocalsid samba

Association du groupe ntadmin au Builtin group Administrators, il faut toujours l’associer avec le RID 512:

samba:~# net groupmap add sid=S-1-5-21-1167086687-1543078166-3842405581-512 \ ntgroup="Administrators" unixgroup=ntadmin

Toutes les personnes qui se trouveront dans le groupe ntadmin seront considérées comme appartenant au groupe Administrators sur les clients Windows. Ces personnes auront les droits d’administration sur les machines Windows et bénéficieront de tous les droits disponibles sur le domaine.
On peut lister ces droits via la commande suivante:

samba:~# net -S localhost -U% rpc rights list accounts 'Builtin\Administrators'

Si l’on affiche les membres du groupe Administrators sur une machine Windows qui se trouve dans le domaine, on peut voir que le groupe SAMBA/Administrators se retrouve automatiquement dans le groupe Administrators!

On peut également créer un autre groupe dans lequel on ajoutera les personnes qui peuvent joindre de nouvelles machines au domaine.

addgroup serveuradmin
net groupmap add ntgroup="Server Admins" unixgroup=serveuradmin

Ajout des droits pour le groupe Server Admins:

net rpc rights grant 'SAMBA\Server Admins' SeMachineAccountPrivilege -U root

Les personnes du groupe Server Admins auront donc le droit de joindre de nouvelles machines au domaine, par contre elles n’auront aucun droit d’administration sur ces machines.
Pour leur donner ces droits, il faudra les rajouter manuellement dans le groupe Power Users localement sur chaque machine, il n’existe pas d’autres moyens.

Dernière étape avant de pouvoir ajouter une machine dans le domaine, il faut créer le groupe qui contiendra les machines du domaine(cfr: commande add machine dans smb.conf):

addgroup machines

Ajout des répertoires personnels connectés automatiquement au login de l’utilisateur.

Il faut ajouter les lignes suivantes dans /etc/samba/smb.conf:

[global]
logon drive = H:

[homes]
comment = Home directories
read only = no
create mask = 0700
directory mask = 0700
valid users = %S

Ajout des profiles itinérants.

Pour que les profils itinérants fonctionnent il faut effectuer la modification suivante sur les postes de travail Windows.

gpedit.msc -> Local Computer Policy -> Computer Configuration -> System -> User Profiles
Activer l’option Do not check ownership of roaming profile forlders.

Si vous conservez le smb.conf actuel, le profil itinérant des utilisateurs sera sauvegardé dans leurs répertoires personnels.
Il est préférable les mettre à un autre endroit pour éviter les mauvaises manipulations de la part des utilisateurs!

[global]
logon path = \\samba\profiles$\%U\%a

[profiles$]
comment = profile directory
path = /home/profiles
read only = no
inherit permissions = yes

Le %U correpond au nom de l’utilisateur, %a correspond à la version version de l’os(Xp, Vista,…)

Il faut également créer le dossier /home/profiles et celui de chaque utilisateur:
samba:~# mkdir /home/profiles
samba:~#mkdir /home/profiles/user1
samba:~#chmod 700 /home/profiles/user1
samba:~#chown user1. /home/profiles/user1

Ajout d’un lecteur réseau

smb.conf:

[test]
comment = répertoire de test
path = /home/test
read only = no
valid users = user1

/home/profile/user1.bat:

NET USE X: \\samba\test

samba:~# mkdir /home/test
samba:~# chown user1. /home/test/

Le lecteur réseau X: sera connecté automatiquement lors de l’ouverture de session de user1.

19 June , 2009
by seynhaeve
0 comments

Serveur ssh avec authentification ldap

Il faut tout d’abord installer libnss-ldap qui va nous fournir tous les paquets nécessaires:

debian:~# apt-get install libnss-ldap

/etc/libnss-ldap.conf:

base dc=frite,dc=be
uri ldaps://ldap.frite.be
ldap_version 3
port 636
tls_cacertfile /etc/ssl/cacert.pem

Modifier le fichier /etc/nsswitch.conf pour que la recherche d’utilisateurs et de groupes se fasse également sur le ldap:

/etc/nsswitch.conf:

passwd: compat ldap
group: compat ldap
shadow: compat ldap

Modifier le fichier /etc/ldap/ldap.conf en lui indiquant l’emplacement du certificat nécessaire pour le ldaps:

/etc/ldap/ldap.conf

BASE dc=frite,dc=be
URI ldaps://ldap.frite.be
TLS_CACERT /etc/ssl/cacert.pem

Pour l’authentification il faut indiquer à pam de tenir compte des utilisateurs présents sur le ldap.

/etc/pam.d/common-auth:

auth sufficient /lib/security/pam_ldap.so
auth required /lib/security/pam_unix_auth.so try_first_pass

/etc/pam_ldap.conf:

base dc=frite,dc=be
uri ldaps://ldap.frite.be
ldap_version 3
port 636

Si on teste cette configuration l’utilisateur ldap qui va se connecter n’aura pas de répertoire personnel, il faut donc ajouter la ligne suivante au fichier /etc/pam.d/common_session pour que son répertoire personnel soit créé automatiquement lors de sa première connexion:

/etc/pam.d/common_session

session required pam_mkhomedir.so skel=/etc/skel umask=0077
session required pam_unix.so

En cas de problème désactiver nscd:

/etc/init.d/nscd stop

29 April , 2009
by seynhaeve
0 comments

Mail server: Postfix + Dovecot + openldap

On commence par installer les différents paquets nécessaires à la mise en place du server mail:

apt-get install postfix postfix-ldap dovecot-imapd mailx

Postfix demande le type de serveur de messagerie => Site Internet

Nom du courriel => nom de domaine

Pour la configuration de Postfix il y a 4 fichiers à éditer, ils se situent dans /etc/postfix:

Tout d’abord main.cf:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version

# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA’s job.
append_dot_mydomain = no

# Uncomment the next line to generate “delayed mail” warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/frites.pem
smtpd_tls_key_file=/etc/ssl/private/frites.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = mail
myorigin = /etc/mailname
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128,192.168.0.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
luser_relay =

alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf

home_mailbox=Maildir/

virtual_mailbox_domains = frites.be

# Le fichier de config qui indique comment trouver les comptes virtuels
virtual_mailbox_maps = ldap:/etc/postfix/ldap-accounts.cf
# Le fichier de config qui indique comment trouver les alias virtuels
virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf

virtual_mailbox_base = /var/mail

dovecot_destination_recipient_limit = 1
virtual_transport = dovecot

virtual_uid_maps = static:vmail
virtual_gid_maps = static:mail

Dans le fichier master.cf il suffit de rajouter la ligne suivante à la fin du fichier:

# Dovecot LDA
dovecot unix - n n - - pipe
flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -d $recipient

On crée maintenant les 2 fichiers dans lesquels postfix va aller vérifier les noms d’utilisateurs et les différents alias présents sur le ldap.

ldap-accounts.cf:

server_host = ldap.frites.be
port = 636
version = 3
search_base = ou=People,dc=frites,dc=be
query_filter = (mailRoutingAddress=%s)
result_attribute = sn

ldap-aliases.cf:

server_host = ldap.frites.be
port = 636
version = 3
search_base = ou=People,dc=frites,dc=be
query_filter = (mailRoutingAddress=%s)
result_attribute = mailRoutingAddress

On peut vérifier que la communication avec le serveur se passe bien via la commande suivante:

postmap -q nom_utilisateur ldap:/etc/postfix/ldap-accounts.cf

Configuration de dovecot:

Il n’y a que 2 fichiers à éditer dans /etc/dovecot.

dovecot.conf:

protocols = imap imaps
login_greeting = frites Dovecot ready!!
mail_location = maildir:/var/mail/%n
protocol imap {
imap_client_workarounds = outlook-idle
}
protocol lda {
postmaster_address = postmaster@frites.be
auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
mechanisms = plain login
passdb ldap {
# Path for LDAP configuration file
args = /etc/dovecot/dovecot-ldap.conf
}
userdb ldap {
# Path for LDAP configuration file
args = /etc/dovecot/dovecot-ldap.conf
}
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail # User running Dovecot LDA
group = mail # Or alternatively mode 0660 + LDA user in this group
}
}
}

dovecot-ldap.conf:

hosts = ldap.frites.be
tls = yes
auth_bind = yes
ldap_version = 3
base = ou=People,dc=frites, dc=be
#On reprend l'uid de l'utilisateur vmail et le gid du group mail
user_attrs = uidNumber=500,gidNumber=8
user_filter = (&(objectClass=posixAccount)(uid=%n))
pass_filter = (&(objectClass=posixAccount)(uid=%n))
default_pass_scheme = SSHA
user_global_uid = 500
user_global_gid = 8

Il faut ensuite modifier le fichier /etc/ldap/ldap.conf pour pouvoir communiquer en ldaps avec notre serveur ldap:

BASE dc=frites,dc=be
URI ldaps://ldap.frites.be:636

TLS_CACERT /etc/ssl/certs/frites-ca.crt

Il ne reste plus qu’à ajouter l’utilisateur vmail, qui est l’utilisateur chargé de lancer deliver pour mettre les mails dans les boites mail de chaque utilisateur:

adduser --ingroup mail --uid 500 vmail

Premier mail de test:

echo test mail | mail vlamsdoem -s "Test mail"

Si l’utilisateur vlamsdoem existe sur ldap vous devriez retrouver le mail dans le répertoire /var/lib/mail/vlamsdoem/new

29 September , 2008
by seynhaeve
0 comments

Pureftp, pam_mkhomedir et Active Directory

Samba + krb + winbind

Installer les paquets suivants samba-common, krb5-clients, winbind:

apt-get install samba-common krb5-clients winbind

Modifier le fichier /etc/krb5.conf:

[libdefaults]
ticket_lifetime = 24000
default_realm = MOULES.FRITES.BE
dns_lookup_realm = false
dns_lookup_kdc = false
forwardable = yes

[realms]
MOULES.FRITES.BE = {
kdc = DC01.MOULES.FRITES.BE
admin_server = DC01.MOULES.FRITES.BE
default_domain = MOULES.FRITES.BE
}

[domain_realm]
.moules.frites.be = MOULES.FRITES.BE
moules.frites.be = MOULES.FRITES.BE

Modifier le fichier /etc/hosts:

127.0.0.1 localhost.moules.frites.be localhost pure-ftp

Modifier le fichier /etc/samba/smb.conf:

[global]
security = ADS
realm = MOULES.FRITES.BE
password server = 192.168.1.1
workgroup = MOULES
netbios name = pure-ftp
winbind cache time
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template shell = /bin/bash

Il suffit maintenant de (re)démarrer winbind et de modifier /etc/nsswitch.conf:

/etc/init.d/winbind restart

passwd: compat winbind
group: compat winbind

On peut maintenant joindre la machine au domaine:

net join -U Administrateur -S dc01.moules.frites.be

Remarque: Il faut que les 2 machines aient un décalage inférieur à 5 minutes, dans le cas d’une machine
virtuelle (domU) c’est le dom0 qui doit être synchro avec le contrôleur de domaine. Installer ntpdate et synchroniser le dom0 avec le contrôleur:

ntpdate 192.168.1.1

Pure-ftp + pam_mkhomedir

Installer pure-ftpd:

apt-get install pure-ftpd

Il faut modifier le fichier /etc/pam.d/pureftpd pour que les “home dirs” soient créés lorsque l’utilisateur se connecte pour le première fois:

# allow anonymous users
auth sufficient pam_ftp.so
auth sufficient pam_winbind.so
auth required pam_unix_auth.so shadow use_first_pass
# /etc/ftpusers contain user list with DENIED access
auth required pam_listfile.so item=user sense=deny
file=/etc/ftpusers onerr=succeed

# Uncomment next line to allow non-anonymous ftp access ONLY for
users,
# listed in /etc/ftpallow
#auth required pam_listfile.so item=user sense=allow
file=/etc/ftpallow onerr=fail

# standard
auth required pam_shells.so
account sufficient pam_winbind.so
account required pam_unix.so
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0077

Erreur rencontrée après une coupure de courant:


Sep 23 13:24:44 pure-ftp winbindd[25663]: [2008/09/23 13:24:44, 0] tdb/tdbutil.c:tdb_log(783)
Sep 23 13:24:44 pure-ftp winbindd[25663]: tdb(/var/lib/samba/winbindd_idmap.tdb): rec_free_read bad magic 0x42424242 at offset=112268

Le fichier winbindd_idmap.tdb était corrompu, il suffit de le supprimer pour qu'il soit regénéré convenablement.