Configurer un serveur web Apache sous Slackware

Apache est le principal serveur Web du monde de l’Open Source. D’après les statistiques de Netcraft (http://netcraft.com), plus de la moitié des sites Web du monde tournent sur un serveur Apache.

Une installation typique d’Apache est généralement constituée d’un assemblage cohérent de paquets :

  • le serveur Apache à proprement parler
  • des bibliothèques diverses et variées
  • des plug-ins
  • des langages de programmation
  • etc.

Cet article est basé sur les paquets httpd (Apache), php et mariadb, contenus dans une installation standard de Slackware.

Prérequis

Apache utilise le port 80 en TCP pour le protocole HTTP. Il faudra donc songer à ouvrir ce port dans le pare-feu.

Tester Apache

Activer et démarrer Apache :

# chmod +x /etc/rc.d/rc.httpd
# /etc/rc.d/rc.httpd start

Tester le bon fonctionnement du serveur :

# links http://localhost

On doit voir quelque chose de ce genre :

=======================
      It works!
=======================

Dans le réseau local, ouvrir l’adresse IP du serveur avec un navigateur, par exemple :

  • http://192.168.2.1

On peut également invoquer le nom d’hôte :

  • http://nestor.microlinux.lan

Sur un serveur dédié, on essaiera successivement l’adresse IP, le nom de domaine et l’alias associé :

  • http://195.154.65.130
  • http://slackbox.fr
  • http://www.slackbox.fr

Configuration de base

Le principal fichier de configuration d’Apache, c’est /etc/httpd/httpd.conf. Avant d’éditer ce fichier, on va en faire une copie :

# cd /etc/httpd
# cp httpd.conf httpd.conf.orig

On peut déjà renseigner quelques directives :

# /etc/httpd/httpd.conf
...
ServerAdmin info@microlinux.fr
...
ServerName nestor.microlinux.lan:80
...
  • L’adresse mail de l’administrateur apparaîtra sur certaines pages générées par le serveur, notamment les pages d’erreur.
  • Le nom du serveur peut être déterminé automatiquement, mais il vaut mieux le spécifier explicitement.

Sur un serveur dédié, on aura ceci :

# /etc/httpd/httpd.conf
...
ServerName sd-41893.dedibox.fr
...

Héberger un site web statique

Apache est immédiatement utilisable dans sa configuration par défaut. Le serveur affiche le contenu du répertoire /var/www/htdocs, défini par la directive DocumentRoot dans le fichier /etc/httpd/httpd.conf :

# /etc/httpd/httpd.conf
...
DocumentRoot "/srv/httpd/htdocs"
...

Notons que /srv/httpd est un lien symbolique qui pointe vers /var/www :

# ls -l /srv/httpd
lrwxrwxrwx 1 root root 8 nov.   9 07:53 /srv/httpd -> /var/www

Pour avoir quelque chose à nous mettre sous la dent, on va ranger la page par défaut à un autre endroit pour la remplacer par un « vrai » site web statique. On choisira la documentation de Slackware, qui vient sous forme d’une série de pages HTML statiques.

Sauvegarder les fichiers fournis par défaut comme ceci, par exemple :

# cd /var/www/htdocs/
# ls
htdig  index.html  manual
# mkdir /root/htdocs_backup
htdig  index.html  manual
# mv -v * /root/htdocs_backup/
« htdig » -> « /root/htdocs_backup/htdig »
« index.html » -> « /root/htdocs_backup/index.html »
« manual » -> « /root/htdocs_backup/manual »

Ensuite, récupérer la documentation de Slackware. L’outil wget est utilisé ici comme aspirateur de site :

# wget -r -np -nH --cut-dirs=1 http://www.slackbook.org/html/

Assainir les permissions :

# find . -type d -exec chmod 0750 \{} \;
# find . -type f -exec chmod 0640 \{} \;

Le serveur Apache tourne avec les droits de l’utilisateur apache et du groupe apache :

# /etc/httpd/httpd.conf
...
User apache
Group apache
...

On va donc attribuer toutes les pages de notre site local à cet utilisateur et à ce groupe :

# chown -R apache:apache /var/www/htdocs

À présent, on peut ouvrir le site dans un navigateur (Firefox, Links, Lynx) et apprécier le résultat. Si le site ne s’affiche pas comme prévu dans Firefox, rafraîchir la page en appuyant sur [F5].

Héberger plusieurs sites sur un même serveur

Le principe des serveurs virtuels (virtual hosts) consiste à faire fonctionner un ou plusieurs sites Web sur une même machine. L’utilisateur final ne perçoit pas qu’en fait il s’agit d’un même serveur physique.

Dans un premier temps, on va renommer le répertoire /var/www/htdocs en /var/www/vhosts :

# cd /var/www
# mv htdocs vhosts

Il faudra modifier httpd.conf pour prendre en compte ce changement :

# /etc/httpd/httpd.conf
...
DocumentRoot "/srv/httpd/vhosts"
<Directory "/srv/httpd/vhosts">
...

On va déplacer le site existant dans un nouveau répertoire :

# cd vhosts
# mkdir -pv ../slackware/htdocs
mkdir: création du répertoire « ../slackware »
mkdir: création du répertoire « ../slackware/htdocs »
# mv * ../slackware/htdocs/
# mv ../slackware/ .

Ensuite, on va créer un autre répertoire, dans lequel on va télécharger un autre site, en l’occurrence la documentation de FreeBSD :

# mkdir -pv freebsd/htdocs
mkdir: création du répertoire « freebsd »
mkdir: création du répertoire « freebsd/htdocs »
# cd freebsd/htdocs
# wget -r -p -np -nH --cut-dirs=4 \
http://www.freebsd.org/doc/fr_FR.ISO8859-1/books/handbook/

Enfin, on va rétablir l’ancienne page index.html à un endroit approprié :

# cd /var/www/vhosts
# mkdir -pv default/htdocs
mkdir: création du répertoire « default »
mkdir: création du répertoire « default/htdocs »
# mv -v /root/htdocs_backup/index.html default/htdocs/
« /root/htdocs_backup/index.html » -> « default/htdocs/index.html »

Au total, on a donc :

# ls -l
total 20
drwxr-xr-x  2 root root  4096 févr.  3 10:14 default
drwxr-xr-x  9 root root 12288 févr.  3 10:05 freebsd
drwxr-xr-x 11 root root  4096 févr.  3 09:51 slackware

On va définir les permissions à la louche :

# find . -type d -exec chmod 0750 \{} \;
# find . -type f -exec chmod 0640 \{} \;
# chown -R apache:apache *

Éditer le fichier /etc/httpd/extra/httpd-vhosts.conf. On pourra utiliser une des deux stances fournies en exemple comme modèle. Dans un premier temps, définir le site affiché par défaut, c’est-à-dire lorsqu’on invoque l’adresse IP ou le nom d’hôte de la machine :

# /etc/httpd/extra/httpd-vhosts.conf 

# Page par défaut
ServerAdmin info@microlinux
DocumentRoot "/srv/httpd/vhosts/default/htdocs"
ServerName nestor.microlinux.lan
ServerAlias nestor
ErrorLog "/var/log/httpd/default-error_log"
CustomLog "/var/log/httpd/default-access_log" common

Une erreur à ne pas commettre, c’est d’indiquer le chemin « réel » vers les pages Web pour DocumentRoot, c’est-à-dire /var/www/vhosts/default au lieu de /srv/httpd/vhosts/default. Le chemin doit coïncider avec celui que l’on a défini dans /etc/httpd/httpd.conf pour DocumentRoot.

Pour activer les hôtes virtuels, il faut inclure le module en décommentant la ligne correspondante dans /etc/httpd/httpd.conf :

# /etc/httpd/httpd.conf 
...
# Virtual hosts
Include /etc/httpd/extra/httpd-vhosts.conf
...

Redémarrer Apache pour prendre en compte les modifications :

# /etc/rc.d/rc.httpd restart|graceful

Vérifier si la page par défaut du serveur s’affiche bien :

  • http://nestor

Là encore, si l’on utilise Firefox, penser à rafraîchir la page avec la touche [F5].

À présent, nous pouvons ajouter les deux autres sites :

# /etc/httpd/extra/httpd-vhosts.conf 

# Page par défaut du serveur
ServerAdmin info@microlinux
DocumentRoot "/srv/httpd/vhosts/default/htdocs"
ServerName nestor.microlinux.lan
ServerAlias nestor
ErrorLog "/var/log/httpd/default-error_log"
CustomLog "/var/log/httpd/default-access_log" common

# Documentation de Slackware
ServerAdmin info@microlinux
DocumentRoot "/srv/httpd/vhosts/slackware/htdocs"
ServerName slackware.nestor.microlinux.lan
ServerAlias slackware.nestor
ErrorLog "/var/log/httpd/slackware-error_log"
CustomLog "/var/log/httpd/slackware-access_log" common

# Documentation de FreeBSD
ServerAdmin info@microlinux
DocumentRoot "/srv/httpd/vhosts/freebsd/htdocs"
ServerName freebsd.nestor.microlinux.lan
ServerAlias freebsd.nestor
ErrorLog "/var/log/httpd/freebsd-error_log"
CustomLog "/var/log/httpd/freebsd-access_log" common

Pour l’instant, les noms d’hôtes slackware.nestor et freebsd.nestor ne correspondent à rien dans notre réseau local. Nous devons donc les ajouter au fichier /etc/hosts de la machine sur laquelle tourne Dnsmasq :

# /etc/hosts 
192.168.2.1 nestor.microlinux.lan nestor
192.168.2.1 slackware.nestor.microlinux.lan slackware.nestor
192.168.2.1 freebsd.nestor.microlinux.lan freebsd.nestor

Redémarrer Dnsmasq pour propager la configuration :

# /etc/rc.d/rc.dnsmasq restart

Redémarrer Apache pour prendre en compte les deux nouveaux hôtes virtuels :

# /etc/rc.d/rc.httpd restart

Tester l’affichage des trois différents sites :

  • http://slackware.nestor.microlinux.lan
  • http://freebsd.nestor.microlinux.lan
  • http://nestor.microlinux.lan (page par défaut)

Sur un serveur dédié avec un domaine publiquement accessible, la configuration des hôtes virtuels ressemblera à ceci :

# /etc/httpd/extra/httpd-vhosts.conf 

# Page par défaut du serveur
ServerAdmin info@microlinux.fr
DocumentRoot "/srv/httpd/vhosts/default/htdocs"
ServerName sd-48975.dedibox.fr
ErrorLog "/var/log/httpd/default-error_log"
CustomLog "/var/log/httpd/default-access_log" common

# Documentation de Slackware
ServerAdmin info@microlinux.fr
DocumentRoot "/srv/httpd/vhosts/slackware/htdocs"
ServerName slackware.slackbox.fr
ErrorLog "/var/log/httpd/slackware-error_log"
CustomLog "/var/log/httpd/slackware-access_log" common

# Documentation de FreeBSD
ServerAdmin info@microlinux.fr
DocumentRoot "/srv/httpd/vhosts/freebsd/htdocs"
ServerName freebsd.slackbox.fr
ErrorLog "/var/log/httpd/freebsd-error_log"
CustomLog "/var/log/httpd/freebsd-access_log" common

Cette fois-ci, l’information sur les hôtes slackware.slackbox.fr et freebsd.slackbox.fr devra être ajoutée dans le fichier zone de BIND, sous forme d’alias :

; /var/named/zone.slackbox.fr 
...
slackbox.fr.        A       195.154.65.130
ns      IN          A       195.154.65.130
mail    IN          A       195.154.65.130
www     CNAME               slackbox.fr.
ftp     CNAME               slackbox.fr.
slackware CNAME             slackbox.fr.     
freebsd   CNAME             slackbox.fr.     

Ne pas oublier de redémarrer BIND en incrémentant le numéro de série :

# /etc/rc.d/rc.bind restart

Tester l’affichage des trois différentes sites :

  • http://slackware.slackbox.fr
  • http://freebsd.slackbox.fr
  • http://www.slackbox.fr (page par défaut)

Héberger des sites dynamiques avec PHP

Activer le module PHP dans /etc/httpd/httpd.conf :

# /etc/httpd/httpd.conf
...
# Uncomment the following line to enable PHP:
#
Include /etc/httpd/mod_php.conf
...

La directive DirectoryIndex définit le fichier qui sera affiché lorsqu’un répertoire est requis. On ajoutera les fichiers index.php, et on pourra également compléter par index.htm, une extension que l’on rencontre rarement, mais qui existe :

# /etc/httpd/httpd.conf 
...
DirectoryIndex index.html index.htm index.php
...

Redémarrer Apache pour prendre en compte les modifications.

Ajouter une section pour afficher les infos PHP :

# cd /var/www/vhosts
# mkdir phpinfo/htdocs

Dans ce répertoire, éditer un fichier index.php comme ceci :

<?php
echo phpinfo();
?>

Régler les droits d’accès :

# cd /var/www/vhosts
# find phpinfo/ -type d -exec chmod 0750 \{} \;
# find phpinfo/ -type f -exec chmod 0640 \{} \;
# chown -R apache:apache /var/www/vhosts/phpinfo/

Créer un hôte virtuel phpinfo.nestor ou phpinfo.slackbox.fr et afficher la page index.php dans un navigateur.

Le fichier /etc/php.ini contient la configuration de PHP. On peut commencer par définir le fuseau horaire du serveur, nécessaire pour le bon fonctionnement de certaines applications :

; /etc/php.ini 
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Paris 

Avant Slackware 14.2, le fichier php.ini était rangé dans le répertoire /etc/httpd.

Redémarrer Apache et vérifier les donnés correspondantes dans la page qui affiche les infos PHP.

Utiliser MySQL à partir de PHP

Voir l’article sur MySQL pour le serveur de bases de données. Si MySQL est installé sur la machine, il est utilisable à partir de PHP sans autre configuration.

Publié dans Documentation Microlinux, Slackware | Marqué avec , , , , , | Laisser un commentaire

Mettre en place un serveur Dnsmasq sous Slackware

dnsmasq-logoCet article décrit la configuration d’un serveur Dnsmasq sous Slackware Linux. Dnsmasq est un serveur léger qui fournit les services DHCP et DNS pour des réseaux locaux, même de taille importante. Il est extrêmement facile à configurer, et l’on pourra l’utiliser pour remplacer DHCPD et Bind. Ce dernier n’est pas très adapté pour les DNS de réseaux locaux, notamment à cause de sa syntaxe farfelue.

Prérequis

Ouvrir les ports suivants dans le pare-feu :

  • 53 en TCP et UDP (requêtes DNS)
  • 67 et 68 en UDP (requêtes DHCP)

Le fichier /etc/hosts du serveur local doit comporter au moins les deux lignes suivantes :

# /etc/hosts
127.0.0.1     localhost.localdomain localhost
192.168.3.1   amandine.sandbox.lan  amandine

C’est surtout la deuxième ligne qui est d’une importance capitale. Elle fait correspondre le nom de la machine locale avec l’adresse IP dans le réseau local.

Configuration de base

La configuration de Dnsmasq s’effectue par le biais du fichier de configuration /etc/dnsmasq.conf. Le fichier fourni par défaut comporte près de 500 lignes de commentaires et sert également de documentation. On pourrait très bien activer l’une ou l’autre option en la décommentant. Dans le cas présent, il vaut mieux effectuer une copie de sauvegarde et commencer par un fichier vide :

# cd /etc
# mv dnsmasq.conf dnsmasq.conf.orig
# touch dnsmasq.conf

Éditer une configuration minimale, par exemple :

# /etc/dnsmasq.conf
domain-needed
bogus-priv
interface=eth1                            
dhcp-range=192.168.3.100,192.168.3.200,24h
local=/sandbox.lan/
domain=sandbox.lan
expand-hosts
server=192.168.3.1
  • Les deux premières options domain-needed et bogus-priv évitent que Dnsmasq ne relaie les noms d’hôtes locaux à un ou plusieurs serveurs DNS en amont.
  • L’option interface spécifie l’interface réseau que l’on souhaite utiliser.
  • L’option dhcp-range définit la plage d’adresses dynamiques utilisée parle serveur DHCP. Dans le cas présent, les adresses attribuées auront une durée de validité de 24 heures. Passé ce délai, elles devront être renouvelées par les clients.
  • L’option local indique que les réponses aux requêtes pour le domaine spécifié doivent être fournies directement par Dnsmasq, et non pas par un serveur DNS en amont.
  • L’option domain attribue le nom de domaine spécifié aux clients. Pour des raisons évidentes, il doit coïncider avec le domaine défini dans l’option local.
  • L’option expand-hosts concerne les requêtes DNS sans le domaine et se charge d’ajouter celui-ci automatiquement. Concrètement, lorsqu’on essaie d’envoyer un ping sur bernadette, Dnsmasq retournera automatiquement l’adresse IP de bernadette.sandbox.lan.
  • L’option server spécifie l’adresse IP d’un ou plusieurs serveurs DNS en amont.

Démarrage et utilisation

Activer Dnsmasq :

# chmod +x /etc/rc.d/rc.dnsmasq

Gérer le lancement et l’arrêt :

# /etc/rc.d/rc.dnsmasq start|stop|restart

Attribuer des adresses statiques

On pourra attribuer une adresse IP et un nom d’hôte fixe en fonction de l’adresse MAC des interfaces réseau respectives, en ajoutant une série d’entrées comme ceci :

# /etc/dnsmasq.conf
...
dhcp-host=00:1E:C9:43:A7:BF,bernadette,192.168.3.2
dhcp-host=00:1D:09:15:4A:D8,raymonde,192.168.3.3
...

On choisira les adresses IP en-dehors de la plage d’adresses dynamiques.

Si l’on souhaite attribuer une adresse IP et un nom d’hôte fixe à un portable que l’on connecte aussi bien par le wifi que par une connexion filaire, on peut utiliser la syntaxe suivante :

# /etc/dnsmasq.conf
...
dhcp-host=44:1E:A1:E6:FA:93,E4:D5:3D:BD:EA:05,buzz,192.168.3.6
dhcp-host=00:27:19:F1:BC:3A,00:19:E0:83:3A:C1,bebette,192.168.3.7
...

Ajouter des hôtes statiques

L’ajout d’hôtes statiques est extrêmement simple avec Dnsmasq. Il suffit d’ajouter l’entrée correspondante dans le fichier /etc/hosts du serveur, et celui-ci se chargera de relayer l’info :

# /etc/hosts 
...
192.168.3.254   wifi
...

Relancer Dnsmasq pour prendre en compte les modifications :

# /etc/rc.d/rc.dnsmasq restart

On peut également ajouter un raccourci pour une adresse IP externe :

# /etc/hosts
...
88.191.189.120  dedibox
...

Si le serveur héberge une série de sites web sous formes d’hôtes virtuels, on peut ajouter les entrées correspondantes comme ceci :

# /etc/hosts 
...
192.168.3.1   mirror.amandine.sandbox.lan mirror.amandine
192.168.3.1   cmsms.amandine.sandbox.lan cmsms.amandine
...

Résolution des noms d’hôtes

Les postes clients sur le réseau utilisent les informations sur les noms d’hôtes fournies par Dnsmasq. Pour que le serveur lui-même puisse les prendre en compte aussi, il faudra éditer /etc/resolv.conf comme ceci :

# /etc/resolv.conf
nameserver 127.0.0.1

Vérifions :

[root@amandine:~] # host bernadette
bernadette has address 192.168.3.2
[root@amandine:~] # host raymonde
raymonde has address 192.168.3.3

Afficher en direct l’attribution des baux DHCP

Sur le serveur, on peut suivre en direct l’attribution des baux DHCP en affichant en continu le journal /var/log/messages :

# tail -f /var/log/messages
... DHCPREQUEST(eth1) 192.168.3.2 00:1e:c9:43:a7:bf
... DHCPACK(eth1) 192.168.3.2 00:1e:c9:43:a7:bf bernadette
... DHCPREQUEST(eth1) 192.168.3.3 00:1d:09:15:4a:d8
... DHCPACK(eth1) 192.168.3.3 00:1d:09:15:4a:d8 raymonde
Publié dans Documentation Microlinux, Slackware | Marqué avec , , | Laisser un commentaire

Configurer un serveur de bases de données MySQL/MariaDB sous Slackware

Cet article décrit la mise en place d’un serveur de bases de donnéesMySQL/MariaDB sous Slackware. MySQL est le système de bases de données le plus populaire du monde de l’Open Source. Un grand nombre d’applications web utilisent MySQL comme moteur de bases de données : wikis, moteurs de blogs et de forums, systèmes de gestion de contenu, etc.

On entend parfois dire que MySQL n’est pas un « vrai » système de bases de données en comparaison à des systèmes comme Oracle ou DB/2. Contentons-nous de savoir que MySQL est utilisé, entre autres, par Facebook, Google et Yahoo!

Slackware 14.1 a remplacé MySQL par le fork communautaire MariaDB, suite au rachat de MySQL par Sun Microsystems et Oracle. La gouvernance du projet MariaDB est assurée par la fondation MariaDB. Elle confère au logiciel l’assurance de rester libre.

Choisir un fichier de configuration pour MySQL

Cette section ne concerne pas MariaDB. Elle est uniquement valable pour MySQL, inclus dans Slackware jusqu’à la version 14.0.

Sélectionner un fichier de configuration dans la panoplie de modèles disponibles selon les besoins dans le répertoire /etc/mysql :

  • my-small.cnf pour une base de données taille S
  • my-medium.cnf pour une base de données taille M
  • my-large.cnf pour une base de données taille L
  • my-huge.cnf pour une base de données taille XL
  • my-innodb-heavy-4G.cnf pour une base de données taille XXL

Exemple :

# cd /etc/mysql
# cp my-small.cnf my.cnf

Initialiser le serveur MySQL/MariaDB

Initialiser le répertoire de données MySQL/MariaDB :

# mysql_install_db
Installing MySQL system tables...
OK
Filling help tables...
OK
...

Régler les permissions :

# chown -R mysql:mysql /var/lib/mysql

Activer le démon MySQL :

# chmod +x /etc/rc.d/rc.mysqld

Lancer le démon MySQL :

# /etc/rc.d/rc.mysqld start
mysqld_safe Logging to '/var/lib/mysql/alphamule.err'.
mysqld_safe Starting mysqld daemon with databases from 
  /var/lib/mysql

Il faut éventuellement appuyer une deuxième fois sur [Entrée] pour récupérer l’invite de commandes.

Sécuriser le serveur MySQL/MariaDB

MySQL/MariaDB dispose de l’utilitaire mysql_secure_installation pour assurer la sécurité d’une installation fraîche sur une machine de production. Ce programme permet d’effectuer quelques démarches de sécurisation essentielles :

  1. Définir un mot de passe root MySQL (ne pas confondre avec le compte root Linux).
  2. Supprimer les comptes root MySQL accessibles de l’extérieur.
  3. Supprimer les connexions anonymes.
  4. Supprimer la base de données de test.

Lancer la sécurisation :

# mysql_secure_installation
...
Set root password? [Y/n] --> Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
Remove anonymous users? [Y/n] --> Y
... Success!
Disallow root login remotely? [Y/n] --> Y
... Success!
Remove test database and access to it? [Y/n] --> Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n] --> Y
... Success!
Cleaning up...

