Installation d’un serveur Linux Debian

Lundi 15 décembre 2008 par dominique
Posté dans Debian, Hébergement, Technique

debian1Dans un précédent article, j'explique que j'ai eu besoin d'un serveur dédié et comment et ou je l'ai loué.

Dans cet article, je pars d'une installation Debian 4.0 Etch de base livrée par OVH (pour choisir la distribution Linux commandée chez OVH, je me suis basé sur cette page). Je décrie les étapes de l'installation des  packages complémentaires afin de disposer de Apache, MySQL, PHP, Java et Tomcat. Ceci peut vous intéresser, mais c'est également un aide mémoire pour moi-même. C'est un peu technique, mais je n'entre pas dans les détails.

Les commandes qui sont indiquées doivent être exécutées sous le compte root ou en mode avec sudo (on va voir sudo plus loin).

Mettre à jour le repository Apt

Apt, c'est l'outil qui permet d'installer des packages. Un logiciel est constitué de un ou plusieurs packages et peut être dépendant d'autres packages. Les dépendances entre packages sont gérées par la technologie de distribution par package. La mise à jour en question a pour but de mettre à jour la liste des packages disponibles.

apt-get update

Pour éviter que les futurs installation de packages demande l'insertion du CRDOM, on édite le fichier listant les sources de packages (/etc/apt/sources.list) afin de supprimer le CDROM comme source. Pour cela, il faut mettre en commentaire avec vi mettre la ligne qui commence par "deb cdrom:". On met un "#" en début de ligne.

Installation du serveur OpenSSH

Afin de pouvoir se connecter en SSH sur le serveur, il faut installer OpenSSH.

apt-get install openssh-server

Création de l'utilisateur "dominique"

useradd -d /home/dominique -m -s /bin/bash dominique      

passwd

Installer sudo

sudo permet d'exécuter des commandes comme utilisateur root sans être connecté sous le compte root.

apt-get install sudo

Déclarer l'utilisateur dominique dans sudo en ajoutant la ligne suivante dans "/etc/sudoer"

dominique ALL=(ALL) ALL

Redémarrer sudo

/etc/init.d/sudo restart

à partir de là, tout se fait si possible sous le compte "dominique" (et utilisation de sudo pour les actions necessitants les droits root).

Augmentation des limites systèmes (optionnel)

Pour mes besoins j'ai besoin d'augmenter certaines limites systèmes. Cela se fait en éditant le fichier  /etc/security/limits.conf

vi /etc/security/limits.conf

Personnellement, j'y ajoute les lignes suivantes :

*                soft    nofile        8192
*                hard    nofile        16384
*                soft    stack         16384
*                hard    stack         32768

Installation de apache2.2

J'installe Apache et l'intégration avec PHP 5

sudo apt-get install apache2 libapache2-mod-php5

Activer le mode rewrite

sudo a2enmod rewrite
sudo /etc/init.d/apache2 force-reload

Installation de mysql server 5.0

J'installe mysql avec les librairies pour PHP 5.

sudo apt-get install mysql-server-5.0 php5-mysql

Installation php5

J'ai besoin de PHP 5 et quelques librairies complémentaires (curl par exemple pour appeller des web services en http, mysql, PEAR, …).

sudo apt-get install php5 libapache2-mod-php5 php5-curl 
sudo apt-get install php5-mysql php5-dev

Installation et mise à jour de PHP PEAR

sudo apt-get install php-pear
sudo pear upgrade PEAR

Puis installation de quelques modules Pear

sudo pear install Mail
sudo pear install Net_Smtp

Installation de java 5

Les dépots standards de Debian Etch n'incluent pas la version Sun de Java. Pour pouvoir installer cette version, il faut utiliser les dépots "non-free". Dans le fichier /etc/apt/sources.list, modifier les lignes suivantes :

deb http://ftp.fr.debian.org/debian/ etch main contrib non-free 
deb-src http://ftp.fr.debian.org/debian/ etch main contrib non-free  

Puis mettre à jour le repository apt :

