Organiser les hôtes virtuels Apache sous CentOS

Apache Virtual HostsComme la plupart des distributions Linux, Red Hat et CentOS fournissent un répertoire comprenant une série de fichiers de configuration modulaires pour Apache, en l’occurrence /etc/httpd/conf.d. Ces fichiers sont pris en compte grâce à la directive Include qui figure dans le fichier de configuration principal /etc/httpd/conf/httpd.conf.

# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

Le répertoire /etc/httpd/conf.d contient un fichier README qui nous renseigne un peu plus sur le fonctionnement particulier de cette configuration modulaire.

This directory holds configuration files for the Apache HTTP Server;
any files in this directory which have the ".conf" extension will be
processed as httpd configuration files.  The directory is used in
addition to the directory /etc/httpd/conf.modules.d/, which contains
configuration files necessary to load modules.

Files are processed in alphabetical order.

L’info à retenir ici, c’est que les bouts de fichiers de configuration pour Apache sont traités par ordre alphabétique. Partant de là, on peut répartir la configuration des hôtes virtuels sur plusieurs fichiers pour plus de lisibilité, avec un VirtualHost par fichier, et en nommant chaque fichier en correspondance avec le nom d’hôte. Voici la solution que j’ai adoptée sur mes serveurs.

Dans un premier temps, les fichiers contenant la configuration globale d’Apache sont préfixés 00-* comme ceci.

# cd /etc/httpd/conf.d
# ls
autoindex.conf  php.conf  README  ssl.conf  userdir.conf  
welcome.conf
# for FILE in $(ls *.conf); do
> mv $FILE 00-$FILE
> done
# ls
00-autoindex.conf  00-php.conf  00-ssl.conf  00-userdir.conf  
00-welcome.conf README

Ensuite, j’ai deux hôtes virtuels qui pointent vers la page par défaut, un pour le HTTP, l’autre pour le HTTPS. Les deux sont préfixés 10-* comme ceci.

  • 10-default.conf
  • 10-default-ssl.conf

Enfin, les hébergements à proprement parler sont tous préfixés 20-* et nommés en fonction du nom d’hôte. Les hébergements sécurisés portent tous le suffixe -ssl.conf. Voici ce que l’on obtient au total.

# ls -1
00-autoindex.conf
00-php.conf
00-ssl.conf
00-userdir.conf
00-welcome.conf
10-default.conf
10-default-ssl.conf
20-freebsd.slackbox.fr.conf
20-mail.slackbox.fr.conf
20-mail.slackbox.fr-ssl.conf
20-mail.unixbox.fr.conf
20-mail.unixbox.fr-ssl.conf
20-nextcloud.slackbox.fr.conf
20-nextcloud.slackbox.fr-ssl.conf
20-nextcloud.unixbox.fr.conf
20-nextcloud.unixbox.fr-ssl.conf
20-slackware.slackbox.fr.conf
20-www.slackbox.fr.conf
20-www.unixbox.fr.conf
README

Pour un hébergement sécurisé comme 20-mail.slackbox.fr-ssl.conf, le fichier 20-mail.slackbox.fr.conf pourra contenir une redirection HTTP > HTTPS.

 

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

Certificats SSL/TLS avec Certbot sous CentOS

Certificat[Travail en cours.]

Cet article décrit la gestion des certificats SSL/TLS gratuits sur un serveur dédié tournant sous CentOS 7. Un certificat électronique peut être vu comme une carte d’identité numérique. Il est utilisé principalement pour identifier et authentifier une personne physique ou morale, ou pour chiffrer des échanges. Il est signé par un tiers de confiance qui atteste du lien entre l’identité physique et l’entité numérique. Le standard le plus utilisé pour la création des certificats numériques est le X.509.

Les prix des certificats électroniques sont extrêmement variables, et certaines entreprises comme par exemple Verisign les font payer très cher. En revanche, il est tout à fait possible de les avoir gratuitement…

Let’s Encrypt est une autorité de certification lancée le 3 décembre 2015 en version bêta publique. Elle fournit des certificats SSL/TLS gratuits grâce au client Certbot installé sur le serveur qui automatise la plupart des tâches. On n’est donc plus obligé de payer une fortune et/ou de sauter à travers des cerceaux en feu pour créer et renouveler les certificats.

Les certificats générés avec Certbot sont reconnus par l’ensemble des navigateurs Web modernes. Cette technologie repose sur le protocole ACME (Automated Certificate Management Environment).

Installation

Certbot est fourni par le dépôt EPEL.

# yum install certbot

On notera au passage que le paquet dépend d’une quantité importante de modules Python.

Plug-ins

Le client Certbot supporte une série de plug-ins pour Apache et Nginx. L’option plugins permet d’afficher les plug-ins installés.

# certbot plugins
Saving debug log to /var/log/letsencrypt/letsencrypt.log
* webroot
Description: Place files in webroot directory
Interfaces: IAuthenticator, IPlugin
Entry point: webroot = certbot.plugins.webroot:Authenticator

* standalone
Description: Spin up a temporary webserver
Interfaces: IAuthenticator, IPlugin
Entry point: standalone = certbot.plugins.standalone:Authenticator

Notre installation dispose des plug-ins webroot et standalone.

Tester Certbot et générer un certificat

Pour commencer, nous allons générer un certificat pour le domaine slackbox.fr. Étant donné que la requête utilise le port 443, il faut d’abord arrêter le serveur Web. En passant, il faudra éventuellement vérifier si le port 443 est bien ouvert dans le pare-feu.

# systemctl stop httpd

Éventuellement, il faudra créer l’arborescence de l’hébergement sécurisé au préalable.

# mkdir -pv /var/www/html/slackbox-secure/html
mkdir: created directory ‘/var/www/html/slackbox-secure’
mkdir: created directory ‘/var/www/html/slackbox-secure/html’

Dans un premier temps, nous allons tester la génération du certificat comme ceci.

# certbot certonly --non-interactive --email info@microlinux.fr \
  --preferred-challenges tls-sni-01 --standalone --agree-tos \
  --renew-by-default -d www.slackbox.fr -d slackbox.fr \
  --webroot-path /var/www/html/slackbox-secure/html --test-cert

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Starting new HTTPS connection (1): acme-staging.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
tls-sni-01 challenge for www.slackbox.fr
tls-sni-01 challenge for slackbox.fr
Waiting for verification...
Cleaning up challenges
Generating key 2048 bits /etc/letsencrypt/keys/0004_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0004_csr-certbot.pem

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
 /etc/letsencrypt/live/www.slackbox.fr/fullchain.pem. Your cert will
 expire on 2017-07-24. To obtain a new or tweaked version of this
 certificate in the future, simply run certbot again. To
 non-interactively renew *all* of your certificates, run "certbot
 renew"