Lancer une connexion à la console MySQL :

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.

Afficher les bases de données :

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Utiliser la base de données mysql :

mysql> use mysql;
Database changed

Afficher les utilisateurs :

mysql> select user, host, password from user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *6883418C147A759B04D78A2D1E4E0C5BB0CDD1B4 |
| root | 127.0.0.1 | *6883418C147A759B04D78A2D1E4E0C5BB0CDD1B4 |
| root | ::1       | *6883418C147A759B04D78A2D1E4E0C5BB0CDD1B4 |
+------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)

Si l’on n’utilise pas l’IPv6, on peut désactiver root@::1 comme ceci :

mysql> delete from user where host = '::1';
Query OK, 1 row affected (0.00 sec)

Vérifier le résultat de l’opération :

mysql> select user, host, password from user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *6883418C147A759B04D78A2D1E4E0C5BB0CDD1B4 |
| root | 127.0.0.1 | *6883418C147A759B04D78A2D1E4E0C5BB0CDD1B4 |
+------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

Quitter la console MySQL :

mysql> quit;
Bye

Exemple de base de données

Se connecter au moniteur MySQL :

# mysql -u root -p
mysql>

Créer une base de données webapp :

mysql> create database webapp;

Afficher les bases de données :

mysql> show databases;

Créer un utilisateur webappuser qui aura tous les droits sur webapp :

