Modifications entre les versions 22 et 62 (s'étendant sur 40 versions)
Version 22 à la date du 2011-02-18 22:03:11
Taille: 11142
Commentaire: TOC
Version 62 à la date du 2015-09-21 19:04:20
Taille: 17568
Commentaire: précision importante pour le bon fonctionnement du reste
Texte supprimé. Texte ajouté.
Ligne 1: Ligne 1:
<<TableOfContents()>>
Cette page présente le modèle de serveur bureautique pour le déploiement du poste de travail AuF sous ''Ubuntu « Lucid » 10.04''.

||<#FF0000> '''ATTENTION :''' cette documentation est en cours de rédaction est n'est donc pas encore validée officiellement !!||
## page was copied from Projet/ModèleLucid/ServeurBureautique
||<tablestyle="float: right; margin: 0px; width: 40%;" style="border: 0px; font-size: 80%;"><<TableOfContents>>||

Cette page présente le modèle de serveur bureautique pour le déploiement du poste de travail AuF sous ''Ubuntu “Precise Pangolin” 12.04 LTS''.

||<#ff0000> /!\ '''ATTENTION :''' Cette page est en cours de rédaction et ne doit pas être pris comme modèle pour le moment. /!\ ||

## ||<#FFFF00> '''AVERTISSEMENT :''' cette documentation est encore incomplète mais néanmoins validée ; elle a déjà servi à installer de vrais serveurs en production.||
Ligne 8: Ligne 12:
 * processeur 64 bits (Intel Xeon ou AMD Opteron)
 * beaucoup de RAM (8 Go recommandés)
 * beaucoup d'espace disque, en double pour faire du RAID-1 (2 × 500 Go SATA, ou du SCSI si on est riche)
 * au minimum un processeur '''multi-cœurs 64 bits''' (un Intel Xeon est un très bon choix)
 * au minimum '''8 Gio de RAM''' (ne pas hésiter à monter à 16, 24 ou même 32 Gio)
 * au minimum '''2 disques SATA de 500 Gio''' (tous les disques seront en double pour faire '''systématiquement''' du RAID-1)
Ligne 14: Ligne 18:
 * /!\ aller dans le BIOS régler l'heure correcte, en UTC (!) ''(dans le doute sur l'heure précise, il veut mieux être en retard qu'en avance)''
 * installer une Debian ''Squeeze'' (ou adapter une Debian ''Lenny'' existante si on n'a pas d'autre choix dans l'immédiat)
 * organisation des disques : /!\ '''ces choix sont très discutables et seront probablement revus au fur et à mesure des retours d'expérience'''
  * une première partition primaire de 100 Mo (pour `/boot`) de type `RAID auto` sur chaque disque
  . {i} ''en principe ce n'est plus nécessaire avec ''Squeeze'' qui utilise `grub-pc` (GRUB 2) et est donc capable de démarrer directement sur un volume LVM, mais [[ProgFou|je]] n'ai pas encore testé cela, en particulier dans le cas d'un LVM au dessus d'un RAID qui posait officiellement problème autrefois, et ce n'est donc pas encore une solution validée''
  * le reste en partition(s) primaire(s) de type `RAID auto` sur chaque disque
  . (en découpant éventuellement par tranche de 250 Go, pour découper les re-synchronisation après ''crash'')
  * aller dans le menu RAID pour :
 * /!\ aller dans le BIOS régler l'heure correcte, '''en UTC''' (!) ''(dans le doute sur l'heure précise, il veut mieux être en retard qu'en avance)''
 * installer une Debian ''Wheezy'' (ou adapter une Debian ''Squeeze'' existante si on n'a pas d'autre choix dans l'immédiat), '''en français''' (choix `French`)
 * organisation des disques (partitionnement manuel) : /!\ '''ces choix sont toujours discutables et doivent être adaptés à la situation locale ; ce qui suit est une recommandation minimale à suivre'''
  * faire, sur chaque disque, une partition(s) primaire(s) de type `RAID auto` occupant tout l'espace disponible
  * aller dans le menu de configuration RAID pour :
Ligne 23: Ligne 24:
  * ne rien faire avec le premier volume RAID-1 (md0) car ce sera perdu (et donc à refaire) après la configuration LVM
  * déclarer les autres volumes RAID-1 (md1, md2, …) de type `Volume physique LVM`
  * aller dans le menu LVM pour :
   * joindre les volumes physique LVM dans un seul `Groupe de volumes`
   . (on recommande d'utiliser un nom de groupe de volumes unique entre tous les serveurs, par exemple `vn1nfs0`, ceci afin de pouvoir éventuellement déplacer ces disques dans un autre serveur plus tard sans avoir de conflit pour cause de noms de groupes de volumes identiques)
   * terminer
  * de retour au menu principal, sélectionner les périphériques RAID-1 pour en faire des partitions de type `Volume physique LVM`
  * aller dans le menu de configuration LVM pour :
   * créer un groupe de volume regroupant les volumes physiques LVM
   . (il est fortement recommandé d'utiliser un nom de groupe de volumes unique entre tous les serveurs, par exemple `vn1nfs0`, afin d'éviter des conflits de noms le jour où on voudra déplacer ces disques dans un autre serveur)
Ligne 29: Ligne 30:
    * un volume de nom `swap` d'une taille de 10 Go
    * un volume de nom `root` d'une taille de 1 Go
    * un volume de nom `var` d'une taille de 1 Go
    * un volume de nom `log` d'une taille de 1 Go
    * un volume de nom `tmp` d'une taille de 1 Go
    * un volume de nom `swap` d'une taille de 10 Go (le swap ne devrait pas être utilisé en temps normal, c'est une marge de garantie en cas de problème imprévu)
    * un volume de nom `root` d'une taille de 2 Go
    * un volume de nom `var` d'une taille de 2 Go
    * un volume de nom `log` d'une taille de 2 Go
    * un volume de nom `tmp` d'une taille de 2 Go
Ligne 35: Ligne 36:
  * déclarer le volume logique `swap` de type `swap`
  * déclarer le volume logique `root` de type `ext4` monté sur `/`
  * déclarer le volume logique `var` de type `ext4` monté sur `/var`
  * déclarer le volume logique `log` de type `ext4` monté sur `/var/log`
  * déclarer le volume logique `tmp` de type `ext4` monté sur `/tmp`
  * déclarer le volume logique `home` de type `ext4` monté sur `/home`
  * déclarer le premier volume RAID-1 (md0) de type `ext3` monté sur `/boot
`
 * choisir pour nom de machine `nfs` ''(non obligatoire, mais suggéré)''
   * terminer
  * de retour au menu principal, sélectionner chaque périphérique LVM un par un pour les affecter comme suit :
 
* déclarer le volume logique `swap` de type `swap`
   * déclarer le volume logique `root` de type `ext4` monté sur `/`
   * déclarer le volume logique `var` de type `ext4` monté sur `/var`
   * déclarer le volume logique `log` de type `ext4` monté sur `/var/log`
   * déclarer le volume logique `tmp` de type `ext4` monté sur `/tmp`
  * déclarer le volume logique `home` de type `ext4` monté sur `/home`
 * choisir pour nom de machine `nfs` ''(non obligatoire, mais suggéré, par contre un nom DNS `nfs` doit exister et pointer sur cette machine)''
Ligne 50: Ligne 52:
 * configurer l'environnement linguistique : ''(choisir `fr_FR.UTF-8`, ou autre locale encodée en `UTF-8`)'' {{{
aptitude install locales
}}}
 . {i} ''Dans le cas où les locales auraient déjà été installées, s'assurer de leur bonne configuration en lançant `dpkg-reconfigure locales`, c'est important.''
 * vérifier l'environnement linguistique : {{{
dpkg-reconfigure locales
}}}
 . /!\ '''cocher au minimum `fr_FR.UTF-8`'''
 . /!\ '''choisir obligatoirement un environnement UTF-8 par défaut'''
 * installation de quelques paquets indispensables/utiles : {{{
aptitude install --without-recommends less vim vim-tiny_ screen mtr-tiny dnsutils git
}}}
Ligne 57: Ligne 63:
 * installation de quelques autres paquets indispensables/utiles : {{{
aptitude install --without-recommends less vim ssh screen mtr-tiny

=== Mettre le sysadmin à l'aise ===

Voici quelques ajustements que [[ProgFou|je]] fais systématiquement sur les serveurs :
 * éditer `/etc/vim/vimrc.local` pour y mettre les lignes suivantes : {{{#!vim
syntax on
}}}
 * éditer `/root/.bashrc` pour y mettre les lignes suivantes : {{{#!shell
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias la='ls $LS_OPTIONS -la'
export GREP_OPTIONS='--color=auto'
}}}
 * éditer `/etc/gitconfig` pour y mettre les lignes suivantes : {{{#!ini
[color]
 ui = auto
Ligne 64: Ligne 86:
/etc/init.d/networking stop service networking stop
Ligne 72: Ligne 94:
 address 192.168.50.10  address 192.0.2.10
Ligne 74: Ligne 96:
 network 192.168.50.0
 broadcast 192.168.50.255
 gateway 192.168.50.1
 network 192.0.2.0
 broadcast 192.0.2.255
 gateway 192.0.2.1
Ligne 84: Ligne 106:
# ne pas utiliser cette forme pour un vrai serveur (a priori, toutes les conséquences ne sont pas encore connues)
#127.0.1.1 nfs.lucid.auf nfs
# ne pas utiliser cette forme (a priori, toutes les conséquences ne sont pas encore connues)
#127.0.1.1 nfs.precise nfs
Ligne 87: Ligne 109:
192.168.50.10 nfs.lucid.auf nfs 192.0.2.10 nfs.precise nfs
Ligne 90: Ligne 112:
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
::1 localhost ip6-localhost ip6-loopback
Ligne 97: Ligne 117:
/etc/init.d/networking start
}}}
service networking start
}}}

{i} Remarque : en principe le serveur de bureautique n'est pas sensé jouer aussi le rôle de passerelle. On peut fusionner les deux au besoin mais cette documentation se concentre plutôt sur le modèle général où ces deux fonctions sont séparées.
Ligne 102: Ligne 124:
 * installer le service SSH : {{{ Le premier service à installer est l'accès SSH qui permettra de continuer ensuite à distance -- et non pas en direct sur la console dans un local technique bruyant -- c'est une bonne habitude à prendre dès le départ : {{{
Ligne 105: Ligne 127:
 . /!\ '''ATTENTION : configuration (restrictions) restant à préciser'''
/!\ '''La suite supposera que vous êtes connecté via SSH !!!''' (et que vous pouvez donc utiliser le copier-coller)

 * ajouter sa clé SSH dans `~adminXXX/.ssh/authorized_keys`

 * resserrer les accès SSH en ajoutant les lignes suivantes au `/etc/ssh/sshd_config` : {{{
PermitRootLogin without-password
AllowGroups ssh
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
X11Forwarding no
UsePAM yes
UseDNS no
}}}
 * il faut alors s'ajouter au groupe `ssh` : {{{
adduser adminXXX ssh
}}}

 * dans le cas où l'on voudrait donner un accès SFTP aux partages réseaux (par exemple pour les nomades), ajouter ceci tout à la fin (c'est important) du `/etc/ssh/sshd_config` : {{{
AllowGroups ssh users
Subsystem sftp internal-sftp
Match Group users
   ChrootDirectory /nfsv4
   X11Forwarding no
   AllowTcpForwarding no
   ForceCommand internal-sftp
}}}
 . /!\ Le répertoire partages (ici `/nfsv4`) et ses parents doivent avoir `root` comme propriétaire et ne pas avoir de droit d'écriture pour le groupe ou les autres (typiquement du `0755`), sinon vous obtiendrez une erreur `fatal: bad ownership or modes for chroot directory` dans `/var/log/auth`.

 * pour une gestion des fichiers par groupe d'utilisateurs, ajouter ces lignes à `/etc/pam.d/sshd` : {{{
# Setting UMASK for all ssh based connections (ssh, sftp, scp)
session optional pam_umask.so umask=0002
}}}
 . /!\ dans ce cas ajouter également un `umask 0022` dans `/root/.bashrc`
Ligne 150: Ligne 206:
server IN A 192.168.50.10
$GENERATE 130-249 poste$ IN A 192.168.50.$
nfs IN A 192.168.50.10
$GENERATE 130-249 dynamic-$ IN A 192.168.50.$
Ligne 154: Ligne 210:
ntp IN CNAME server
nfs IN CNAME server
mirror IN CNAME mirror.vn.refer.org.
ntp IN CNAME nfs
nss IN CNAME nfs
Ligne 172: Ligne 227:
10 IN PTR server.lucid.auf.
$GENERATE 130-249 $ IN PTR poste$.lucid.auf.
10 IN PTR nfs.lucid.auf.
$GENERATE 130-249 $ IN PTR dynamic-$.lucid.auf.
Ligne 177: Ligne 232:
/etc/init.d/bind9 restart service bind9 restart
Ligne 180: Ligne 235:
host server.lucid.auf
host poste130.lucid.auf
host nfs.lucid.auf
host dynamic-130.lucid.auf
Ligne 195: Ligne 250:
filename "pxelinux.0";
Ligne 198: Ligne 252:
  next-server server.lucid.auf;   deny unknown-clients; # recommandé sur un réseau dont toutes les machines sont connues
Ligne 200: Ligne 254:
  option subnet-mask 255.255.255.0;
  option broadcast-address broadcast.lucid.auf;
  option routers gw.lucid.auf;
Ligne 202: Ligne 259:
  option routers gw.lucid.auf;
  option broadcast-address broadcast.lucid.auf;
  option ntp-servers ntp.lucid.auf;
  filename "pxelinux.0";
  next-server nfs.lucid.auf;
  server-name "nfs.lucid.auf";
Ligne 207: Ligne 266:
/etc/init.d/isc-dhcp-server restart service isc-dhcp-server restart
Ligne 215: Ligne 274:
 . {i} ''Pour ''Lenny'' il faut en plus lancer `/etc/init.d/openbsd-inetd restart` après l'installation ; ce n'est plus nécessaire avec ''Squeeze'' où le service TFTP est maintenant autonome.''  . {i} ''Pour ''Lenny'', choisir de ne pas démarrer via `inetd`, mettre `RUN_DAEMON="yes"` et `OPTIONS="-v -l -s /srv/tftp"` dans `/etc/default/tftpd-hpa` et lancer `/etc/init.d/tftpd-hpa restart` ; ce n'est plus nécessaire avec ''Squeeze'' où le service TFTP est maintenant autonome.''
Ligne 224: Ligne 283:
  append vga=vesa initrd=ubuntu-installer/i386/initrd.gz locale=fr_FR.UTF-8 console-setup/ask_detect=false console-setup/layoutcode=fr netcfg/wireless_wep= netcfg/choose_interface=eth0 netcfg/get_hostname= url=http://nfs/config/lucid-preseed-auf-fixe --   append vga=vesa initrd=ubuntu-installer/i386/initrd.gz locale=fr_FR.UTF-8 console-setup/ask_detect=false console-setup/layoutcode=fr netcfg/wireless_wep= netcfg/choose_interface= netcfg/get_hostname= url=http://nfs/config/lucid-preseed-auf-fixe --
Ligne 255: Ligne 314:
 <Files wpad.dat>
  AddType application/x-ns-proxy-autoconfig .dat
 </Files>
Ligne 257: Ligne 319:
/etc/init.d/apache2 restart service apache2 restart
Ligne 260: Ligne 322:
wget --header='User-Agent: Firefox' http://wiki.auf.org/wikiteki/Ubuntu/Lucid/D%C3%A9ploiement/ServeurBureautique/PreseedAuFFixe?action=raw -O- | awk '/}}}/{ok=0} {if(ok)print} /{{{/{ok=1}' > /var/www/config/lucid-preseed-auf-fixe mkdir /var/www/config
wget --header='User-Agent: Firefox' http://wiki.auf.org/wikiteki/Projet/Mod%C3%A8leLucid/PreseedAuFFixe?action=raw -O- | awk '/}}}/{ok=0} {if(ok)print} /{{{/{ok=1}' > /var/www/config/lucid-preseed-auf-fixe
Ligne 267: Ligne 330:
 * copier dans `/var/www/config/lucid-postpreseed` le script suivant : {{{#!shell
#!/bin/sh

# désactivation des sources des logiciels par défaut
sed -i '/^deb-src/s/^/#/' /etc/apt/sources.list

# (re)configuration de l'environnement linguistique (bogue ?)
dpkg-reconfigure locales

# (re)configuration de l'imprimante PDF (nécessite que CUPS soit lancé)
service cups start
dpkg-reconfigure cups-pdf
service cups stop

# ajout du compte "auf" dans le groupe sudo (à faire le preseed, un jour...)
adduser auf sudo

# installation des clés SSH dans les comptes "root" et "auf"
mkdir -m 0700 -p /root/.ssh
wget http://nfs/config/lucid-authorized_keys -O /root/.ssh/authorized_keys
chmod 0600 /root/.ssh/authorized_keys
cp -a /root/.ssh ~auf/
chown -R auf:auf ~auf/.ssh

# après le redémarrage, il faudra encore ajuster les 'username' et 'password'
# dans /etc/libnss-mysql.cfg et /etc/libnss-mysql-root.cfg puis lancer :
# service nscd restart ; nscd -i passwd ; nscd -i group ; service gdm restart

# déplacement du "/home" actuel vers "/home.local"
sed -i 's|:/home/|:/home.local/|' /etc/passwd
mv /home /home.local
ln -s /net/nfs/home /home

# masque autorisant l'écriture pour le groupe par défaut
# (à activer dans les réseaux où on travaille par groupes Unix)
#sed -i 's/^umask .*$/umask 002/' /etc/profile

exit 0
}}}

 . (!) idée pour une amélioration possible pour le `umask` pour la gestion par groupes, faire ajouter plutôt quelque chose comme ça dans `/etc/profile` : {{{
if [ "`id -u`" -lt 1000 ]; then
  umask 022
else
  umask 002
fi
}}}
Ligne 272: Ligne 382:
Respecter les exemples fournis sur cette page, à l'exception du paramétrage pour le partage des répertoires utilisateurs (`/nfsv4/home`) : nous sommes pour le moment toujours obligés de mettre un `no_root_squash` au lieu de `root_squash`, toujours à cause de `cups-pdf` (imprimante PDF virtuelle).

== Gestion de l'espace disque ==

 * installer la gestion des quotas : {{{
aptitude install --without-recommends quota quotatool
}}}
 . /!\ '''ATTENTION : configuration (`usrquota` dans `/etc/fstab`, journalisation) restant à préciser'''

== Service auf-mkhomedir ==

 * installer le méta-serveur de services : {{{
aptitude install inetutils-inetd update-inetd
}}}
 * mettre en place le service de création de répertoire utilisateur : {{{
wget 'http://git.auf.org/?p=auf-poste-client.git;a=blob_plain;f=lucid/auf-client-fixe/auf-mkhomedir/inetd_auf-mkhomedir' -O /usr/local/sbin/inetd_auf-mkhomedir

chown root:root /usr/local/sbin/inetd_auf-mkhomedir
chmod 0700 /usr/local/sbin/inetd_auf-mkhomedir

update-inetd --group AUF --add '10 stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/inetd_auf-mkhomedir'
service inetutils-inetd reload
}}}

/!\ '''Il faut absolument vérifier''' dans `/usr/local/sbin/inetd_auf-mkhomedir` si le paramétrage des quotas correspond à votre politique locale de gestion de l'espace disque.

<<Anchor(Service_NSS)>>
Ligne 274: Ligne 411:
''(détails à venir…)''  * installer l'accès à la base des utilisateurs : {{{
aptitude install libnss-mysql-bg nscd
sed -i -e "s|,shell |,'/bin/false' |" -e '/ username=/s/=/= binary /' -e '/^host/s/^.*$/host nss/' /etc/libnss-mysql.cfg
}}}
 * éditer encore les fichiers `/etc/libnss-mysql.cfg` et `/etc/libnss-mysql-root.cfg` pour y configurer les `username` et `password` d'accès à la base dans MySQL
 * activer l'utilisation de cette base : {{{
sed -i -e '/^\(passwd\|group\|shadow\):/s/:.*$/:\t\tfiles mysql/' /etc/nsswitch.conf
service nscd restart
nscd -i passwd
nscd -i group
}}}

''(autres détails à venir… en particulier l'installation de `auf-django-users`)''

Cette page présente le modèle de serveur bureautique pour le déploiement du poste de travail AuF sous Ubuntu “Precise Pangolin” 12.04 LTS.

/!\ ATTENTION : Cette page est en cours de rédaction et ne doit pas être pris comme modèle pour le moment. /!\

Pré-requis matériels

  • au minimum un processeur multi-cœurs 64 bits (un Intel Xeon est un très bon choix)

  • au minimum 8 Gio de RAM (ne pas hésiter à monter à 16, 24 ou même 32 Gio)

  • au minimum 2 disques SATA de 500 Gio (tous les disques seront en double pour faire systématiquement du RAID-1)

Pré-requis système

  • /!\ aller dans le BIOS régler l'heure correcte, en UTC (!) (dans le doute sur l'heure précise, il veut mieux être en retard qu'en avance)

  • installer une Debian Wheezy (ou adapter une Debian Squeeze existante si on n'a pas d'autre choix dans l'immédiat), en français (choix French)

  • organisation des disques (partitionnement manuel) : /!\ ces choix sont toujours discutables et doivent être adaptés à la situation locale ; ce qui suit est une recommandation minimale à suivre

    • faire, sur chaque disque, une partition(s) primaire(s) de type RAID auto occupant tout l'espace disponible

    • aller dans le menu de configuration RAID pour :
      • joindre les partitions RAID auto 2-par-2 en des volumes RAID-1 de 2 disques et 0 de réserve (spare)

      • terminer
    • de retour au menu principal, sélectionner les périphériques RAID-1 pour en faire des partitions de type Volume physique LVM

    • aller dans le menu de configuration LVM pour :
      • créer un groupe de volume regroupant les volumes physiques LVM
      • (il est fortement recommandé d'utiliser un nom de groupe de volumes unique entre tous les serveurs, par exemple vn1nfs0, afin d'éviter des conflits de noms le jour où on voudra déplacer ces disques dans un autre serveur)

      • déclarer les volumes logiques suivants :
        • un volume de nom swap d'une taille de 10 Go (le swap ne devrait pas être utilisé en temps normal, c'est une marge de garantie en cas de problème imprévu)

        • un volume de nom root d'une taille de 2 Go

        • un volume de nom var d'une taille de 2 Go

        • un volume de nom log d'une taille de 2 Go

        • un volume de nom tmp d'une taille de 2 Go

        • un volume de nom home d'une taille de 100 Go (par exemple, à vous de voir)

      • terminer
    • de retour au menu principal, sélectionner chaque périphérique LVM un par un pour les affecter comme suit :
      • déclarer le volume logique swap de type swap

      • déclarer le volume logique root de type ext4 monté sur /

      • déclarer le volume logique var de type ext4 monté sur /var

      • déclarer le volume logique log de type ext4 monté sur /var/log

      • déclarer le volume logique tmp de type ext4 monté sur /tmp

      • déclarer le volume logique home de type ext4 monté sur /home

  • choisir pour nom de machine nfs (non obligatoire, mais suggéré, par contre un nom DNS nfs doit exister et pointer sur cette machine)

  • installer GRUB sur le MBR des deux disques en RAID, donc lancer ces commandes après redémarrage du serveur :

    grub-install /dev/sda
    grub-install /dev/sdb

Base système

  • vérifier l'environnement linguistique :

    dpkg-reconfigure locales
  • /!\ cocher au minimum fr_FR.UTF-8

  • /!\ choisir obligatoirement un environnement UTF-8 par défaut

  • installation de quelques paquets indispensables/utiles :

    aptitude install --without-recommends less vim vim-tiny_ screen mtr-tiny dnsutils git
  • installation dès le départ de quelques services indispensables que l'on configurera plus tard :

    aptitude install --without-recommends ntp bind9 openssh-server

Mettre le sysadmin à l'aise

Voici quelques ajustements que je fais systématiquement sur les serveurs :

  • éditer /etc/vim/vimrc.local pour y mettre les lignes suivantes :

    syntax on
  • éditer /root/.bashrc pour y mettre les lignes suivantes :

    export LS_OPTIONS='--color=auto'
    eval "`dircolors`"
    alias ls='ls $LS_OPTIONS'
    alias ll='ls $LS_OPTIONS -l'
    alias la='ls $LS_OPTIONS -la'
    export GREP_OPTIONS='--color=auto'
  • éditer /etc/gitconfig pour y mettre les lignes suivantes :

    [color]
            ui = auto

Base réseau

  • arrêter le réseau (pour stopper le client DHCP mis en place par défaut) :

    service networking stop
  • configurer le réseau dans /etc/network/interfaces, par exemple :

    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet static
            address 192.0.2.10
            netmask 255.255.255.0
            network 192.0.2.0
            broadcast 192.0.2.255
            gateway 192.0.2.1
  • vérifier le nom de machine dans /etc/hostname, par exemple :

    nfs
  • vérifier le nom de machine dans /etc/hosts, par exemple :

    127.0.1.1       localhost
    # ne pas utiliser cette forme (a priori, toutes les conséquences ne sont pas encore connues)
    #127.0.1.1      nfs.precise nfs
    # utiliser la véritable adresse IP
    192.0.2.10      nfs.precise nfs
    
    # The following lines are desirable for IPv6 capable hosts
    ::1     localhost ip6-localhost ip6-loopback
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
  • démarrer le réseau :

    service networking start

{i} Remarque : en principe le serveur de bureautique n'est pas sensé jouer aussi le rôle de passerelle. On peut fusionner les deux au besoin mais cette documentation se concentre plutôt sur le modèle général où ces deux fonctions sont séparées.

Service SSH

Le premier service à installer est l'accès SSH qui permettra de continuer ensuite à distance -- et non pas en direct sur la console dans un local technique bruyant -- c'est une bonne habitude à prendre dès le départ :

aptitude install --without-recommends openssh-server

/!\ La suite supposera que vous êtes connecté via SSH !!! (et que vous pouvez donc utiliser le copier-coller)

  • ajouter sa clé SSH dans ~adminXXX/.ssh/authorized_keys

  • resserrer les accès SSH en ajoutant les lignes suivantes au /etc/ssh/sshd_config :

    PermitRootLogin without-password
    AllowGroups ssh
    PermitEmptyPasswords no
    ChallengeResponseAuthentication no
    PasswordAuthentication no
    X11Forwarding no
    UsePAM yes
    UseDNS no
  • il faut alors s'ajouter au groupe ssh :

    adduser adminXXX ssh
  • dans le cas où l'on voudrait donner un accès SFTP aux partages réseaux (par exemple pour les nomades), ajouter ceci tout à la fin (c'est important) du /etc/ssh/sshd_config :

    AllowGroups ssh users
    Subsystem sftp internal-sftp
    Match Group users
       ChrootDirectory /nfsv4
       X11Forwarding no
       AllowTcpForwarding no
       ForceCommand internal-sftp
  • /!\ Le répertoire partages (ici /nfsv4) et ses parents doivent avoir root comme propriétaire et ne pas avoir de droit d'écriture pour le groupe ou les autres (typiquement du 0755), sinon vous obtiendrez une erreur fatal: bad ownership or modes for chroot directory dans /var/log/auth.

  • pour une gestion des fichiers par groupe d'utilisateurs, ajouter ces lignes à /etc/pam.d/sshd :

    # Setting UMASK for all ssh based connections (ssh, sftp, scp)
    session    optional     pam_umask.so umask=0002
  • /!\ dans ce cas ajouter également un umask 0022 dans /root/.bashrc

Service NTP

  • installer le service d'heure et de maintenance de l'heure :

    aptitude install --without-recommends ntp
  • /!\ ATTENTION : configuration (sur NTP local ou exemple de asia.pool.ntp.org) restant à préciser

Service DNS

  • installer le service DNS :

    aptitude install --without-recommends bind9
  • configurer la résolution DNS dans /etc/resolv.conf, par exemple :

    domain lucid.auf
    search lucid.auf
    nameserver 127.0.0.1
  • déclarer deux zones pour le réseau local dans /etc/bind/named.conf.local, par exemple :

    zone "lucid.auf" IN {
            type master;
            file "/etc/bind/db.lucid.auf";
    };
    
    zone "50.168.192.in-addr.arpa" IN {
            type master;
            file "/etc/bind/db.50.168.192";
    };
  • créer ensuite le contenu de la première zone dans /etc/bind/db.lucid.auf, par exemple :

    $ORIGIN lucid.auf.
    $TTL 24H
    @                       IN SOA  ns1.lucid.auf. hostmaster.lucid.auf.org. (
                                    2011013000      ; Serial
                                    8H              ; Refresh
                                    1H              ; Retry
                                    2W              ; Expire
                                    600 )           ; Negative Cache TTL
    ;
    @                       IN NS   ns1
    ns1                     IN A    192.168.50.10
    ;
    network                 IN A    192.168.50.0
    gw                      IN A    192.168.50.1
    nfs                     IN A    192.168.50.10
    $GENERATE 130-249 dynamic-$ IN A        192.168.50.$
    broadcast               IN A    192.168.50.255
    ;
    ntp                     IN CNAME        nfs
    nss                     IN CNAME        nfs
  • créer ensuite le contenu de la seconde zone dans /etc/bind/db.50.168.192, par exemple :

    $ORIGIN 50.168.192.in-addr.arpa.
    $TTL 24H
    @                       IN SOA  ns1.lucid.auf. hostmaster.lucid.auf.org. (
                                    2011013000      ; Serial
                                    8H              ; Refresh
                                    1H              ; Retry
                                    2W              ; Expire
                                    600 )           ; Negative Cache TTL
    ;
    @                       IN NS   ns1.lucid.auf.
    ;
    0                       IN PTR  network.lucid.auf.
    1                       IN PTR  gw.lucid.auf.
    10                      IN PTR  nfs.lucid.auf.
    $GENERATE 130-249 $     IN PTR  dynamic-$.lucid.auf.
    255                     IN PTR  broadcast.lucid.auf.
  • relancer le service DNS :

    service bind9 restart
  • valider la configuration DNS avec quelques tests :

    host nfs.lucid.auf
    host dynamic-130.lucid.auf
    host www.auf.org

Service DHCP

  • installer le service DHCP :

    aptitude install isc-dhcp-server
  • spécifier dans /etc/default/isc-dhcp-server l'interface sur laquelle on fournit le service :

    INTERFACES="eth0"
  • définir dans /etc/dhcp/dhcpd.conf le réseau que l'on sert :

    authoritative;
    
    subnet 192.168.50.0 netmask 255.255.255.0 {
      deny unknown-clients; # recommandé sur un réseau dont toutes les machines sont connues
      range 192.168.50.130 192.168.50.249;
      option subnet-mask 255.255.255.0;
      option broadcast-address broadcast.lucid.auf;
      option routers gw.lucid.auf;
      option domain-name "lucid.auf";
      option domain-name-servers ns1.lucid.auf;
      option ntp-servers ntp.lucid.auf;
      filename "pxelinux.0";
      next-server nfs.lucid.auf;
      server-name "nfs.lucid.auf";
    }
  • relancer le service DHCP :

    service isc-dhcp-server restart

Service TFTP

  • installer le service TFTP : (garder le chemin /srv/tftp par défaut)

    aptitude install tftpd-hpa
  • {i} Pour Lenny, choisir de ne pas démarrer via inetd, mettre RUN_DAEMON="yes" et OPTIONS="-v -l -s /srv/tftp" dans /etc/default/tftpd-hpa et lancer /etc/init.d/tftpd-hpa restart ; ce n'est plus nécessaire avec Squeeze où le service TFTP est maintenant autonome.

  • mettre en place l'installation en réseau de Ubuntu Lucid, par exemple :

    wget http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-i386/current/images/netboot/netboot.tar.gz -O- | tar -C /srv/tftp -xpzf -
    chown -hR root:nogroup /srv/tftp
  • ajouter à la fin de /srv/tftp/pxelinux.cfg/default une option d'installation au modèle AuF :

    label lucid
      menu label Lucid sauce AUF
      kernel ubuntu-installer/i386/linux
      append vga=vesa initrd=ubuntu-installer/i386/initrd.gz locale=fr_FR.UTF-8 console-setup/ask_detect=false console-setup/layoutcode=fr netcfg/wireless_wep= netcfg/choose_interface= netcfg/get_hostname= url=http://nfs/config/lucid-preseed-auf-fixe --
    
    label local
      menu label Disque local
      menu default
      localboot 0
      append -

{i} Cela ne fonctionnera pas tout de suite car il faut d'abord mettre en place le service web pour servir le fichier preseed.

Service web

{i} Nécessaire au moins pour le preseed et pour auf-django-users.

  • installer le service web :

    aptitude install apache2
  • configurer dans /etc/apache2/conf.d/security le niveau de détails techniques :

    ServerTokens OS
  • configurer dans /etc/apache2/conf.d/charset le jeu de caractères par défaut :

    AddDefaultCharset UTF-8
  • ajouter dans /etc/apache2/sites-available/default, avant la ligne ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/, les restrictions d'accès suivantes :

            <Directory /var/www/config/>
                    Options FollowSymLinks
                    AllowOverride None
                    Order allow,deny
                    allow from 192.168.50.0/24
            </Directory>
            <Files wpad.dat>
                    AddType application/x-ns-proxy-autoconfig .dat
            </Files>
  • relancer le service web :

    service apache2 restart
  • copier dans /var/www/config/lucid-preseed-auf-fixe le contenu de la page ../PreseedAuFFixe :

    mkdir /var/www/config
    wget --header='User-Agent: Firefox' http://wiki.auf.org/wikiteki/Projet/Mod%C3%A8leLucid/PreseedAuFFixe?action=raw -O- | awk '/}}}/{ok=0} {if(ok)print} /{{{/{ok=1}' > /var/www/config/lucid-preseed-auf-fixe
    chmod 0644 /var/www/config/lucid-preseed-auf-fixe
  • copier dans /var/www/config/lucid-authorized_keys la clé publique qui servira à gérer les postes clients, par exemple :

    cp -a /root/.ssh/authorized_keys /var/www/config/lucid-authorized_keys
    chmod 0644 /var/www/config/lucid-authorized_keys
  • copier dans /var/www/config/lucid-postpreseed le script suivant :

    #!/bin/sh
    
    # désactivation des sources des logiciels par défaut
    sed -i '/^deb-src/s/^/#/' /etc/apt/sources.list
    
    # (re)configuration de l'environnement linguistique (bogue ?)
    dpkg-reconfigure locales
    
    # (re)configuration de l'imprimante PDF (nécessite que CUPS soit lancé)
    service cups start
    dpkg-reconfigure cups-pdf
    service cups stop
    
    # ajout du compte "auf" dans le groupe sudo (à faire le preseed, un jour...)
    adduser auf sudo
    
    # installation des clés SSH dans les comptes "root" et "auf"
    mkdir -m 0700 -p /root/.ssh
    wget http://nfs/config/lucid-authorized_keys -O /root/.ssh/authorized_keys
    chmod 0600 /root/.ssh/authorized_keys
    cp -a /root/.ssh ~auf/
    chown -R auf:auf ~auf/.ssh
    
    # après le redémarrage, il faudra encore ajuster les 'username' et 'password'
    # dans /etc/libnss-mysql.cfg et /etc/libnss-mysql-root.cfg puis lancer :
    # service nscd restart ; nscd -i passwd ; nscd -i group ; service gdm restart
    
    # déplacement du "/home" actuel vers "/home.local"
    sed -i 's|:/home/|:/home.local/|' /etc/passwd
    mv /home /home.local
    ln -s /net/nfs/home /home
    
    # masque autorisant l'écriture pour le groupe par défaut
    # (à activer dans les réseaux où on travaille par groupes Unix)
    #sed -i 's/^umask .*$/umask 002/' /etc/profile
    
    exit 0
  • (!) idée pour une amélioration possible pour le umask pour la gestion par groupes, faire ajouter plutôt quelque chose comme ça dans /etc/profile :

    if [ "`id -u`" -lt 1000 ]; then
      umask 022
    else
      umask 002
    fi

Service NFS

Mettre en place le service NFS selon les indications sur la page NFSv4 (uniquement la partie serveur).

Respecter les exemples fournis sur cette page, à l'exception du paramétrage pour le partage des répertoires utilisateurs (/nfsv4/home) : nous sommes pour le moment toujours obligés de mettre un no_root_squash au lieu de root_squash, toujours à cause de cups-pdf (imprimante PDF virtuelle).

Gestion de l'espace disque

  • installer la gestion des quotas :

    aptitude install --without-recommends quota quotatool
  • /!\ ATTENTION : configuration (usrquota dans /etc/fstab, journalisation) restant à préciser

Service auf-mkhomedir

  • installer le méta-serveur de services :

    aptitude install inetutils-inetd update-inetd
  • mettre en place le service de création de répertoire utilisateur :

    wget 'http://git.auf.org/?p=auf-poste-client.git;a=blob_plain;f=lucid/auf-client-fixe/auf-mkhomedir/inetd_auf-mkhomedir' -O /usr/local/sbin/inetd_auf-mkhomedir
    
    chown root:root /usr/local/sbin/inetd_auf-mkhomedir
    chmod 0700 /usr/local/sbin/inetd_auf-mkhomedir
    
    update-inetd --group AUF --add '10 stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/inetd_auf-mkhomedir'
    service inetutils-inetd reload

/!\ Il faut absolument vérifier dans /usr/local/sbin/inetd_auf-mkhomedir si le paramétrage des quotas correspond à votre politique locale de gestion de l'espace disque.

Base d'utilisateurs réseau

  • installer l'accès à la base des utilisateurs :

    aptitude install libnss-mysql-bg nscd
    sed -i -e "s|,shell |,'/bin/false' |" -e '/ username=/s/=/= binary /' -e '/^host/s/^.*$/host nss/' /etc/libnss-mysql.cfg
  • éditer encore les fichiers /etc/libnss-mysql.cfg et /etc/libnss-mysql-root.cfg pour y configurer les username et password d'accès à la base dans MySQL

  • activer l'utilisation de cette base :

    sed -i -e '/^\(passwd\|group\|shadow\):/s/:.*$/:\t\tfiles mysql/' /etc/nsswitch.conf
    service nscd restart
    nscd -i passwd
    nscd -i group

(autres détails à venir… en particulier l'installation de auf-django-users)


Debian/Wheezy/ServeurBureautique (dernière édition le 2015-09-21 19:04:20 par JeanChristopheAndré)