Archives de catégorie : Active Directory

OCS Inventory over AD

Authentification via Active Directory

Pré-requis

  • Un groupe d'administration ocs_admins, un ou plusieurs utilisateurs membres du groupe.
  • Un compte dédié pour se connecter à l'annuaire Active Directory, ex : ocs-bind avec un mot de passe PasswOOrd
  • Installation du module php5-ldap
apt-get install php5-ldap

Configuration

  • Se rendre dans le menu Configuration / Configuration LDAP et compléter les champs suivants :
CONEX_LDAP_SERVEUR dc.domain.tld
CONEX_ROOT_DN ocs-bind@domain.tld
CONEX_ROOT_PW PasswOOrd
CONEX_LDAP_PORT 389
CONEX_DN_BASE_LDAP dc=domain,dc=tld
CONEX_LOGIN_FIELD sAMAccountName
CONEX_LDAP_PROTOCOL_VERSION 3
CONEX_LDAP_CHECK_FIELD1_NAME member
CONEX_LDAP_CHECK_FIELD1_VALUE ocs_admins
CONEX_LDAP_CHECK_FIELD1_ROLE Super administrateurs
  • Éditer ensuite les fichiers aut.php et identity.php pour modifier le type de connexion et la priorité :
vi /usr/share/ocsinventory-reports/ocsreports/backend/AUTH/auth.php

// $list_methode=array(0=>"local.php");
// $list_methode=array(0=>"ldap.php");
$list_methode=array(0=>"ldap.php",1=>"local.php");
vi /usr/share/ocsinventory-reports/ocsreports/backend/identity/identity.php

//$list_methode=array(0=>"local.php");
//$list_methode=array(0=>"ldap.php");
$list_methode=array(0=>"ldap.php",1=>"local.php");
  • Si tout se passe bien, les utilisateurs contenus dans le groupe ocs_admins peuvent désormais se connecter et administrer OCS

Sources

Apache SSO over AD

Pré-requis

  • Une installation fraiche d'Ubuntu 14.04
  • Une entrée directe et inverse dans votre DNS d'un Virtual Host (ex: test.domain.tld)
  • Un environnement Active Directory fonctionnel
    • Un utilisateur avec le nom équivalent au Virtual Host que l'on souhaite déployer (ex: utilisateur test pour le vhost test.domain.tld)
    • Un poste et un utilisateur membres du domaine

Préparation

Active Directory

  • Depuis un DC, créer un utilisateur un utilisateur avec le nom équivalent au Virtual Host que l'on souhaite déployer (ex: utilisateur test pour le VHost test.domain.tld)
  • Lancer une console MSDOS :
ktpass -princ HTTP/test.domain.tld@DOMAIN.TLD -mapuser test@DOMAIN.TLD -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -pass MotDePasse -out c:test.keytab
  • Une fois créé, transférer le fichier sur le serveur Web, ex : /home/user.

Serveur Web

  • Avant de se lancer dans les installations, s'assurer que le serveur Web est bien paramétrée et référencée dans le DNS :
root@test:/home/user# hostname
test.domain.tld
  • Tester la recherche directe :
nslookup test
Server:         192.168.0.1
Address:        192.168.0.2#53

Name:   test.domain.tld
Address: 192.168.0.10
  • La recherche inversée
nslookup 192.168.0.10
Server:         192.168.0.1
Address:        192.168.0.2#53

10.0.168.192.in-addr.arpa      name = test.domain.tld.
  • Vérifier la résolution DNS :
cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.0.1
nameserver 192.168.0.2
search domain.tld

Installation

Winbind, Samba, Kerberos

  • On lance l'installation des paquets :
apt-get install libnss-winbind libpam-winbind ntp krb5-user samba smbclient winbind -y

Fichiers de configuration

nsswitch.conf

mv /etc/nsswitch.conf{,.ori}

cat >> /etc/nsswitch.conf << EOF
passwd:         compat winbind file
group:          compat winbind file
shadow:         compat winbind file

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis
EOF

krb5.conf

mv /etc/krb5.conf{,.ori}

cat >> /etc/krb5.conf << EOF
[libdefaults]
ticket_lifetime = 24h
default_realm = DOMAIN.TLD
forwardable = true

[realms]
DOMAIN.TLD = {
kdc = 192.168.0.100
kdc = 192.168.0.110
default_domain = DOMAIN.TLD
}

[domain_realm]
.domain.tld = DOMAIN.TLD
domain.tld = DOMAIN.TLD

[kdc]
profile = /etc/krb5kdc/kdc.conf

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

[logging]
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmin.log
default = FILE:/var/log/krb5lib.log
EOF

smb.conf

mv /etc/samba/smb.conf{,.ori}

cat >> /etc/samba/smb.conf << EOF
[global]
workgroup = DOMAIN
server string = Samba Server Version %v
security = ads
realm = DOMAIN.TLD
domain master = no
local master = no
preferred master = no
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
use sendfile = true
# read raw = yes # Should provide a performance increase but currently untested, YMMV
# write raw = yes # Should provide a performance increase but currently untested, YMMV

idmap config * : backend = tdb
idmap config * : range = 100000-299999
idmap config DOMAIN : backend = rid
idmap config DOMAIN : range = 10000-99999
winbind separator = +
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
winbind nested groups = yes
winbind refresh tickets = yes
template homedir = /home/%D/%U
template shell = /bin/bash

client use spnego = yes
client ntlmv2 auth = yes
encrypt passwords = yes
restrict anonymous = 2
log file = /var/log/samba/log.%m
max log size = 50
EOF

Mise au domaine

Tests préalables

  • Avant d'inscrire le serveur Web dans le domaine, s'assurer que la configuration Kerberos est fonctionnelle :
kinit ad_user@DOMAIN.TLD
Password for ad_user@DOMAIN.TLD:
  • On valide l'obtention du ticket :
root@test:/home/user# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: ad_user@DOMAIN.TLD