mysql> grant all on webapp.* to webappuser@localhost
   - > identified by 'motdepasse';

Attention, le mot de passe apparaît en clair dans le moniteur MySQL !

mysql> quit;

Si l’on souhaite supprimer cette base de données :

mysql> drop database webapp;

Sauvegarde

La commande mysqldump permet de sauvegarder une base de données MySQL sous forme d’une série d’instructions SQL.

L’exemple suivant effectue une sauvegarde complète de la base de données cmsms :

$ mysqldump -u root -p cmsms > sauvegarde_cmsms.sql

L’option --all-databases permet de sauvegarder l’ensemble des bases de données d’un serveur :

$ mysqldump -u root -p --all-databases > sauvegarde.sql

Les fichiers SQL résultants sont parfois très volumineux, étant donné qu’il s’agit d’un format texte simple. Dans ce cas, on peut les compresser durant la sauvegarde même. Voici ce que cela donne pour les deux exemples précédents :

$ mysqldump -u root -p cmsms | gzip -c > sauvegarde_cmsms.sql.gz
$ mysqldump -u root -p --all-databases | gzip -c > sauvegarde.sql.gz

Restauration

Dans l’exemple suivant, on va restaurer la base de données cmsms depuis le fichier de sauvegarde créé ci-dessus :

$ mysqladmin -u root -p create cmsms
$ mysql -u root -p cmsms < sauvegarde_cmsms.sql

Pour restaurer « à la louche » une sauvegarde globale, il suffit d’invoquer la commande suivante qui gère également la création des bases de données :

$ mysql -u root -p < sauvegarde.sql

La restauration à partir d’une sauvegarde compressée peut s’effectuer comme ceci :

$ mysqladmin -u root -p create cmsms
$ gunzip -c sauvegarde_cmsms.sql.gz | mysql -u root -p cmsms

Et pour une sauvegarde globale :

$ gunzip -c sauvegarde.sql.gz | mysql -u root -p

Si l’on obtient des erreurs de connexion aux bases restaurées, il faudra se connecter au moniteur MySQL, puis :

mysql> flush privileges;

Sauvegardes automatiques

Mon dépôt Github fournit un script Bash sqldump.sh dans le répertoire template/backup. Ce script permet d’effectuer des sauvegardes automatiques de l’ensemble des bases MySQL d’un serveur, individuellement et « à la louche ». Les sauvegardes se présentent sous forme d’une série de fichiers compressés *.sql.gz rangés dans le répertoire /sqldump. Par la suite, ces fichiers pourront être récupérés par un serveur de sauvegardes.

# cd
# git clone https://github.com/kikinovak/microlinux
# cd microlinux/template/backup/
# cp sqldump.sh /usr/local/sbin/
# chmod 0700 /usr/local/sbin/sqldump.sh
# vim /usr/local/sbin/sqldump.sh
Publié dans Documentation Microlinux, Slackware | Marqué avec , , | Laisser un commentaire

Configurer l’authentification par clé SSH

Cet article décrit la mise en place d’une connexion SSH sans mot de passe, à l’aide d’une paire de clés. Si l’on se connecte quotidiennement à une machine distante, la connexion SSH sans mot de passe évite d’avoir à saisir le mot de passe à chaque fois. Dans l’exemple ci-dessous, l’utilisateur kikinovak souhaite se connecter depuis la machine buildbox.microlinux.lan à la machine nestor.microlinux.lan sans avoir à saisir son mot de passe à chaque connexion.

Générer la paire de clés

Sur la machine buildbox.microlinux.lan, créer une clé d’identification SSH. Accepter l’emplacement par défaut pour la sauvegarde de la clé en appuyant sur [Entrée]. De même, laisser la zone du mot de passe vide en appuyant deux fois de suite sur [Entrée] :

[kikinovak@buildbox:~] $ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kikinovak/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/kikinovak/.ssh/id_rsa.
Your public key has been saved in /home/kikinovak/.ssh/id_rsa.pub.

On vient de créer une clé privée ~/.ssh/id_rsa et une clé publique ~/.ssh/id_rsa.pub :