sudo apt-get update

Et enfin on peut installer Java 5 :

sudo apt-get install sun-java5-jdk sun-java5-fonts

Définir Java 5 comme la JVM par défaut de votre Debian :

sudo update-java-alternatives -s java-5-sun

Installation de java 6 (optionnel)

Les dépots standards de Debian Etch inclus Java 1.5 mais pas Java 1.6. Pour pouvoir installer cette version, il faut utiliser les dépots backports. Dans le fichier /etc/apt/sources.list, ajouter la ligne suivante :

deb http://www.backports.org/debian etch-backports main contrib non-free

Puis mettre à jour le repository apt :

sudo apt-get update

Et enfin on peut installer Java 6 :

sudo apt-get install sun-java6-jdk sun-java6-fonts

Définir Java 6 comme la JVM par défaut de votre debian :

sudo update-java-alternatives -s java-6-sun

Installation de tomcat 5.5

sudo apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps

Installation de lftp

lftp est un client ftp qui sera utile pour mettre les sauvegardes sur le serveur FTP mis a disposition par OVH.

sudo apt-get install lftp

Paramétrage de apache

Copier le fichier de configuration de mon virtualhost dans "/etc/apache2/site-available",
activer le site et relancer Apache.

sudo a2ensite xxxxxx (ou xxxxxx est le nom du fichier .conf du virtualhost)
sudo /etc/init.d/apache2 reload

Paramétrage Tomcat

Sous Debian, Tomcat est très sécurisé. Il faut ajouter quelques permissions afin de ne pas être immédiatement bloqué.

Voici un exemple de permissions que j'ai du ajouté dans "/etc/tomcat5.5/policy.d/04webapps.policy"

permission java.util.logging.LoggingPermission "control", "";
permission java.io.FilePermission "./*", "read,write,execute,delete";
permission java.util.PropertyPermission "user.dir", "read";
permission java.util.PropertyPermission "disableLuceneLocks", "read";
permission java.util.PropertyPermission "java.io.tmpdir", "read";
permission java.util.PropertyPermission "org.apache.*", "read";
permission java.io.FilePermission "/-", "read,write,execute,delete";
permission java.lang.RuntimePermission "createClassLoader", "";
permission java.net.SocketPermission "*", "resolve, connect";

Une autre manière plus radicale mais à éviter sur un serveur de production est de désactiver le Java Security Manager dans le fichier "/etc/init.d/tomcat5.5", en indiquant :

TOMCAT5_SECURITY=no

Si le serveur Tomcat n'est utilisé que localement pour fournir des services web, il est possible de n'autoriser l'accès qu'à localhost.

    <Engine name="Catalina" defaultHost="localhost">
      <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127.0.0.1" deny=""/>

Je change également le script de démarrage de Tomcat pour lui indiquer le bon timezone et augmenter ses ressources mémoires. Editer le fichier "/etc/init.d/tomcat5.5", trouver la ligne encadrée par "if [ -z "$CATALINA_OPTS" ]; then" et "fi", et modifiez la comme ceci.

if [ -z "$CATALINA_OPTS" ]; then
	CATALINA_OPTS="-Djava.awt.headless=true -Xms256M -Xmx768M -Duser.timezone=Europe/Paris"
fi

Modifier le connecteur correspondant au port 8180 afin d'y a jouter le parametre URIEncoding="UTF-8"

    <Connector port="8180" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" 
        maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" 
        connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />

Relancer tomcat :

sudo /etc/init.d/tomcat5.5 restart

A partir de là, on dispose d'une configuration de base Debian Etch. le serveur est opérationnel.

Installer le compilateur GCC et l'outil make

sudo apt-get install gcc g++ make 

Installation de memcached

Dans cet article,  je décris memcached.

Pour son installation, suivre la procédure parfaitement décrite dans cet article. Par contre, il faut vérifier quelles sont les dernières versions des modules à télécharger.

Installer fail2ban