Valid starting       Expires              Service principal
02/10/2015 10:46:18  02/10/2015 20:46:18  krbtgt/DOMAIN.TLD@DOMAIN.TLD
        renew until 03/10/2015 10:46:15
  • Si la commande klist renvoie un ticket, on peut alors intégrer la machine au domaine :
net ads join -U Administrateur
Enter Administrateur's password:
Using short domain name -- DOMAIN
Joined 'TEST' to dns domain 'domain.tld'
DNS Update for test.domain.tld failed: ERROR_DNS_GSS_ERROR
DNS update failed: NT_STATUS_UNSUCCESSFUL
  • Les deux messages liés à la mise à jour DNS ne sont pas bloquant et une fois intégré au domaine il faut redémarrer.

Vérifications

  • Vérifier que les méthodes d'authentification sont bien enregsitrées :
pam-auth-update

[*] Unix authentication
[*] Winbind NT/Active Directory authentication
[*] Mount volumes for user
[*] Register user sessions in the systemd control group hierarchy
[*] Inheritable Capabilities Management
  • Vérifier que winbind renvoi bien les utilisateurs et groupes depuis Active Direcory :
wbinfo -u && wbinfo -g
  • Idem avec la commande getent :
getent passwd | more && getent group | more

Apache

  • Installation d'Apache2, MySQL et PHP :
apt-get update; apt-get upgrade -y; apt-get install apache2 apache2-utils openssl openssl-blacklist openssl-blacklist-extra mysql-server php5 libapache2-mod-php5 php5-mysql
  • Ajouter les paquets suivants :
apt-get install apache2-mpm-prefork libapache2-mod-auth-kerb

VHost

  • On crée le fichier de configuration en référence à notre Virtual Host :
vi /etc/apache2/sites-available/test.conf

<VirtualHost 192.168.0.10:80>

        ServerName      test
        Redirect        / https://test
        ErrorLog        /var/log/apache2/test.log
        CustomLog       /var/log/apache2/test.log combined

</VirtualHost>

<VirtualHost 192.168.0.10:443>

        ServerName test
        DocumentRoot /var/www/test

        SSLEngine on
        SSLCertificateFile /etc/apache2/test.crt
        SSLCertificateKeyFile /etc/apache2/test.key

        ErrorLog        /var/log/apache2/test.log
        CustomLog       /var/log/apache2/test.log combined

<Directory /var/www/test>

        Options         Indexes FollowSymLinks MultiViews
        AllowOverride   none
        Order           allow,deny
        allow from      all

        AuthType                Kerberos
        AuthName                "Kerberos Login"
        KrbMethodNegotiate      On
        KrbMethodK5Passwd       On
        KrbAuthRealms           DOMAIN.TLD
        Krb5KeyTab              /etc/apache2/HTTP-test.keytab
        require                 valid-user

</Directory>
</VirtualHost>

Keytab

  • Copier le fichier HTTP-test.keytab et poser les droits pour l'utilisateur www-data :
mv /home/user/HTTP-test.keytab /etc/apache2/
chown www-data:www-data /etc/apache2/HTTP-test.keytab

Certificat

  • On génère un certificat auto-signé :
openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -out /etc/apache2/test.crt -keyout /etc/apache2/test.key

<note important>L'option Common Name doit reprendre le nom du VHost déclaré dans le DNS, ex test.domain.tld devient test </note>

Country Name (2 letter code) [AU]: TS
State or Province Name (full name) [Some-State]: test_land
Locality Name (eg, city) []: test_city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: domain.tld
Organizational Unit Name (eg, section) []: domain.tld
Common Name (e.g. server FQDN or YOUR name) []: test
Email Address []: webmaster@domain.tld
  • Activer les modules Apache et le site :
a2enmod {authnz_ldap,ssl}
a2ensite test.conf
service apache2 restart

Paramétrage du navigateur

Depuis Firefox

about:config
network.negotiate-auth.trusted-uris http://,https://
network.negotiate-auth.delegation-uris http://,https://

Depuis IE

FIXME

Validation

  • Pour valider le bon fonctionnement, créer un fichier index.php dans le répertoire racine du site :
vi /var/www/test/index.php