[kikinovak@buildbox:~] $ tree -a .ssh/
.ssh/
|-- id_rsa
|-- id_rsa.pub
`-- known_hosts

Transférer la clé publique

Maintenant, il faut transférer la clé publique (et non PAS la clé privée) sur la machine distante, en l’occurrence nestor.microlinux.lan :

$ ssh-copy-id -i ~/.ssh/id_rsa.pub kikinovak@nestor
The authenticity of host 'nestor (192.168.2.1)' 
can't be established.
ECDSA key fingerprint is 
08:16:b0:b0:81:c3:73:96:99:ea:8c:b6:e7:38:b7:d3.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the 
new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- 
if you are prompted now it is to install the new keys
kikinovak@nestor's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'kikinovak@nestor'"
and check to make sure that only the key(s) you wanted were added.

Contrôler les clés installées

À présent, on peut se connecter à la machine distante :

[kikinovak@buildbox:~] $ ssh kikinovak@nestor
Linux 3.10.17.

Il ne reste plus qu’à contrôler le fichier ~/.ssh/authorized_keys pour vérifier qu’on n’a pas ajouté des clés supplémentaires indésirables :

[kikinovak@nestor:~] $ cat ~/.ssh/authorized_keys ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQC2QQSfCGvvt7T9Fx/iSUIe1c/7c6wfQ0sdpF
t6tmhvPWRgwjfxhB4XZLZnEduUAfEcxgjsZ/fw4kIYWKlcndnOdeiUxCz1ebSg1+4H
KBMBLtWEjg1koKZEoX6hnB6Lg6qxoF9aye3bft7hMiY2v66MdsjLOHnom0g2s2l0op
8Q4o6QBJOn3L4VgeEZbPYw8fs/IXmSscoCGkUmMlmUo0Mka/Gv96ccSAsSywANaKlD
2n0X2dRyWHhTMHc7J047xyCxa0c6A1NeoX6sn8oI3pECIJEoZ4ml1OQfj3VPGFCNoL
+WciQRf kikinovak@buildbox.microlinux.lan

Se connecter sans mot de passe

Dorénavant, la connexion SSH ne requiert pas la saisie du mot de passe :

[kikinovak@buildbox:~] $ ssh nestor
Last login: Wed Dec  9 08:15:32 2015 from buildbox.microlinux.lan
Linux 3.10.17.
[kikinovak@nestor:~] $ 
Publié dans Documentation Microlinux | Marqué avec | Laisser un commentaire

Mettre en place un serveur de sauvegardes avec Rsnapshot sous Slackware

Cet article décrit la mise en place d’un serveur de sauvegardes incrémentales avec Rsnapshot sous Slackware Linux. Rsnapshot est une solution de sauvegarde robuste et efficace écrite en PERL et basée sur Rsync. En combinaison avec SSH, Rsnapshot permet d’effectuer des sauvegardes à distance. Une fois que la première synchronisation des données est effectuée, les sauvegardes se font de manière incrémentale moyennant une série de liens durs (hard links), ce qui évite la duplication inutile.

Rsnapshot tourne sur le serveur de sauvegardes. Les machines dont il faut sauvegarder les données sont totalement passives, il faut juste qu’elles aient un serveur SSH activé.

Prérequis

Le serveur de sauvegardes doit pouvoir se connecter via SSH aux machines distantes. Il faut donc configurer l’authentification par clé SSH au préalable.

Installation

Le portail SlackBuilds.org fournit un script SlackBuild pour Rsnapshot. En dehors des outils classiques Rsync et SSH, aucune dépendance externe n’est requise.

Configuration

Rsnapshot se configure par le biais du fichier /etc/rsnapshot.conf. Le fichier fourni par défaut est amplement commenté et pourra servir de point de départ. La page de manuel rsnapshot(1) fournit la référence complète. Au lieu d’éditer le fichier /etc/rsnapshot.conf, nous allons le renommer et repartir de zéro :

# cd /etc
# mv rsnapshot.conf rsnapshot.conf.default

Éditer une configuration personnalisée comme ceci, par exemple :

# /etc/rsnapshot.conf

# Version
config_version  1.2

# Emplacement des sauvegardes
snapshot_root   /srv/backup

# Programmes externes
cmd_cp              /usr/bin/cp
cmd_rm              /usr/bin/rm
cmd_rsync           /usr/bin/rsync
cmd_ssh             /usr/bin/ssh
cmd_logger          /usr/bin/logger
cmd_du              /usr/bin/du
cmd_rsnapshot_diff  /usr/bin/rsnapshot-diff

# Fréquence des sauvegardes
retain  hourly  6
retain  daily   7
retain  weekly  4
retain  monthly 3

# Affichage des infos
verbose 2

# Logs
loglevel        3
logfile /var/log/rsnapshot

# Fichier de verrouillage
lockfile        /var/run/rsnapshot.pid

# Fichiers à ne pas sauvegarder
exclude_file    /etc/rsnapshot_exclude.list

# sd-48975.dedibox.fr
backup  root@sd-48975.dedibox.fr:/etc            sd-48975.dedibox.fr
backup  root@sd-48975.dedibox.fr:/home           sd-48975.dedibox.fr
backup  root@sd-48975.dedibox.fr:/var/named      sd-48975.dedibox.fr
backup  root@sd-48975.dedibox.fr:/var/www/vhosts sd-48975.dedibox.fr
backup  root@sd-48975.dedibox.fr:/usr/local/sbin sd-48975.dedibox.fr
backup  root@sd-48975.dedibox.fr:/sqldump        sd-48975.dedibox.fr

Quelques remarques :

  • Il faut impérativement utiliser les tabulations comme séparateurs. Si l’on utilise l’éditeur Vim, l’option :set list permettra d’afficher les tabulations dans le fichier.
  • L’emplacement des sauvegardes spécifié par la directive snapshot_root sera créé au besoin par Rsnapshot.
  • Les commandes correspondent à un système Slackware Linux 14.2.
  • La directive retain hourly 6 correspond à une sauvegarde complète toutes les quatre heures.
  • Le fichier spécifié dans la directive exclude_file contiendra éventuellement les types de fichiers et de répertoires sur lesquels on pourra faire l’impasse.
  • Dans l’exemple ci-dessus, on spécifie les arborescences de données à sauvegarder, plutôt que de choisir l’ensemble du système à la louche pour ensuite exclure les parties du système que l’on ne veut pas sauvegarder.
  • Les bases de données sont récupérées par le biais d’un script sqldump.sh installé sur la machine distante, qui range les sauvegardes SQL soigneusement ficelées dans un répertoire /sqldump. Voir la fin de l’article sur MySQL/MariaDB pour plus de détails.

Tester la configuration

Une fois qu’on a édité la configuration, on peut vérifier si l’on n’a pas fait d’erreurs de syntaxe :

# rsnapshot configtest
Syntax OK

L’option -t permet ensuite de simuler une sauvegarde. Dans ce cas, Rsnapshot nous affiche toutes les opérations qu’il effectuerait, sans réellement les exécuter :

# rsnapshot -t hourly

Synchronisation initiale

Si le serveur distant contient quelques centaines de gigaoctets de données, la première synchronisation peut être assez longue. La bonne politique consiste à effectuer cette première opération à la main, comme ceci :

# rsnapshot hourly

Dans une deuxième console, on peut se faire une idée de la progression du transfert :

# watch ls -lh /srv/backup

Au bout de l’opération, on pourra vérifier si tout s’est bien déroulé :

# less /var/log/rsnapshot

[2016-12-22T18:18:11] /usr/bin/rsnapshot hourly: started
[2016-12-22T18:18:11] echo 8430 > /var/run/rsnapshot.pid
[2016-12-22T18:18:11] mkdir -m 0700 -p /srv/backup/
[2016-12-22T18:18:11] mkdir -m 0755 -p /srv/backup/hourly.0/
[2016-12-22T18:18:11] /usr/bin/rsync -a --delete ...
                        ...
[2016-12-22T18:42:49] touch /srv/backup/hourly.0/
[2016-12-22T18:42:50] rm -f /var/run/rsnapshot.pid
[2016-12-22T18:42:50] /usr/bin/rsnapshot hourly: completed

Définition des tâches automatiques

Une fois que la synchronisation initiale s’est correctement déroulée, on peut songer à mettre en place une série de tâches automatiques :

# crontab -l
...
# Rsnapshot
0  */4 * * *  /usr/bin/rsnapshot hourly
45 3   * * *  /usr/bin/rsnapshot daily
30 3   * * 1  /usr/bin/rsnapshot weekly
15 3   1 * *  /usr/bin/rsnapshot monthly

Utilisation au quotidien

Au bout de quinze jours, voilà à quoi ressemble le répertoire des sauvegardes :

# ls -l /srv/backup/
total 60
drwxr-xr-x 3 root root 4096 janv. 20 04:00 daily.0
drwxr-xr-x 3 root root 4096 janv. 19 04:00 daily.1
drwxr-xr-x 3 root root 4096 janv. 18 04:00 daily.2
drwxr-xr-x 3 root root 4096 janv. 17 04:00 daily.3
drwxr-xr-x 3 root root 4096 janv. 16 04:00 daily.4
drwxr-xr-x 3 root root 4096 janv. 15 04:00 daily.5
drwxr-xr-x 3 root root 4096 janv. 14 04:00 daily.6
drwxr-xr-x 3 root root 4096 janv. 21 08:00 hourly.0
drwxr-xr-x 3 root root 4096 janv. 21 04:00 hourly.1
drwxr-xr-x 3 root root 4096 janv. 21 00:00 hourly.2
drwxr-xr-x 3 root root 4096 janv. 20 20:01 hourly.3
drwxr-xr-x 3 root root 4096 janv. 20 16:01 hourly.4
drwxr-xr-x 3 root root 4096 janv. 20 12:01 hourly.5
drwxr-xr-x 3 root root 4096 janv.  8 04:00 weekly.0
drwxr-xr-x 3 root root 4096 janv.  1 04:00 weekly.1

L’option du permet d’afficher un rapport détaillé sur l’espace disque occupé par les sauvegardes :

# rsnapshot du
23G	/srv/backup/hourly.0/
76M	/srv/backup/hourly.1/
298M	/srv/backup/hourly.2/
76M	/srv/backup/hourly.3/
412M	/srv/backup/hourly.4/
553M	/srv/backup/hourly.5/
838M	/srv/backup/daily.0/
964M	/srv/backup/daily.1/
991M	/srv/backup/daily.2/
833M	/srv/backup/daily.3/
829M	/srv/backup/daily.4/
815M	/srv/backup/daily.5/
761M	/srv/backup/daily.6/
50G	/srv/backup/weekly.0/
1,2G	/srv/backup/weekly.1/
82G	total
Publié dans Documentation Microlinux, Slackware | Marqué avec , , , | Laisser un commentaire

Installer Slackware64 14.2 sur une Dedibox chez Online

Cet article décrit l’installation et la configuration de Slackware Linux 14.2 64-bits sur un serveur dédié Dedibox SC de chez Online. Slackware ne figure pas parmi les distributions proposées par Online, mais on peut quand-même l’installer à l’aide de la console de secours, avec un peu de patience.

Installation de la distribution initiale

  1. Ouvrir la console Online : https://console.online.net
  2. Serveur > Liste de vos serveurs > Serveur Dedibox SC (sd-XXXXX) > Installer
  3. Choix du type d’utilisation du système d’exploitation : Serveur
  4. Choix du système d’exploitation : Debian, Ubuntu, peu importe…
  5. Partitionnement : peu importe, vu qu’on le refera à la main
  6. Noter l’adresse IP du serveur, l’IP de la passerelle et les DNS

Démarrer une session de secours

Une fois que le système est installé, passer en Mode secours et choisir Ubuntu 16.04 amd64 comme système de secours. Il se peut qu’avec certains abonnements comme la Dedibox SC, on ne dispose que de Ubuntu 12.04 amd64. Ce n’est pas grave, étant donné que le noyau de cette dernière a été actualisé et ne nous empêchera donc pas d’effectuer un chroot dans l’environnement Slackware nouvellement installé.

La console affiche un identifiant et un mot de passe qui permettent de se connecter en SSH au système de secours. Attendre une ou deux minutes, puis lancer la connexion. Parfois, le mot de passe temporaire pour la session de secours ne fonctionne pas tout de suite. Dans ce cas, il suffit d’insister un peu.

$ ssh kikinovak@163.172.81.8
kikinovak@163.172.81.8's password: **********

Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-47-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

   _     _                ____
  | |   (_)__   __ ___   |  _ \  ___  ____ ___  _  _  ___
  | |   | |\ \ / // _ \  | |_| |/ _ \/ ___/ __\| || |/ _ \
  | |__ | | \ V /|  __/  |  _ /   __/\__ \ (__ | || |  __/
  |____||_|  \_/  \___|  |_| \_\\___|____/\___/`.__.'\___|

Aide et documentation : http://documentation.dedibox.fr
Console de gestion    : http://console.dedibox.fr

Serveur : 163-172-81-8
Adr IP  : 163.172.81.8
Adr MAC : 00:07:CB:0B:55:78
Système : Ubuntu 16.04.1 LTS (xenial) x86_64
Démarré : mardi 20 décembre 2016, 15:36:23 (UTC+0100)

To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.

kikinovak@163-172-81-8:~$

Préparer le disque

Remettre à zéro la table de partitions :

$ sudo dd if=/dev/zero of=/dev/sda bs=512 count=64

Le changement de la table de partitions n’est pas pris en compte par la console de secours. Il faut donc la quitter et en relancer une autre. Dans la console Online, passer successivement par Repasser en mode normal et Secours, puis se reconnecter en SSH avec un nouveau mot de passe.

Activer le compte root :

$ sudo passwd root

Devenir root :

$ su -

Définir la variable d’environnement LANG :

# LANG=C
# export LANG

Partitionner le disque :

# fdisk /dev/sda

Si l’on utilise fdisk pour le partitionnement, on peut éventuellement se retrouver avec des erreurs du style Partition 1 does not start on physical sector boundary. Dans ce cas, il vaut mieux utiliser gdisk.

Schéma de partitionnement :

# fdisk -l /dev/sda
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x826fa19f

Device     Boot   Start        End    Sectors   Size Id Type
/dev/sda1  *       2048     206847     204800   100M 83 Linux
/dev/sda2        206848    8595455    8388608     4G 82 Linux swap
/dev/sda3       8595456 1953525167 1944929712 927.4G 83 Linux

Étant donné que nous n’avons pas accès à l’installateur Slackware, nous allons tout simplement formater le disque à la main :

# mkfs.ext2 -v /dev/sda1
# mkswap /dev/sda2
# swapon /dev/sda2
# mkfs.ext4 -v /dev/sda3

Monter la partition principale :

# mount /dev/sda3 /mnt

Créer et monter la partition /boot :

# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot

Installer un système Slackware réduit

Récupérer une poignée d’outils nécessaires pour l’installation :

# apt-get update
# apt-get install ncftp xz-utils dialog

On va récupérer un système Slackware réduit sur un miroir FTP. Ce système sera composé des groupes de paquets A, AP, D, L et N.

Créer un répertoire slackware64-14.2 et télécharger les paquets dans ce répertoire. Selon le modèle de Dedibox, l’espace de la console de secours peut être limité en fonction de la RAM disponible. Dans ce cas, il faut s’y prendre à plusieurs reprises, c’est-à-dire télécharger et installer les groupes A, AP, D et N, supprimer les paquets téléchargés, puis télécharger et installer le groupe L.

