Archives pour mai, 2013

CentOS : authentification LDAP avec SSSD

Depuis la version 6, CentOS repose sur SSSD (System Security Services Daemon) pour son système d’authentification externe. Celui-ci remplace nss_ldap, pam_ldap et nslcd, devenus obsolètes et inopérationnels.

Les étapes qui suivent constituent un guide de mise en place rapide pour une authentification LDAP :

[root@vm-pmtac ~]# yum install sssd
[root@vm-pmtac ~]# authconfig --enablesssd --enablesssdauth --enablelocauthorize --update
[root@vm-pmtac ~]# nano /etc/sssd/sssd.conf
[domain/default]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldaps://ldap.domain.lu
ldap_default_bind_dn = uid=auth-account,ou=user,ou=built-in,dc=domain,dc=lu
ldap_default_authtok = secret
ldap_default_authtok_type = password
ldap_id_use_start_tls = False
ldap_tls_reqcert = never
ldap_search_base = dc=domain,dc=lu
cache_credentials = True
cache_sensitive = False
enumerate = True

[sssd]
services = nss, pam
config_file_version = 2
domains = default

[nss]
filter_users = root,ldap,named,avahi,haldaemon,dbus,radiusd,news,nscd

[pam]

[sudo]

[autofs]

[ssh]

[pac]

Dans le cas où nscd est utilisé, il est nécessaire de désactiver la mise en cache des mots de passe et groupes, étant donné que sssd effectue dèjà cette tâche :

[root@vm-pmtac ~]# nano /etc/nscd.conf
enable-cache            passwd          yes
enable-cache            group           yes

Reste à redémarrer le démon :

[root@vm-pmtac ~]# /etc/init.d/sssd restart

En cas d’échec d’authentification, il est préférable de le lancer en mode interactif :

[root@vm-pmtac ~]# /etc/init.d/sssd stop
[root@vm-pmtac ~]# sssd -i -d 7

Debian : mise en place d’IPMI

Voici les étapes nécessaires à une mise en place rapide d’IPMI sur un système Debian.

root@srv01:~# apt-get install ipmitool
root@srv01:~# lsmod | grep ipmi

Si les modules IPMI ne sont pas chargés, il faut le faire manuellement :

root@srv01:~# modprobe ipmi_si ipmi_devintf

Si le message d’erreur Error inserting ipmi_si: no such device survient, la carte réseau est tout simplement incompatible avec IPMI. Sinon, on peut remonter des infos pertinentes :

root@srv01:~# ipmitool chassis status
System Power         : on
Power Overload       : false
Power Interlock      : inactive
Main Power Fault     : false
Power Control Fault  : false
Power Restore Policy : previous
Last Power Event     :
Chassis Intrusion    : inactive
Front-Panel Lockout  : inactive
Drive Fault          : false
Cooling/Fan Fault    : false
Sleep Button Disable : not allowed
Diag Button Disable  : allowed
Reset Button Disable : allowed
Power Button Disable : allowed
Sleep Button Disabled: false
Diag Button Disabled : false
Reset Button Disabled: false
Power Button Disabled: false
root@srv01:~# ipmitool power status
Chassis Power is on
root@srv01:~# ipmitool sdr
Pwr Unit Status  | 0x00              | ok
Pwr Unit Redund  | 0x12              | ok
IPMI Watchdog    | 0x00              | ok
Physical Scrty   | 0x00              | ok
SMI Timeout      | 0x00              | ok
System Event Log | 0x00              | ok
System Event     | 0x00              | ok
BB +1.1V IOH     | 1.08 Volts        | ok
BB +1.1V P1 Vccp | 1.12 Volts        | ok
BB +1.1V P2 Vccp | 0.93 Volts        | ok
BB +1.5V P1 DDR3 | 1.51 Volts        | ok
BB +1.5V P2 DDR3 | 1.51 Volts        | ok
BB +1.8V AUX     | 1.77 Volts        | ok
BB +3.3V         | 3.28 Volts        | ok
BB +3.3V STBY    | 3.24 Volts        | ok
BB +3.3V Vbat    | 2.96 Volts        | ok
BB +5.0V         | 5.02 Volts        | ok
BB +5.0V STBY    | 4.89 Volts        | ok
BB +12.0V        | 11.94 Volts       | ok
BB +1.35v P1 MEM | disabled          | ns
BB +1.35v P2 MEM | disabled          | ns
Baseboard Temp   | 26 degrees C      | ok
Front Panel Temp | 22 degrees C      | ok
IOH Therm Margin | -45 degrees C     | ok
Mem P1 Thrm Mrgn | -46 degrees C     | ok
Mem P2 Thrm Mrgn | -47 degrees C     | ok
Processor 1 Fan  | 8000 RPM          | ok
Processor 1A Fan | 5568 RPM          | ok
Memory Fan 1     | 5632 RPM          | ok
Memory Fan 1R    | 7616 RPM          | ok
Processor 2 Fan  | 8000 RPM          | ok
Processor 2A Fan | 5504 RPM          | ok
Memory Fan 2     | 7808 RPM          | ok
Memory Fan 2R    | 5184 RPM          | ok
PS1 Status       | 0x01              | ok
PS2 Status       | 0x0b              | ok
PS1 Power In     | 84 Watts          | ok
PS2 Power In     | 0 Watts           | ok
PS1 Curr Out %   | 21 unspecified    | ok
PS2 Curr Out %   | 0 unspecified     | ok
PS1 Temperature  | 36 degrees C      | ok
PS2 Temperature  | 31 degrees C      | ok
P1 Status        | 0x80              | ok
P2 Status        | 0x80              | ok
P1 Therm Margin  | -68 degrees C     | ok
P2 Therm Margin  | -67 degrees C     | ok
P1 Therm Ctrl %  | 0 unspecified     | ok
P2 Therm Ctrl %  | 0 unspecified     | ok
P1 VRD Hot       | 0x00              | ok
P2 VRD Hot       | 0x00              | ok
CATERR           | 0x00              | ok
CPU Missing      | 0x00              | ok
IOH Therm Trip   | 0x00              | ok
NM Capabilities  | Not Readable      | ns

