Chrooter apache
Ajout disque dur
Ajout carte
Audit des disques durs
Gestion des peripheriques
Disquette d'installation
Ajout d'un scanner
Graver en ligne de commande
Astuces
Astuces en Bash
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
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
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
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
 
Toutes les traductions
Toutes les traductions
Hackin9

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

Google
Repérez des intrusions avec PHPIDS
Repérez des intrusions avec PHPIDS

 

Introduction
Installation
Utilisation

 

Introduction

On va ici installer PHPIDS sur notre serveur Apache configuré avec PHP5. PHPIDS (PHP-Intrusion Detection System) est simple d'utilisation, rapide et vise à sécuriser vos applications internet. Cet outil ne sert pas à réparer ni à filtrer les requêtes malicieuses, mais plutôt à débusquer les tentatives d'introduction dans votre site et il réagit selon ce que vous désirez. Reposant sur un ensemble de règles de filtrage éprouvées et testées, chaque attaque donne lieu à un taux d'impact numérique qui permet de décider aisément du type d'action à mener après la tentative d'intrusion Cela peut aller du simple logging à l'envoi d'un courrier urgent à l'équipe de développement, en affichant un message d'avertissement à l'attaquant ou bien en interrompant la session de l'utilisateur.
L'installation se fera sur une mandriva 2008, avec Apache2 and PHP5 et l'adresse IP address 192.168.0.10. Le nom d'utilisateur Apache et son groupe sont apache, ce peut être différent selon les distributions. L'emplacement de php.ini est /etc/php.ini et on accède à mon hôte virtuel via /home/deny/aide dans cet example.

Installation

Mon application sera installée dans le rèpertoire /home/deny/aide, à la racine de mon site web
Ensuite j'installe PHPIDS, ici je n'aurais besoin que du répertoire lib/:

cd /tmp
wget http://php-ids.org/files/phpids-0.4.7.tar.gz
tar xvfz phpids-0.4.7.tar.gz
cd phpids-0.4.7
mv lib/ /home/deny/aide/

On change de répertoire pour se rendre vers /home/deny/aide/lib/IDS...

cd /home/deny/aide/lib/IDS
Et on rend le répertoire tmp/ (où réside le fichier de log de PHPIDS) accèssible en écriture pour l'utilisateur et le groupe Apache:
chown -R apache:apache tmp/
Ensuite on configure le fichier de config de PHPIDS (Config.ini):
cd Config/
vi Config.ini


; PHPIDS Config.ini

; General configuration settings

; !!!DO NOT PLACE THIS FILE INSIDE THE WEB-ROOT IF DATABASE CONNECTION DATA WAS ADDED!!!

[General]
filter_type = xml
filter_path = /home/deny/aide/lib/IDS/default_filter.xml
tmp_path = /home/deny/aide/lib/IDS/tmp
scan_keys = false

exceptions[] = __utmz
exceptions[] = __utmc

; If you use the PHPIDS logger you can define specific configuration here

[Logging]

; file logging
path = //home/deny/aide/lib/IDS/tmp/phpids_log.txt

; email logging

; note that enabling safemode you can prevent spam attemp
ts, ; see documentation
recipients[] = deny@linux-pour-lesnuls.com
subject = "PHPIDS detected an intrusion attempt!"
header = "From: info@php-ids.org"
safemode = true
allowed_rate = 15

# ; database logging (désactivéé pour ma part, selon les directives plus avant
#
# wrapper = "mysql:host=localhost;port=3306;dbname=phpids"
# user = phpids_user
# password = 123456
# table = intrusions

; If you would like to use other methods than file caching you can configure them here

[Caching]

; caching: session|file|database|memcached|none
caching = file
expiration_time = 600

; file cache
path = /home/deny/aide/lib/IDS/tmp/default_filter.cache

# ; database cache
# wrapper = "mysql:host=localhost;port=3306;dbname=phpids"
# user = phpids_user
# password = 123456
# table = cache

; memcached
;host = localhost
;port = 11211
;key_prefix = PHPIDS
;tmp_path = /home/deny/aide/lib/IDS/tmp/memcache.timestamp

Utilisation

On va à présent créer le fichier /home/deny/aide/phpids.php
vi /home/deny/aide/phpids.php

<?php
set_include_path(
get_include_path()
. PATH_SEPARATOR
. '/home/deny/aide/lib'
);

require_once 'IDS/Init.php';
$request = array(
'REQUEST' => $_REQUEST,
'GET' => $_GET,
'POST' => $_POST,
'COOKIE' => $_COOKIE
);
$init = IDS_Init::init('/home/deny/aide/lib/IDS/Config/Config.ini');
$ids = new IDS_Monitor($request, $init);
$result = $ids->run();

if (!$result->isEmpty()) {
// Take a look at the result object
echo $result;
require_once 'IDS/Log/File.php';
require_once 'IDS/Log/Composite.php';

$compositeLog = new IDS_Log_Composite();
$compositeLog->addLogger(IDS_Log_File::getInstance($init));
$compositeLog->execute($result);
}
?>

À présent, on peut afficher ce script dans notre navigateur à l'adresse http://192.168.0.10/phpids.php), et on verra une page blanche. Mais si on essaye d'ajouter des paramètres malicieux dans l'URL (par exemple http://192.168.0.10/phpids.php?test=%22%3EXXX%3Cscript%3Ealert(1)%3C/script%3E), PHPIDS le détectera et ajoutera le résultat dans le navigateur:

