Bastien Louche

Systèmes – Réseaux – Sécurité – Web | Tutoriels | CV
  • Accueil
  • CV
  • Contactez-moi

[Tutoriels] Configuration d’un cluster Apache 2 avec HAProxy

Bastien Louche | 03/05/2010 | 14:41

J’ai décidé d’utiliser les machines virtuelles offertes par OVH pendant la phase de test de son offre Cloud Computing, pour vous faire un tutoriel sur la configuration d’un cluster Apache 2 avec HAProxy pour la partie équilibrage de charges.

Il faut donc 3 serveurs, 1 pour HAProxy, et minimum 2 pour le cluster Apache 2, on utilisera un système vierge sous Debian Lenny.

Voici donc un rapide schéma de la mise en place :

Les adresses IP utilisées sont des IP publiques appartenant au Cloud Computing d’OVH, il faudra donc les modifier pendant vos configurations personnelles.

Dans un premier temps on va configurer les serveurs Apache 2 (web1-cloud et web2-cloud) :

apt-get install apache2

Ensuite on créer le fichier qui sera testé par HAProxy pour vérifier que le serveur Apache 2 est opérationnel :

touch /var/www/haproxytest.txt

On va alors modifier légérement la configuration de : 

nano /etc/apache2/sites-available/default

Pour ajouter une nouvelle ligne et remplacer le CustomLog afin d’éviter que les logs d’Apache 2contiennent les checks de HAProxy :

SetEnvIf Request_URI « ^/haproxytest\.txt$ » dontlog
CustomLog /var/log/apache2/access.log combined env=!dontlog

On peut maintenant redémarrer Apache 2, les serveurs du cluster sont configurés :

/etc/init.d/apache2 restart

On se connecte sur le serveur qui va s’occuper de HAProxy :

apt-get install haproxy

On supprime la configuration par défaut de HAProxy et on re-créer le fichier pour éditer notre configuration :

rm -f /etc/haproxy/haproxy.cfg
nano /etc/haproxy/haproxy.cfg

global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        #log loghost    local0 info
        maxconn 4096
        #debug
        #quiet
        user haproxy
        group haproxy

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen blweb 178.32.121.84:80
       mode http
       stats enable
       stats auth user:password
       balance roundrobin
       cookie SERVID prefix
       option httpclose
       option forwardfor
       option httpchk HEAD /haproxytest.txt HTTP/1.0
       server web1-cloud 178.32.114.13:80 cookie A check
       server web2-cloud 178.32.121.231:80 cookie B check

On peut maintenant lancer HAProxy :

/etc/init.d/haproxy start

Vous pouvez maintenant vous rendre sur l’adresse IP de votre serveur HAProxy via le navigateur de votre choix pour admirer le résultat !

Une petite astuce consiste à modifier le fichier /var/www/index.html pour mieux visualiser quel serveur a répondu à chaque rafraichissement de la page.

A noter que dans notre configuration nous utilisons le paramètre stats enable qui permet à l’aide des identifiants de stats auth de se connecter via http://IP-HAProxy/haproxy?stats à une interface web présentant les statistiques d’utilisation de HAProxy et des différents serveurs Apache 2.

Sources et Informations supplémentaires : [1] [2]

Commentaires
31 Commentaires »
Catégories
Tutoriels
Tags
Apache, Debian, HAProxy, Linux, Serveur, Web
Flux rss des commentaires Flux rss des commentaires
Trackback Trackback

[Tutoriels] Installation de Cherokee Web Server avec PHP 5

Bastien Louche | 13/04/2010 | 15:14

Aujourd’hui un tutoriel pour présenter l’installation et la configuration d’un serveur web proposant une réelle alternative au très célèbre Apache, j’ai nommé Cherokee Web Server, pour en savoir plus je vous invite à visiter le site web officiel du projet Cherokee via ce lien.

A noter que j’utilise les dépôts de Debian Testing.

L’installation de Cherokee sera faite via la commande :

aptitude install cherokee