# mkdir slackware64-14.2
# cd slackware64-14.2
# ncftp mirror.switch.ch
ncftp > cd mirror/slackware/slackware64-14.2/slackware64/
ncftp > get -R a ap d l n
ncftp > bye

Le téléchargement produit quelques avertissements sans conséquence, que l’on peut ignorer :

tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors

Installer a/pkgtools dans l’environnement de secours :

# cp a/pkgtools-14.2-noarch-10.txz /
# cd /
# tar xvf pkgtools-14.2-noarch-10.txz
./
var/
var/log/
var/log/setup/
var/log/setup/setup.htmlview
var/log/setup/setup.80.make-bootdisk
var/log/setup/setup.70.install-kernel
var/log/setup/tmp/
var/log/setup/setup.services
install/
install/slack-desc
install/doinst.sh
sbin/
sbin/removepkg
sbin/explodepkg
sbin/pkgtool
sbin/upgradepkg
sbin/makepkg
sbin/installpkg
usr/
usr/man/
...

Créer un lien symbolique vers du pour que pkgtools fonctionne correctement
sous Ubuntu :

# ln -s /usr/bin/du /bin/du

Installer les paquets téléchargés vers l’environnement chrooté :

# cd /root/slackware64-14.2
# installpkg --root /mnt */*.t?z

Là encore, on pourra sereinement ignorer l’avertissement concernant la version de tar :

WARNING: pkgtools are unstable with tar > 1.13.
You should provide a "tar-1.13" in your $PATH.

Configuration post-installation

Lier les systèmes /proc, /dev et /sys à ceux de la console de secours :

# mount --bind /proc /mnt/proc
# mount --bind /dev /mnt/dev
# mount --bind /sys /mnt/sys

Changer dans l’environnement chrooté en spécifiant l’interpréteur de commandes Bash :

# chroot /mnt /bin/bash

Dans l’environnement Slackware, lancer l’utilitaire de configuration :

# pkgtool

> Setup - Choose Slackware installation scripts to run again

Configurer le réseau :

[*] netconfig
  • Nom d’hôte : sd-25854
  • Nom de domaine : dedibox.fr
  • Renseigner l’adresse IP, la passerelle et le DNS primaire.

Notre système fraîchement installé comporte quelques vulnérabilités notoires. On va donc songer à appliquer tous les correctifs de sécurité. Éditer /etc/slackpkg/mirrors et sélectionner un miroir Slackware en fonction du pays, par exemple :

# FRANCE (FR)
ftp://nephtys.lip6.fr/pub/linux/distributions/slackware/
      slackware64-14.2/
...

Assurez-vous de ne choisir qu’un seul miroir pour Slackware stable. Notez que le miroir OVH est inutilisable comme à peu près tout ce qui vient de chez OVH.

# slackpkg update
# slackpkg upgrade-all

Au terme de la mise à jour, ce n’est pas la peine d’invoquer LILO, vu qu’on ne l’a pas encore configuré. Pour le traitement des fichiers de configuration nouvellement installés, on peut sereinement choisir l’option (O)verwrite.

Note importante : Depuis le 15 janvier 2016, la configuration par défaut d’OpenSSH ne permet plus à root de se connecter. Il faut donc éditer le fichier de configuration /etc/ssh/sshd_config et définir PermitRootLogin yes si l’on souhaite se connecter en tant que root.

Revenir dans pkgtool et configurer le chargeur de démarrage LILO :

[*] liloconfig
  • OPTIONAL LILO append : ipv6.disable=1
  • USE UTF-8 TEXT CONSOLE : Yes
  • SELECT LILO DESTINATION : MBR - Install to Master Boot Record

Ignorer les avertissements et éditer /etc/lilo.conf manuellement pour corriger quelques entrées, notamment la partition principale qui n’est pas détectée automatiquement :

lba32
append="ipv6.disable=1 vt.default_utf8=1"
boot=/dev/sda
compact
...
timeout = 10
...
image = /boot/vmlinuz
root = /dev/sda3
label = MLES-14.2-64bit
read-only

Configurer les services au démarrage :

  • [ ] rc.fuse -> désélectionner
  • [ ] rc.inetd -> désélectionner
  • [ ] rc.messagebus -> désélectionner
  • [*] rc.syslog
  • [*] rc.sshd

Générer les certificats SSL :

[*] cacerts - Rebuilt SSL certificate database

Configurer le fuseau horaire :

[*] timeconfig - Select your timezone
  • Horloge système : UTC
  • Fuseau horaire : Europe/Paris

Le fichier /etc/fstab devra être créé manuellement comme ceci :

/dev/sda1     /boot         ext2      defaults         1   2
/dev/sda2     swap          swap      defaults         0   0
/dev/sda3     /             ext4      defaults         1   1
devpts        /dev/pts      devpts    gid=5,mode=620   0   0
proc          /proc         proc      defaults         0   0
tmpfs         /dev/shm      tmpfs     defaults         0   0

Définir un mot de passe pour root :

# passwd root

Quitter l’environnement chrooté :

# exit

Démonter les partitions :

# umount /mnt/sys
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/boot
# umount /mnt

Revenir dans l’interface web de la console Online, repasser en mode normal et croiser les doigts.

Redémarrage initial

Installer les groupes de paquets manquants :

# slackpkg install f k t tcl x y

On peut se demander à quoi servent les groupes T et X. À titre d’exemple, T est nécessaire pour compiler ffmpeg, un composant central pour le streaming audio. Et certains paquets comme php ont des dépendances dans le groupe X.

Certains modèles de Dedibox équipées d’un processeur VIA sont incompatibles avec le module de kernel acpi_cpufreq, qui a une méchante tendance à les faire geler.

Vérifier le modèle de processeur :

# cat /proc/cpuinfo | grep model
model : 15
model name : VIA Nano processor U2250 (1.6GHz Capable)

Blacklister le module qui pose problème :

# /etc/modprobe.d/blacklist.conf
blacklist acpi_cpufreq

Basculer vers le noyau GENERIC. Pour la construction de l’initrd, voir l’article correspondant (TODO).

Peaufiner la configuration du réseau. Éditer /etc/hosts comme ceci :

# /etc/hosts
127.0.0.1 localhost.localdomain localhost
163.172.81.8 sd-107066.dedibox.fr sd-107066

Pare-feu

Récupérer mes scripts d’installation :

# git clone https://github.com/kikinovak/microlinux

Le répertoire template/firewall contient un pare-feu prêt à l’emploi :

# cd template/firewall
# cp rc.firewall.public /etc/rc.d/rc.firewall

Adapter la configuration du script, puis :

# chmod +x /etc/rc.d/rc.firewall
# /etc/rc.d/rc.firewall start
Publié dans Documentation Microlinux, Slackware | Marqué avec , | Laisser un commentaire

Dix bonnes raisons pour utiliser Slackware Linux

La distribution Slackware Linux a fêté ses vingt ans en été 2013. L’annonce officielle de Patrick Volkerding datant du 16 juillet 1993 est toujours en ligne, et vous pouvez la lire ici. À l’ère des distributions grand public comme Fedora, Mageia, Ubuntu et autres Linux pour tous qui offrent toutes un certain confort, quel intérêt peut-il y avoir à utiliser la plus ancienne distribution encore maintenue ?

Voici une liste de dix bonnes raisons pour lesquels Slackware reste un excellent choix pour vos postes de travail, vos serveurs et vos stations de travail.

  1. Expérience. Slackware est la plus ancienne distribution Linux encore active. Elle a vu le jour avant Debian et Red Hat. Songez à la fameuse publicité Nutella : vingt ans d’expérience font toute la différence. Slackware est avant tout une distribution mûrie, et cette maturité se traduit au quotidien par une robustesse légendaire.
  2. Pérennité. L’installateur Slackware, les composants de base du système et la collection d’outils d’administration basiques ont fait leurs preuves depuis belle lurette et sont toujours livrés avec la distribution. Pour un administrateur système, cela signifie qu’il n’aura pas à revenir à la case départ au gré de l’inspiration du jour du distributeur et de tout réapprendre à partir de zéro. Slackware ne change pas de système d’initialisation ou de serveur graphique comme de chemise. Les changements apportés à la distribution s’effectuent petit à petit, sans grand ramdam médiatique, comme par exemple l’ajout du gestionnaire de paquets slackpkg à la version 12.2. Le jour où vos collègues se moqueront du dinosaure sur votre station de travail ou votre serveur dédié, vous n’aurez qu’à leur rétorquer qu’il faudra au moins une pluie de météorites pour en venir à bout.
  3. Stabilité. Chaque version de Slackware est constituée d’un ensemble de composants dûment éprouvés et testés. Une chose que vous ne trouverez jamais dans Slackware, ce sont les technology previews arborées par certaines distributions grand public : une collection funeste de nouvelles technologies en avant-première, et qui ont une fâcheuse tendance à transformer votre quotidien d’administrateur en un abîme de souffrances innommables.
  4. Flexibilité. En tant qu’administrateur, j’ai une idée assez précise de ce que je souhaite installer sur un serveur de réseau local, un serveur public, une station de travail, un ultra-portable. Malheureusement, aucune distribution ne fournit ces configurations telles quelles (je suis pinailleur, je l’avoue). Mais Slackware est une des rares à ne pas m’obliger à sauter à travers des cerceaux en feu pour installer et configurer mon système exactement comme je le souhaite.
  5. Flexibilité (bis). Lorsqu’un paquet n’est pas inclus dans la distribution, je peux être à peu près sûr que le site SlackBuilds.org propose un script de compilation pour le paquet en question. Pour les rares fois où ce n’est pas le cas, je n’ai qu’à en écrire un moi-même, ce qui est bien plus simple qu’on ne pense. Comme Patrick Volkerding l’a dit lui-même récemment, sa distribution s’adresse à tous ceux qui souhaitent compléter le système de base à partir du code source, sans pour autant balancer une clé anglaise dans le gestionnaire de paquets La compilation de paquets à partir des sources devient presque un jeu d’enfant sous Slackware.
  6. Simplicité. Il m’arrive de temps en temps d’installer Slackware sur du matériel vétuste ou exotique, et je peux effectuer les configurations problématiques là où les installateurs et autres assistants automatiques des distributions grand public s’étouffent et refusent de fonctionner. Le principe KISS révèle toute sa force ici, et l’on ne risque pas de faire face à des aberrations du genre DO NOT EDIT THIS BY HAND.
  7. Humanité. Bien que le terme soit déjà accaparé par les utilisateurs de la distribution Ubuntu, une des choses que j’apprécie avec Slackware est sa taille humaine. La distribution est de taille modeste, tout comme le nombre de paquets disponibles par défaut, et ces derniers sont soigneusement maintenus. Les utilisateurs du forum Slackware sur le site LinuxQuestions.org sont aussi compétents que sympathiques, et l’ambiance qui règne dans cette communauté est assez exceptionnelle. On y croise un nombre impressionnant de vétérans Unix de la première heure, sans être confronté pour autant aux redoutables talibans du logiciel libre. Enfin, n’oublions pas qu’Ubuntu est un vieux mot africain qui signifie Je n’arrive pas à configurer Slackware ;o)
  8. Transparence. Slackware publie soigneusement l’intégralité de ses sources, et la configuration s’effectue invariablement par le biais de fichiers texte. Ce point-là semble donc évident. Ce qui est moins évident, c’est que Slackware devient ainsi la distribution idéale pour apprendre Linux. Un vieil adage veut que si l’on utilise Debian, on apprend Debian, si l’on utilise Fedora, on apprend Fedora, mais si l’on utilise Slackware, on apprend Linux. Il m’arrive de former des administrateurs Linux en entreprise, et mes formations sont majoritairement basées sur Slackware.
  9. Efficacité. Mon bureau Slackware tourne parfaitement sur du matériel vieux de dix ans, et c’est quelque chose que j’arrive seulement à faire avec Debian ou une poignée de distributions spécialisées comme Puppy ou Slitaz, mais pas avec les
    distributions grand public comme Ubuntu ou OpenSUSE, bien plus gourmandes en ressources. La configuration par défaut de Slackware n’active qu’un minimum syndical de services, sans tout le cholestérol habituel des distributions grand public.
  10. Politique. Slackware publie une nouvelle version à peu près une fois par an. Non pas à une date fixée, mais lorsque la distribution est prête, autrement dit, lorsqu’elle ne contient plus de bugs sérieux. Chaque version reçoit des mises à jour de sécurité pendant cinq ans, ce qui fait que vous pouvez très bien utiliser Slackware en entreprise.
