Nagios: Superviser les comptes Active Directory

L’objectif de ce plugin pour Nagios est de superviser l’état des comptes AD (oui, je ne fais pas que du SCOM malgré un ouvrage ENI dessus!)

J’utilise l’agent nsclient++ sur les serveurs afin de pouvoir exécuter des scripts PowerShell entre autre. On a donc:

Nagios => check_nrpe => script powershell => retour nagios

Je m’appui sur le module PowerShell Standard ActiveDirectory. Cela fonctionne également sur les serveurs Core.

La supervision peut porter sur:

  • Account Disabled
  • Account Expired
  • Account Expiring
  • Account Inactive
  • Locked Out
  • Password Expired
  • Password Never Expires

La sortie fournie les données pour avoir un graphe (performance data)

Configuration testée

Linux:

  • Centos 6.4 x64
  • Nagios 3.4.4
  • check_nrpe 2.13
  • Centreon 2.4.2

Active Directory:

  • Windows Server 2008 R2 / Windows Server 2012
  • nsclient++ 0.4.1 x64
  • Serveurs Core et normaux

Arguments du script

  • action (LockedOut par défaut)
  • searchBase (tout le domaine par défaut)
  • seachScope (récursif par défaut)
  • maxWarn (avertissement si supérieur)
  • maxCrit (Critique si supérieur)

action peut être:
AccountDisabled,AccountExpired,AccountExpiring,AccountInactive,LockedOut,PasswordExpired,PasswordNeverExpires
LockedOut par défaut

searchBase peut être:
dc=mydomain,dc=com / ou=my users,dc=mydomain,dc=com
tout le domaine par défaut

seachScope peut être:
Base,OneLevel,Subtree
Subtree par défaut

maxWarn and maxCrit doivent être des entiers

Exemples d’utilisation

Exemple en exécution directe PowerShell:

PS C:Program FilesNSClient++scripts> . .lotp_check_ad_accounts.ps1 AccountInactive "dc=mydomain,dc=com" subtree 5 10
CRITICAL: 216 AccountInactive|216;5;10
PS C:Program FilesNSClient++scripts>

Exécution NRPE:

[root~]# /usr/lib64/nagios/plugins/check_nrpe -H prd-dom-dc01 -n -c check_ad_account -a AccountInactive "dc=pmside,dc=net" subtree 5 10

CRITICAL: 216 AccountInactive|'AccountInactive'=216;5;10

[root~]#

Installation:

Sur les DC:

  • Activer l’exécution de scripts PowerShell non signés : Set-ExecutionPolicy RemoteSigned
  • copier le script dans C:Program FilesNSClient++scripts
  • Ajouter dans le fichier nsclient.ini:
    • [/settings/external scripts/wrapped scripts]
      check_ad_account=lotp_check_ad_accounts.ps1 $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$

Configuration:

Par exemple, sur Centreon, en ajoutant la commande:

$USER1$/check_nrpe -H $HOSTADDRESS$ -n -c check_ad_account -a $ARG1$ "$ARG2$" $ARG3$ $ARG4$ $ARG5$

Téléchargement

(enlever le .txt à la fin)

lotp_check_ad_accounts.ps1

Code source en direct si le téléchargement ne passe pas:

# ====================================================================
# Search in AD for lockedout account. To be used through NRPE / nsclient++
# Author: Mathieu Chateau - LOTP
# mail: mathieu.chateau@lotp.fr
# version 0.1
# ====================================================================#
# Require Set-ExecutionPolicy RemoteSigned.. or sign this script with your PKI 
#
# ============================================================
#
#  Do not change anything behind that line!
#
param 
(
    [string]$action="LockedOut",
    [string]$searchBase="",
    [string]$searchScope="Subtree",
    [int]$maxWarn=5,
    [int]$maxCrit=10
)

# check that powershell ActiveDirectory module is present

if(Get-Module-Name "ActiveDirectory" -ListAvailable)
{
    try
    {
        Import-Module-Name ActiveDirectory
    }
    catch
    {
        Write-Host "CRITICAL: Missing PowerShell ActiveDirectory module"
        exit 2
    }
}
else
{
    Write-Host "CRITICAL: Missing PowerShell ActiveDirectory module"
    exit 2
}

# check params if provided