Total impact: 64
Affected tags: xss, csrf, id, rfe, lfi

Variable: REQUEST.test | Value: ">XXX<script>alert(1)</script>)
Impact: 32 | Tags: xss, csrf, id, rfe, lfi
Description: finds html breaking injections including whitespace attacks | Tags: xss, cs
rf Description: Detects self-executing JavaScript functions | Tags: xss, csrf
Description: Detects possible includes and typical script methods | Tags: xss, csrf, id, rfe
Description: Detects very basic XSS probings | Tags: xss, csrf, id, rfe
Description: Detects obfuscated script tags and XML wrapped HTML | Tags: xss
Description: Detects possibly malicious html elements including some attributes | Tags: xss, csrf, id, rfe, lfi
Description: Detects unknown attack vectors based on PHPIDS Centrifuge detection | Tags: xss, csrf, id, rfe, lfi

Variable: GET.test | Value: ">XXX<script>alert(1)</script>)
Impact: 32 | Tags: xss, csrf, id, rfe, lfi
Description: finds html breaking injections including whitespace attacks | Tags: xss, csrf
Description: Detects self-executing JavaScript functions | Tags: xss, csrf
Description: Detects possible includes and typical script methods | Tags: xss, csrf, id, rfe
Description: Detects very basic XSS probings | Tags: xss, csrf, id, rfe
Description: Detects obfuscated script tags and XML wrapped HTML | Tags: xss
Description: Detects possibly malicious html elements including some attributes | Tags: xss, csrf, id, rfe, lfi
Description: Detects unknown attack vectors based on PHPIDS Centrifuge detection | Tags: xss, csrf, id, rfe, lfi

Maintenant il faut que nos scripts PHP tirent partie de PHPIDS. Bien sûr, on ne va pas modifier tous nos scripts PHP On peut dire à PHP d'ajouter un script PHP quand un script PHP est appelé. Par exemple, si on appelle un script info.php, PHP exécutera d'abord phpids.php et ensuite info.php et on ne modifiera donc pas info.php.
On peut faire ceci en utilisant la directive PHP auto_prepend_file dans notre php.ini (qui est une configuration globale valide pour tous les sites PHP web du serveur), ou dans un fichier .htaccess (valide seulement pour le site web en question):
Dans votre php.ini, fixez auto_prepend_file à /home/deny/aide/phpids.php:
vi /etc/php.ini
[...]
auto_prepend_file = /home/deny/aide/phpids.php
[...]
Et redémarrez apache avec un service httpd restart
Au lieu de modifier php.ini, on peut utiliser un fichier .htaccess pour une configuration seulement valide pour le site web pour lequel on crée ce fichier
vi /home/deny/aide/.htaccess
php_value auto_prepend_file /home/deny/aide/phpids.php
Assurez-vous toutefois que le virtual host de votre site contient quelque chose comme ceci:


AllowOverride All


On peut alors créer un fichier info.php:
vi /home/deny/aide/info.php

<?php
phpinfo();
?>

et l'appeler dans un navigateur (http://192.168.0.10/info.php), et on verra l'affichage de phpinfo().

Ajoutons à présent quelques paramètres bizarres à l'URL (c'est-à-dire http://192.168.0.10/info.php?test=%22%3EXXX%3Cscript%3Ealert(1)%3C/script%3E), et on aura un rapport de PHPIDS
PHPIDS affiche ces infos dans le fichier /home/deny/aide/lib/IDS/tmp/phpids_log.txt
En observant ces avertissements, on peut apprendre ce que les assaillants essayent de faire et on peut de ce fait renforcer nos applications
Pour ajouter un autre niveau de sécurité, on peut stopper l'exécution de nos scripts PHP si PHPIDS trouve qu'ils sont attaqués : on ajoute simplement quelque chose comme die('Go away!'); à la boucle if (!$result->isEmpty()) {} dans la section du script phpids.php

<?php
set_include_path(
get_include_path()
. PATH_SEPARATOR
. '/home/deny/aide/lib'
);

require_once 'IDS/Init.php';
$request = array(
'REQUEST' => $_REQUEST,
'GET' => $_GET,
'POST' => $_POST,
'COOKIE' => $_COOKIE
);
$init = IDS_Init::init('/home/deny/aide/lib/IDS/Config/Config.ini');
$ids = new IDS_Monitor($request, $init);
$result = $ids->run();

if (!$result->isEmpty()) {
// Take a look at the result object
echo $result;
require_once 'IDS/Log/File.php';
require_once 'IDS/Log/Composite.php';

$compositeLog = new IDS_Log_Composite();
$compositeLog->addLogger(IDS_Log_File::getInstance($init));
$compositeLog->execute($result);

die('

Go away!

');
}
?>

S'il n'y a pas d'attaques, les scritps s'éxecutent, mais si PHPIDS trouve quelque chose, il empêche l'exécution des scripts et dispense un message aux assaillants:
Go away

Source de l'article


 

Forum d'entraide
Les news du site
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
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
Tutoriel Assembleur
Guide du cracking pour débutant
Assembleur
Manual Unpacking
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
Azureus pas-a-pas
Lire les news de Linux-pour-lesnuls.com au format RSS
Gestion des paquets debian
101 commandes debian
Effet neon dans GIMP
Effet vapeur dans GIMP
Cours fonctionnalités de GIMP
Ensemble
Divers