Chrooter apache
Matériel
Ajout disque dur
Ajout carte
Audit des disques durs
Gestion des peripheriques
Disquette d'installation
Ajout d'un scanner
Ajout d'une imprimante
Astuces
Astuces sous Linux
Réseau
Configuration reseau
Dns
Serveur cvs
Proxy squid 
Installation serveur ftp
Installation qmail 
Installation serveur courrier sous debian
Outil TCP/IP 
Le serveur samba
Connexion a distance securisee
Client/serveur vnc
Configurer apache
Dyndns
Installer un LAMP sous mandriva
Sécurité
Chiffrer un fichier/dossier
Securiser son poste
Mur pare feu pas a pas
Authentification ht-access
Surveillance de serveur CACTI
Snort
Snort-inline
Securiser Apache avec mod_security
Filtrage squid/squidguard/dansguardian
Auditer son site web
Sécuriser son linux
Installer un Lamp avec ssl
Contrer les scans de ports
Traitement anti-spam
Installer/Utiliser tripwire
Faire des sauvegardes incrémentales
Rsync
Nessus
Divers
Elisa, le multimédia facile
Utilisation de lilo
Les commandes Linux
Le multi-tache
Le crontab
Exploration de la configuration
Quotas
Messagerie
Installer une application
Debugger ses applications
Le format RPM
Mise a jour du noyau
Qemu
Tour d'horizon des principaux p2p
Récupération du système
Bips d'un pc
Astuces windows
Table Ascii
Lamerland
Conversion de fichiers musicaux
Compiler ses rpms
Graver en ligne de commande
Graver un fichier avi pour un dvd de salon
Récupérer des fichiers effacés
Gardez le contact avec Emesene
Liens
Notes php
hakin9
Secureroot.com
Hackerthreads.org
Defcon
Hackerlounge
Les derniers exploits
Tous les codes sources
Securite sous Linux
Les logiciels libres quotidiens
Ezine divers
Madchat
Textes divers
Archives
Tchat gratuit
 
Traductions LG
Toutes les traductions
Traductions Phrack
Toutes les traductions

Il y a actuellement 3 visiteurs connectés sur le site !

Google

Installer un LAMP avec ssl,snort et BASE
Installer un LAMP avec ssl,snort et BASE

 

Introduction
Pre-requis
Installation
Ssl
Configuration apache pour ssl et virtual host
Installation de snort
Téléchargement des règles de snort
Configuration de snort
Installation de BASE
Configuration de BASE
Lancement de Snort

 

Introduction

J'avais tout d'abord dans l'idée de monter un serveur apache avec certaines données sensibles mais néanmoins accessibles au web et que je placerai dans un répertoire sécurisé . Après diverses recherches ,il apparaît que la protection par .htaccess ,ou bien par authentification http (via un script php) fait transiter les données en clair par le protocole http et n'offre pas une sécurisation bien élevée . Je me suis donc orienté vers une solution ménageant la chèvre et le chou : un accès normal via http pour mon site d'aide , accessible sans mot de passe ,ni protection. un accès via https, pour mon autre site ,accessible a des personnes bien définies. J'en profiterai ensuite pour monter un des plus utilisés des détecteurs d'intrusions, snort dont je lirais les résultats à l'aide de Mysql et de BASE , un moteur d'analyse basé sur le code source d'acid.

Prérequis pour l'installation du LAMP:

J'ai toujours apprécie de compiler apache,php et mysql,afin de pouvoir affiner ultérieurement ma configuration (rajout de modules apache), de pouvoir bénéficier des dernières mise-à-jour et aussi parce que j'ai du mal à determiner ou RPM place ses fichiers . On me rétorquera aisèment sans doute que pour la plupart des utilisateurs une installation via urpmi ou apt-get s'avererait plus conviviale ,ceci peut faire l'objet d'un second tutoriel.

Procurez vous donc les applications sources suivantes :
httpd-2.0.54
php-5.0.5/
mysql-4.1.13
Et les paquetages installables via urpmi : openssl openssl-devel
zlib1-1.2.3-1mdk : librairie zlib
zlib1-devel-1.2.3-1mdk
libpng3-devel-1.2.8-1mdk : librairie png
libpng3-1.2.8-1mdk
libjpeg62-devel-6b-37mdk : librairie jpeg jpeg-progs-6b-37mdk
libjpeg62-6b-37mdk
flex
libxml2-devel

Installation:

1/Mysql

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> bin/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql var
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &

si il y a une erreur au lancement If faut modifier dans le fichier my.cnf la ligne #tmpdir=/tmp/ (en tant que commentaire vu le #)

2/apache

cd httpd-2.0.54
make distclean
./configure --prefix=/usr/local/apache2 --enable-ssl --enable-mods-shared=all
make
make install
Apache doit être configuré avec l'option --enable-ssl

3/php

tar -vzxf php-5.0.5.tar.gz
cd php-5.0.5
./configure --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache2/bin/apxs --with-zlib=/usr --with-gd --with-png=/usr/lib --with-jpeg-dir=/usr/lib --enable-png --enable-jpeg --with-ttf --enable-gd-native-ttf --enable-dbase --with-dom=shared --with-dom-xslt=shared --with-dom-exslt=shared --with-iconv
make
make install
cp php.ini-dist /usr/local/lib/php.ini

Ssl:

Avant de démarrer le serveur apache, vous devez toutefois créer les certificats pour apache ssl Voici quelques étapes basiques pour faire un certificat auto-signé a des fins de tests
1/ mkdir ssl; chown root:root ssl; chmod 700 ssl; cd ssl
créer un répertoire protégé pour ssl ou on mettre les fichiers KEY, CSR, et CRT
2/ openssl genrsa -des3 1024 > www.xxx.com.key
Générer la clef. Si vous ne désirez pas faire un certificat réel, ce fichier est très important. Ne le perdez pas et ne laissez pas dans de mauvaises mains. Cela vous coûtera au moins un nouveau certificat et le piratage de vos données protégées par la paire certificat/clé. Note au sujet des 3 options: spécification de l'option permettant d'encrypter ultérieurement la clé avec une pass phrase. Cela offre une protection accrue, car même si la clé est volée ,on est encore protégé. Cela a pour inconvénient a chaque fois qu'on démarre le serveur (apachectl startssl), d'être physiquement devant la console et d'entrer la pass phrase
3/ openssl req -new -key www.xxx.com.key > www.xxx.com.csr
Création du Certificat Signing Request (CSR). Le Common Name (CN) spécifié ici doit concorder avec l'adresse du serveur, (server.com et www.server.com sont par exemple différents).
4/ openssl req -x509 -days 30 -key www.xxx.com.key -in www.xxx.com.csr > www.xxx.com.crt
Auto-signe votre certificat comme si vous étiez un Certificate Authority (CA).
5/ chown root.root *; chmod 400 * Protection ultérieure des fichiers KEY, CSR et CRT

Configuration apache pour ssl et virtual host

Il vous faut maintenant modifier votre fichier ssl.conf d'apache2 pour tenir compte du chemin de ces nouveaux fichiers:
#SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server-dsa.crt
deviendra chez moi
SSLCertificateFile /home/deny/ssl/www.mesvoyages.org.crt et de même pour
SSLCertificateKeyFile /home/deny/ssl/www.mesvoyages.org.key

Configurer ensuite vos virtuals hosts J'ai désiré ,pour ma part ,configurer un nom de domaine en http , et un autre en https Le https est configuré de la sorte dans ssl.conf

#afin de binder le port https
# General setup for the virtual host
DocumentRoot "/home/user/host"
ServerName www.mondomaine.org:443
ServerAdmin admin@toto.net
ErrorLog /home/user/host/error_log
TransferLog /home/user/host/access_log
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on

etc..............
et mon second en mode non sécurisé est configuré de la sorte dans httpd.conf:


ServerAdmin admin@toto.net
DocumentRoot /home/user/host
ServerName linux-pour-lesnuls.com
ErrorLog /home/user/error_log
CustomLog /home/user/access.log combined

Ne pas oublier de relancer apache avec un : /usr/local/apache2/bin/apachectl startssl

Installation de snort

C'est un excellent "système de détection d'intrusion réseau" (NIDS) qui cherche les signatures dans les paquets, et si il voit une signature ressemblant à celle d'une attaque il peut faire diverses actions prédéfinies.
prerequis :
pcre,libpcap0 et libpcap0-devel mysql-client mysql-devel à installer via urpmi
urpmi snort-mysql
J'obtiens ce message:
Pour satisfaire les dépendances, les 3 paquetages suivants vont être installés (12 Mo):
libmysql14-4.1.12-3mdk.i586
snort-2.3.3-2mdk.i586
snort-mysql-2.3.3-2mdk.i586
Est-ce correct ? (O/n) o

Je lance snort à fin de test:
[root@ip-169 deny]# /usr/sbin/snort-mysql -c /etc/snort/snort.conf