On installera aussi les pré-requis pour bénéficier des graphiques d’utilisation du serveur sur l’interface web de gestion de Cherokee, car une des principales caractéristiques de ce serveur web est qu’il s’administre via une interface web très complète.

aptitude install libcherokee-mod-rrd rrdtool

On prévois aussi d’utiliser PHP donc il faut installer le paquet suivant :

 aptitude install php5-cgi

 Vous pouvez maintenant vous rendre via votre navigateur préféré sur http://IP-CHEROKEE/  pour décrouvrir la page par défaut de Cherokee.

  

On utilise la commande suivante pour générer l’accès à la partie administration du serveur web :

cherokee-admin -b

Vous avez maintenant accès à l’interface web de gestion de Cherokee sur http://IP-CHEROKEE:9090/

Je vous laisse consulter la documentation de Cherokee pour mieux comprendre les possibilités offertes dans les différents menus.

On va alors configurer les prise en charge de PHP 5 par notre nouveau serveur web :

Serveurs Virtuels > default > Behavior > Assistants > Langues

 

Et pour terminer on effectue un « Redémarrage gracieux ».

Ce tutoriel est maintenant terminé, vous disposez d’un serveur web Cherokee fonctionnel avec la prise en charge de PHP 5.

Sources et Informations supplémentaires : [1] [2]

Commentaires
1 Commentaire »
Catégories
Tutoriels
Tags
Cherokee, Debian, Systèmes, Web
Flux rss des commentaires Flux rss des commentaires
Trackback Trackback

[Tutoriels] Configuration de Nginx en reverse proxy

Bastien Louche | 31/03/2010 | 17:31

Dans le but d’optimiser un serveur web qui tourne sous Apache, on va configurer Nginx en reverse proxy, c’est d’ailleurs la configuration mise en place sur le serveur de www.bastien-louche.fr qui fonctionne très bien depuis début Janvier. Je vous passe les détails sur la définition d’un reverse proxy ou sur Nginx, Wikipédia fait cela beaucoup mieux que moi !

Dans notre cas vous possédez déjà Apache, PHP, MySQL sur votre serveur et vous souhaitez seulement ajouter Nginx en guise de reverse proxy.

On installe Nginx via une simple commande usuelle :

apt-get install nginx

On ajoute le paquet suivant pour permettre à Apache de bien loguer les IP des connexions :

apt-get install libapache2-mod-rpaf

On va ensuite pouvoir créer le fichier de configuration de Nginx pour l’utiliser en mode reverse proxy :

nano /etc/nginx/conf.d/proxy.conf

On y écris les lignes suivantes :

proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
client_header_buffer_size 64k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size   16k;
proxy_buffers       32   16k;
proxy_busy_buffers_size 64k;

On peut alors configurer le fichier /etc/nginx/sites-available/default pour activer le mode reverse proxy, dans notre configuration Nginx écoutera sur le port 80 et Apache sur le port 8080 (Les lignes à ajouter sont en gras) :

server {
listen   80;
server_name  localhost;

access_log  /var/log/nginx/localhost.access.log;

location / {
proxy_pass
http://127.0.0.1:8080/;
}

}

On modifie ensuite le fichier de configuration du port d’écoute de Apache :

nano /etc/apache2/ports.conf

NameVirtualHost *
Listen 127.0.0.1:8080

On peut maintenant redémarrer les services :

/etc/init.d/apache2 start
/etc/init.d/nginx start

L’installation est terminée et opérationnelle comme on peut le constater grâce au module Domain Details pour Firefox :

Pour rendre votre Nginx moins verbeux vous pouvez ajouter une ligne dans le fichier /etc/nginx/nginx.conf :

http {
[…]
server_tokens off;
}

Sources et Informations supplémentaires : [1] [2]

Commentaires
Pas de Commentaires »
Catégories
Tutoriels
Tags
Apache, Debian, Nginx, Systèmes, Web
Flux rss des commentaires Flux rss des commentaires
Trackback Trackback