&lt;?php
echo &quot;&lt;h2&gt;Kerberos Auth&lt;/h2&gt;&quot;;
echo &quot;Auth type: &quot; . $_SERVER[&#039;AUTH_TYPE&#039;] . &quot;&lt;br /&gt;&quot;;
echo &quot;Remote user: &quot; . $_SERVER[&#039;REMOTE_USER&#039;] . &quot;&lt;br /&gt;&quot;; ?&gt;
Kerberos Auth
Auth type: Basic
Remote user: toto@DOMAIN.TLD

Services Web

GLPI

        &lt;Files &quot;plugin_fusioninventory.communication.php&quot;&gt;
          Satisfy Any
          Options FollowSymLinks
        &lt;/Files&gt;

Nagios

Dokuwiki

Sources

Active Directory – Installer un serveur d’impression

Pré-requis

Installation

Rôle

Add-WindowsFeature -Name Print-Services

Imprimante

  • Se munir des pilotes du matériel et les décompresser (ex: IMPHPCOLOR4700)
  • Démarrer / Menu d'administration / Gestion d'impression ou lancer la console printmanagement.msc
  • Serveur d'impression / srv-printer / Imprimantes / Clic droit : Ajouter une imprimante
Ajouter une imprimante TCP/IP… Suivant
Type de périphérique Périphérique TCP/IP
Nom d'hôte ou adresse IP imp-hp-color-4700
Nom du port Modifier si nécessaire
Détecter automatiquement le pilote d'imprimante… coché
Installer un nouveau pilote Suivant
Disque fourni… Chemin des drivers
Nom de l'imprimante imp-hp-color-4700
Partager cette imprimante coché
Nom du partage imp-hp-color-4700
Emplacement Bureau de John
  • Une fois terminée, lancer une page de test pour valider l'installation.

Déploiement

Répertorier dans l'imprimante dans l'annuaire

  • Faire un clic droit sur l'imprimante et sélectionner :
    • Répertorier dans l'annuaire, de ce fait elle sera visible par l'ensemble des utilisateurs.
    • Déployer avec la stratégie de groupe :
      • Rechercher l'OU où se trouve les utilisateurs concernés
      • Cocher le type d'objet Utilisateurs et/ou Ordinateurs

Autoriser les utilisateurs à installer une imprimante

  • Créer une GPO Utilisateur :
    • Configuration utilisateur
      • Stratégies
        • Modèles d’administration
          • Panneau de configuration/Imprimantes
            • Stratégie
            • Pointer et imprimer les packages – Serveurs approuvés Désactivé
    Configuration Ordinateur &gt; Stratégies &gt; Modèles d’administration &gt; Imprimantes &gt; Restrictions Pointer et Imprimer &gt; Désactivé
    Configuration Utilisateur &gt; Stratégies &gt; Modèles d’administration &gt; Panneau de configuration/Imprimantes &gt; Restrictions Pointer et Imprimer &gt; Désactivé

Automatiser l'installation par groupe d'utilisateurs

  • Créer une stratégie Utilisateur :
Préférences
Paramètres du Panneau de configuration
Imprimantes
Imprimante partagée (nom : serveurimprimante)
Général
Action Mettre à jour
Chemin d’accès du partage serveurimprimante
Définir cette imprimante comme imprimante par défaut Vrai
Uniquement en l’absence d’une imprimante locale Vrai
Port local
Commun
Interrompre le traitement des éléments sur cette extension si une erreur se produit sur cet élément Non
Exécuter dans le contexte de sécurité de l’utilisateur connecté (option de la stratégie utilisateur) Non
Supprimer cet élément lorsqu’il n’est plus appliqué Non
Appliquer une fois et ne pas réappliquer Non
bool AND
not 0
name TESTUsers_Printers
sid S-1-5-21-xxxxxxx-xxxxxx445-xxxxxx526-xxxx8966
userContext 1
primaryGroup 0
localGroup 0

Sources

PowerShell

Cacti 0.8.8b Installation Over Active Directory Ubuntu 14.04

Pré-requis

  • Un LAMP
  • Un domaine fonctionnel sous Active Directory

Installation

  • L'installation depuis les paquets permet un paramétrage assez complet (crontab, permissions, binaires…) :

apt-get install php5-ldap libphp-adodb librrd4 php5-cli php5-snmp rrdtool dbconfig-common cacti cacti-spine snmp-mibs-downloader snmp snmpd

  • Répondre aux questions posées :
Mise à jour du php.ini Ok
Server web apache2
Faut-il configurer la base de données de cacti avec dbconfig-common Oui
Mot de passe de l'administrateur de la base de données MySQL_Password
Mot de passe de connexion MySQL pour cacti Cacti_Password
Confirmation du mot de passe Cacti_Password
Configurer la base avec dbconfig-common Oui
  • Pas la peine de se connecter au serveur pour procéder à sa mise à jour.

Mise à jour

Site

cd /usr/src
wget http://www.cacti.net/downloads/cacti-0.8.8b.tar.gz
tar -xzf cacti-0.8.8b.tar.gz
mv /usr/share/cacti/site/ /usr/share/cacti/_site/
mv cacti-0.8.8b /usr/share/cacti/site/
chown www-data:www-data -R /usr/share/cacti/site/{rra,log}

VHost

  • Création du VirtualHost :

cat > /etc/apache2/sites-available/cacti.conf << EOF

<VirtualHost 192.168.1.10:80>

        ServerName              chronos
        ServerAlias             chronos
        Redirect                / https://chronos

        ErrorLog                /var/log/apache2/chronos.log
        CustomLog               /var/log/apache2/chronos.log combined

</VirtualHost>

Alias /cacti /usr/share/cacti/site

<DirectoryMatch /usr/share/cacti/site>
        Options +FollowSymLinks
        AllowOverride None
        order allow,deny
        allow from all

        AddType application/x-httpd-php .php

        php_flag magic_quotes_gpc Off
        php_flag short_open_tag On
        php_flag register_globals Off
        php_flag register_argc_argv On
        php_flag track_vars On
        # this setting is necessary for some locales
        php_value mbstring.func_overload 0
        php_value include_path .

        DirectoryIndex index.php
</DirectoryMatch>

<VirtualHost 192.168.1.10:443>

        ServerName              chronos
        DocumentRoot            /usr/share/cacti/site

        ErrorLog                /var/log/apache2/chronos.log
        CustomLog               /var/log/apache2/chronos.log combined

        Options                 +Indexes +SymlinksIfOwnerMatch
        IndexOptions            NameWidth=* +SuppressDescription

        SSLEngine               on
        SSLCertificateFile      /etc/apache2/ssl/chronos.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/chronos.key

</VirtualHost>
EOF

  • Supprimer les fichiers de configurations (obsolètes) :

a2ensite cacti.conf
rm /etc/apache2/conf-{enabled,available}/cacti.conf
service apache2 restart

Crontab

  • On vérifie que la tâche planifiée est créée pour lancer le script poller.php :

cat /etc/cron.d/cacti

  • On peut vérifier les détails dans le fichier de log :

tailf /var/log/cacti/poller-error.log

Base de données

  • Lancer les commandes pour la configuration de la base de données, saisie des mdp et comptes utilisés par MySQL :

read -e -p "Mot de passe du compte root pour MySQL : " mysqlpass
read -e -p "Nom de la base utilsee pour cacti : " -i "cacti" cactidb
read -e -p "Utilisateur de connexion a la base cacti : " cactiuser
read -e -p "Mot de passe du compte pour la base cacti : " cactipass

  • Sauvegarde, suppression et création de la BDD :

mysql -u root -e "create database _cacti" --password=$mysqlpass
mysqldump -u root --password=$mysqlpass cacti | mysql -u root --password=$mysqlpass -h localhost _cacti
mysql -u root -e "drop database cacti" --password=$mysqlpass
mysql -u root -e "create database cacti" --password=$mysqlpass
mysql cacti < /usr/share/cacti/site/cacti.sql --password=$mysqlpass
mysql -u root -e "GRANT ALL ON $cactidb.* TO $cactiuser@localhost IDENTIFIED BY '$cactipass'" --password=$mysqlpass

  • Modification du fichier de configuration :

sed -i "s,database_default = "cacti",database_default = "${cactidb}" /usr/share/cacti/site/include/config.php
sed -i "s,username = "cactiuser",username = "${cactiuser}",g' /usr/share/cacti/site/include/config.php
sed -i "s,cactiuser,${cactipass},g" /usr/share/cacti/site/include/config.php

PHP

  • Vérifier que les modules nécessaires sont activés :

for i in cgi cli apache2; do cat /etc/php5/$i/php.ini | more; done

SNMP

  • Pour rendre accessible les MIB au travers de SNMP :

cp  /etc/snmp/snmpd.conf{,.ori}
sed -i "s,agentAddress  udp:127.0.0.1:161,agentAddress  udp:0.0.0.0:161,g" /etc/snmp/snmpd.conf
sed -i 's,-V systemonly,,g' /etc/snmp/snmpd.conf
sed -i 's,export MIBS=,export MIBS=ALL,g' /etc/default/snmpd
/etc/init.d/snmpd restart

Connexion à l'interface Web

  • Se connecter à l'adresse http://chronos et répondre au questions :
Cacti Installation Guide Next
New Install Next
Check – OK Finish
Utilisateur admin
Mot de passe admin
  • A la première connexion, l'application force le changement du mot de passe, changer le. Si on attend un peu on peu voir 4 jolis graphes afficher les infos de notre serveur :o)

Settings

General


Path

  • Vérifier que tout est renseigné, en installation manuelle il manque le chemin de la police pour RRDTool Default Font
RRDTool Default Font /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf

Poller


Graph Export


Visual


Authentification

Authentification LDAP

  • Configuration / Settings / Authentication :
Active Directory
General
Authentication Method LDAP Authentification
Special Users
Guest User No User
User Template Admin
LDAP General Settings
Server ldap.domain.tld
Port Standard 389
Port SSL 636
Protocol Version Version3
Encryption None
Referrals Enable
Mode Specific Searching
Distinguished Name (DN) <username>@test.lan
Require Group Membership coché
LDAP Group Settings
Group Distingished Name (DN) cn=cacti-group,ou=Users,dc=test,dc=lan
Group Member Attribute member
Group Member Type Distingished Name
LDAP Specific Search Settings
Search Base ou=Users,dc=test,dc=lan
Search Filter (&(objectclass=user)(objectcategory=user)(userPrincipalName=<username>*))
Search Distingished Name (DN) bind-cacti@test.lan
Search Password Password
LDAP Error: Group DN could not be found to compare
LDAP Search Error: Unable to find users DN

Plugins

Installer et activer un plugin

  • Trois actions sont requises pour installer un plugin, le télécharger, le décompresser et l'activer.
  • Les deux premières se font en ligne de commande :

cd /usr/share/cacti/site/plugins
wget http://docs.cacti.net/_media/mon_plugin.2.0.3.tgz
tar -xzf mon_plugin.2.0.3.tgz

  • La dernière à partir de l'interface d'administration (Console) :
    • Se rendre sur l'onglet Console / Plugin Management
    1. Actions : Install plugin (flèche bleue)
    2. Actions : Enable plugin (flèche verte)

Discovery

  • En ligne de commande :

cd /usr/share/cacti/site/plugins
wget http://docs.cacti.net/_media/plugin:discovery-v1.5-1.tgz
mv plugin:discovery-v1.5-1.tgz discovery-v1.5-1.tgz
tar -xzf discovery-v1.5-1.tgz

  • Activer le plugin et le paramétrer :
    • Console / Settings / Misc
Subnet(s) to scan 192.168.1.0/24
DNS Server 192.168.1.1
Ping Method ICMP
SNMP Communities public
Poller Frequency Every 1 Hour
Start Time for Polling 10
Rerun Data Queries coché
Create Graphs coché
  • Vérifier les droits liés à l'utilisateur :
    • Console / User Management / compteLDAP :
    • Dans Realm Permissions, cocher View Host Auto-Discovery
  • L'onglet discover doit normalement apparaitre :o)

SSO

  • piste : auth_login.php cacti ldap sso

Sources

Debug

  • En cas de problème de connexion avec la base de données :

dpkg-reconfigure cacti

  • Pour info, le répertoire des logs se trouve dans :

/var/log/cacti/

Nagios 3.5 Quick Installation Over Active Directory Ubuntu 14.04

Pré requis

  • Un LAMP et quelques services réseaux à surveiller (SSH, DNS, DHCP, SMTP, IMAP,…)
  • Un compte Active Directory bind-nagios pour se connecter au domaine
  • Un groupe Nagios-Users dans l'OU Users et des membres dans ce groupe

Installation par les dépots

apt-get install nagios3 nagios3-doc nagios-plugins nagios-plugins-extra

Nom du serveur (SMTP) nagios.test.lan
Mot de passe du compte nagiosadmin password

Configuration

Nagios

  • On rationalise l'installation en renommant les fichiers de configuration et on déplace le répertoire plugins.

mv /etc/nagios3/conf.d/contacts_nagios2.cfg /etc/nagios3/conf.d/contacts.cfg
mv /etc/nagios3/conf.d/generic-host_nagios2.cfg /etc/nagios3/conf.d/host-generic.cfg
mv /etc/nagios3/conf.d/generic-service_nagios2.cfg /etc/nagios3/conf.d/services-generic.cfg
mv /etc/nagios3/conf.d/services_nagios2.cfg /etc/nagios3/conf.d/services.cfg
mv /etc/nagios3/conf.d/hostgroups_nagios2.cfg /etc/nagios3/conf.d/hostgroups.cfg
mv /etc/nagios3/conf.d/extinfo_nagios2.cfg /etc/nagios3/conf.d/extinfo.cfg
mv /etc/nagios3/conf.d/localhost_nagios2.cfg /etc/nagios3/conf.d/localhost.cfg
mv /etc/nagios3/conf.d/timeperiods_nagios2.cfg /etc/nagios3/conf.d/timeperiods.cfg

mv /etc/nagios-plugins/ /etc/nagios3/plugins
sed -i 's,cfg_dir=/etc/nagios-plugins/config,cfg_dir=/etc/nagios3/plugins/config,g' /etc/nagios3/nagios.cfg

  • Avec un VirtualHost et si l'on veut récupérer la feuille de style et les fonctionnalités CGI :

sed -i 's,url_html_path=/nagios3,url_html_path=/,g' /etc/nagios3/cgi.cfg

Apache2

  • Création du fichier de configuration pour le VirtualHost :

vi /etc/apache2/sites-available/nagios.conf

<VirtualHost 192.168.1.10:80>

        ServerName              nagios
        ServerAlias             nagios
        Redirect                / https://nagios

</VirtualHost>

<VirtualHost 192.168.1.10:443>
        ServerName              nagios
        DocumentRoot            /usr/share/nagios3/htdocs
        
        ErrorLog                /var/log/apache2/nagios.log
        CustomLog               /var/log/apache2/nagios.log combined

        Options                 +Indexes +SymlinksIfOwnerMatch
        IndexOptions            NameWidth=* +SuppressDescription

        SSLEngine               on
        SSLCertificateFile      /etc/apache2/ssl/nagios.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/nagios.key

        ScriptAlias             /nagios3/cgi-bin /usr/lib/cgi-bin/nagios3
        Alias                   /stylesheets /etc/nagios3/stylesheets

        <DirectoryMatch (/usr/share/nagios3/htdocs|/usr/lib/cgi-bin/nagios3|/etc/nagios3/stylesheets)>

                DirectoryIndex          index.php index.html
                AllowOverride           AuthConfig
                Order                   Allow,Deny
                Allow From              All

                AuthType Kerberos
                KrbMethodNegotiate      On
                KrbMethodK5Passwd       On
                KrbAuthRealms           TEST.LAN
                Krb5KeyTab              /etc/apache2/ssl/nagios.keytab
                require                 valid-user
                AuthLDAPURL             "ldap://dc1.test.lan:3268 dc2.test.lan:3268/dc=test,dc=lan?userPrincipalName?sub" NONE
                AuthLDAPBindDN          bind-nagios@test.lan
                AuthLDAPBindPassword    "Password"
                require ldap-group      CN=Nagios_Users,OU=Users,DC=test,DC=lan


        </DirectoryMatch>

        <Directory /usr/share/nagios3/htdocs>
                Options                 +ExecCGI
        </Directory>
</VirtualHost>

  • On supprime le fichier de configuration pour Apache :

rm /etc/nagios3/apache2.conf
rm /etc/apache2/conf-{available,enabled}/nagios3.conf

  • Activation du VHost et du module d'authentification :

a2enmod authnz_ldap
a2ensite nagios.conf

Accès à l'interface Web

  • Configuration de l'accès à l'interface Web et des CGI pour l'utilisateur du domaine :

read arg1 ; echo $arg1 ; sed -i "s,nagiosadmin,${arg1}.TEST.LAN,g" /etc/nagios3/cgi.cfg

for i in nagios3 apache2; do /etc/init.d/$i restart; done

Connexion

Logs

  • L'emplacement par défaut des logs de Nagios : log_file=/var/log/nagios3/nagios.log. Il est toujours possible de changer l'emplacement.

Sources

SSO Apache2 Active Direcotry PowerBroker Identity Services

PowerBroker Identity Services

Pré-requis

  • Une infrastructure DNS / Active Directory fonctionnelle FIXME
  • Un serveur LAMP

Installation

wget http://download.beyondtrust.com/PBISO/8.0.0.2016/linux.deb.x64/pbis-open-8.0.0.2016.linux.x86_64.deb.sh
chmod +x pbis-open-8.0.0.2016.linux.x86_64.deb.sh

  • Lancer le script et répondre 2 fois par yes :

./pbis-open-8.0.0.2016.linux.x86_64.deb.sh

/bin/find-user-by-name) (yes/no) yes
Would you like to install now? (yes/no) yes

Mise au domaine

domainjoin-cli join TEST.LAN administrateur

Joining to AD Domain:   TEST.LAN
With Computer DNS Name: chronos.TEST.LAN
administrateur@TEST.LAN's password:
...
Your system has been configured to authenticate to Active Directory for the first time.  It is recommended that you restart your system to ensure that all applications recognize the new settings.
SUCCESS

Keytab

Windows Server

  • Depuis la console de gestion des Utilisateurs AD, créer un utilisateur à l'identique du nom d'hôte qui sera utilisé, ex :
hôte utilisateur mot de passe
chronos chronos Passw00rd
  • Création du fichier :

ktpass -princ HTTP/chronos.test.lan@TEST.LAN -mapuser chronos@TEST.LAN -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -pass Passw00rd -out c:chronos.keytab

Serveur Web

  • Transférer le fichier sur le serveur :

apt-get install apache2-mpm-prefork libapache2-mod-auth-kerb
mkdir /etc/apache2/keytab
mv /share/chronos.keytab /etc/apache2/keytab/

  • On rajoute les directives au VHost :

vi /etc/apache2/sites-enabled/chronos.conf

<VirtualHost 192.168.1.10:80>
        ServerName              chronos.test.lan
        Redirect                / https://chronos.home.lan/
        ErrorLog                /var/log/apache2/server.log
        CustomLog               /var/log/apache2/server.log combined
</VirtualHost>

<VirtualHost 192.168.1.10:443>
        ServerName              chronos.test.lan
        DocumentRoot            /var/www
#       DocumentRoot            /usr/share/cacti/site
        ErrorLog                /var/log/apache2/chronos.log
        CustomLog               /var/log/apache2/chronos.log combined

        SSLEngine               on
        SSLCertificateFile      /etc/apache2/ssl/chronos.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/chronos.key

<directory "/var/www">
        AuthType                Kerberos
        AuthName                "Login"
        KrbServiceName          HTTP/chronos.test.lan@TEST.LAN
        KrbVerifyKDC            on
        KrbMethodNegotiate      on
        KrbMethodK5Passwd       on
        KrbAuthRealms           TEST.LAN
        Krb5KeyTab              /etc/apache2/keytab/chronos.keytab
        require                 valid-user
</directory>

</VirtualHost>

  • On redémarre le serveur :

service apache2 restart

Navigateurs

  • Sur Firefox, saisir about:config dans la barre d'adresse et modifier l'option network.negotiate-auth.delegation-uris
network.negotiate-auth.delegation-uris http://;https://
  • Se connecter avec un client Windows et apprécier le SSO :o)