Pour en savoir un peu plus sur les options utilisées, on peut afficher l’aide de certbot comme ceci.

# certbot --help all | less

Si tout s’est passé comme prévu, on peut réitérer la commande ci-dessus en omettant l’option --test-cert pour générer le certificat pour de vrai.

Les fichiers générés se trouvent tous dans le répertoire /etc/letsencrypt/live/<domaine>. On va donc jeter un oeil.

# ls -1 /etc/letsencrypt/live/www.slackbox.fr/
cert.pem  
chain.pem  
fullchain.pem  
privkey.pem

À quoi correspondent ces fichiers ?

  • privkey.pem : c’est la clé privée pour le certificat. Ce fichier ne doit surtout pas être divulgué. Le serveur doit pouvoir y accéder pour que SSL/TLS fonctionne. C’est ce qu’Apache utilisera comme fichier SSLCertificateKeyFile.
  • cert.pem : le certificat du serveur. C’est ce qui correspond au SSLCertificateFile d’Apache.
  • chain.pem : les certificats requis par le navigateur hormis le certificat du serveur. Requis par Apache < 2.4.8 pour le SSLCertificateChainFile.
  • fullchain.pem : tous les certificats, y compris celui du serveur. Il s’agit là de la concaténation de chain.pem et de cert.pem. C’est requis par Apache >= 2.4.8 pour le SSLCertificateFile.

Sur une Dedibox, on peut tenter de créer un certificat propre à la machine.

# certbot certonly --non-interactive --email info@microlinux.fr \
  --preferred-challenges tls-sni-01 --standalone --agree-tos \
  --renew-by-default -d sd-41893.dedibox.fr \
  --webroot-path /var/www/html/default/html 

Avec un peu de chance, ça passe. Dans le cas contraire, on est gratifié d’un message d’erreur de dépassement de quota en raison d’un nombre de sous-domaines trop élevé pour le domaine dedibox.fr. Cela dépend des jours.

Utiliser et tester le certificat

Pour commencer, on peut mettre en place un hébergement sécurisé avec le serveur Web Apache. La procédure détaillée fait l’objet d’un article à part. Voici la stance correspondante dans la configuration d’Apache.

...
SSLCertificateFile "/chemin/vers/cert.pem"
SSLCertificateKeyFile "/chemin/vers/privkey.pem"
SSLCertificateChainFile "/chemin/vers/fullchain.pem"
...

Renouveler un certificat

La durée de vie d’un certificat est de 90 jours, ce qui n’est pas beaucoup. Pour prolonger la validité d’un certificat, il suffit de le renouveler en réinvoquant exactement la même commande utilisée pour le générer initialement.

 

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

Hébergement sécurisé avec Apache et SSL sous CentOS

HTTPS

[Travail en cours.]

Cet article décrit la mise en place d’un hébergement sécurisé sur un serveur Apache tournant sous CentOS 7. Le protocole HTTP (Hypertext Transfer Protocol) transmet les données entre le serveur et le navigateur « en clair ». Les données personnelles, mots de passe et autres numéros de Carte Bleue sont donc interceptables. Pour résoudre ce problème, on utilisera le protocole HTTPS, qui ajoute une couche de cryptage SSL (Secure Sockets Layer) au protocole HTTP.

Le transfert crypté des données ne constitue qu’un aspect dans l’établissement d’une connexion sécurisé. L’autre aspect tout aussi important, c’est que l’utilisateur doit être sûr de communiquer avec la bonne personne. Autrement dit, votre numéro de Carte Bleue a beau être transmis de façon sécurisée, encore faut-il que la plateforme de paiement ne soit pas située sur un serveur géré par la mafia albanaise.

Pour savoir si l’on a bien affaire au bon interlocuteur, on utilisera un certificat. Cette véritable carte d’identité électronique contient non seulement la clé publique du serveur pour crypter les transmissions, mais également des renseignements sur le site ainsi que la signature de l’autorité de certification.

La génération d’un certificat électronique fait l’objet d’un article à part. Pour nos essais, nous utiliserons un certificat SSL/TLS fourni par le client Certbot. Si l’on décide de partir sur un certificat auto-signé, la configuration devra être adaptée en conséquence.

Dans l’exemple ci-dessous, nous allons configurer un hébergement public https://sd-41893.dedibox.fr.

Prérequis

Le protocole HTTPS utilise le port 443. Il faut donc songer avant toute chose à ouvrir ce port dans le pare-feu.

Installation

Le chiffrement SSL/TLS pour Apache est fourni par le paquet mod_ssl.

# yum install mod_ssl

On notera l’apparition d’un fichier de configuration ssl.conf dans /etc/httpd/conf.d.

Configurer Apache et SSL

Notre hébergement HTTPS sera rangé en-dessous de /var/www/html comme nos hôtes virtuels HTTP. Éditer /etc/httpd/conf.d/ssl.conf en renseignant les directives DocumentRoot et ServerName ainsi que l’emplacement du certificat SSL et de la clé privée.

##
## SSL Virtual Host Context
##
<VirtualHost _default_:443>
DocumentRoot "/var/www/html/default/html"
ServerName sd-41893.dedibox.fr:443
...
SSLCertificateFile /chemin/vers/cert.pem
SSLCertificateKeyFile /chemin/vers/privkey.pem
SSLCertificateChainFile /chemin/vers/fullchain.pem
...
</VirtualHost>

Redémarrer Apache.

# systemctl restart httpd

Ouvrir le site avec Firefox. On notera la présence du petit cadenas vert en haut à gauche dans la barre d’adresses pour indiquer l’établissement d’une connexion sécurisée.

Dedibox HTTPS

Améliorer la sécurité de notre hébergement

Rendons-nous sur la page SSL Server Test du portail Qualys SSL Labs pour effectuer un audit de la sécurité de notre hébergement.

Qualys Labs SSL Server Test

Pour l’heure, la résultat est plutôt médiocre et comporte une série de vulnérabilités, que nous allons éliminer l’une après l’autre en suivant les suggestions affichées.

