[Cyrus] Deplacer une mailbox sur une autre partition

Voici la marche à suivre afin de déplacer une mailbox d’une partition à une autre.

Dans l’exemple, je dispose de deux partitions (cf http://blog.slashroot.fr/?p=1156). La première par défaut (/var/spool/cyrus/mail) et la seconde nommée ‘1’ (/var/spool/cyrus/mail2).

Dans un premier temps il faut s’assurer que Cyrus accepte le déplacement (/etc/imapd.conf) :

allowusermoves: yes

Si modification, on redémarre Cyrus :

/etc/init.d/cyrus2.2 restart

Il ne reste plus qu’a se connecter à la base et déplacer la mailbox :

cyradm --user cyrus localhost

renamemailbox user/johan@em-corporation.fr user/johan@em-corporation.fr 1

Le 1 correspond à la partition cyrus vers laquelle déplacer la mailbox.

Pour finir, on peut vérifier que le déplacement a bien été effectué :

su - cyrus -c "/usr/sbin/mbpath user/johan@em-corporation.fr"
/var/spool/cyrus/mail2/domain/e/em-corporation.fr/j/user/johan

[Cyrus] Déclaration d’une nouvelle partition

Si vous rencontrez un problème d’insuffisance de stockage au niveau de vos BAL que vous ne pouvez pas faire évoluer, il est facilement envisageable de créer une partition supplémentaire.

La première étape consiste à choisir son dossier de destination et de lui affecté les bon droits (dépendant de votre configuration). Pour ma part j’ai simplement ajouté un deuxième disque local monté sur /var/spool/cyrus/mail2 (nous pouvons imaginer plein de scénarios différents).

Mise en place des droits sur le dossier :

chown cyrus:mail /var/spool/cyrus/mail2
chmod 750 /var/spool/cyrus/mail2

Déclaration de la partition à Cyrus (/etc/imapd.conf)

defaultpartition: 1
partition-default: /var/spool/cyrus/mail
partition-1: /var/spool/cyrus/mail2

Pour rappel, la valeur de la defaultpartition indique quelle partition va utiliser cyrus pour stocker les BAL des nouveaux utilisateurs.

[Active Directory] Rôles FSMO

Dans un environnement de domaine Windows Server, les contrôleurs de domaine contiennent une réplique de la base de données Active Directory. Ce système de réplication est dit multi maitre car chaque contrôleur de domaine a la possibilité de modifier cette base de données et de transmettre ces modifications aux autres contrôleurs de domaine afin que tous possèdent la même base de données Active Directory.

Bien que Microsoft ait implémenté dans ses systèmes un certain nombre de règles pour éviter les conflits de réplication dans Active Directory, certaines mises à jour sont trop importantes pour être résolues avec ces règles, comme par exemple la modification du schéma Active Directory. C’est pourquoi Microsoft a créé depuis Windows 2000 Server les Flexible Single Master Operation (FSMO). Ce sont en fait des rôles attribués à différent serveurs de manière à ce que seuls certains serveurs permettent de modifier des aspects internes à Active Directory.

Il existe donc depuis Windows 2000 cinq rôles FSMO. Ces 5 rôles sont nécessaires au bon fonctionnement des différents domaines et forêts de l’infrastructure. Chacun de ces rôles ne peut être hébergé que par des contrôleurs de domaine et non par des serveurs membres. Ils ont également des étendues différentes et des domaines de réplication différents.

On distingue parmi les 5 rôles:

  • Maître d’attribution de noms de domaines
  • Contrôleur de schéma
  • Maitre RID
  • Maitre d’infrastructure
  • Emulateur PDC

Le Maitre d’attribution de noms de domaines et le contrôleur de schéma ont une portée au niveau de la forêt, pour laquelle ils sont uniques.

Le maitre RID, le maitre d’infrastructure et l’émulateur PDC ont une portée au niveau du domaine, pour lequel ils sont uniques.

Nous allons présenter plus en détail les différents rôles ainsi que l’impact de leur indisponibilité.

(suite…)

[Debian] RAID 1 + LVM + Chiffrement (LUKS)

Petit tutoriel screenshot afin d’installer une Debian Squeeze avec deux disques dur en RAID 1 avec chiffrement des données.

Le but est de créer deux RAID, un pour le boot (ne pouvant être chiffré) et un pour le système (en deux partition, « / » et « /home »). On chiffre le RAID système puis on crée un groupe de volume logique contenant les volumes logiques souhaités (dans mon cas un swap, une partition « / » et une partition « /home ».) Pour finir on installe grub sur le deuxième disque.

Une fois que tout est opérationnel il ne reste plus qu’à tester le bon fonctionnement : (Test et gestion du RAID 1)

Pour les screenshots, c’est sur le : « Continue reading »

(suite…)

[Active Directory] Mémo sur la méthode AGDLP

La méthode AGDLP (Account, Global group, Domain Local group, Permission) est la méthode recommandée par Microsoft pour gérer l’accès aux fichiers partagés en fonctions des différents groupes AD.

Le principe est le suivant :

  • Les utilisateurs sont affectés à un groupe global
  • Les groupes globaux sont ajoutés aux groupes locaux
  • Les groupes locaux se voient attribués des permissions au niveau des ressources partagées

Les groupes globaux regroupent donc des utilisateurs qui se voient accorder des droits via des groupes locaux sur des ressources partagées.

En plus de la méthode AGDLP, comme vu dans le schéma précédant, chaque ressource sera liée à trois groupes locaux, chacun disposant de droits spécifiques :

  • Contrôle total (CT)
  • Lecture / Ecrite (RW)
  • Lecture (RO)

Cela permet ainsi d’affecter à des groupes d’utilisateurs des droits spécifiques pour une même ressource. Dans l’exemple du schéma AGDLP, les utilisateurs du service Etudes d’Orsay se voient affecter des droits en lecture/écriture sur le dossier « Projet MIR».

Nous pouvons imaginer que les collaborateurs du service Production d’Orsay aient besoin de visualiser le contenu du dossier « Projet MIR ». Avec cette méthode il suffira alors d’ajouter le groupe global « G_ORS_Production » contenant les utilisateurs du service Production d’Orsay au groupe local « L_ProjetMIR_RO » permettant l’accès au dossier « ProjetMIR » en lecture seule.

Dans le cas où des personnes n’appartenant pas au même service auraient besoin d’accéder à une ressource spécifique il faudra alors créer un groupe global spécifique. Par exemple si chaque chef de service doit pouvoir accéder en lecture au dossier relatif à la comptabilité il faudra alors créer le groupe global « G_ORS_Direction » associé au groupe local « L_Comptabilite_RO ».

[Active Directory] Supprimer un contrôleur de domaine HS

Lorsqu’un DC devient HS, il est toujours présent dans l’architecture Active Directory tant qu’il n’a pas été « dépromu » ou supprimé.

Il faut alors utiliser NTDSUTIL pour le supprimer :

C:\Documents and Settings\Administrateur>ntdsutil
ntdsutil: metadata cleanup
metadata cleanup: connections
server connections: connect to server MonDCQuiFonctionne
Liaison à MonDCQuiFonctionne...
Connecté à MonDCQuiFonctionne en utilisant les informations d'identification d'un
utilisateur connecté localement.
server connections: quit
metadata cleanup: select operation target
select operation target: list domains
1 domaine(s) trouvé(s)
0 - DC=em-corporation,DC=fr
select operation target: select domain 0
Aucun site actuellement
Domaine - DC=em-corporation,DC=fr
Aucun serveur actuellement
Pas de contexte de nommage en cours
select operation target: list sites
1 site(s) trouvé(s)
0 - CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr
select
operation target: select site 0
Site - CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr
Domaine - DC=em-corporation,DC=fr
Aucun serveur actuellement
Pas de contexte de nommage en cours
select operation target: list servers in site
3 serveur(s) trouvé(s)
0 - CN=MonDCQuiFonctionne,CN=Servers,CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr
1 - CN=Un2emeDCFonctionnel,CN=Servers,CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr
2 - CN=MonDC-HS,CN=Servers,CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr
select operation target: select server 2
Site - CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr
Domaine - DC=em-corporation,DC=fr
Serveur - CN=MonDC-HS,CN=Servers,CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr
Objet DSA - CN=NTDS Settings,CN=MonDC-HS,CN=Servers,CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr
Nom d'hôte DNS - MonDC-HS.em-corporation.fr
Objet Ordinateur - CN=MonDC-HS,OU=Domain Controllers,DC=em-corporation,DC=fr
Pas de contexte de nommage en cours
select operation target: quit
metadata cleanup: remove selected server
Transfert ou prise des rôles FSMO depuis le serveur sélectionné.
Suppression des métadonnées FRS du serveur sélectionné
Recherche des membres FRS sous "CN=MonDC-HS,OU=Domain Controllers,DC=em-corporation,DC=fr".
Suppression du membre FRS "CN=MonDC-HS,CN=Domain System Volume (SYSVOL share),CN=File Replication Service,CN=System,DC=em-corporation,DC=fr".
Suppression de l'arborescence sous "CN=MonDC-HS,CN=Domain System Volume (SYSVOL share),CN=File Replication Service,CN=System,DC=em-corporation,DC=fr".
Suppression de l'arborescence sous "CN=MonDC-HS,OU=Domain Controllers,DC=em-corporation,DC=fr".
La tentative de suppression des paramètres FRS sur CN=MonDC-HS,CN=Servers,CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr a échoué.
Raison : "Élément introuvable.".
Le nettoyage des métadonnées continue.
"CN=MonDC-HS,CN=Servers,CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr" supprimé du serveur "MonDCQuiFonctionne"
metadata cleanup: quit
ntdsutil: quit
Déconnexion de MonDCQuiFonctionne...

Une fois ceci fait il ne reste plus qu’à supprimer le serveur au niveau de la console « Sites et services Active Directory » et de supprimer ses enregistrements DNS.

(suite…)

[Active Directory] Saisir des rôles FSMO

Lorsqu’un DC hébergeant des rôles FSMO devient HS, la seule solution concernant les rôles FSMO est de les saisir (seize en anglais) car le transfert est impossible.

Il faut alors utiliser NTDSUTIL pour se connecter au serveur qui va recevoir les rôles FSMO (avec le compte administrateur, nécessaire pour récupérer le rôle schéma master) :

C:\Documents and Settings\Administrateur>ntdsutil
ntdsutil: roles
fsmo maintenance: connections
server connections: connect to server MonDCQuiFonctionne
Liaison à MonDCQuiFonctionne...
Connecté à MonDCQuiFonctionne en utilisant les informations d'identification d'un
utilisateur connecté localement.
server connections: q

Une fois en « fsmo maintenance » il suffit de saisir les rôles un par un :

fsmo maintenance: Seize infrastructure master
Tentative de transfert sûr de infrastructure FSMO avant la cessation.
Erreur ldap_modify_sW 0x34(52 (Non disponible).
Le message d'erreur étendue Ldap est 000020AF: SvcErr: DSID-03210333, problem 5002 (UNAVAILABLE), data 1722
L'erreur Win32 renvoyée est 0x20af(L'opération FSMO demandée a échoué. Le propriétaire FMSO actuel n'a pas pu être contacté.)
)
Selon le code d'erreur, ceci peut indiquer une erreur Ldap, de connexion ou de transfert de rôle.
Le transfert de infrastructure FSMO a échoué, cessation en cours...
Le serveur « MonDCQuiFonctionne » est informé de 5 rôles
Schéma - CN=NTDS Settings,CN=MonDC-HS,CN=Servers,CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr
Maître d'attribution de noms - CN=NTDS Settings,CN=MonDC-HS,CN=Servers,CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr
PDC - CN=NTDS Settings,CN=MonDC-HS,CN=Servers,CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr
RID - CN=NTDS Settings,CN=MonDC-HS,CN=Servers,CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr
Infrastructure - CN=NTDS Settings,CN=MonDCQuiFonctionne,CN=Servers,CN=Premier-Site-par-defaut,CN=Sites,CN=Configuration,DC=em-corporation,DC=fr

fsmo maintenance: Seize naming master
[...]

fsmo maintenance: Seize PDC
[...]

fsmo maintenance: Seize RID master
[...]

fsmo maintenance: Seize schema master
[...]

Une fois les cinq rôles récupérer il suffit de quitter :

fsmo maintenance: quit

Le serveur spécifié lors de la connexion dispose maintenant des rôles FSMO saisis.

[Active Directory] Ajout de stations de travail au domaine

Par défaut tous les utilisateurs du domaine (groupe utilisateurs authentifiés) ont la possibilité d’intégrer 10 ordinateurs  au domaine.

Pour mettre en place une politique plus restrictive il existe deux méthodes :

Restreindre le droit d’ajout

La configuration s’effectue sur la GPO de base des DC (Default Domain Controllers Policy) dans le menu :

Configuration ordinateur -> Stratégies -> Paramètres Windows -> Paramètres de sécurité -> Stratégies locales -> Attribution des droits utilisateurs -> Ajouter des stations de travail au domaine

Il suffit alors de choisir les groupes qui auront le droit d’intégrer des stations de travail au domaine:

Limiter le nombre d’ajouts

La configuration s’effectue via la console ADSI, dans les propriétés de la racine (via un clic droit) :

Il suffit alors de modifier la valeur de l’attribut « ms-DS-MachineAccountQuota » (le mettre à 0 si l’on ne souhaite pas que les utilisateurs puisse intégrer des postes de travail).

[Powershell] Liste des utilisateurs ne s’étant pas connectés au domaine depuis plus de 30 jours

# Nom : Comptes_inactifs.ps1
# Date : 17/02/2012
# Auteur : Johan
# Description : Liste les utilisateurs qui ne se sont pas connectés au domaine depuis
# plus de 30 jours et envoi le résultat par mail
# Commentaire : Exécution tous les 1er du mois

# Recherche dans l'OU souhaité tous les comptes utilisateurs
$ldapquery = [ADSI] 'LDAP://OU=Utilisateurs,DC=em-corporation,DC=fr'
$objrechercher = New-object system.directoryservices.directorysearcher($ldapQuery)
$objrechercher.filter ='(&(objectClass=person)(objectCategory=person))'
$boucle = $objrechercher.findall()

$liste=""

# Fonction Get-UTCAge permettant de transformer la valeur du lastlogon en date afin de calculer le nombre de jours depuis la dernière connexion
Function Get-UTCAge {
	Param([int64]$Last=0)
	if ($Last -eq 0) {
    }
    else
    {
	[datetime]$utc="1/1/1601"
	$i=$Last/864000000000
        $lastlogon = ($utc.adddays($i))
        $today=get-date
        $diff=($today)-($lastlogon)

        # Si l'utilisateur ne s'est pas connecté depuis au moins 30 jours on ajoute son nom à la liste
	if ($diff.Days -gt 30)
        {
	     write "$name`r"
        }
	}
} 

# Pour chaque utilisateur
foreach ($user in $boucle)
{
    # On vérifie qu'il possède une adresse email (permettant de différencier les comptes utilisateurs des comptes génériques ou applicatifs)
    if ($user.properties.mail)
    {
        # On récupère le nom et le lastlogon de l'utilisateur
        $name = $user.properties.name
        $last = $user.Properties.lastlogon

        $liste+=Get-UTCAge $user.properties.item("lastlogon")[0]
    }
}

# On prépare et on envoi le mail
$expediteur = "bob@em-corporation.fr"
$destinataire = " admin@em-corporation.fr"
$serveur = "@MTA"
$objet = "Active Directory - Utilisateurs inactifs"
$texte = "Bonjour,`r`rVoici la liste des utilisateurs ne s'étant pas connectés au domaine depuis plus de 30 jours :`r`r$liste`rCordialement`r--`rBob"

$message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte

$SMTPclient = new-object System.Net.Mail.SmtpClient $serveur
$SMTPclient.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials

$SMTPclient.Send($message)

[Debian] Transmettre les logs

Exemples pour transmettre les logs du serveur à un serveur tiers via rsyslog.

Transmettre tous les logs :

echo "*.* @IP:Port" >> /etc/rsyslog.conf && /etc/init.d/rsyslog restart

Transmettre seulement les logs contenu dans le mail.info :

echo "mail.info @IP:Port" >> /etc/rsyslog.conf && /etc/init.d/rsyslog restart