GLPI 0.84.5 Over Active Direcory Ubuntu 14.04

  • Voici une installation de GLPI assez rapide, couplée à un annuaire Active Directory.

Pré requis

  • Des comptes utilisateurs disposants d'un attribut mail renseigné
  • Créer deux groupes sur votre AD : GLPI_Admins (Superviseurs) et GLPI_Tech (Techniciens).
  • Créer un compte avec mot de passe sur le domaine qui servira à se connecter sur les contrôleurs (ex: bind_glpi).
  • Un LAMP + les modules PHP LDAP & IMAP :

apt-get install php5-ldap php5-imap
/etc/init.d/apache2 restart

  • Une surprise lors de l'installation du paquet php5-imap, pas d'inscription du fichier .ini dans le répertoire de configuration. Si cela se produit :

echo "extension=imap.so" > /etc/php5/apache2/conf.d/10-imap.ini
service apache2 restart

Installation

  • Télécharger et décompresser les sources :

cd /usr/src/
wget https://forge.indepnet.net/attachments/download/1693/glpi-0.84.5.tar.gz
tar -xzf glpi-0.84.5.tar.gz
mv glpi /usr/share/glpi/
chown -R www-data: /usr/share/glpi/{files,config}

  • Créer et activer le VirtualHost :

vi /etc/apache2/sites-available/glpi.conf