ERROR: database: mysql_error: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) Fatal Error, Quitting..

Généralement les paramètres pour corriger ce genre d'erreur sont situés dans /etc/my.cnf
En ouvrant ce fichier je vois ceci:

The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock

Il me suffit alors de faire un lien symbolique pour se connecter d'une socket à l'autre
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock'

Ensuite je réitère ma commande
/usr/sbin/snort-mysql -c /etc/snort/snort.conf

pour obtenir en retour :
database: mysql_error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'schema' at line 1 database: schema version = 0

Un petit mail sur la liste de snort et l'on me conseille d'upgrader vers la version 2.4.3 ,ou ce bug a été résolu
urpme snort snort-mysql : parfois la simplicité n 'est pas la solution la meilleure !
Nous allons donc tenter une compilation , et nous rendre sur le site de snort http://www.snort.org/dl/
et télécharger la dernière version source que nous placerons ensuite dans notre répertoire /usr/local

mv snort-2.4.3.tar.gz /usr/local
gunzip snort-2.4.3.tar.gz
tar xvf snort-2.4.3.tar
cd snort-2.4.3
./configure --with-mysql=/usr/local/mysql
make
make install

Téléchargement des règles de snort

Ensuite nous allons nous occuper du téléchargement des règles de snort et cerise sur le gâteau, nous allons mettre en place un script qui placé dans un crontab , fera pour nous les mises-à-jour
Rendons nous sur le site de snort pour acceder aux règles et surtout nous inscrire afin de pouvoir bénéficier gratuitement des mises à jour :
http://www.snort.org/pub-bin/downloads.cgi