La vulnérabilité à l’attaque POODLE se résoud en désactivant SSLv3 dans ssl.conf. L’option SSLProtocol se situe dans la configuration de l’hôte virtuel. Il faut la déplacer au début du fichier dans les options globales, en ajoutant -SSLv3, comme ceci.

#
# When we also provide SSL we have to listen to the 
# the HTTPS port in addition.
#
Listen 443 https

##
##  SSL Global Context
##
##  All SSL configuration in this context applies both to
##  the main server and all SSL-enabled virtual hosts.
##

#   SSL Protocol support:
# List the enable protocol levels with which clients will be able 
# to connect.  Disable SSLv2 access by default:
SSLProtocol all -SSLv2 -SSLv3

Prendre en compte les modifications et relancer un test sur le site de Qualys Labs en cliquant sur Clear cache.

Qualys Labs SSL Server Test

C’est déjà un peu mieux. La prochaine suggestion concerne la désactivation du chiffrement RC4. Cette fois-ci, il faut récupérer l’option SSLCipherSuite dans la configuration de l’hôte virtuel et la placer en tête du fichier dans les options globales, en ajoutant !RC4.

#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
SSLProtocol all -SSLv2 -SSLv3

#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4

Recharger la configuration d’Apache et relancer un test.

Qualys SSL Labs Server Test

On avance petit à petit. Pour nous débarrasser de la vulnérabilité restante, repérer l’option commentée SSLHonorCipherOrder et l’insérer juste après SSLCipherSuite en la décommentant.

#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4
SSLHonorCipherOrder on

Cette fois-ci, nous avons bel et bien éliminé l’ensemble des failles de sécurité connues concernant le chiffrement.

Qualys SSL Labs Server Test

La politique HSTS

HSTS (HTTP Strict Transport Security) est un mécanisme de politique de sécurité proposé pour HTTP, permettant à un serveur web de déclarer à un agent utilisateur (navigateur web) compatible qu’il doit interagir avec lui en utilisant une connexion sécurisée (comme HTTPS). La politique est donc communiquée à l’agent utilisateur par le serveur via la réponse HTTP, dans le champ d’en-tête nommé Strict-Transport-Security. La politique spécifie une période de temps durant laquelle l’agent utilisateur doit accéder au serveur uniquement de façon sécurisée.

Pour activer cette politique dans la configuration d’Apache, il suffit d’ajouter la ligne suivante dans la définition de l’hôte virtuel.

# /etc/httpd/extra/httpd-ssl.conf 
...
<VirtualHost _default_:443>
# HSTS
Header always set Strict-Transport-Security \
  "max-age=63072000; includeSubDomains"
...
</VirtualHost>

L’audit de sécurité nous montre qu’on est assez proche de la perfection.

Qualys SSL Labs Server Test

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

Installer et configurer Recoll sous CentOS

RecollCet article décrit l’installation et la configuration de Recoll sur un poste de travail tournant sous CentOS 7. Recoll est un outil personnel de recherche textuelle pour Unix et Linux. Il est basé sur le moteur d’indexation Xapian, pour lequel il offre une interface graphique facile à utiliser. Il traite la plupart des types de documents, que ceux-ci soient comprimés ou non, en utilisant une série d’applications externes pour l’extraction du texte. Si l’on en croit la description des développeurs, Recoll est capable d’indexer un document Microsoft Word enregistré comme pièce jointe dans un e-mail rangé dans un dossier Thunderbird lui-même archivé dans un fichier Zip.

Installation

Recoll n’est fourni par aucun dépôt de paquets. Les développeurs de l’application fournissent une série de paquets RPM pour CentOS sur la page de téléchargement. Nous allons récupérer les dépendances du paquet d’une autre manière.

La seule dépendance stricte de Recoll, c’est le paquet xapian-core-libs fourni par le dépôt EPEL.

# yum install xapian-core-libs

Recoll utilise une poignée d’outils externes qui lui permettent d’indexer certains types de fichiers. Dans la configuration par défaut, il nous manque deux de ces outils, perl-Image-ExifTool et untex. Le premier est fourni par le dépôt EPEL.

# yum install perl-Image-ExifTool

Quant à untex, on peut le trouver sur le site des Linux Forensics Tools.

Télécharger et installer le paquet.

# yum localinstall untex-1.3-3.1.el7.x86_64.rpm

Maintenant que toutes les dépendances externes sont satisfaites, on peut récupérer le paquet recoll depuis la page de téléchargement du projet. Le paquet RPM compilé par les soins des développeurs n’est pas tout à fait à jour par rapport à la dernière version disponible. En attendant, on va faire avec les moyens de bord.

Installer le paquet.

# yum localinstall recoll-1.21.5-1.el7.centos.x86_64.rpm

Configuration et utilisation

Au premier démarrage, Recoll veut savoir comment vous souhaitez organiser l’indexation de vos documents. Cliquez sur Planning de l’indexation.

Recoll

Dans la fenêtre subséquente, choisissez Démarrage de l’indexation au fil de l’eau.

Recoll

Enfin, configurez le lancement du démon de recherche et démarrez-le.

Recoll

Selon le nombre de documents que vous stockez sur votre machine, l’indexation initiale mettra un certain temps. Une fois que l’ensemble des données est indexé, les opérations de recherche sont extrêmement rapides, et les résultats plutôt pertinents.

Recoll

En conclusion, Recoll est un outil de recherche intuitif et puissant, susceptible d’améliorer le workflow au quotidien.

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

Configurer une imprimante/scanner réseau HP sous CentOS

HPCet article décrit de manière succincte la configuration d’une imprimante/scanner HP en réseau sur un poste de travail tournant sous CentOS 7.

Vérifier si le serveur d’impression CUPS tourne correctement.

# systemctl status cups
cups.service - CUPS Printing Service
 ...
 Active: active (running)

Installer HPLIP.

# yum install hplip-gui

Ce paquet installe automatiquement les dépendances hplip et hpijs.

Dans le réseau local, l’imprimante est configurée avec un nom d’hôte correspondant.

# nmap -sP hp-officejet
Nmap scan report for hp-officejet (192.168.2.252)
Host is up (0.00012s latency).
rDNS record for 192.168.2.252: hp-officejet.microlinux.lan
MAC Address: 88:51:FB:15:3A:4A (Hewlett Packard)
Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

Ouvrir un terminal et lancer le téléchargement du plug-in HP.

$ hp-plugin

La commande devra être invoquée en tant que simple utilisateur, même si par la suite l’assistant requiert la saisie du mot de passe root.

hp-plugin

Une fois que le plug-in est installé, lancer le HP Device Manager dans le menu d’applications et cliquer sur Setup Device.

HPLIP

Choisir le type de connexion Network/Ethernet/Wireless. Si jamais l’autodétection ne fonctionne pas, afficher les options avancées (Advanced Options), cocher Manual Discovery et saisir le nom d’hôte ou l’adresse IP de l’imprimante. On pourra conserver la valeur par défaut 1 pour Jetdirect port.

HPLIP

Dans notre cas, l’autodétection fonctionne très bien.

HPLIP

Les deux champs Decription et Location sont facultatifs, mais je les renseigne quand-même. Je décoche la configuration du fax, que je n’utilise pas. Notez que je ne coche pas non plus l’impression de la page de test. Cette fonctionnalité de HPLIP souffre d’un bug, même si l’imprimante fonctionne par ailleurs.

HPLIP

La configuration de l’imprimante nécessite les droits d’administrateur.

HPLIP

Si tout se passe bien, le HP Device Manager affiche l’imprimante dans la fenêtre principale.

HPLIP

L’opération devra être répétée sur chacun des postes clients à partir desquels on souhaite imprimer.

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

Configurer un serveur web Apache sous CentOS

Apache est le principal serveur Web du monde de l’Open Source. D’après les statistiques de Netcraft, 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.

Cette page décrit la configuration d’un serveur Web de type LAMP (Linux + Apache + MySQL/MariaDB + PHP) sur CentOS 7.

Prérequis

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

Installation

Le serveur Apache est fourni par le paquet httpd.

# yum install httpd

Passer SELinux en mode permissif.

# setenforce 0

Activer et lancer Apache.

# systemctl enable httpd
# systemctl start httpd

Tester le bon fonctionnement du serveur.

# links http://localhost

On doit voir quelque chose de ce genre.

=================================================================
                           Testing 123..
This page is used to test the proper operation of the Apache HTTP
server after it has been installed. If you can read this page it 
means that this site is working properly. This server is powered 
by CentOS.
=================================================================

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

  • http://192.168.2.5

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

  • http://amandine.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

Voici à quoi ressemble la page par défaut dans un navigateur graphique.

Apache Test

Configuration de base

Le principal fichier de configuration d’Apache, c’est /etc/httpd/conf/httpd.conf. Avant de modifier quoi que ce soit, on va faire une copie du fichier de configuration par défaut.

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

On peut déjà renseigner quelques directives.

# /etc/httpd/conf/httpd.conf
...
ServerAdmin info@microlinux.fr
...
ServerName  amandine.microlinux.lan
...
  • 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
...

Prendre en compte les modifications.

# systemctl reload httpd

Organisation des fichiers de configuration

Le fichier /etc/httpd/conf/httpd.conf ne contient pas l’intégralité de la configuration d’Apache. Jetons un oeil à la dernière ligne de ce fichier.

# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

En langage tam-tam, cela signifie qu’il faut également tenir compte de tous les fichiers *.conf contenus dans le répertoire /etc/httpd/conf.d.

# cd /etc/httpd/conf.d/
# ls *.conf
autoindex.conf userdir.conf welcome.conf

Héberger un site statique

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

DocumentRoot "/var/www/html"

Ce répertoire est vide par défaut. En l’absence de contenu, c’est la page de test qui s’affiche, en fonction de la configuration prédéfinie dans /etc/httpd/conf.d/welcome.conf.

Pour nous épargner la corvée de créer du contenu bidon, nous pouvons très bien récupérer un site web existant. On choisira la documentation de Slackware, qui vient sous forme d’une série de pages HTML statiques.

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

Apache n’est pas censé tourner en tant que root, mais en tant qu’utilisateur spécial défini par les directives User et Group dans /etc/httpd/conf/httpd.conf.

User apache
Group apache

On va donc attribuer toutes les pages de notre site local à cet utilisateur et à ce groupe. En passant, on va restreindre les droits d’accès au minimum nécessaire.

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

À présent, on peut ouvrir le site dans un navigateur (Firefox, Links, Lynx) et apprécier le résultat.

Apache et SELinux (1)

Jetons un premier coup d’oeil sur ce que pense SELinux de notre configuration.

# sealert -a /var/log/audit/audit.log 
100% done
found 0 alerts in /var/log/audit/audit.log

On notera que le site web statique récupéré avec wget a été créé d’emblée avec le contexte de sécurité approprié httpd_sys_content_t. Tout va donc très bien jusqu’ici.

Héberger plusieurs sites sur un serveur local

Le principe des hôtes 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.

Sur un serveur local, on pourra essayer d’héberger trois sites.

  • http://slackware.amandine hébergera la documentation de Slackware.
  • http://freebsd.amandine affichera la documentation de FreeBSD.
  • http://amandine pointera vers la page par défaut du serveur.

Pour commencer, on va déplacer le site existant dans un nouveau répertoire slackware/html.

# cd /var/www/html
# mkdir -pv ../slackware/html
mkdir: création du répertoire « ../slackware »
mkdir: création du répertoire « ../slackware/html »
# mv * ../slackware/html/
# mv ../slackware/ .

Puis, on va créer un autre répertoire freebsd/html, dans lequel on va télécharger un autre site, en l’occurrence la documentation de FreeBSD.

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

Enfin, on va mettre en place une page par défaut dans le répertoire default/html. Pour ce faire, on va utiliser la page qui s’affiche lorsqu’il n’y a pas de contenu.

# cd /var/www/html/
# mkdir -pv default/html
mkdir: création du répertoire « default »
mkdir: création du répertoire « default/html »
# cp -R /usr/share/httpd/noindex/* default/html/

Au total, on a donc…

# ls -l
total 12
drwxr-xr-x 3 root root 4096 23 févr. 06:36 default
drwxr-xr-x 3 root root 4096 23 févr. 06:21 freebsd
drwxr-xr-x 3 root root 4096 23 févr. 06:19 slackware

On va définir les permissions à la louche.

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

Créer un fichier /etc/httpd/conf.d/default.conf. Ce fichier définira 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/conf.d/default.conf
#
# Page par défaut
<VirtualHost *:80>
  ServerAdmin info@microlinux.fr
  DocumentRoot "/var/www/html/default/html"
  ServerName amandine.microlinux.lan
  ServerAlias amandine
  ErrorLog logs/default-error_log
  CustomLog logs/default-access_log common
</VirtualHost>

Une remarque en passant. Nous aurions pu très bien ajouter cette stance dans le fichier /etc/httpd/conf/httpd.conf. La création de fichiers *.conf individuels dans /etc/httpd/conf.d est motivée avant tout par un souci de clarté et de lisibilité.

Prendre en compte les modifications.

# systemctl reload httpd

Vérifier si la page par défaut du serveur s’affiche comme prévu.

 # links http://amandine.microlinux.lan

À présent, nous pouvons ajouter les deux autres sites. Le site http://slackware.amandine sera configuré comme ceci.

# /etc/httpd/conf.d/slackware.conf
#
# La documentation de Slackware
<VirtualHost *:80>
  ServerAdmin info@microlinux.fr
  DocumentRoot "/var/www/html/slackware/html"
  ServerName slackware.amandine.microlinux.lan
  ServerAlias slackware.amandine
  ErrorLog logs/slackware-error_log
  CustomLog logs/slackware-access_log common
</VirtualHost>

La configuration de http://freebsd.amandine suivra la même logique.

# /etc/httpd/conf.d/freebsd.conf
#
# La documentation de FreeBSD
<VirtualHost *:80>
  ServerAdmin info@microlinux.fr
  DocumentRoot "/var/www/html/freebsd/html"
  ServerName freebsd.amandine.microlinux.lan
  ServerAlias freebsd.amandine
  ErrorLog logs/freebsd-error_log
  CustomLog logs/freebsd-access_log common
</VirtualHost>

Pour l’instant, les noms d’hôtes slackware.amandine et freebsd.amandine ne correspondent à rien dans notre réseau local. Nous devons les ajouter à /etc/hosts sur le serveur.

# Amandine
192.168.2.5 amandine.microlinux.lan amandine
192.168.2.5 freebsd.amandine.microlinux.lan freebsd.amandine
192.168.2.5 slackware.amandine.microlinux.lan slackware.amandine

Redémarrer Dnsmasq pour propager l’info DNS.

# systemctl restart dnsmasq

Prendre en compte la nouvelle configuration d’Apache.

# systemctl reload httpd

Tester les deux sites en local avec Links ou Firefox sur une machine du réseau local.

  • http://slackware.amandine.microlinux.lan
  • http://freebsd.amandine.microlinux.lan

Régler les problèmes d’encodage

Dans la configuration actuelle, la documentation de FreeBSD n’affiche pas correctement les caractères accentués.

Encodage ISO

Ce comportement est dû à la directive AddDefaultCharset dans le fichier /etc/httpd/conf/httpd.conf.

AddDefaultCharset UTF-8

Or, le code source de la page d’accueil de FreeBSD spécifie un encodage différent.

<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>

Pour remédier à cela, il suffit de commenter la directive AddDefaultCharset, ce qui permettra aux pages hébergées de spécifier leur propre encodage.

#AddDefaultCharset UTF-8

Ne pas oublier de prendre en compte la nouvelle configuration.

# systemctl reload httpd

Une fois que l’on a rectifié l’encodage, Links affiche correctement la page. Firefox est plus dur de la feuille, et il faut éventuellement rectifier l’encodage manuellement (Affichage > Encodage de caractères) pour une page présente dans le cache du navigateur.

Héberger plusieurs sites sur une machine publique

Sur un serveur dédié avec un ou plusieurs domaines publiquement accessibles, la configuration de la page par défaut ressemblera à ceci.

# /etc/httpd/conf.d/default.conf
#
# Page par défaut
<VirtualHost *:80>
  ServerAdmin info@microlinux.fr
  DocumentRoot "/var/www/html/default/html"
  ServerName sd-41893.dedibox.fr
  ErrorLog logs/default-error_log
  CustomLog logs/default-access_log common
</VirtualHost>

La documentation de Slackware sera hébergée sur l’hôte slackware.slackbox.fr.

# /etc/httpd/conf.d/slackware.conf
#
# La documentation de Slackware
<VirtualHost *:80>
  ServerAdmin info@microlinux.fr
  DocumentRoot "/var/www/html/slackware/html"
  ServerName slackware.slackbox.fr
  ErrorLog logs/slackware-error_log
  CustomLog logs/slackware-access_log common
</VirtualHost>

Et pour l’hébergement de la documentation de FreeBSD, on suivra la même logique.

# /etc/httpd/conf.d/freebsd.conf
#
# La documentation de FreeBSD
<VirtualHost *:80>
  ServerAdmin info@microlinux.fr
  DocumentRoot "/var/www/html/freebsd/html"
  ServerName freebsd.slackbox.fr
  ErrorLog logs/freebsd-error_log
  CustomLog logs/freebsd-access_log common
</VirtualHost>

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.

# systemctl restart named

Tester l’affichage des différents sites.

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

Héberger des sites dynamiques avec PHP

Installer PHP.

# yum install php

Mettre en place un hôte virtuel http://phpinfo.amandine et éditer la configuration correspondante. L’hôte virtuel contiendra une seule page index.php que l’on éditera comme ceci.

<?php
 echo phpinfo();
?>

Ajouter une entrée correspondante dans la configuration DNS et redémarrer Apache.

# systemctl restart httpd

Afficher la page http://phpinfo.amandine dans un navigateur. On doit obtenir quelque chose qui ressemble grosso modo à ceci.

Infos PHP

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.

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

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

Utiliser MySQL/MariaDB à partir de PHP

Pour utiliser MySQL/MariaDB à partir de PHP, il suffit d’installer le module correspondant et de redémarrer Apache.

# yum install php-mysql
# systemctl restart httpd

Téléchargement

Des modèles de fichiers de configuration pour les hôtes virtuels sont disponibles dans mon dépôt Github, dans le répertoire centos/7.x/vhosts :

$ git clone https://github.com/kikinovak/centos
Publié dans CentOS, Documentation Microlinux | Marqué avec , | Laisser un commentaire

Configurer un serveur DNS avec BIND sous CentOS

DNSCet article décrit la mise en place d’un serveur DNS avec BIND sur un serveur dédié tournant sous CentOS 7. Le système de noms de domaine ou DNS (Domain Name System) permet d’établir une correspondance entre les adresses IP et les noms de domaine. Le DNS évite ainsi d’avoir à se rappeler des adresses IP.

Prérequis

Dans le pare-feu, ouvrir le port 53 en TCP et en UDP. Les gourous de la sécurité ont longtemps conseillé d’ouvrir le port 53 en UDP seulement pour les requêtes DNS. Or, ces dernières peuvent également utiliser le port 53 en TCP si l’UDP n’est pas accepté.

Installation

Outre le serveur bind à proprement parler, on installera le paquet bind-utils, qui fournit une collection d’outils comme dig, host et nslookup.

# yum install bind bind-utils

Basculer SELinux en mode permissif.

# setenforce 0

Serveur cache DNS

La configuration par défaut fournie par Red Hat est déjà assez sophistiquée. On va la sauvegarder pour partir sur quelque chose de plus simple.

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

Éditer /etc/named.conf comme ceci.

// /etc/named.conf

options {
  directory "/var/named";
};

zone "." IN {
  type hint;
  file "named.ca";
};

include "/etc/named.rfc1912.zones";

Régler les permissions de ce fichier.

# chown root:named /etc/named.conf
# chmod 0640 /etc/named.conf

Activer et démarrer BIND.

# systemctl enable named
# systemctl start named

Exécuter dig sur un domaine extérieur en vérifiant le temps de requête.

# dig centos.org @localhost
...
;; ANSWER SECTION:
centos.org.		60	IN	A	85.12.30.226
;; AUTHORITY SECTION:
centos.org.		14400	IN	NS	ns4.centos.org.
centos.org.		14400	IN	NS	ns1.centos.org.
centos.org.		14400	IN	NS	ns3.centos.org.
;; ADDITIONAL SECTION:
ns4.centos.org.		86400	IN	A	62.141.54.220
ns3.centos.org.		86400	IN	A	88.208.217.170
ns1.centos.org.		86400	IN	A	199.187.126.93
;; Query time: 110 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Apr 17 11:13:02 CEST 2017
;; MSG SIZE  rcvd: 157

Le temps de réponse devrait être bien plus court après une deuxième invocation de dig.

# dig centos.org @localhost
...
;; Query time: 5 msec

Configurer la journalisation

Dans notre configuration actuelle, les logs inondent /var/log/messages. Pour éviter ça, on va configurer une journalisation propre à BIND en ajoutant la stance correspondante à /etc/named.conf.

options {
  directory "/var/named";
};

logging {
  channel single_log {
    file "/var/log/named.log" versions 3 size 2m;
    severity info;
    print-time yes;
    print-severity yes;
    print-category yes;
  };
  category default {
    single_log;
  };
};

BIND ne peut pas créer ce fichier à la volée. On va donc le faire à sa place, en attribuant les permissions correctes.

# touch /var/log/named.log
# chown named:named /var/log/named.log

Relancer BIND pour prendre en compte les modifications.

# systemctl restart named

BIND et SELinux (1)

On peut déjà jeter un premier coup d’oeil sur ce que pense SELinux de notre configuration. Comme on peut s’y attendre, la définition d’un fichier journal personnalisé nous affiche une erreur. Voyons à quoi cela ressemble.

# sealert -a /var/log/audit/audit.log
100% done
found 1 alerts in /var/log/audit/audit.log
------------------------------------------------------------------
SELinux is preventing /usr/sbin/named from open access on the file 
/var/log/named.log.
*****  Plugin restorecon (99.5 confidence) suggests   *****
If you want to fix the label. 
/var/log/named.log default label should be named_log_t.
Then you can run restorecon.
Do
# /sbin/restorecon -v /var/log/named.log

Appliquons le contexte approprié comme indiqué.

# restorecon -v /var/log/named.log 
restorecon reset /var/log/named.log context unconfined_u:object_r:
var_log_t:s0->unconfined_u:object_r:named_log_t:s0

Effectivement, le problème est résolu.

# echo > /var/log/audit/audit.log
# systemctl restart named
# sealert -a /var/log/audit/audit.log
100% done
found 0 alerts in /var/log/audit/audit.log

Désactiver l’IPv6

Si l’on n’utilise pas l’IPv6, on peut désactiver le protocole en éditant /etc/sysconfig/named.

OPTIONS="-4"

Il faudra également ajouter une option à /etc/named.conf.

options {
  directory "/var/named";
  filter-aaaa-on-v4 yes;
};

Redémarrer BIND pour prendre en compte les modifications.

# systemctl restart named

Utiliser les DNS de base de chez Online

Online met à disposition deux serveurs DNS de base que nous allons utiliser de préférence.

options {
  directory "/var/named";
  filter-aaaa-on-v4 yes;
  forwarders {
    62.210.16.6;
    62.210.16.7;
  };
};

Redémarrer BIND.

# systemctl restart named

Serveur maître primaire

À présent, nous allons configurer BIND comme serveur maître primaire du domaine slackbox.fr. Le nom de domaine sera réservé au bureau d’enregistrement (registrar) BookMyName.com.

Pour ajouter une zone DNS à BIND afin de le transformer en serveur maître primaire, il faut tout d’abord indiquer l’emplacement du fichier de zone à /etc/named.conf. Pour plus de lisibilité, nous allons créer un fichier /etc/named.conf.local.

// /etc/named.conf.local 

zone "slackbox.fr" {
  type master;
  file "zone.slackbox.fr";
};

Le fichier named.conf.local aura les mêmes permissions que named.conf.

# chown root:named /etc/named.conf.local
# chmod 0640 /etc/named.conf.local

Éditer /etc/named.conf en incluant ce fichier.

zone "." IN {
  type hint;
  file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.conf.local";

Le fichier /var/named/zone.slackbox.fr devra être édité comme ceci.

; /var/named/zone.slackbox.fr
$TTL 86400
$ORIGIN slackbox.fr.
@ IN SOA ns.slackbox.fr. hostmaster.slackbox.fr. (
   2017041701   ; sn
        10800   ; refresh (3 heures)
          600   ; retry (10 minutes)
      1814400   ; expiry (3 semaines)
        10800 ) ; minimum (3 heures)
        IN          NS      ns.slackbox.fr.
        IN          NS      nssec.online.net.
        IN          MX      10 mail.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.

Définir les permissions qui vont bien.

# chown root:named /var/named/zone.slackbox.fr
# chmod 0640 /var/named/zone.slackbox.fr

Quelques remarques sur la syntaxe et les options utilisées.

  • La directive $TTL (Time To Live) définit le temps en secondes qu’un enregistrement pourra être gardé dans le cache par un autre serveur de noms.
  • La directive $ORIGIN définit le nom de domaine automatiquement ajouté à tous les noms de domaine incomplets (c’est-à-dire « non qualifiés ») définis dans un enregistrement DNS. Le nom de domaine est toujours un FQDN (Fully Qualified Domain Name) et se termine en conséquence par un point.
  • L’enregistrement SOA (Start Of Authority) définit les principales caractéristiques pour la zone ou le domaine avec un certain nombre de paramètres.
  • Le symbole @ se substitue à la valeur de $ORIGIN, concrètement à slackbox.fr.
  • IN définit la classe Internet. D’autres valeurs existent, mais elles sont rarement utilisées.
  • L’enregistrement NS définit le serveur de noms primaire pour la zone.
  • hostmaster.slackbox.fr définit l’adresse mail de l’administrateur de la zone. L’adresse hostmaster est recommandée, mais n’importe quelle adresse mail valide peut être définie ici. Étant donné que le symbole @ a une signification spécifique dans le contexte, on utilise les points comme séparateurs, ce qui explique la syntaxe bizarre. L’adresse mail définie ici est donc hostmaster@slackbox.fr.
  • 2017041701 définit le numéro de série associé à la zone. Par convention, on utilise le format AAAAMMJJSS. Le numéro de série doit impérativement être mis à jour à chaque fois que l’on modifie le domaine.
  • La valeur refresh contrôle la mise à jour des informations du serveur de noms esclave de la zone. Les valeurs typiques se situent entre 3 heures (10800) et 24 heures (86400).
  • La valeur retry définit le temps d’attente avant une deuxième tentative lorsque le serveur de noms esclave n’arrive pas à contacter le serveur maître pour rafraîchir les informations. Les valeurs typiques se situent entre 10 minutes (600) et 60 minutes (3600).
  • La valeur expiry définit le laps de temps au bout duquel les enregistrements de zone sont considérés comme ne faisant plus autorité. On choisira une valeur assez élevée, située entre une semaine (604800) à trois semaines (1814400).
  • La valeur minimum définit le laps de temps durant lequel des réponses négatives (NXDOMAIN) peuvent être gardées en cache par le serveur de noms esclave. Cette valeur se situera entre 0 et 3 heures (10800).
  • L’enregistrement NS (NS Resource Record) définit le ou les serveurs de noms pour le domaine ou la zone.
  • L’enregistrement A (A Resource Record) définit l’adresse IPv4 d’un hôte du domaine ou de la zone.

Vérifier la définition correcte de la zone.

# named-checkzone slackbox.fr /var/named/zone.slackbox.fr
zone slackbox.fr/IN: loaded serial 2017041701
OK

À chaque fois que l’on modifie le fichier de zone, on doit obligatoirement incrémenter le numéro de série. Ne pas oublier de redémarrer BIND après chaque modification.

# systemctl restart named

Dans l’interface de gestion de BookMyName.com (entrée de menu Gérer), il faudra indiquer qu’on gère nous-mêmes notre propre DNS. Pour ce faire, cliquer sur le nom de domaine dans la liste des noms de domaine, puis sur Modifier dans l’entrée de menu Vos DNS. Notez que dans la deuxième ligne, l’adresse IP correspondant à nssec.online.net est facultative.

DNS secondaire

La présence d’un serveur DNS secondaire est nécessaire pour les noms de domaine en .fr. Ce n’est pas la peine de louer un deuxième serveur, Online met gracieusement un DNS secondaire à disposition.

Dans la console Online, afficher les données du serveur. Dans le menu à gauche, cliquer sur DNS secondaires et définir une nouvelle entrée.

Éditer /etc/named.conf/local et autoriser le transfert de la zone vers le DNS secondaire d’Online.

// /etc/named.conf/local 
...
zone "slackbox.fr" {
  type master;
  allow-transfer { 62.210.16.8; }; 
  file "zone.slackbox.fr";
};

Reverse DNS

Il ne reste plus qu’à configurer les reverse DNS. Pour une configuration correcte du serveur, il faut que son adresse IP pointe vers le résultat de la commande hostname --fqdn. En l’occurrence, nous devons faire pointer 195.154.65.130 vers sd-41893.dedibox.fr. Là aussi, il faut se rendre dans la console Online > Liste de vos serveurs > Serveur > Réseau > Modifier les reverses et fournir le nom d’hôte souhaité. Pour la prise en compte des modifications, il faudra patienter un peu.

BIND et SELinux (2)

Vérifions à nouveau si notre configuration fonctionne bien avec SELinux.

# sealert -a /var/log/audit/audit.log
100% done
found 0 alerts in /var/log/audit/audit.log

On notera au passage que named.conf.local a été créé d’emblée avec le contexte de sécurité etc_t tout comme named.conf.

À partir de là, on peut sereinement réactiver SELinux en mode Strict.

# setenforce 1

Quelques vérifications

Voici une série de commandes pour tester la configuration correcte d’un domaine.

1. Configuration du DNS

# host slackbox.fr
slackbox.fr has address 195.154.65.130
slackbox.fr mail is handled by 10 mail.slackbox.fr.

2. Configuration du reverse DNS

# host 195.154.65.130
130.65.154.195.in-addr.arpa domain name pointer sd-41893.dedibox.fr.

3. Nom d’hôte du serveur mail

# host -t MX slackbox.fr
slackbox.fr mail is handled by 10 mail.slackbox.fr.

4. Adresse IP du serveur mail.

# host mail.slackbox.fr
mail.slackbox.fr has address 195.154.65.130

Téléchargement

Des modèles de fichiers named.conf, named.conf.local et zone.exemple.fr sont disponibles dans mon dépôt Github, dans le répertoire el7/bind.

$ git clone https://github.com/kikinovak/centos
Publié dans CentOS, Documentation Microlinux | Marqué avec , , | Laisser un commentaire

Synchronisation OwnCloud sous CentOS 7 et KDE

OwnCloudJe viens d’installer CentOS 7 avec un bureau KDE 4.14.8 sur mon ordinateur portable ASUS S300. Dans cet article, je décris la synchronisation de cet environnement de travail avec un stockage en réseau OwnCloud.

CentOS et RHEL disposent d’un client OwnCloud dans les dépôts EPEL, mais celui-ci n’est pas à jour. Les développeurs de OwnCloud maintiennent un dépôt de téléchargement pour RHEL/CentOS 7, qui permet d’obtenir la dernière version du client. Sur la page du projet OwnCloud, suivre le lien Get your OwnCloud, puis les boutons successifs Desktop Clients > Linux > CentOS > RHEL. Rapatrier le fichier isv:ownCloud:desktop.repo. On pourra éventuellement le renommer en owncloud-client.repo et l’éditer un peu. Pour ma part, j’ai modifié le nom du dépôt pour avoir quelque chose de plus lisible, et j’ai défini une priorité de 10 pour éviter un quelconque écrasement des paquets de base de CentOS.

[owncloud-client]
name=OwnCloud Desktop Client (RHEL 7)
...
enabled=1
priority=10

À partir de là, on peut installer le paquet owncloud-client dans sa dernière version. Lancer le client et fournir les paramètres de connexion.

OwnCloud Client

Effectuer la synchronisation initiale avec le serveur distant.

OwnCloud Client

Sur le portable, le gestionnaire de mots de passe Kwallet se lance automatiquement au démarrage de la session à cause de la connexion sans fil préconfigurée. Or, si Kwallet ne se lance pas pour une raison ou pour une autre – par exemple sur une station de travail – il faudra utiliser une astuce, faute de quoi le client OwnCloud s’obstinera à redemander le mot de passe de connexion au démarrage de la session.

Ouvrir la Configuration du système dans KDE, puis Démarrage et arrêt. Dans Fichier Bureau, mettre en surbrillance la ligne ownCloud et cliquer sur Propriétés.

owncloud-kwallet

L’onglet Application permet de modifier la commande qui lance le client, et c’est précisément ce que nous allons faire.

/usr/bin/kwalletd 2> /dev/null ; /usr/bin/owncloud

À partir de là, il suffira de fournir le mot de passe maître à Kwallet au démarrage de la session.

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

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

MySQLCet article décrit la mise en place d’un serveur de bases de donnéesMySQL/MariaDB sous CentOS. 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 (wikis, moteurs de blogs et de forums, systèmes de gestion de contenu, etc.) utilisent MySQL comme moteur de bases de données.

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!

CentOS 7 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.

Installation et configuration

Installer MySQL/MariaDB.

# yum install mariadb-server mariadb

Le client mariadb est automatiquement installé par le paquet mariadb-server.

Activer et démarrer le service.

# systemctl enable mariadb
# systemctl start mariadb

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

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL 
      MariaDB SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP 
      CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): [Entrée]
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the 
MariaDB root user without the proper authorisation.

Set root password? [Y/n] y
New password: **********
Re-enter new password: **********
Password updated successfully!
Reloading privilege tables..
 ... Success!

By default, a MariaDB installation has an anonymous user, allowing 
anyone to log into MariaDB without having to have a user account 
created for them.  This is intended only for testing, and to make 
the installation go a bit smoother.  You should remove them before 
moving into a production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'. 
This ensures that someone cannot guess at the root password from 
the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone 
can access.  This is also intended only for testing, and should be 
removed before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so 
far will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Dorénavant, il faut se connecter au moniteur MySQL/MariaDB avec le mot de passe que l’on vient de définir un peu plus haut.

$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.
...
MariaDB [(none)]>

Afficher les bases de données.

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

Utiliser la base de données mysql.

MariaDB [(none)]> use mysql;
Database changed

Afficher les utilisateurs.

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

On va garder la seule entrée pour root@localhost et supprimer les deux autres.

MariaDB [mysql]> delete from user where host!='localhost';
Query OK, 2 rows affected (0.00 sec)

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

MariaDB [mysql]> select user, host, password from user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *6883419C147A759B04D78A2D1E4E0C5BB0CDD1B4 |
+------+-----------+-------------------------------------------+
1 row in set (0.00 sec)

Quitter la console.

MariaDB [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 el7/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/centos
# cd centos/el7/backup/
# cp sqldump.sh /usr/local/sbin/
# chmod 0700 /usr/local/sbin/sqldump.sh
# vim /usr/local/sbin/sqldump.sh

Une fois qu’on a édité le script à sa convenance, on peut définir une tâche automatique.

# crontab -e
# Backup MySQL databases
05 10 * * * /usr/local/sbin/sqldump.sh 1> /dev/null

Dans l’exemple, on définit une sauvegarde quotidienne à 10h05.

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

Installer un poste de travail CentOS 7

centos-logo

Cet 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 KDE. 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.

CentOS 7 KDE

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 KDE est préconfiguré de manière intuitive.
  • Une panoplie d’applications populaires est installée pour toutes les tâches courantes.
  • Certaines applications « usines à gaz » sont remplacées par des équivalents légers.
  • 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.

  • 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 KDE Plasma Workspaces, mais sans cocher les options supplémentaires comme Applications KDE, 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
# systemctl status rngd
● 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

Afficher les mises à jour disponibles.

# yum check-update

Installer les mises à jour.

# yum update

Redémarrer.

Configurer le réseau sur un poste de travail

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

Configurer le réseau sur un portable

Sur un ordinateur portable, on utilisera le NetworkManager et l’applet correspondant kde-plasma-networkmanagement. Pour éviter les conflits, il vaut mieux supprimer les fichiers ifcfg-<interface> dans /etc/sysconfig/network-scripts et garder uniquement ifcfg-lo. Ensuite, il suffit de vérifier si NetworkManager est actif.

# systemctl status NetworkManager

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/install/ 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/, télécharger et installer le paquet nux-dextop-release.

# 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.

# 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.

# cd /root/centos/el7/install
# ./01-installer-outils.sh

On remarquera que la plupart des paquets sont déjà présents sur le système. C’est que le même script sert également à la configuration post-installation d’un serveur, qui part d’une installation minimale.

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

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 KDE par des entrées personnalisées plus cohérentes.

# ./04-nettoyer-menus.sh

Installer le profil KDE

Enfin, le script 05-installer-profil.sh installe une configuration personnalisée du bureau KDE 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
Publié dans CentOS, Documentation Microlinux | Marqué avec , , | 2 commentaires