<VirtualHost 192.168.1.10:80>
        ServerName              chronos.test.lan/
        Redirect                / https://chronos.test.lan/
</VirtualHost>

<VirtualHost 192.168.1.10:443>
        ServerName              chronos
        DocumentRoot            /usr/share/glpi
        ErrorLog                /var/log/apache2/glpi.log
        CustomLog               /var/log/apache2/glpi.log combined
        Loglevel                Debug
        SSLEngine               on
        SSLCertificateFile      /etc/apache2/ssl/chronos.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/chronos.key
</VirtualHost>

a2ensite glpi.conf
service apache2 restart

  • Création de la base de données avec accès à l'utilisateur glpi_user :

mysql -u root -p
create database glpi;
grant all on glpi.* to 'glpi_user'@'localhost' identified by 'glpi_password';
flush privileges;
exit;

  • Se rendre sur la page du serveur qui héberge GLPI et valider les différentes questions :
Select your language Français
Licence J'ai lu et j'accepte…
Installation ou mise à jour de GLPI Installer
Vérification de la compatibilité de votre environnement avec l'exécution de GLPI Tout doit être vert :o)
Configuration de la connexion à la base de données
Serveur MySQL 127.0.0.1
Utilisateur MySQL glpi_user
Mot de passe MySQL glpi_password
Veuillez sélectionner une base de données : glpi
L'installation est terminée

