Gentoo sur Frozenkiwi

De FrozenWiki

Installation d'applications

Gestion de certificats OpenSSL

Gestion des Certificats OpenSSL

Système d'authentification via LDAP

Système d'authentification via LDAP

Optimisation des compilations de packages

Je recommande vivement à tous les administrateurs de serveurs Gentoo d'installer le package ccache et de l'ajouter à leur fichier make.conf dans la ligne FEATURES.

Cela aura pour effet d'accélerer de manière considérable les mises à jours de packages volumineux. En effet, une grande partie de ces mises à jours consiste en une recompilation presque inutile de code déjà compilé auparavant. Quand vous passez de PHP-4.1.1-r2 à PHP-4.1.1-r3 il n'y a pas d'énormes différences dans le code source...

Création automatique du home directory à la première consultation d'emails

Je ne vais pas décrire comment configurer PAM et pam_mkhomedir.so pour la création automatique du home directory des nouveaux utilisateurs lors de leur première connection SSH. Tout cela est très bien documenté dans plein de sites.

Il peut cependant être très utile de pouvoir aussi créer ces répertoires lors de la toute première connection des utilisateurs à leur email, surtout si on ne souhaite pas leur donner un accès SSH (ou si on ne souhaite même pas leur expliquer ce qu'est SSH).

Le module pam_mkhomedir ne peut être configuré que dans une ligne "session" dans le fichier PAM et nulle part ailleurs (ce n'est même pas la peine d'essayer de le mettre dans une section "account" ou "password").

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

Il faut donc trouver un moyen d'ouvrir une session PAM lorsque l'utilisateur consulte ses e-mails. La solution consiste à installer un serveur IMAP/POP3 tel que dovecot (en version 1.0 alpha5 ou supérieure) qui autorise l'ouverture d'une session temporaire à la connexion de chaque utilisateur.

Extrait du fichier de configuration dovecot.conf:

 # PAM authentication. Preferred nowadays by most systems.
 # Note that PAM can only be used to verify if user's password is correct,
 # so it can't be used as userdb. If you don't want to use a separate user
 # database (passwd usually), you can use static userdb.
 passdb pam {
   # [-session] [cache_key=<key>] [<service name>]
   #
   # -session makes Dovecot open and immediately close PAM session. Some
   # PAM plugins need this to work.
   #
   # cache_key can be used to enable authentication caching for PAM
   # (auth_cache_size also needs to be set). It isn't enabled by default
   # because PAM modules can do all kinds of checks besides checking password,
   # such as checking IP address. Dovecot can't know about these checks
   # without some help. cache_key is simply a list of variables (see
   # doc/variables.txt) which must match for the cached data to be used.
   # Here are some examples:
   #   %u - Username must match. Probably sufficient for most uses.
   #   %u%r - Username and remote IP address must match.
   #   %u%s - Username and service (ie. IMAP, POP3) must match.
   #
   # If service name is "*", it means the authenticating service name
   # is used, eg. pop3 or imap.
   args = "-session *"
 }

Et voilà !

La même chose semble possible avec d'autres serveurs, tels que uw-imap ou peut-être aussi courier-imap

Sécuriser le serveur Apache

Règle de base: Apache tourne sous l'utilisateur précisé dans la directive User. Cet utilisateur doit avoir le droit de :

  • Lire les fichiers : +r
  • Traverser les dossiers: +x (inclus tous les dossiers jusqu'au chemin des pages)
  • Exécuter les scripts CGI: +x

La règle sur frozenkiwi est de faire appartenir tous les fichiers et répertoires à root:apache. L'utilisateur apache n'aura donc que les droits du groupe (r-x), et non pas les droits de l'utilisateur (rwx). Les autres utilisateurs n'ont aucun droit (---). Seuls les quelques répertoires de fichiers temporaires, ou certains fichiers de configuration dynamiques doivent appartenir à apache:apache pour qu'il puisse les modifier.

Liens utiles:

Authentification de pages web par certificat client

La reconnaissance de certificats client par apache ne fonctionne pas si le dossier de certificats /etc/ssl/<CertificateAuthority>/certs contient des certificats corrompus, non valides, ou des liens symboliques qui ne pointent vers aucun fichier.

Symptômes

  • L'affichage d'une page web qui demande un certificat client (commande SSLVerifyClient require dans la configuration apache) s'affiche sans demander aucun certificat
  • ou alors le processus apache bloque sur la page et aucun contenu n'est retourné (apache tourne dans le vide la page se charge sans jamais aboutir).

Résolution

Il faut nettoyer le dossier de certificats de l'autorité de certification locale. Commencer par sauvegarder tous les certificats locaux créés sur ce système (ainsi que leurs liens symboliques du format 001122aa.0) , puis supprimer le contenu du dossier et réinstaller les certificats racines globaux. Sur gentoo, une commande

emerge ca-certificates

se charge de cette réinstallation. Enfin, il suffit de replacer les certificats locaux dans le dossier et relancer apache

Ajouter un nouvel utilisateur mail et ftp

  1. Ouvrir http://ldap.frozenkiwi.net/
  2. Créer un nouveau User Account
    • Choisir un mot de passe encrypté en MD5
    • Choisir le GID users
    • Choisir le shell /bin/false
  3. Quand l'utilisateur est créé, ajouter un attribut mail à l'utilisateur

Ajouter l'utilisateur au groupe ou=Group, cn=users

Apres cela, l'utilisateur peut utiliser FTP, et les mails (via IMP par exemple). La premiere connexion aux mails créera le home directory. De même une connexion SSH créera le home directory mais sans autoriser un accès shell (à cause du shell mis par défaut à /bin/false).

Installer Mindterm

Télécharger la dernière version libre: http://www.appgate.com/products/80_MindTerm/110_MindTerm_Download/

Pour signer le package JAR:

  1. Installer le package java-devel
  2. Generer la clef
    keytool -alias keyname -genkey
  3. Signer l'archive
    jarsigner [cheming_vers_mindterm.jar] keyname

Autres infos sur : http://mindterm.appgate.com/pipermail/mindterm-users/2003q2/000770.html

Résolution de quelques problèmes courants

Table MYSQL corrompue

Si le message suivant apparait lors d'opérations sur la base, c'est que la table précisée est corrompue:

mysqldump: Got error: 1016: Can't open file: 'tx_realurl_errorlog.MYI' (errno: 145) when using LOCK TABLES

Il faut d'abord identifier dans quelle base se trouve cette table corrompue. Si plusieurs bases contiennent le même nom de table, il suffit de lancer la commande suivante pour afficher toutes les erreurs de toutes les bases:

mysqlcheck -u root -p -s --all-databases

Une fois la table "crashée" identifiée, il suffit d'aller dans phpMyAdmin et de réparer la table correspondante via la fonction "Réparer la table" dans la vue principale de la liste des tables.

Optimisation des tables MYSQL

La commande suivante permet d'optimiser les tables des bases de données, et permet aussi de migrer entre des tables InnoDB stockées dans un fichier partagé, ou des tables InnoDB stockées dans des fichiers indépendants, selon l'état de la valeur de configuration innodb_file_per_table [1] :

mysqlcheck --optimize --all-databases

Segmentation fault dans les logs apache

Un segfault dans ces logs peut avoir beaucoup de causes. Si Gallery G2 est installé, un bug d'apache peut créer ces erreurs. En résumé, apache/mod_php ne supporte pas bien la commande PHP apache_setenv sur no-gzip. La solution est d'ajouter la ligne suivant" au fichier config.php de toutes les installations de gallery G2 sur le serveur:

$gallery->setConfig('apacheSetenvBroken', 1);

Références:

Services

Subversion

Très bien documenté ici : http://gentoo-wiki.com/HOWTO_Subversion

TorrentFlux

Correction d'un bug dans la version 2.3 (torrent failing immediately):

http://tf.ihatemyisp.net/forums/linux-installations-support/(tf-2-3-debian)-after-torrent-starts-it-fails-directly/0/

This is a TF 2.3 bug. You can fix by editing the index.php file on line 254:

Find the following:

           $command .= " ".escapeshellarg($cfg["cmd_options"])." > /dev/null &";

And change it to:

           $command .= " ".$cfg["cmd_options"]." > /dev/null &";

Gestion des disques et volumes

Créer un nouveau disque RAID-1 avec 1 seul disque (en prévision d'ajout d'un second):

mdadm --create /dev/md0 -l raid1 -n 2 /dev/disk1 missing

Créer un nouveau disque RAID-1 avec 2 disques:

mdadm --create /dev/md0 -l raid1 -n 2 /dev/disk1 /dev/disk2

Supprimer un disque d'un groupe RAID-1

mdadm -f /dev/md0 /dev/disk2
mdadm -r /dev/md0 /dev/disk2

Ajouter un nouveau disque à un groupe RAID-1:

mdadm -a /dev/md0 /dev/disk3

Afficher les infos des disques à ajouter à /etc/mdadm.conf

mdadm --detail -scan

Ajouter une partition de boot aux 2 disques d'un groupe RAID-1. Pour chaque disque effectuer:

grub
> device (hd0) /dev/sda
> root (hd0,0)
> setup (hd0)

Déplacer un LV vers un autre VG

2 possibilités pour déplacer un LV (logical volume) vers un autre VG (volume group).

OPTION1.

  1. Assembler les VG avec "vgextend"
  2. Déplacer les LV avec "pvmove -n"
  3. Séparer les VG avec "vgsplit"

OPTION2.

Utiliser une copie brute de disque à disque d'un snapshot LVM:

lvcreate --snapshot --name <the-name-of-the-snapshot> --size <the size> /dev/volume-group/logical-volume
lvcreate --name <logical-volume-name> --size <size> the-new-volume-group-name
dd if=/dev/volume-group/snapshot-name of=/dev/new-volume-group/new-logical-volume

Référence: http://askubuntu.com/questions/90940/how-to-move-copy-logical-volume-lv-to-another-volume-group-vg

Partitions de 3To

Créer une partition avec partes

parted /dev/sde

Ensuite créer la partition GPT

(parted) mklabel gpt                                                      
Warning: The existing disk label on /dev/sde will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes

Créer la partition de 3Tb

(parted) unit TB
(parted) mkpart primary 0 0
(parted) print
Model: ATA ST3000DM001-1CH1 (scsi)
Disk /dev/sde: 3.00TB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      0.00TB  0.00TB  0.00TB               primary

Sauvegarder et quitter

(parted) quit