Publié dans Slackware | Marqué avec | Laisser un commentaire

Installer un poste de travail CentOS 7

centos-logoCet article décrit de manière succincte l’installation d’un poste de travail de qualité entreprise basé sur CentOS 7 et l’environnement de bureau GNOME. Pour plus de détails, lire la documentation officielle. CentOS 7 est officiellement supporté jusqu’au 30 juin 2024. On choisira cette branche sur du matériel raisonnablement récent qui supporte un OS 64-bits. L’installateur de CentOS 7 requiert au moins 1 Go de RAM. Sur une machine disposant de moins de mémoire vive ou dotée d’un processeur 32-bits, on pourra opter pour CentOS 6.

Le poste de travail présenté ici offre une série d’améliorations par rapport à un poste de travail CentOS standard.

  • L’environnement de bureau GNOME est préconfiguré de manière intuitive.
  • Une panoplie d’applications populaires est installée pour toutes les tâches courantes.
  • Les codecs et plug-ins multimédia permettent de gérer les contenus audio et vidéo.
  • Les polices TrueType offrent une meilleure interopérabilité avec l’univers Microsoft.
  • Infinality permet d’obtenir un affichage aussi net que sur les systèmes de chez Apple.

Support d’installation

Pour l’installation d’un poste de travail, on choisira le DVD. CentOS 7-1611 correspond à Red Hat Enterprise Linux 7.3 :

  • CentOS-7-x86_64-DVD-1611.iso

Graver le DVD à partir de l’ISO téléchargé.

Sur les machines dépourvues de lecteur optique, il faudra confectionner une clé USB d’installation. L’image ISO est hybride et peut s’écrire directement sur une clé :

# dd if=CentOS-7-x86_64-DVD-1611.iso of=/dev/sdX

Démarrage

Débrancher clés USB, disques externes et autres périphériques amovibles. Autrement l’installateur les proposera au formatage.

Langue et clavier

Dans l’écran de bienvenue, sélectionner la langue (Français) et la localisation (Français – France). La disposition du clavier sera définie par le biais de l’écran principal de l’installateur.

Interfaces réseau

Le réseau n’est pas activé par défaut, il faut donc songer à l’activer explicitement.

Les noms des interfaces réseau ont changé avec cette nouvelle version. Désormais, on n’a plus affaire à eth0, eth1, eth2, wlan0, etc. Le nouveau schéma de nommage est moins arbitraire et offre davantage de consistance en se basant sur l’emplacement physique de la carte dans la machine. On se retrouve avec des noms d’interface du genre :

  • enp2s0
  • enp3s0
  • enp3s1
  • etc.

Date et heure

Vérifier si le fuseau horaire (Europe/Paris) est correctement configuré. Éventuellement, activer Heure du réseau et vérifier les serveurs NTP.

Désactivation de Kdump

Kdump est un mécanisme de capture lors du plantage d’un noyau. Il peut être désactivé.

Partitionnement manuel

L’outil de partitionnement graphique de CentOS n’est pas très intuitif. Voici un exemple de schéma de partitionnement courant :

  • une partition /boot de 200 MiB, formatée en ext2
  • une partition swap, équivalent à la RAM disponible
  • une partition principale, formatée en ext4

Sur une station de travail munie de deux disques durs, on choisira le RAID 1.

  1. Cliquer sur Destination de l’installation.
  2. Vérifier si le ou les disques durs sont bien sélectionnés.
  3. Cocher Je vais configurer le partitionnement et cliquer sur Terminé.
  4. Dans le menu déroulant, sélectionner Partition standard au lieu de LVM.

Partition EFI

Sur les systèmes UEFI, il faut d’abord créer un point de montage /boot/efi pour une partition de type EFI, au début du disque.

  1. Cliquer sur le bouton « + » pour créer un point de montage.
  2. Créer le point de montage /boot/efi et spécifier une taille de 100 MiB.
  3. Définir le type de périphérique standard.
  4. Choisir le système de fichiers EFI System Partition et l’étiquette efi.
  5. Confirmer Mise à jour des paramètres.

Partition /boot

La taille de la partition /boot sera relativement réduite. Il faudra veiller à ne pas laisser s’entasser les vieux kernels sous peine de la remplir assez rapidement.

  1. Cliquer sur le bouton « + » pour créer un nouveau point de montage.
  2. Créer le point de montage /boot avec une capacité de 200 MiB ou plus.
  3. Définir le type de périphérique standard ou RAID 1.
  4. Choisir le système de fichiers ext2 et l’étiquette boot.
  5. Confirmer Mise à jour des paramètres.

Partition swap

Dans certains cas, la partition swap pourra être reléguée à la fin du disque par l’installateur pour une utilisation optimale.

  1. Cliquer sur le bouton « + » pour créer un autre point de montage.
  2. Créer le point de montage swap en spécifiant sa capacité en GiB.
  3. Définir le type de périphérique standard ou RAID 1.
  4. Choisir l’étiquette swap.
  5. Confirmer Mise à jour des paramètres.

Partition principale

La partition principale occupera tout l’espace disque restant.

  1. Cliquer sur le bouton « + » pour créer un dernier point de montage.
  2. Créer le point de montage / sans spécifier la capacité souhaitée.
  3. Définir le type de périphérique standard ou RAID 1.
  4. Choisir le système de fichiers ext4 et l’étiquette root.
  5. Confirmer Mise à jour des paramètres, puis Terminé.

Choix des paquets

Dans l’écran de sélection des logiciels du DVD, on optera pour le groupe de paquets Bureau GNOME, mais sans cocher les options supplémentaires comme Applications GNOME, Applications Internet, etc.

Utilisateur initial

Créer un utilisateur provisoire install. Cocher l’option Faire de cet utilisateur un administrateur pour l’ajouter au groupe wheel et lui permettre d’utiliser sudo. Cet utilisateur sera supprimé une fois l’installation terminée.

Accord de licence

CentOS affiche un dialogue d’acceptation de licence au démarrage initial du système depuis la version 7. Dans les versions antérieures à CentOS 7-1611 (RHEL 7.3), la logique de ce dialogue était quelque peu déroutante. Voici ce qu’il faut faire, dans l’ordre :

  1. Appuyer sur [1] pour afficher la licence.
  2. Appuyer sur [2] pour accepter la licence.
  3. Appuyer sur [C] pour continuer le démarrage initial.
  4. Appuyer sur [C] une deuxième fois pour confirmer le tout.

CentOS 7-1611 a corrigé ce problème et affiche désormais un dialogue en mode graphique où il suffit de cocher J’accepte le contrat de licence.

Système invité VirtualBox

Si l’on a installé CentOS comme système invité VirtualBox, la résolution du bureau est trop réduite pour pouvoir travailler correctement. Éventuellement, on peut passer en mode console pour la suite :

# systemctl set-default multi-user.target
# systemctl isolate multi-user.target

Installer les paquets prérequis pour la compilation des drivers. Le paquet dkms est fourni par le dépôt EPEL (voir plus loin) :

# yum install gcc kernel-devel dkms

Avant de lancer la construction des Additions Invité, vérifier que les paquets du kernel correspondent tous. Dans le doute, faire une mise à jour du système.

Insérer l’image CD des Additions Invité et lancer la compilation :

# mount /dev/cdrom /mnt
# cd /mnt
# ./VBoxLinuxAdditions.run

Une fois que la construction des drivers s’est déroulée correctement, on peut redémarrer en mode graphique :

# systemctl set-default graphical.target
# systemctl reboot

SELinux peut causer des problèmes avec l’affichage 3D. Il vaut donc mieux le désactiver.

Démarrer le service RNGD

Il se peut que tous les services du système n’aient pas démarré comme prévu :

# systemctl status
● amandine
  State: degraded
   Jobs: 0 queued
 Failed: 1 units
 ...

Afficher le service fautif :

# systemctl --failed
  UNIT         LOAD   ACTIVE SUB    DESCRIPTION
● rngd.service loaded failed failed Hardware RNG 
  Entropy Gatherer Daemon

RNGD, c’est le générateur d’entropie du système. Dans sa configuration par défaut, il se base sur un périphérique /dev/hwrandom qui n’existe pas sur notre machine. Pour corriger ce comportement, il faut éditer le fichier de configuration du service :

# /usr/lib/systemd/system/rngd.service
[Unit]
Description=Hardware RNG Entropy Gatherer Daemon

[Service]
ExecStart=/sbin/rngd -f -r /dev/urandom

[Install]
WantedBy=multi-user.target

Recharger la configuration :

# systemctl daemon-reload

Démarrer le service et vérifier son statut :