[Tutoriels] Comment avoir une Debian stable à jour ?

Bastien Louche | 05/03/2010 | 10:41

Lors de l’écriture de cet article la version stable de Debian était Debian Lenny.

Notre installation de Debian Lenny est terminée, et nous voulons maintenant pouvoir installer nos paquets préférés, pour notre exemple nous choisirons apache2 php5 et mysql-server. Mais nous constatons très vite que les versions de ces derniers, disponibles sur les dépôts officiels de Debian Lenny, sont assez obsolètes.

Nous allons donc mettre en place une solution, nous permettant tout en restant sur notre Debian Lenny de bénéficier des dernières versions de nos paquets préférés.

 

Nous pouvons pour ça utiliser d’autres dépôts plus ou moins officiels :

– Debian Backports : Les paquets sont plus récents et adaptés à la version stable de Debian.

– Debian Volatile : Les paquets qui changent très souvent de version sont disponibles (Par exemple le paquet clamav).

– Debian Testing : Les paquets sont disponibles à leurs dernières versions.

 

Nous modifions le contenu du fichier /etc/apt/sources.list pour y ajouter les nouvelles sources :

# Debian Lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

# Debian Lenny Security
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

# Debian Lenny — Backports
deb http://www.backports.org/debian lenny-backports main contrib non-free

# Debian Lenny — Volatile
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

# Debian Testing
deb http://ftp.fr.debian.org/debian/ testing main contrib non-free


Ensuite nous créons le fichier /etc/apt/preferences pour y entrer nos préférences de choix parmis les sources :

 
Package: *
Pin: release o=Backports.org archive,a=lenny-backports
Pin-Priority: 995

Package: *
Pin: release o=volatile.debian.org,a=stable
Pin-Priority: 800

Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 800

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 700

 

Nous pouvons maintenant passer à l’installation de nos paquets préférés (L’exemple concerne mysql-server mais les commandes sont les mêmes pour apache2, php5 et tout les autres paquets) :

debian:~# aptitude update

 

Nous utilisons la commande apt-cache policy pour voir les versions proposées sur les différents dépôts (Par exemple pour mysql-server, nous constatons de grandes différences entre les versions disponibles) :

debian:~# apt-cache policy mysql-server
mysql-server:
Installé : (aucun)
Candidat : 5.1.43-1~bpo50+1
Table de version :
5.1.43-1~bpo50+1 0
995
http://www.backports.org lenny-backports/main Packages
5.1.41-3 0
700
http://ftp.fr.debian.org testing/main Packages
5.0.51a-24+lenny3 0
800
http://security.debian.org lenny/updates/main Packages
5.0.51a-24+lenny2+spu1 0
800
http://ftp.fr.debian.org lenny/main Packages

 

 Nous choisissons d’installer la version disponible sur le dépôt Backports pour le paquet mysql-server :

debian:~# apt-get install mysql-server -t lenny-backports

 

/!\ Attention aux dépendances si vous utilisez des paquets en provenance du dépôt Testing.

 

Sources et Informations supplémentaires : [1] [2]

Commentaires
Pas de Commentaires »
Catégories
Tutoriels
Tags
Debian, Linux, Logiciels Libres, Systèmes
Flux rss des commentaires Flux rss des commentaires
Trackback Trackback

[Tutoriels] Installation de Snort + Basic Analysis and Security Engine

Bastien Louche | 24/02/2010 | 13:08

Lors de mon dernier stage en entreprise, j’ai eu pour projet de mettre en place un IDS (Intrusion Detection System) à l’aide de Snort pour la partie IDS et Basic Analysis and Security Engine (BASE) pour l’interprétation graphique des alertes, le système utilisé est Debian Lenny. Ce tutoriel présente succinctement l’installation de Snort et de BASE.

Installation de Snort :

Pré-requis :

apt-get install apache2
apt-get install mysql-server
apt-get install php5 php5-mysql php5-gd php-pear

1 ) Installation de Snort via apt-get install :

apt-get install snort-mysql