Dans le lien de téléchargement des régles qui correspondent à votre version de snort (ici on parle de la 3.4), cliquez sur download : il vous sera proposé de vous enregistré sur le site .
Ensuite entrez votre login/pass d'enregistrement dans le champ account et cliquez sur le bouton d'ajout de code pour générer votre code snort unique: par exemple aeb23dec4b5bf91b6ca0eb085aac159b4b3af0a2 (vous entrerez bien entendu votre propre code à la place de celui proposé pour les besoins de l'exemple .

Nous allons à présent nous procurer le script oinkmaster ,qui téléchargera d'après ce code les dernières règles de snort

http://prdownloads.sourceforge.net/oinkmaster/oinkmaster-1.2.tar.gz?download
mv /home/deny/oinkmaster-1.2.tar.gz /usr/src/
cd /usr/src
tar xzvf oinkmaster-1.2.tar.gz
cd oinkmaster-1.2
cp oinkmaster.pl /usr/local/bin/
cp oinkmaster.conf /etc/

A présent il nous faudra modifier le fichier oinkmaster.conf pour qu'il pointe vers l'url de snort ou nous téléchargerons nos règles :
url = http://www.snort.org/pub-bin/oinkmaster.cgi//snortrules-snapshot-2.4.tar.gz
Ensuite lancez le script:
/usr/local/bin/oinkmaster.pl -o /usr/local/snort-2.4.3/etc/rules/
qui créera ou modifiera nos règles snort

Configuration de snort

Ensuite il va nous falloir configurer le fichier de configuration de snort :
snort.conf A la ligne :
output database:log,mysql,user=root password=test dbname=SNORT host=localhost
remplacez par les identifiants mysql pour snort
output database:log,mysql,user=user_snort password=snort_pwd dbname=snort host=localhost

La prochaine étape sera la création d'une base de donnée pour snort :
cd /usr/local/snort*/schemas
mysql -u root -p
create database snort; Création de la base de données snort
use mysql;
grant insert,select on root.* ton snort@localhost;
set password for snort@localhost=PASSSWORD('password_de_snort.conf');
grant create,insert,delete,update ON snort.* TO user_snort@localhost;
grant create,insert,delete,update ON snort.* TO user_snort;
use snort; on se place dans la base où l'on veut créer les tables pour SNORT
Source create_mysql
Vous devriez vérifier dans phpMyAdmin ,database snort ,que les tables ont bien été créées

Installation de base

BASE est un moteur d'analyse et de sécurité basé sur le code source d'ACID , moins sécurisé
Télécharger base: http://sourceforge.net/project/showfiles.php?group_id=103348
et adodb :http://sourceforge.net/project/showfiles.php?group_id=42718


Attention ici il va vous falloir créer un répertoire sécurisé (avec un .htaccess) pour pouvoir y installer et surtout lire les résultats de snort sans risquer d'intrusion .
j'ai donc créer pour le besoin un répertoire secure à la racine de mon site web ou j'ai ensuite placé adodb et base

cd /var/www
mkdir secure
tar xvzf adodb462.tgz
tar xvzf base-1.1.2.tar.gz
mv base-1.1.2 base

et bien sur n'oubliez pas de supprimer les fichiers tar.gz de la racine de votre site

Configuration de base

On va passer maintenant à la configuration de base :

cp base_conf.php.dist base_conf.php
Editer le fichier copié et ajustez :

$BASE_urlpath = "base";
$DBlib_path = "/var/www/secure/adodb/";
$DBtype = "mysql";
$alert_dbname = "snort_base";
$alert_host = "localhost";
$alert_port = "";
$alert_user = "snort_user";
$alert_password = "snort_password";

Vous pouvez désormais lancer base depuis /var/www/secure/base
et cliquer sur le lien setup pour mettre en place les tables.
En cliquant sur le lien du fond de la page principale vous accéder à base

Lancement de snort

Ensuite le grand moment du lancement de snort:

/usr/local/snort*/src/snort -c /usr/local/snort-2.4.3/etc/snort.conf
/usr/local/snort-2.4.3/src/snort: error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory
Et pourtant j'ai mis mysql-client dans les pré-requis et cette fameuse librairie est présente sur mon système

locate libmysqlclient.so.15
/usr/local/mysql-5.0.16/libmysql/.libs/libmysqlclient.so.15.0.0
/usr/local/mysql-5.0.16/libmysql/.libs/libmysqlclient.so.15
/usr/local/mysql/lib/mysql/libmysqlclient.so.15.0.0
/usr/local/mysql/lib/mysql/libmysqlclient.so.15

Un strace ./snort me trouve cette libmysqlsqlclient.so.15 dans des répertoires ou elle n'est visiblement pas installée Un petit lien symbolique s'impose donc pour que snort retrouve sa librairie
ln -s /usr/local/mysql/lib/mysql/libmysqlsqlclient.so.15 directory /usr/lib
Ensuite ne pas oublier de relancer mysql et ........snort

Ne pas oublier de placer la ligne concernant le lancement du script oinkmaster dans un crontab
crontab -e
55 00 * * * /usr/local/bin/oinkmaster.pl -o /usr/local/snort-2.4.3/etc/rules/ > /dev/null 2>&1
Cette ligne exécutera la mise à jour à 00:55 chaque nuit. Bon linux !


 

Le Blog
Le blog
Le Forum
Le Forum
Php/Mysql
Formulaire en php
Administrer un serveur Mysql
Session en php
Gerer ses bases mysql
Les bases php
Securiser ses scripts PHP
Controler ses programmes avec RATS
Convertir une base sql en utf8
Astuces php
Le fichier php.ini
Programmation
Python rapide
Tutorial Python
Tutorial Perl
Tutorial Perl complet
Tutoriel ruby
Tutoriel C
Introduction à gawk
Filtres et utilitaires
Find
Programmation Shell
Ecriture de scripts bash
Expressions regulieres
Vi
Introduction a Javascript
Compiler avec gcc
Astuces en Bash
Cracking
Tutoriel Assembleur
Guide du cracking pour débutant
Assembleur
Manual Unpacking
Techniques de Protection
Différentes failles Web
Arp spoofing dans un réseau switché
Les intrusions
Les attaques externes
Defacage
Defacage complet
Buffer overflow
Netcat
Injection sql
Injection sql(suite)
John the Ripper
Spoofer un email
Utiliser google
La faille system
Usurper une identité
Le rooting
Shellcode sous Unix
La faille race condition
La faille xss
La faille xss (2)
Attaques sur un routeur
P2P
Azureus pas-a-pas
News
Lire les news de Linux-pour-lesnuls.com au format RSS
Distros
Gestion des paquets debian
101 commandes debian
Jeu
Webtarot
Graphisme
Effet neon dans GIMP
Effet vapeur dans GIMP
Cours fonctionnalités de GIMP
Redimentionner une image avec GIMP
Redimentionner une photo pour en faire un cadre avec gimp
Morphing avec gimp
Détourer avec gimp
Réduire le poids d'une image avec gimp
Caricature avec gimp
Eclairage avec gimp
Mettre en évidence avec gimp
Pluie sur le château
Créer une onde de surface avec Gimp
Un aspect satiné avec Gimp
Impacts de balle avec Gimp
Humour
Ensemble
Divers