En fonctionnement, un serveur s'expose à des attaques. Fail2ban permet de se protéger contre les attaques de masse sur certains ports TCP ou UDP en attente de connexion. Le premier protocole à protéger (le seul exposé à la livraison du serveur lorsque qu'il n'y a pas de logiciel complémentaire installé) est ssh. Sshpermet de prendre la main sur un serveur à distance. Mais si on connaît le port d'attente (22 par défaut) et le mot de passe root, on peut tout faire sur le serveur. Fail2banscrute les logs des services en attente de connexion pour déterminer si une attaque est en cours et si donc il doit bloquer l'adresse IP de l'attaquant.

apt-get install fail2ban

dans "/etc/fail2ban/jail.conf", j'ajout mon ip perso dans les ip a ignorer

ignoreip = 127.0.0.1 82.xxx.xxx.xxx

redémarrage de fail2ban

/etc/init.d/fail2ban restart

Mise en place de règles de filtrage d'ip

Pour l'instant, il n'y a que ssh comme service sensible. Il est traiter par Fail2ban.
Avec iptables, j'ajoute des règles pour éviter des attaques par ping. J'autorise le ping depuis le serveur lui même, mon adresse IP perso et par les serveurs OVH(pour le support entre autre). Je fais un script pour ajouter les règles avec iptables.

set-iptables.sh contient :

#!/bin/sh
iptables -A INPUT -i eth0 -p icmp -j DROP
iptables -A INPUT -i eth0 -p icmp --source 127.0.0.1 -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source proxy.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source proxy.p19.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source proxy.rbx.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source ping.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source 91.121.91.250 -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source 82.xxx.xxx.xxx -j ACCEPT

"iptables -L" permet de lister les règles en place après l'exécution du script.

Il faut faire attention de ne pas bloquer ssh avec ces règles, sinon on ne peut plus prendre la main sur le serveur et il faut lancer le procédure de réinstallation du serveur (pas cool).

Mise à niveau sur version testing (debian Lenny) (optionel)

La distribution stable (Etch) de Debian n'inclut pas le jsdk de SUN. Par contre, la distribution testing (Lenny) l'inclut avec les dépôts "non-free".

Pour passer en distribution testing et inclure les packages "non-free", il faut indiquer à Apt d'autres dépôts de packages en modifiant le contenu du fichier des sources apt-get. Dans /etc/apt/sources.list, on met :

deb http://ftp2.fr.debian.org/debian/lenny main contrib non-free
deb-src http://ftp.fr.debian.org/debian/lenny main contrib non-free
deb http://security.debian.org/lenny/updates main
deb-src http://security.debian.org/lenny/updates main

et on lance les commandes suivantes :

sudo apt-get update (mise a jour de la liste des packages)
sudo apt-get upgrade (upgrade en vesion testing/Lenny des packages
déja installés - tout le serveur donc)

Durant l'upgrade, il est nécessaire de répondre à quelques questions.

=> CONSERVER les paramètres /etc/issue
=> ECRASER les paramètres  /etc/fail2ban/jail.conf  et remettre mon ip perso comme ip à ne pas traiter.

redémarrer fail2ban

/etc/init.d/fail2ban restart
Partager ...
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Add to favorites
  • email
  • LinkedIn
  • Scoopeo
  • Twitter
  • viadeo FR
  • Wikio FR

Vous pouvez suivre les commentaires à ce message au travers du flux RSS 2.0 . Vous pouvez laisser un commentaire, ou placer un trackback depuis votre propre site.

Ajouter un commentaire

A propos

Je suis informaticien indépendant. J'interviens principalement dans les domaines de la gestion documentaire et des moteurs de recherches. Ce blog me permet de partager des informations techniques découvertes au cours de mes différents projets ou lors de mes lectures sur le Web.

Dominique - www.eolya.fr

Optimisez la lecture de vos blogs et sites d'information préférés

Crossfeeds est un service Web de mixage et de filtrage de flux RSS. Crossfeeds dispose d'une base de 600.000 flux et offre des fonctionnalités de recherche dans les flux et d'alertes par emails.

http://www.crossfeeds.fr/