Une adresse IP peut en plus être attribue à la carte réseau pour permettre un management distant :

root@srv01:~# ipmitool lan set 1 ipaddr 172.16.0.1
root@srv01:~# ipmitool lan set 1 netmask 255.255.0.0
root@srv01:~# ipmitool lan set 1 defgw ipaddr 172.16.0.254
root@srv01:~# ipmitool lan set 1 access on
root@srv01:~# ipmitool user list
root@srv01:~# ipmitool user set password 2 secretpasswd

Depuis un autre poste , un reboot hard est possible par ces commandes :

manager@client:~$ ipmitool -H 172.16.0.1 -U root -P secretpasswd power off
manager@client:~$ ipmitool -H 172.16.0.1 -U root -P secretpasswd power on

Postfix : réécriture des entêtes mail

Je présente ici deux méthodes permettant de réécrire les entêtes d’un message électronique.

root@srv# apt-get install postfix-pcre

Avant filtrage externe

root@srv# nano /etc/postfix/main.cf
header_checks = pcre:/etc/postfix/header_checks.cf
root@srv# cat /etc/postfix/header_checks.cf
/^Subject:/ WARN
/^Subject: .*(@domain1|@domain2)\.(com|fr)/ DISCARD

Après filtrage externe

root@srv# nano /etc/postfix/master.cf
127.0.0.1:10025 inet n  -       n       -       -       smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_data_restrictions=reject_unauth_pipelining
    -o smtpd_end_of_data_restrictions=
    -o mynetworks=127.0.0.0/8
    -o strict_rfc821_envelopes=yes
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o receive_override_options=no_address_mappings,no_unknown_recipient_checks,no_milters
    -o cleanup_service_name=smtp-cleanup
    -o local_header_rewrite_clients=

smtp-cleanup   unix  n  -       n       -       0       cleanup
    -o header_checks=pcre:/etc/postfix/header_cleanup.cf
root@srv:# cat /etc/postfix/header_cleanup.cf
/^Received: from localhost \(localhost \[127\.0\.0\.1\]\)/ IGNORE
/^Received: (.*) \(Postfix\) (.*)/ REPLACE Received: ${1} ${2}
/^X-Originating-IP:/ IGNORE

Autofs : montage CIFS automatique

Le démon autofs assure le montage et le démontage automatique à la demande des systèmes de fichiers ce qui est particulièrement utile pour des partages réseaux comme CIFS.

Les paquets à installer sont les suivants :

root@muse:~# aptitude install autofs cifs-utils

Une nouvelle map doit être ajoutée pour les montages CIFS :