if($action -notmatch "^(AccountDisabled|AccountExpired|AccountExpiring|AccountInactive|LockedOut|PasswordExpired|PasswordNeverExpires)$")
{
    Write-Hos t"CRITICAL: action parameter can only be AccountDisabled,AccountExpired,AccountExpiring,AccountInactive,LockedOut,PasswordExpired,PasswordNeverExpires. Provided $action"
    exit 2
}
if($searchScope -notmatch "^(Base|OneLevel|Subtree)$")
{
    Write-Host "CRITICAL: searchScope parameter can only be Base,OneLevel,Subtree. Provided $searchScope"
    exit 2
}
if(($searchBase -ne "") -and $searchBase -ne ((Get-ADDomain).DistinguishedName))
{
    $search=Get-ADObject -Filter 'ObjectClass -eq "OrganizationalUnit" -and DistinguishedName -eq $searchBase'

if ($search.Count -ne 1)
    {
        Write-Host"CRITICAL: SearchBase not found or duplicate. Provided $searchBase"
        exit 2
    }
}
else
{
    $searchBase=(Get-ADDomain).DistinguishedName
}

$command="Search-ADAccount -"+$action+" -SearchBase '"+$searchBase+"' -SearchScope "+$searchScope

$result=invoke-expression $command

if($result.Count -gt $maxCrit)
{
    $state="CRITICAL"
    $exitcode=2
}
elseif($result.Count -gt $maxWarn)
{
    $state="WARNING"
$exitcode=1
}
else
{
    $state="OK"
$exitcode=0
}

$output=$state+": "+$result.Count+""+$action+"|"+$action+"="+$result.Count+";"+$maxWarn+";"+$maxCrit

Write-Host $output
exit $exitcode

Windows Server 2008 R2 – Administration avancée est sorti!

La nouvelle version du livre pour Windows Server 2008 R2 est disponible chez ENI, toujours à la fois en livre papier et numérique

Il s’applique toujours à la version précédente, car on a spécifié quand c’est R2 seulement. Il inclut également un nouveau chapitre dédié à la haute disponibilité

Livre: Confessions of a public speaker

J’ai découvert ce livre via le blog sqlblog. Il est anglais mais avec des termes accessible. Pour une fois, ce n’est pas un livre sur l’informatique, bien que l’auteur ait travaillé chez Microsoft et rencontré Bill Gates dans l’ascenseur!

Il explique de façon vraiment clair et marrante les travers lorsque l’on parle en public, et propose des solutions qui ont fonctionnées pour l’auteur.

Je l’ai pris chez O’Reilly directement, car ils le proposent en PDF électronique sans protection (19,99$). Idéal pour un stockage dans mon evernote.

L’auteur n’est pas avare en ressources à travers son site http://www.scottberkun.com

Confessions of a public speaker

Petit outil sympa

Si vous avez comme moi beaucoup d’applications sur votre PC, Update checker est fait pour vous ! Ce petit freeware scan la machine et vous dit les logiciels pour lesquelles une nouvelle version existe, en indiquant votre version versus la nouvelle.

Le tout avec le lien à droite pour télécharger directement!

image

Pour le download, c’est par ici:

http://www.filehippo.com/updatechecker/

Masterisation de serveurs: Dell OpenManage Deployment Toolkit

Dell propose une solution gratuite de masterisation de serveurs basée sur WinPE ou Linux au choix

L’outil ne paye pas de mine à premier abord (que des .exe et bat, pas d’interface graphique accueillante).

Cependant, tout le nécessaire est là pour:

  • Déployer un windows de façon automatisée (y compris Windows 2008)
  • Ajouter des pilotes, notamment de stockage de masse
  • Injecter des pilotes pour un déploiement sur du matériel différent.

Documentation (User guide): http://support.dell.com/support/edocs/software/dtk/

Téléchargement de Dell OpenManage Deployment Toolkit:

http://support.dell.com/support/downloads/download.aspx?c=us&l=en&s=gen&releaseid=R182074&SystemID=PWE_M1000E&servicetag=&os=WNET&osl=en&deviceid=4450&devlib=0&typecnt=0&vercnt=2&catid=-1&impid=-1&formatcnt=2&libid=36&fileid=248296

Gérer les GPO depuis un VISTA SP1

Si vous souhaitez gérer vos GPO depuis un PC sous Vista SP1, je vous recommande d’utiliser le pack RSAT de Microsoft:

Microsoft Remote Server Administration Tools for Windows Vista (KB941314)

Ce pack est initiallement prévu pour gérer du Windows 2008, mais cela fonctionne avec du 2003 aussi 🙂

Une fois installé, il faut activer les features: