Archives du mot-clé Debian

Après Parallels® Server pour Mac 4.0…

Pendant plusieurs années j’ai utilisé le système de virtualisation de serveurs de Parallels pour Mac. Parallels Server 4.0 tournait alors parfaitement sur un Xserve et son SAN (un Promise Vtrack). Malheureusement, je me suis retrouvé confronté à deux problèmes fourbes… Tout d’abord, Apple à mis à fin au développement de la gamme de Xserve. J’ai donc imaginé recycler les cartes Fiber Channel et Dual Gigabit du Xserve en les connectant à un Mac Mini Server à l’aide du rack d’extension de  Sonnet qui permet d’exploiter des cartes filles sur un bus Thunderbolt. Cela devait permettre de continuer à exploiter mon SAN pour les machine virtuelles tout en profitant d’un bon rapport de puissance. Malheureusement, et c’est le second problème rencontré, Parallels a arrêté de développer son système de virtualisation de serveur sur Mac. Et, comme la dernière version d’OS X compatible avec  Parallels ne fonctionne pas sur Mac Mini, c’était l’impasse. Voici donc le challenge de cette semaine : passer tout le système de virtualisation sous ProxMox 3.1 ! Pour le matériel, j’ai reçu un barebone serveur Tyan avec un Opteron 2.0 Ghz à 8 coeur et 16 Go de RAM pour commencer. Si tout se passe bien et que Debian reconnait correctement les cartes filles du Xserve, il sera tout à fait possible de rajouter un second processeur ainsi que 32Go de mémoire pour faire bonne mesure. Les objectifs étant multiples, j’espère bien partager avec vous de nouvelles découvertes… J’étudie les pistes suivantes et je n’ai pas encore finalisé mon choix :

  • Installation des drivers des différentes cartes ;
  • Connexion du SAN en iSCSI (via Fiber Channel) ;
  • RAID logiciel pour l’OS du serveur (les VM étant sans le SAN) [Debian RAID logiciel];
  • Installation de l’OS du serveur sur SSD  (les VM étant sans le SAN) ;
  • Serveur « diskless » avec boot PXE sur le SAN ;
  • Migration des machines Parallels vers Proxmox ;
  • etc.

SSL pour Apache 2 sous Debian

Dans le cadre de mes fonction au Lycée Hôtelier de La Rochelle, j’ai été amené a mettre en place un serveur GEPI. GEPI est un utilitaire de gestion web de notes et de cahier de texte qui nécessite, de préférence, un hébergement sécurisé par SSL. La documentation de l’éditeur étant limité à l’installation sur un système Sarge et donc avec Apache 1.3, j’ai du l’adapter à Apache2. Ayant réalisé un petit howto pour mes collègues, je vous transcrit ici la partie concernant l’installation d’apache avec SSL et la création des certificat qui vont de pair.

D’après les sources suivantes :
Configuration du serveur Debian GNU/Linux – Installation de GEPI [PDF]
Installer une solution LAMP [HTML – 17/09/2007]
Apache Server Verson 2.0 – SSL/TSL Strong Encryption : FAQ [HTML – English]

1. Prérequis d’installation

1.1 Connaissances

Pour se sentir à l’aise avec cette documentation, il est préférable d’avoir quelques connaissances de base concernant GNU/Linux notamment en ce qui concerne l’utilisation de la ligne de commande. Cependant, si vous suivez à la lettre les informations données ici, vous devriez être apte à installer votre système sans problème.

1.2 Système Debian GNU/Linux

Avant de commencer la mise en service du serveur Apache2, vous devez avoir installé Debian GNU/Linux en version Etch. Dans la mesure où le risque de faille de sécurité augmente avec le nombre de paquets installé, il est recommandé d’utiliser une installation minimale. L’installation d’une interface graphique et donc plutôt déconseillée. Pour obtenir de l’aide à l’installation Debian GNU Linux, vous pouvez vous baser sur la documentation de GEPI qui a été réalisée pour la version précédente de Debian, mais qui peut être facilement adaptée ou sur l’excellent document Formation Debian GNU/Linux d’Alexis de Lattre (chapitre I).

1.3 Conventions typographiques

Les commandes à saisir en console sont écrites de la manière suivante :

$ apt-get install ntpdate

Le signe $ qui les précède n’est pas à recopier, il sert uniquement à illustrer le prompt de la ligne de commande.

1.4 Mise en service de la synchronisation de l’heure par Internet

Il est utile que le système soit à l’heure, nous allons donc installer ntpdate qui permet de synchroniser l’heure et la date par Internet :

$ apt-get install ntpdate

Pour régler l’heure vous pouvez utiliser la commande suivante :

$ dpkg-reconfigure ntpdate

1.5 Installation de l’éditeur nano

Pour simplifier la création de fichiers texte avec la console, nous allons installer l’éditeur de texte nano.

$ apt-get install nano

Les habitués pourront toujours se tourner vers vi.

2 Mise en service d’Apache2 avec SSL

2.1 Création des certificats

Pour authentifier notre serveur, nous allons créer un certificat autosigné. Ce type de certificat est moins reconnu que ceux fournis par une autorité officielle, mais permet de mettre en place un chiffrage SSL à peu de frais. Sa durée de vie par défaut est limitée à un mois, mais nous allons l’étendre à un an afin de couvrir une période scolaire suffisamment longue. Pour plus de sécurité, il est toujours envisageable de choisir une période de vie plus courte ou de se tourner vers une autorité officielle. Commençons par générer la clef RSA 1024 bits. Cette clef peut aussi être protégée par une passphrase, mais, dans ce cas, il faudra la saisir à chaque lancement du service Apache2.

$ openssl genrsa -out server.key 1024

Une fois la clef générée nous pouvons passer au certificat autosigné :

$ openssl req -new -x509 -days 365 -key server.key -out server.crt

Lors de la génération du certificat, vous devrez répondre à un certain nombre de questions. Soyez vigilant en ce qui concerne le “common name”, il faudra y mettre le nom ou, le cas échéant, l’adresse IP de votre serveur. Dans le cas contraire, le client internet retournera une erreur comme quoi le nom du propriétaire du certificat ne correspond pas à celui du site. Voici l’exemple de mon serveur GEPI…

$ openssl req -new -x509 -days 365 -key server.key -out server.crt

You are about to be asked to enter information that will be incorporated
 into
your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,
If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:FR

State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:La Rochelle

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Education Nationale

Organizational Unit Name (eg, section) []:Lycée Hôtelier de La Rochelle

Common Name (eg, YOUR name) []:194.254.62.20

Email Address []:ce.0123xyz@ac-poitiers.fr

Puisque ce certificat n’est pas fourni par un tiers de confiance, le client Internet retournera une anomalie lors de l’affichage du site. Cela est normal et n’affecte en rien l’utilisation et la sécurité de site. Il est par ailleur possible d’obtenir un « vrais » certificat chez Verisign, Thawte out autre.

2.2 Activation de SSL pour Apache2

Pour utiliser les clefs réalisées précédemment avec votre serveur Apache2, il est nécessaire d’activer le module SSL qui est maintenant livré avec le serveur web.

$ a2enmod ssl

On peut placer la clef et son certificat à n’importe quel endroit. Cependant, pour simplifier ce document, nous décidons de créer un répertoire spécifique dans l’arborescence d’Apache2.

$ mkdir /etc/apache2/ssl$ cp server.* /etc/apache2/ssl

Le service SSL est maintenant activé et les certificats sont en place, nous pouvons donc passer à la configuration du site.

3. Configuration du site dans Apache2

Apache2 est capable de gérer plusieurs sites, nous allons créer une configuration spécifique pour notre site en utilisant l’éditeur nano.

$ nano /etc/apache2/sites-available/gepi.conf

Une fois nano lancé, nous allons définir les différentes informations propre au site. La section VirtualHost doit retourner l’adresse IP ou le nom de domaine de votre serveur .

  # Nom du serveur et emplacement des fichiers

ServerName           Gepi_LTH
DocumentRoot         /var/www/

 
# Activation de SSL et emplacement des clefs

SSLEngine            on
SSLCertificateFile   /etc/apache2/ssl/server2.crt

SSLCertificateKeyFile   /etc/apache2/ssl/server2.key
 

# Définition des charset français (au cas où...)
AddDefaultCharset    ISO-8859-15
AddCharset           ISO-8859-15 .iso-8859-15 .latin15 .fr

Pour sauvegarder ce fichier utilisez la combinaison de touches [ctrl] + [x] puis quittez avec [ctrl] + [q]. Vous remarquerez que nous demandons à Apache2 d’écouter sur le port 443, le port spécifique au service https. Il sera indispensable de vérifier que la configuration de votre routeur pends en compte cette nécessité. Enfin, pour activer le site, il faut l’ajouter aux sites-enable et relancer le service Apache2 :

$ ln -s /etc/apache2/sites-available/gepi.conf /etc/apache2/sites-enabled/gepi
$ /etc/init.d/apache2 force-reload

Vous pouvez maintenant tester votre site en saisissant l’adresse du serveur depuis un ordinateur sur réseau. Vous devez voir apparaître une page commençant par “Placeholder page”.

Voilà, Apache2 est configuré avec SSL, il ne reste plus qu’a continuer avec PHP, MySQL et le site de votre choix.

Pour information je joins ici la documentation complète d’installation de GEPI.

Serveur Internet sous Debian (Apache 1.3.x)

Cet article a pour objectif de vous aider à mettre en place un serveur internet complété par une base de données MySQL et un interpréteur PHP le plus rapidement possible sans avoir besoin de trop de préparation. Ce installation concerne les logiciels Apache 1.3.x, PHP 4.3.10 et MySQL 4.0.24.

1 – Installer Debian en mode console

1.2 – Quelle version

Si vous désirez mettre votre serveur web en production et que, par conséquent, vous voulez qu’il soit sécurisé au maximum, je vous conseille d’utiliser une Debian Stable (actuellement nommée Sarge). Dans le cas où vous désirez juste faire quelques tests sur un réseau local où vous n’êtes pas préoccupé par la sécurité, vous pouvez vous pencher sur une Debian Testing (actuellement nommé Etch).

1.2 – Plus d’informations sur l’installation

Vous pouvez utiliser l’installateur réseau de la Sarge disponible ici. Bien que je ne veuille pas m’étendre sur l’installation d’une Debian (cela fera l’objet d’un autre article) merci de prendre en considération ces quelques points:

  • N’installer ni gestionnaire de fenêtre ni interface graphique
  • En début d’installation choisissez de préférence un système de fichiers journalisé.
  • En fin d’installation n’exécuter ni tasktel ni dselect.
  • L’applicatif MC (Midnight Commander) peut vous simplifier la vie.

2 – Installer le serveur web Apache 1.3.33-6

2.1 – Récupérer les paquets et les installer

Comme d’habitude sous debian, rien de bien sorcier: il suffit de taper ceci: apt-get install apache à l’invite de commande.

2.2 – Comment le configurer

Toute la configuration d’Apache est localisée centralisée dans un seul fichier: /etc/apache/httpd.conf. Comme dans beaucoup de fichiers de configuration sous GNU/Linux, les commentaires sont précédés du symbole « # »

Exemple de fichier /etc/apache/httpd.conf :

# CONFIGURATION DE BASE 
#---------------------- 
ServerType standalone 
ServerRoot /etc/apache 
LockFile /var/lock/apache.lock 
PidFile /var/run/apache.pid
# PidFile: fichier conservant le numéro de processus d'apache
ScoreBoardFile /var/run/apache.scoreboard 
ResourceConfig /dev/null 
AccessConfig /dev/null 
#Les deux lignes précédentes limite l'accès à la configuration d'Apache 
# OPTIONS DE PERFORMANCE 
#----------------------- 
# Toutes ces options gèrent les accès au serveur Web 
Timeout 300 
KeepAlive On 
MaxKeepAliveRequests 100 
KeepAliveTimeout 15 
MinSpareServers 5 
MaxSpareServers 10 
StartServers 5 
MaxClients 150 
MaxRequestsPerChild 100 
# CHARGEMENT DES MODULES 
#----------------------- 
# Charge les modules d'apache 
LoadModule config_log_module /usr/lib/apache/1.3/mod_log_config.so 
# config_log_module: module de gestion des journaux (logs) 
LoadModule mime_module /usr/lib/apache/1.3/mod_mime.so 
# mime_module: détermination du type de document selon les extensions du fichier 
LoadModule dir_module /usr/lib/apache/1.3/mod_dir.so
# dir_module: gestion du répertoire racine 
LoadModule access_module /usr/lib/apache/1.3/mod_access.so 
# access_module: prise en charge des droits d'accès 
LoadModule auth_module /usr/lib/apache/1.3/mod_auth.so 
# PARAMETRES GENERAUX 
#-------------------- 
# Paramètres du serveur à proprement parler 
Port 80 
User www-data 
Group www-data 
# Utilisateur et groupe utilisés par Apache pour accèder aux services du serveur 
ServerAdmin webmaster@MonServeur.com 
# ServerAdmin: coordonnées du responsable du serveur 
UseCanonicalName Off 
ServerSignature Off 
HostnameLookups Off 
ServerTokens Prod 
ServerName MonServeur 
# ServerName: nom du serveur 
DocumentRoot /var/www 
# Racine des sites internet 
# CONTROLES D'ACCES 
#------------------ 
# Droits d'accès à la racine du serveur via internet 

     Options None
     AllowOverride None
     Order deny,allow
     Deny from all 
 
# Droits d'accès au répertoire internet 

     Order allow,deny
     Allow from all
     Options FollowSymlinks
  
# OPTIONS DES MODULES 
#-------------------- 

     # Définition des types de fichier index
     DirectoryIndex index.html index.htm 
 

     # Association des types de fichier
     TypesConfig /etc/apache/conf/mime.types
     # Fichier annexe spécifiant les types de fichiers
     DefaultType text/plain
     AddEncoding x-compress Z
     AddEncoding x-gzip gz tgz
     AddType application/x-tar .tgz 
 
# JOURNAUX 
#--------- 
# Formatage de fichiers de log 
LogLevel warn 
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" 
combined LogFormat "%h %l %u %t \"%r\" %>s %b" 
common LogFormat "%{Referer}i -> %U" 
referer LogFormat "%{User-agent}i" agent 
ErrorLog /etc/apache/logs/error_log 
CustomLog /etc/apache/logs/access_log combined

Un fois ces modification effectuées, redémarrez Apache afin d’une part qu’elles soient prises en compte et, d’autre part, être sûr que le fichier fonctionne.

  • Les fichier de logs doivent pré-exister quitte à créer le repertoire correspondant avec mkdir et le fichier avec touch
  • Ce fichier est disponible ici

3 – Installer l’interpréteur PHP 4.3.10

3.1 – Récupérer les paquets et l’installer

Installez PHP4 avec apt-get install php4 (Pour PHP5 ce n’est possible qu’en ajoutant le dépôts de dotdeb à apt).

3.2 – Comment connecter PHP à Apache

Pour « connecter » PHP à Apache vous devez modifier le fichier de configuration d’Apache (voir ci-dessus) tel qu’apparaisse en plus les lignes suivantes:

  1. Dans le chargement des modules, pour charger automatiquement le module PHP4 avec Apache, rajoutez la ligne suivante: LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
  2. Et, dans les options des modules: AddType application/x-httpd-php .php .php3 DirectoryIndex index.php index.php3

3.3 – Configurer PHP4

Le fichier de configuration se localise ici: /etc/php5/apache/php.ini La configuration de base devrait suffire pour une utilisation classique. Dans le cas contraire je vous invite à consulter la documentation du site officiel

4 – Installer le gestionnaire de base de données MySQL 4.0.24

4.1 -Récupérer les paquets et les installer

Similairement à PHP… apt-get install mysql-server mysql-common mysql-client

4.2 – Comment le configurer en console

Pour lancer la commande d’administration de mysql il suffit de taper mysql -p à l’invite de commande (quit permet d’en sortir). C’est ici que vous pouvez créer vos tables, les effacer etc. Personnellement je préfére utiliser l’interface web de PHPMyAdmin. Cependant, par mesure sécurité, il est impératif, et ce dès l’installation de MySQL de changer le mot de passe root (administrateur) de MySQL avec la commande mysqladmin -u root password 'MonNouveauMotDePasse'

4.3 – Connecter MySQL à Apache et PHP

Il n’est pas nécessaire de connecter MySQL à Apache puisque celui-ci est incapable d’y accéder directement. Par contre, PHP doit être capable de se connecter au serveur MySQL pour ce faire il faut installer un package spécifique: apt-get install php5-mysql

5 – Conclusion

Votre serveur web est prêt à accueillir vos site. Il suffira juste de la placer au bon endroit (/var/www/) et d’y accéder par un navigateur internet en tapant l’adresse ou le nom du serveur.