root@muse:~# nano /etc/auto.master
/mnt/net /etc/auto.cifs --ghost,--timeout=60

Les montages CIFS seront montés dans le répertoire racine /mnt/net. Ils sont à spécifier dans le fichier /etc/auto.cifs :

root@muse:~# nano /etc/auto.cifs
music -fstype=cifs,rw,uid=1000,gid=1000,credentials=/root/.credentials_openelec ://192.168.0.10/Music

Chaque ligne correspondant à un montage. Quelques explications :

  • music : nom du répertoire local du montage; il s’agit donc ici de /mnt/net/music
  • rw : montage en lecture et écriture
  • uid=1000,gid=1000 : ID de l’utilisateur local propriétaire des fichiers
  • credentials : fichier contenant les informations d’authentification
  • ://192.168.0.10/Music : IP/hôte du serveur CIFS et nom du partage

Remarque : ce fichier ne doit pas avoir les permissions d’exécution sinon autofs cherchera à l’exécuter au lieu de l’interpréter (ce qui empêchera le montage).

Les informations de connexion au serveur CIFS sont à stocker dans un fichier restreint à l’utilisateur root :

root@muse:~# nano /root/.credentials_openelec
username=openelec
password=openelec
domain=WORKGROUP
root@muse:~# chmod 600 /root/.credentials_openelec

Afin de valider cette configuration, il est préférable de tester autofs en premier lieu :

root@muse:~# automount -f -v -d

Le montage sera effectué au premier listage du répertoire :

root@muse:~# ls /mnt/net/music

Si tout est opérationnel, le démon peut alors être lancé en arrière-plan :

root@muse:~# /etc/init.d/autofs start

Pgina : authentification modulaire pour Windows

Pgina est un logiciel open-source d’authentification alternative pour systèmes Windows, permettant de remplacer le système d’authentification standard (comptes locaux et ActiveDirectory) par un système modulaire et extensible par plugins tels que LDAP et MySQL. Pour exemple, je l’ai installé cette semaine sur un serveur Windows 2012 distant afin de pouvoir nous identifier avec les comptes de notre serveur OpenLDAP interne. Bref, çà aide !

Swaks : le couteau suisse SMTP

Site web : http://www.jetmore.org/john/code/swaks/

Exemple de test en TLS :

boris.huisgen@vm-test:~$ swaks --server mail.hbis.fr --tls --from postmaster@hbis.fr --to postmaster@hbis.fr
=== Trying mail.hbis.fr:25...
=== Connected to mail.hbis.fr.
<-  220 mail.hbis.fr ESMTP
 -> EHLO vks10205.ip-37-59-126.eu
<-  250-mail.hbis.fr
<-  250-PIPELINING
<-  250-SIZE 20480000
<-  250-VRFY
<-  250-ETRN
<-  250-STARTTLS
<-  250-AUTH PLAIN
<-  250-ENHANCEDSTATUSCODES
<-  250-8BITMIME
<-  250 DSN
 -> STARTTLS
<-  220 2.0.0 Ready to start TLS
=== TLS started w/ cipher ECDHE-RSA-AES256-GCM-SHA384
=== TLS peer subject DN="/CN=www.hbis.fr"
 ~> EHLO vks10205.ip-37-59-126.eu
<~  250-mail.hbis.fr
<~  250-PIPELINING
<~  250-SIZE 20480000
<~  250-VRFY
<~  250-ETRN
<~  250-AUTH PLAIN
<~  250-ENHANCEDSTATUSCODES
<~  250-8BITMIME
<~  250 DSN
 ~> MAIL FROM:<postmaster@hbis.fr>
<~  250 2.1.0 Ok
 ~> RCPT TO:<postmaster@hbis.fr>
<~  250 2.1.5 Ok
 ~> DATA
<~  354 End data with <CR><LF>.<CR><LF>
 ~> Date: Fri, 24 May 2013 23:47:06 +0200
 ~> To: postmaster@hbis.fr
 ~> From: postmaster@hbis.fr
 ~> Subject: test Fri, 24 May 2013 23:47:06 +0200
 ~> X-Mailer: swaks v20120320.0 jetmore.org/john/code/swaks/
 ~>
 ~> This is a test mailing
 ~>
 ~> .
<~  250 2.0.0 Ok: queued as D9EE73B6004B
 ~> QUIT
<~  221 2.0.0 Bye
=== Connection closed with remote host.