Pendant l’installation je sélectionne le réseau 192.168.0.0/24 et je choisis de ne pas installer la base SQL directement.

Si une erreur apparait, il faut supprimer le fichier /etc/snort/db-pending-config

2 ) Installation manuelle de la base SQL sur MySQL :

mysql -u root -p
>create database snort;

Création d’un utilisateur MySQL pour Snort :

>grant all on snort.* to snortuser@localhost identified by ‘snortpwd’;

>flush privileges;

Importation des tables SQL dans la base SQL que je viens de créer.

On dézippe le fichier /usr/share/doc/snort-mysql/create_mysql.gz

mysql -u root -p snort < /usr/share/doc/snort-mysql/create_mysql

3 ) Configuration de Snort :

J’ouvre le fichier de configuration de Snort /etc/snort/snort.conf

Je modifie les lignes entre (#DBSTART#) et (#DBEND#) pour ajouter la configuration SQL.

output database: log, mysql, user=snortuser password=snortpwd dbname=snort host=localhost

Et j’enlève les commentaires pour les lignes suivantes en ajoutant aussi la configuration SQL.

ruletype redalert
{
type alert
output alert_syslog: LOG_AUTH LOG ALERT
output database: log, mysql, user=snortuser password=snortpwd dbname=snort host=localhost
}

Je peux tester Snort avec la commande suivante :

snort –u snort –c /etc/snort/snort.conf

 

Installation de Basic Analysis and Security Engine (BASE) :

Pré-requis :

pear install Mail 

pear upgrade PEAR 

pear install Mail_Mime

pear install Image_Color 

pear install –force Image_Canvas 

pear install –force Image_Graph

1 ) Téléchargement de BASE et ADOdb :

Je télécharge la dernière version de BASE sur http://base.secureideas.net/

Je dézippe le fichier et je le transfère vers le répertoire /var/www

Je télécharge aussi la dernière version de ADOdb (Active Data Objects Data Base) sur http://adodb.sourceforge.net/

Je dézippe le fichier et je le transfère vers le répertoire /var/www/base-X.X.X/

2 ) Installation de BASE via un navigateur :

Je donne les droits d’écriture à l’utilisateur www-data pour réaliser l’installation.

Je me rends sur http://IP/base-X.X.X/ et je fais la configuration de BASE via l’interface graphique en indiquant le chemin vers ADOdb et la configuration SQL de Snort.

3 ) Configuration de BASE :

J’édite le fichier /var/www/base-X.X.X/base_conf.php

J’ajoute la résolution DNS des IP ainsi que la colorisation des alertes :

$resolve_IP= 1;

$colored_alerts = 1;


 Conclusion :

Je peux faire un Nmap vers l’IP de mon IDS et voir si Snort remonte bien les alertes via l’interface BASE disponible sur http://IP/base-X.X.X/base_main.php

Commentaires
63 Commentaires »
Catégories
Tutoriels
Tags
Debian, IDS, IP, Linux, Logiciels Libres, Réseaux, Sécurité, Serveur, Snort, Systèmes, Web
Flux rss des commentaires Flux rss des commentaires
Trackback Trackback

Recherche

Réseaux sociaux

CV Bastien Louche

Pages

  • CV
  • Contactez-moi

Catégories

  • Tutoriels (8)

Commentaires récents

  • cheikh dans [Tutoriels] Installation de Snort + Basic Analysis and Security Engine
  • Bastien Louche dans [Tutoriels] Installation de Snort + Basic Analysis and Security Engine
  • imen dans [Tutoriels] Installation de Snort + Basic Analysis and Security Engine
  • Simo, dans [Tutoriels] Installation de Snort + Basic Analysis and Security Engine
  • Pit dans [Tutoriels] Configuration d’un cluster Apache 2 avec HAProxy

Mots-clefs

Apache Apachebench Blog Cherokee Debian DNS DNSSEC HAProxy IDS IP Linux Logiciels Libres Nginx Réseaux Serveur Snort Systèmes Sécurité Web Windows YOURLS