Paramétrage

  • Se connecter avec le compte glpi (mot de passe : glpi) et commencer le paramétrage :

Sécurité

  • Modifier les mots de passe des comptes par défaut et/ou les désactiver.
  • Garder le compte GLPI sous le coude pour déboguer les éventuelles pannes de connexions aux différents référentiels externes (LDAP/AD).
  • Supprimer le fichier d'installation :

rm /usr/share/glpi/install/install.php

Authentification

  • Configuration / Authentification / Annuaire LDAP / + :
  • Ajouter un serveur (bouton +) et saisir les informations suivant le référentiel utilisé :

Annuaire(s) AD/LDAP

  • Renseigner les informations de connexion des différents contrôleurs de domaine :
Préconfiguration Active Directory
Nom Annuaire AD
Serveur par défaut Oui
Serveur dc1.test.lan
Filtre de connexion (&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
Basedn ou=Users,dc=test,dc=lan
DN du compte (pour les connexions non anonymes) cn=bind_glpi,ou=Users,dc=test,dc=lan
Mot de passe du compte (pour les connexions non anonymes) : password Champ de l'identifiant : samaccountname
  • Une fois l'ajout effectué, le test de connexion doit être concluant :

Élément ajouté avec succès : dc1.test.lan
Test réussi

  • Si tout va bien, refaire la même opération pour le deuxième contrôleur de domaine, voir plus…

Gestion des groupes & des utilisateurs

Importer des utilisateurs

Manuellement

  • Administration / Utilisateurs / Liaison annuaire LDAP / Importation de nouveaux utilisateurs
    • Cliquer sur Rechercher et sélection les utilisateurs à importer : Action et Importer

Automatiquement

  • De loin la plus simple et facilement paramétrable dans une crontab, utiliser le script suivant :

php /usr/share/glpi/scripts/ldap_mass_sync.php -server_id=0 action=0

Option Action
id Choix de l'annuaire référencé dans GLPI
action Méthode de synchronisation : 0 = Import des nouveaux Utilisateurs, 1 = Synchronisation des Utilisateurs

Importer des groupes

  • Administration / Groupes / Liaison annuaire LDAP / Importation de nouveaux groupes :
  • Les groupes présents dans l'OU Utilisateurs doivent alors s'afficher, sélectionner GLPI_Admins et GLPI_Tech, cliquer sur Action et Importer
  • A ce niveau, un utilisateur du domaine doit pouvoir se connecter. Cependant les droits par défaut sont restreints au profil Post Only. Il est alors possible de jouer avec les groupes du domaine pour donner directement les droits sur l'outil.

Régles & habilitations

  • Une fois les groupes importés dans GLPI, on peut créer des règle afin de définir les différentes habilitations (profiles) pour chaque groupe, ainsi les utilisateurs membres d'un groupe AD hériterons automatiquement de leur(s) profile(s) :
  • Administration / règles / Règles d'affectation d'habilitations à un utilisateur / + :
    • Dans un premier temps, donner les droits aux utilisateurs du groupe pour administrer GLPI :
Nom GLPI_Admins Description
Opérateur logique et Actif Oui
Commentaires
  • On crée le critère et les actions qui vont avec :
Critères Groupe importé depuis un annuaire LDAP est GLPI_Admins
Action Actif Assigner Oui
Action Entité Assigner Root entity
Action Profils Assigner Super-Admin
Action Récursif Assigner Oui
  • On réitère avec le groupe GLPI_Tech pour le profil Technician
  • A la connexion, les utilisateurs membres du groupe GLPI_Admins héritent du profil Super-Admin et GLPI_Tech du profil Technician.
  • Si un compte est spécifié dans les deux, son profil par défaut sera Technician, il faudra juste sélectionner le bon profil depuis l'interface.

SSO

VirtualHost

  • A placer entre SSLCertificateKeyFile et </VirtualHost> dans le VHost :

vi /etc/apache2/sites-available/glpi.conf

        ...
        SSLCertificateKeyFile   /etc/apache2/ssl/chronos.key
        <Directory "/usr/share/glpi">

        AuthType                Kerberos
        KrbAuthRealms           HOME.LAN
        KrbServiceName          HTTP
        Krb5KeyTab              /etc/apache2/keytab/chronos.keytab
        KrbMethodNegotiate      On
        KrbMethodK5Passwd       On
        require                 valid-user

</Directory>
</VirtualHost>

  • Modifier les options d'authentification :
    • Configuration / Authentification /Autres
Autre authentification transmise dans la requête HTTP Activée
Champs de stockage de l'identifiant dans la requête HTTP REMOTE_USER
Supprimer le domaine des identifiants de la forme identifiant@domaine Oui

Sources

Pour aller plus loin

Horde 5.1.x Ubuntu 14.04

Pré-requis

Préparation

  • Installation des paquets :

apt-get update; apt-get upgrade -y; apt-get install apache2 apache2-utils openssl openssl-blacklist openssl-blacklist-extra mysql-server php5 libapache2-mod-php5 php5-mysql php-pear

  • Création du répertoire qui recevra Horde :

mkdir /usr/share/webmail
cd /usr/share/webmail

  • Création de la BDD :

mysql -u root -p

create database horde;
grant all on horde.* to 'horde'@'localhost' identified by 'password';
exit;

Installation

  • Désinstaller les versions précédentes :

pear uninstall horde/Horde_Role
pear uninstall horde/groupware

  • Mise à jour et téléchargement des paquets :

pear upgrade PEAR
pear channel-discover pear.horde.org
pear install horde/horde_role
pear run-scripts horde/horde_role
Filesystem location for the base Horde application : /usr/share/webmail
pear install -a -B horde/webmail

  • Lancement de la séquence d'installation :

webmail-install

  • Adapter les réponses suivant les besoins :
Installing Horde Groupware Webmail Edition
Configuring database settings
What database backend should we use?
Type your choice []: mysql
Username to connect to the database as* [] horde
Password to connect with password
How should we connect to the database?
Type your choice [unix]: tcp
Database server/host* [] 127.0.0.1
Port the DB is running on, if non-standard [3306]
Database name to use* [] horde
Internally used charset* [utf-8] Enter
Use SSL to connect to the server?
Type your choice [0]: Enter
Certification Authority to use for SSL connections [] Enter
Split reads to a different server?
Type your choice [false]: Enter
Writing main configuration file… done.
Creating and updating database tables…
Configuring administrator settings
Specify an existing mail user who you want to give administrator permissions (optional): toto
  • Permettre à l'utilisateur Apache d'écrire dans le dossier :

chown www-data: -R /usr/share/webmail

vi /etc/apache2/sites-available/webmail.conf

<VirtualHost 192.168.1.10:80>

        ServerName              webmail.test.lan
        DocumentRoot            /usr/share/webmail
        Loglevel                warn
        ErrorLog                /var/log/apache2/webmail.log
        CustomLog               /var/log/apache2/webmail.log combined
        # Prise en charge de l'ActiveSync
        Alias                   /Microsoft-Server-ActiveSync    /usr/share/webmail/rpc.php
</VirtualHost>

  • Prise en compte du VHosts et redémarrage :

a2ensite webmail.conf
service apache2 restart

Administration

  • Se connecter avec le login de messagerie (admin) sur la page : http://webmail.test.lan
  • Vérifier que l'accès aux mails depuis l'onglet Courrier

Méthode d'authentification

  • Avant toute chose, faire une copie du fichier de configuration. Même si Horde permet de retourner sur une configuration précédente, encore faut-il pouvoir s'y connecter >:(

cp /usr/share/webmail/config/conf.php{,.ori}

  • A ce stade, les utilisateurs identifiés à partir du serveur de messagerie peuvent se connecter sur Horde.

Activation de l'ActiveSync

/usr/share/webmail/config/conf.php

  • Supprimer la ligne :

$conf['activesync']['enabled'] = false;

  • Et remplacer par le code suivant :

vi /usr/share/webmail/config/conf.php

$conf['activesync']['enabled'] = true;
$conf['activesync']['emailsync'] = true;
$conf['activesync']['version'] = '14';
$conf['activesync']['autodiscovery'] = 'full';
$conf['activesync']['outlookdiscovery'] = false;
$conf['activesync']['logging']['type'] = 'horde';
$conf['activesync']['ping']['heartbeatmin'] = 60;
$conf['activesync']['ping']['heartbeatmax'] = 2700;
$conf['activesync']['ping']['heartbeatdefault'] = 480;
$conf['activesync']['ping']['deviceping'] = true;
$conf['activesync']['ping']['waitinterval'] = 15;

Paramétrage d'un compte sur Android

  • Depuis un smartphone Android, créer un compte Active Directory :
    • Paramètres / Comptes / Ajouter un compte / Microsfot Exchange Active Directory :
Adresse mail fd@test.lan
Domainenom utilisateur fd@test.lan
Mot de passe xxxxxxxxxxx
Serveur Exchange webmail.test.lan
Utiliser une connexion sécurisée (SSL) coché
Utiliser certif. client
  • Avec une application comme aCalendar+, faire des tests de synchronisation entre le terminal mobile et Horde

Sources

Pour aller plus loin

Active Directory Postfix Dovecot – Ubuntu 14.04 Trusty

Pré-requis

Installation

apt-get install postfix-ldap dovecot-ldap

groupadd virtual -g 5000
useradd -r -g virtual -G users -c "Virtual User" -u 5000 virtual
mkdir -p /home/virtual
chown -R virtual: /home/virtual/
chmod -R 770 /home/virtual

vi /etc/postfix/ldap-users.cf

server_host = AdresseIP_du_DC
search_base = dc=test,dc=lan
version = 3
search_base = dc=test,dc=lan

query_filter = (&(objectclass=person)(mail=%s))
result_attribute = samaccountname
result_format = %s/Maildir/

bind = yes
bind_dn = cn=bindaccount,ou=Techs,dc=test,dc=lan
bind_pw = P@ssw00rd

vi /etc/postfix/ldap-alias.cf


mv /etc/postfix/main.cf{,.local}
vi /etc/postfix/main.cf

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.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

myhostname = chronos
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = chronos
relayhost =
mynetworks = 127.0.0.0/8 192.168.1.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
home_mailbox = Maildir/

virtual_mailbox_domains = test.lan
virtual_mailbox_base = /home/virtual
virtual_mailbox_maps = ldap:/etc/postfix/ldap-users.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

queue_directory = /var/spool/postfix

cp /etc/postfix/master.cf{,.local}
vi /etc/postfix/master.cf

## Enable SMTP on port 587 only for authenticated/TLS clients
submission inet n       -       n       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

## Enable SMTP on port 465 only for authenticated/SSL clients
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

  • Tester le paramétrage avec un compte du domaine :

postmap -vq toto@test.lan ldap:/etc/postfix/ldap-users.cf

mv /etc/dovecot/dovecot.conf{,.local}
vi /etc/dovecot/dovecot.conf

protocols = imap
!include_try /usr/share/dovecot/protocols.d/*.protocol
listen = *, ::
dict {
}
!include conf.d/*.conf
!include_try local.conf

mv /etc/dovecot/conf.d/10-master.conf{,.local}
vi /etc/dovecot/conf.d/10-master.conf

service imap-login {
  inet_listener imap {
    #port = 143
  }
  inet_listener imaps {
    #port = 993
    #ssl = yes
  }

}

service pop3-login {
  inet_listener pop3 {
    #port = 110
  }
  inet_listener pop3s {
    #port = 995
    #ssl = yes
  }
}

service lmtp {
  unix_listener lmtp {
    #mode = 0666
  }

}

service imap {
  # Most of the memory goes to mmap()ing files. You may need to increase this
  # limit if you have huge mailboxes.
  #vsz_limit = $default_vsz_limit

  # Max. number of IMAP processes (connections)
  #process_limit = 1024
}

service pop3 {
  # Max. number of POP3 processes (connections)
  #process_limit = 1024
}

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}

service auth-worker {
}

service dict {
  unix_listener dict {
  }
}

mv /etc/dovecot/dovecot-ldap.conf.ext{,.local}
vi /etc/dovecot/dovecot-ldap.conf.ext

hosts = dc1.test.lan dc2.test.lan
base = dc=test.lan
ldap_version = 3
auth_bind = yes
auth_bind_userdn = TEST%n
pass_filter = (&(objectclass=person)(mail=%u))
user_filter = (&(objectClass=person)(mail=%u))
default_pass_scheme = CRYPT

mv /etc/dovecot/conf.d/auth-ldap.conf.ext{,.local}
vi /etc/dovecot/conf.d/auth-ldap.conf.ext

passdb {
  driver = ldap
  args = /etc/dovecot/dovecot-ldap.conf.ext
}
userdb {
  driver = ldap
  args = /etc/dovecot/dovecot-ldap.conf.ext
}
userdb {
  driver = static
  args = uid=5000 gid=5000 home=/home/virtual/%n/Maildir
}

mv /etc/dovecot/conf.d/10-auth.conf{,.local}
vi /etc/dovecot/conf.d/10-auth.conf

disable_plaintext_auth = no
auth_mechanisms = plain
!include auth-system.conf.ext
!include auth-ldap.conf.ext

mv /etc/dovecot/conf.d/10-mail.conf{,.local}
vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/home/virtual/%n/Maildir
namespace inbox {
  inbox = yes
}

Test

  • Redémarrage des services :

for serv in postfix dovecot; do /etc/init.d/$serv restart;done
tailf /var/log/mail.log