# systemctl start rngd.service
# systemctl status rngd.service
● rngd.service - Hardware RNG Entropy Gatherer Daemon
   Loaded: loaded (/usr/lib/systemd/system/rngd.service; ...

Synchronisation de la grappe RAID

Sur une station de travail installée en RAID 1, la synchronisation initiale d’une grappe RAID peut être assez longue. L’astuce suivante permet d’accélérer le processus de façon significative :

# echo 50000 > /proc/sys/dev/raid/speed_limit_min

Chargeur de démarrage

Sur une station de travail munie de deux disques durs configurés en RAID 1, il faudra installer le chargeur de démarrage manuellement sur le MBR de chaque disque. En cas de défaillance d’un disque, on pourra toujours démarrer sur l’autre disque :

# grub2-install /dev/sda
# grub2-install /dev/sdb

Mise à jour initiale

Éventuellement, il faut arrêter le démon packagekit qui entre en conflit avec Yum :

# systemctl stop packagekit

Afficher les mises à jour disponibles :

# yum check-update

Installer les mises à jour :

# yum update

Redémarrer.

Configurer le réseau

Dans la configuration par défaut, le réseau est géré par NetworkManager, qui est pratique sur un portable, mais ne sert pas à grand-chose sur un poste de travail ou une station de travail. Notons au passage que contrairement à ce qui se dit dans des blogs un peu partout sur le Web, NetworkManager n’est pas nécessaire pour la gestion du réseau. C’est juste une couche d’abstraction et de complexité supplémentaire, et dont on peut aisément se passer.

# systemctl stop NetworkManager
# yum remove NetworkManager

Voici un exemple de configuration simple :

# /etc/sysconfig/network-scripts/ifcfg-enp2s0
DEVICE=enp2s0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp

Si l’on gère les noms d’hôtes de manière centralisée avec Dnsmasq, il faut supprimer les occurrences correspondantes dans /etc/hosts :

# /etc/hosts
127.0.0.1 localhost.localdomain localhost

Le fichier /etc/hostname devra juste contenir ceci :

localhost

Faire le ménage dans les kernels

Afficher les kernels installés :

# rpm -q kernel
kernel-3.10.0-327.el7.x86_64
kernel-3.10.0-327.13.1.el7.x86_64

Supprimer l’ancien kernel :

# package-cleanup --oldkernels --count=1

L’option --count=x spécifie le nombre de kernels que l’on souhaite garder.

Éditer /etc/yum.conf et définir le nombre de kernels à préserver :

# /etc/yum.conf
...
installonly_limit=2
...

Récupérer les scripts d’installation

Installer Git :

# yum install git

Récupérer mes scripts et mes fichiers de configuration :

# cd
# git clone https://github.com/kikinovak/centos

Le répertoire centos/el7/scripts/ contient une série de scripts numérotés qui facilitent la configuration post-installation.

Configurer les dépôts de paquets officiels

Éditer /etc/yum.repos.d/CentOS-Base.repo et activer les dépôts [base], [updates] et [extras] avec une priorité maximale :

# /etc/yum.repos.d/CentOS-Base.repo
[base]
enabled=1
priority=1
name=CentOS-$releasever - Base
...
[updates]
enabled=1
priority=1
name=CentOS-$releasever - Updates
...
[extras]
enabled=1
priority=1
name=CentOS-$releasever - Extras
...

Laisser le dépôt [centosplus] désactivé :

# /etc/yum.repos.d/CentOS-Base.repo
...
[centosplus]
enabled=0
name=CentOS-$releasever - Plus
...

Configurer le dépôt tiers EPEL

Le dépôt tiers EPEL (Extra Packages for Enterprise Linux) fournit des paquets qui ne sont pas inclus dans la distribution CentOS. Une fois que le dépôt officiel [extras] est configuré, le dépôt EPEL peut se configurer très simplement à l’aide du paquet correspondant :

# yum install epel-release

Définir les priorités du dépôt EPEL :

# /etc/yum.repos.d/epel.repo
[epel]
enabled=1
priority=10
name=Extra Packages for Enterprise Linux 7 - $basearch
...

[epel-debuginfo]
enabled=0
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
...

[epel-source]
enabled=0
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
...

Activer les priorités

Installer le plug-in yum-plugin-priorities :

# yum install yum-plugin-priorities

Vérifier s’il fonctionne correctement :

# yum check-update
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * base: mirror.plusserver.com
 * epel: mirrors.neterra.net
 * extras: centos.mirror.ate.info
 * updates: mirrors.ircam.fr
125 packages excluded due to repository priority protections

Configurer le dépôt tiers Nux-Dextop

Le dépôt tiers Nux-Dextop fournit des paquets orientés poste de travail et multimédia. Il a besoin du dépôt EPEL pour fonctionner correctement.

Aller sur le site du projet, naviguer vers le répertoire nux/dextop/el7/x86_64/ et télécharger le paquet nux-dextop-release.

Installer le paquet :

# yum localinstall nux-dextop-release-*.rpm

Activer le dépôt [nux-dextop] avec une priorité de 10 :

# /etc/yum.repos.d/nux-dextop.repo
[nux-dextop]
name=Nux.Ro RPMs for general desktop use
baseurl=http://li.nux.ro/download/nux/dextop/el7/$basearch/ 
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-nux.ro
protect=0

Laisser le dépôt [nux-dextop-testing] désactivé, en lui attribuant une priorité de 10.

# /etc/yum.repos.d/nux-dextop.repo
[nux-dextop-testing]
name=Nux.Ro RPMs for general desktop use - testing
baseurl=http://li.nux.ro/download/nux/dextop-testing/el7/$basearch/
enabled=0
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-nux.ro
protect=0

Configurer le dépôt tiers Adobe

Ce dépôt nous servira uniquement pour le plugin Macromedia Flash.

  1. Aller sur le site d’Adobe.
  2. Tout en bas de la page d’accueil, suivre le lien Flash Player.
  3. Sur la page de sélection, choisir le système d’exploitation (Linux 64-bit) et la version (Flash Player YUM).
  4. Télécharger le paquet adobe-release et installer ce paquet :
# yum localinstall adobe-release-*.rpm

Configurer le dépôt [adobe-linux-i386] avec une priorité de 10 :

# /etc/yum.repos.d/adobe-linux-x86_64.repo
[adobe-linux-x86_64]
name=Adobe Systems Incorporated
baseurl=http://linuxdownload.adobe.com/linux/x86_64/
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux

Configurer le dépôt tiers ELRepo

Le dépôt ELRepo est un autre dépôt tiers pour CentOS, qui se concentre sur les drivers : systèmes de fichiers, cartes graphiques, cartes réseau, cartes son, webcams, etc.

Aller sur le site du projet, télécharger et installer le paquet elrepo-release pour les versions 7.x :

# yum localinstall elrepo-release-*.rpm

Désactiver l’ensemble des dépôts [elrepo] :

# /etc/yum.repos.d/elrepo.repo 
[elrepo]
enabled=0
...
[elrepo-testing]
enabled=0
...
[elrepo-kernel]
enabled=0
...
[elrepo-extras]
enabled=0
...

On activera ce dépôt ponctuellement en cas de besoin. Voici un exemple :

# yum --enablerepo=elrepo install nvidia-detect

 Installer les outils de base

Le script 01-installer-outils.sh installe une poignée d’outils en ligne de commande qui ne sont pas fournis par l’installation par défaut :

# ./01-installer-outils.sh

Agrémenter la console

Le script 02-configurer-base.sh agrémente la console pour root et les utilisateurs :

# ./02-configurer-base.sh

Outre la personnalisation du shell, le script se charge également de peaufiner la  configuration de l’éditeur Vim.

Prendre en compte la personnalisation du shell pour root :

# source ~/.bashrc

Éventuellement, récupérer la personnalisation du shell pour l’utilisateur initial :

# su - install
$ cp -v /etc/skel/.bash* .
‘/etc/skel/.bash_logout’ -> ‘./.bash_logout’
‘/etc/skel/.bash_profile’ -> ‘./.bash_profile’
‘/etc/skel/.bashrc’ -> ‘./.bashrc’
$ source ~/.bashrc
$ exit

Désactiver SELinux

Éditer le fichier /etc/sysconfig/selinux :

# /etc/sysconfig/selinux
SELINUX=disabled
# SELINUXTYPE=targeted

La modification sera prise en compte au prochain redémarrage.

Désactiver l’IPv6

Créer un fichier /etc/sysctl.d/disable-ipv6.conf et l’éditer comme ceci :

# /etc/sysctl.d/disable-ipv6.conf
# Disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

La désactivation de l’IPv6 peut entraîner des problèmes avec le service SSH. Il faut donc adapter sa configuration en conséquence.

Éditer /etc/ssh/sshd_config et spécifier les directives suivantes :

# /etc/ssh/sshd_config 
...
AddressFamily inet
ListenAddress 0.0.0.0
...

La directive inet désigne l’IPv4 et inet6 l’IPv6. Là aussi, les modifications seront prises en compte au prochain redémarrage.

Désactiver le pare-feu

Sur un poste de travail, un pare-feu n’a pas beaucoup de sens à partir du moment où l’on pense à désactiver les services inutiles.

Arrêter le pare-feu :

# systemctl stop firewalld

Supprimer le démon correspondant :

# yum remove firewalld

À partir de là, on a toujours la possibilité de configurer un pare-feu traditionnel avec iptables.

Installer les applications

Le script 03-installer-bureau.sh récupère une panoplie cohérente d’applications, de codecs et de plugins. Il supprime une poignée de paquets inutiles et installe également une poignée de polices TrueType.

# ./03-installer-bureau.sh

Personnaliser les entrées de menu

Le script 04-nettoyer-menus.sh remplace les entrées de menu du bureau GNOME par des entrées personnalisées plus cohérentes :

# ./04-nettoyer-menus.sh

Installer le profil GNOME

Enfin, le script 05-installer-profil.sh installe une configuration personnalisée du bureau GNOME pour les futurs utilisateurs :

# ./05-installer-profil.sh

Créer un utilisateur

Maintenant que le profil par défaut est installé, on peut créer un ou plusieurs utilisateurs. On l’ajoutera éventuellement au groupe wheel :

# useradd -c "Niki Kovacs" kikinovak
# passwd kikinovak
# usermod -a -G wheel kikinovak

Se connecter en tant que ce nouvel utilisateur et supprimer l’utilisateur initial :

# userdel -r install

Configuration de GNOME 3.14

L’aspect du bureau se configure principalement par le biais de l’utilitaire Tweak Tool (Outil de personnalisation).

Onglet Apparence :

  • Fenêtre : Adwaita
  • GTK+ : Adwaita
  • Icônes : Elementary-Xfce
  • Curseur : Bluecurve-inverse

Onglet Bureau :

  • Activer la configuration des icônes sur le bureau
  • Décocher Dossier Personnel, Serveurs réseau et Corbeille
  • Cocher Volumes montés
  • Arrière-plan : Étiré (Stretched)
  • Écran de verrouillage : Étiré (Stretched)

Onglet Polices :

  • Titres des fenêtres : Cantarell Bold 11
  • Interface : Cantarell Regular 11
  • Non proportionnelle : Monaco Regular 11

Applications > Outils Système > Paramètres > Énergie > Écran noir : augmenter l’intervalle de mise en veille de 5 à 15 minutes.

GNOME Terminal :

  • La configuration se fait dans Édition > Préférences du profil
  • Définir la taille initiale à 105 x 38
  • Décocher Utiliser les couleurs du système
  • Couleur du texte et de l’arrière-plan : Gris sur noir
  • Fond : transparent
  • Palette : Tango

Bloquer le changement des utilisateurs à la déconnexion. Pour ce faire, installer provisoirement dconf-editor, ouvrir les paramètres de déconnexion : org > gnome > desktop > lockdown et cocher disable-user-switching.

Création du profil

GNOME enregistre tous les réglages individuels dans ~/.config/dconf/user. Il suffit de copier cette arborescence vers /etc/skel avant de créer un nouvel utilisateur.

Publié dans CentOS, Documentation Microlinux | Marqué avec , , | 2 commentaires

Synchroniser un serveur dédié CentOS 7 avec NTP

clockCette page décrit la synchronisation NTP d’un serveur dédié tournant sous CentOS 7 avec un ou plusieurs serveurs NTP publics. Un des prérequis fondamentaux d’un serveur – tout comme n’importe quelle machine – c’est qu’il soit à l’heure. Malheureusement, l’horloge intégrée dans notre machine n’est pas suffisamment exacte. Le protocole NTP (Network Time Protocol) permet à notre serveur de mettre ses pendules à l’heure. Dans un premier temps, la commande ntpdate procède à un ajustement ponctuel de l’horloge du BIOS. Cet ajustement ponctuel ne suffit pas pour un serveur qui est censé tourner sans discontinuer. L’horloge risque de dévier de plus en plus de l’heure exacte. Dans ce cas, il faudra configurer le démon ntpd contenu dans le paquet ntp, qui se charge de contacter les serveurs de temps publics à intervalles réguliers pour procéder ensuite à une série de corrections de l’heure locale.

Installation

Les paquets relatifs à NTP sont déjà fournis par notre installation minimale :

# rpm -qa | grep ntp
ntp-4.2.6p5-22.el7.centos.2.x86_64
ntpdate-4.2.6p5-22.el7.centos.2.x86_64

Synchronisation avec un serveur NTP public

Éventuellement, aller sur http://www.pool.ntp.org et choisir la liste des serveurs en fonction du pays.

Sauvegarder le fichier de configuration existant :

# cd /etc
# mv ntp.conf ntp.conf.orig

Configurer le service :

# /etc/ntp.conf

driftfile /var/lib/ntp/drift

server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org
server 3.fr.pool.ntp.org

server 127.127.1.0
fudge 127.127.1.0 stratum 10

restrict default nomodify nopeer notrap
restrict 127.0.0.1 mask 255.0.0.0

La directive fudge 127.127.1.10 stratum 10 constitue un serveur « bidon » en guise d’IP fallback, au cas où la source de temps extérieure deviendrait momentanément indisponible. En cas d’indisponibilité du serveur distant, NTP continuera à tourner en se basant sur ce fonctionnement-là.

NTP offre une panoplie de règles pour contrôler l’accès au service, que l’on pourra utiliser en-dehors des règles de pare-feu. Ici, les directives restrict signifient qu’on empêche les machines distantes de modifier la configuration du serveur (première ligne) et qu’on fait confiance à la machine elle-même (deuxième ligne). La directive restrict sans option derrière, mais suivie du seul nom d’hôte, équivaut à un allow all.

Gestion et utilisation

Éventuellement, effectuer l’ajustement initial de l’horloge :

# ntpdate fr.pool.ntp.org
15 Nov 07:57:16 ntpdate[29102]: step time server 62.210.129.227 
  offset -1.279947 sec

La commande ntpdate est normalement considérée comme obsolète, mais elle sert toujours à effectuer des corrections importantes. Théoriquement, c’est la commande ntpd -g qui est censée remplacer ntpdate, mais son utilisation s’avère problématique sur des systèmes déréglés de plus d’une heure.

Activer le service :

# systemctl enable ntpd

Gérer le service :

# systemctl start|stop|restart|status ntpd

Afficher la liste des serveurs auxquels on est connecté :

# ntpq -p
   remote     refid     st t when poll reach delay offset jitter
=================================================================
+tidore.ordimati 91.121.122.16  3 u 36 64 1  31.353 -2.014 0.000
+176.31.53.204   193.190.230.65 2 u 35 64 1 114.250 36.854 0.000
*ntp-2.arkena.ne 193.190.230.65 2 u 34 64 1  30.266 -2.454 0.000
 fr3.tomhek.net  195.154.216.35 3 u 33 64 1  34.424 -3.169 0.000
 LOCAL(0)        .LOCL.        10 l  - 64 0   0.000  0.000 0.000
  1. Le petit astérisque * en début de ligne signifie que la machine est correctement synchronisée avec le serveur distant. La première synchronisation peut nécessiter quelques minutes, parfois même une demi-heure.
  2. Pour guetter la première synchronisation, on peut invoquer watch ntpq -p.
Publié dans CentOS, Documentation Microlinux | Marqué avec , , | Laisser un commentaire

Mettre en place un serveur Dnsmasq sous CentOS

dnsmasq-logoCette page décrit la configuration d’un serveur Dnsmasq sous CentOS et Red Hat Enterprise Linux. Dnsmasq est un serveur léger qui fournit les services DHCP et DNS pour des réseaux locaux, même de taille importante. Il est extrêmement facile à configurer, et l’on pourra l’utiliser pour remplacer DHCPD et Bind. Ce dernier n’est pas très adapté pour les DNS de réseaux locaux, notamment à cause de sa syntaxe farfelue.

Prérequis

Ouvrir les ports suivants dans le pare-feu :

  • 53 en TCP et UDP (requêtes DNS)
  • 67 et 68 en UDP (requêtes DHCP)

Le fichier /etc/hosts du serveur local doit comporter au moins les deux lignes suivantes :

# /etc/hosts
127.0.0.1     localhost.localdomain localhost
192.168.3.1   amandine.sandbox.lan  amandine

C’est surtout la deuxième ligne qui est d’une importance capitale. Elle fait correspondre le nom de la machine locale avec l’adresse IP dans le réseau local.

Installation

Vérifier si Dnsmasq est installé :

# rpm -qa | grep dnsmasq          (RHEL 5)
dnsmasq-2.45-1.1.el5_3

# rpm -qa | grep dnsmasq          (RHEL 6)
dnsmasq-2.48-17.el6.i686
dnsmasq-utils-2.48-17.el6.i686

# rpm -qa | grep dnsmasq          (RHEL 7)
dnsmasq-utils-2.66-12.el7.x86_64
dnsmasq-2.66-12.el7.x86_64

Configuration de base

La configuration de Dnsmasq s’effectue par le biais du fichier de configuration /etc/dnsmasq.conf. Le fichier fourni par défaut comporte près de 600 lignes de commentaires et sert également de documentation. On pourrait très bien activer l’une ou l’autre option en la décommentant. Dans le cas présent, il vaut mieux effectuer une copie de sauvegarde et commencer par un fichier vide :

# cd /etc
# mv dnsmasq.conf dnsmasq.conf.orig
# touch dnsmasq.conf

Éditer une configuration minimale, par exemple :

# /etc/dnsmasq.conf
domain-needed
bogus-priv
interface=enp3s1                             
dhcp-range=192.168.3.100,192.168.3.200,24h
local=/sandbox.lan/
domain=sandbox.lan
expand-hosts
server=192.168.2.1
  • Les deux premières options domain-needed et bogus-priv évitent que Dnsmasq ne relaie les noms d’hôtes locaux à un ou plusieurs serveurs DNS en amont.
  • L’option interface spécifie l’interface réseau que l’on souhaite utiliser.
  • L’option dhcp-range définit la plage d’adresses dynamiques utilisée parle serveur DHCP. Dans le cas présent, les adresses attribuées auront une durée de validité de 24 heures. Passé ce délai, elles devront être renouvelées par les clients.
  • L’option local indique que les réponses aux requêtes pour le domaine spécifié doivent être fournies directement par Dnsmasq, et non pas par un serveur DNS en amont.
  • L’option domain attribue le nom de domaine spécifié aux clients. Pour des raisons évidentes, il doit coïncider avec le domaine défini dans l’option local.
  • L’option expand-hosts concerne les requêtes DNS sans le domaine et se charge d’ajouter celui-ci automatiquement. Concrètement, lorsqu’on essaie d’envoyer un ping sur bernadette, Dnsmasq retournera automatiquement l’adresse IP de bernadette.sandbox.lan.
  • L’option server spécifie l’adresse IP d’un ou plusieurs serveurs DNS en amont.

Démarrage et utilisation

Activer Dnsmasq :

# chkconfig dnsmasq on                  (RHEL 5/6)
# systemctl enable dnsmasq              (RHEL 7)

Gérer le lancement et l’arrêt :

# service dnsmasq start                 (RHEL 5/6)
# systemctl start|stop|restart dnsmasq  (RHEL 7)

Attribuer des adresses statiques

On pourra attribuer une adresse IP et un nom d’hôte fixe en fonction de l’adresse MAC des interfaces réseau respectives, en ajoutant une série d’entrées comme ceci :

# /etc/dnsmasq.conf
...
dhcp-host=00:1E:C9:43:A7:BF,bernadette,192.168.3.2
dhcp-host=00:1D:09:15:4A:D8,raymonde,192.168.3.3
...

On choisira les adresses IP en-dehors de la plage d’adresses dynamiques.

Si l’on souhaite attribuer une adresse IP et un nom d’hôte fixe à un portable que l’on connecte aussi bien par le wifi que par une connexion filaire, on peut utiliser la syntaxe suivante :

# /etc/dnsmasq.conf
...
dhcp-host=44:1E:A1:E6:FA:93,E4:D5:3D:BD:EA:05,buzz,192.168.3.6
dhcp-host=00:27:19:F1:BC:3A,00:19:E0:83:3A:C1,bebette,192.168.3.7
...

Ajouter des hôtes statiques

L’ajout d’hôtes statiques est extrêmement simple avec Dnsmasq. Il suffit d’ajouter l’entrée correspondante dans le fichier /etc/hosts du serveur, et celui-ci se chargera de relayer l’info :

# /etc/hosts 
...
192.168.3.254   wifi
...

Relancer Dnsmasq pour prendre en compte les modifications :

# service dnsmasq restart    (RHEL 5/6)
# systemctl restart dnsmasq  (RHEL 7)

On peut également ajouter un raccourci pour une adresse IP externe :

# /etc/hosts
...
88.191.189.120  dedibox
...

Si le serveur héberge une série de sites web sous formes d’hôtes virtuels, on peut ajouter les entrées correspondantes comme ceci :

# /etc/hosts 
...
192.168.3.1   mirror.amandine.sandbox.lan mirror.amandine
192.168.3.1   cmsms.amandine.sandbox.lan cmsms.amandine
...

Résolution des noms d’hôtes

Les postes clients sur le réseau utilisent les informations sur les noms d’hôtes fournies par Dnsmasq. Pour que le serveur lui-même puisse les prendre en compte aussi, il faudra éditer /etc/resolv.conf comme ceci :

# /etc/resolv.conf
nameserver 127.0.0.1

Vérifions :

[root@amandine:~] # host bernadette
bernadette has address 192.168.3.2
[root@amandine:~] # host raymonde
raymonde has address 192.168.3.3

Afficher en direct l’attribution des baux DHCP

Sur le serveur, on peut suivre en direct l’attribution des baux DHCP en affichant en continu le journal /var/log/messages :

# tail -f /var/log/messages
... DHCPREQUEST(enp3s1) 192.168.3.2 00:1e:c9:43:a7:bf
... DHCPACK(enp3s1) 192.168.3.2 00:1e:c9:43:a7:bf bernadette
... DHCPREQUEST(enp3s1) 192.168.3.3 00:1d:09:15:4a:d8
... DHCPACK(enp3s1) 192.168.3.3 00:1d:09:15:4a:d8 raymonde
Publié dans CentOS, Documentation Microlinux | Marqué avec , , | Laisser un commentaire