DRBD : optimisation des performances I/O

Quelques pistes pour améliorer les performances I/O de DRBD dans le but d’augmenter le débit ou  diminuer la latence.

Optimisation du débit

  • Désactiver les protections d’intégrité

Dans le cas où un contrôleur disque avec BBU est utilisé, les protections d’intégrité internes de DRBD peuvent directement être désactivées. Ne pas le faire autrement !

resource data {
  disk {
    no-disk-barrier;
    no-disk-flushes;
    no-md-flushes;
    ...
 }
 ...
}

Pour les systèmes de fichiers ext3/4, les barrières d’écriture seront aussi à désactiver dans /etc/fstab.

  • Augmenter la taille des buffers d’émission réseau

C’est une optimisation réseau basique. Depuis la version 8.2.7, l’auto-tuning est possible en fixant cette valeur à 0 mais son impact peut être négatif selon la charge I/O.

resource data {
  net {
    sndbuf-size 512k;
    ...
  }
  ...
}
  • Augmenter le nombre de buffers d’écriture disque

Cela permet d’optimiser les écritures disque effectuées sur le nœud secondaire. Les deux valeurs doivent être identiques.

resource data {
  net {
    max-buffers 8000;
    max-epoch-size 8000;
    ...
  }
  ...
}
  • Augmenter la taille de l’activity log

Une taille faible implique un grand nombre de mises à jour des méta-données. Dans le cas d’un environnement intensif en écriture, il vaut mieux l’augmenter pour ne pas pénaliser les performances d’écriture. Attention, le temps de resynchronisation sera impacté suite à un crash étant donné que plus de données seront à synchroniser. La valeur max possible est de 3833 pour la branche 8.3 et 6433 pour la 8.4.

resource data {
  syncer {
    al-extents 3833;
    ...
  }
  ...
}
  • Limiter / forcer le traitement des opérations I/O en attente

Selon le controleur disque utilisé, il convient de forcer le traitement des requêtes disque au plus tôt (peu de requêtes en attente) pour assurer les meilleures performances. Il convient donc de limiter cette valeur (valeur mini 16), ou l’augmenter (valeur max égale à max-buffers) si le contrôleur est plus performant avec un nombre de requêtes en attente plus important.

resource data {
  net {
    unplug-watermark 16;
    ...
  }
  ...
}

Optimisation de la latence

  • Utilisation du scheduler I/O deadline

Le scheduler deadline garantit le temps d’exécution des requêtes disque en imposant une durée d’échéance à chaque opération.

# echo deadline > /sys/block/sdc/queue/scheduler
# echo 0 > /sys/block/sdc/queue/iosched/front_merges
# echo 150 > /sys/block/sdc/queue/iosched/read_expire
# echo 1500 > /sys/block/sdc/queue/iosched/write_expire
  • Augmentation du MTU réseau

Augmenter le MTU permet de transférer de plus grosse trames réseaux (jumbo frames) et éviter ainsi la fragmentation des données.

# ip link set eth1 mtu 9000
  • Sélection de l’affinité CPU

Il est possible de dédier un ou plusieurs CPU pour l’utilisation de DRBD. Il faut veiller par la suite à ne pas les utiliser par un autre programme.

resource data {
  syncer {
    cpu-mask 1;
    ...
  }
  ...
}

Une fois les modifications effectuées, l’application peut-être effectuée à chaud :

# drbdadm adjust data

PAC Manager : outil de gestion centralisée SSH/VNC/RDP

Unbound : optimisation de la configuration

root@srv01:~# nano /etc/unbound/unbound.conf
server:
# use all CPUs
num-threads: <number of cores>

msg-cache-slabs: <2^num-threads>
rrset-cache-slabs: <2^num-threads>
infra-cache-slabs: <2^num-threads>
key-cache-slabs: <2^num-threads>

# more cache memory, rrset=msg*2
rrset-cache-size: 100m
msg-cache-size: 50m

# more outgoing connections
# depends on number of cores: 1024/cores - 50
outgoing-range: 950

# larger socket buffer
so-rcvbuf: 4m
so-sndbuf: 4m

MySQL : convertir toutes les tables en InnoDB

SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=InnoDB;')
FROM information_schema.tables
WHERE 1=1
    AND engine = 'MyISAM'
    AND table_schema NOT IN ('information_schema', 'mysql', 'performance_schema');
Haut de page