mwesto |
Description de MEG
Mwesto Web Guard est un firewall PHP anti hacker, ou plutôt, un piège destiné à s'activer si un visiteur tente de modifier des variables du site de manières suspectes ( url, système de login (+ anti brute force), module de recherche, etc... ), ce qui a pour effet de contrer la majorité des failles de sécurité web. Toutes les attaques sont enregistrées et dans le cas où 5 attaques ou plus sont occasionnées par la même IP, MWG bannit le pirate de votre site internet via htaccess.
Combien ça coûte?
Rien du tout ! Le système Mwesto Web Guard est installé gratuitement sur tous les sites internet réalisés par mwesto.be et est open source et en téléchargement libre !
Si vous voulez l'utiliser sur votre site, merci de mettre un lien en pied de page de votre site (non obligatoire mais apprécié )
Code :
- <a href='http://www.mwesto.be' target='_blank'>© Mwesto Web Guard - Firewall PHP ( Anti Hacker )</a>
|
Installation
1) Configurer le nom des variables comme il est indiqué dans le code source de la page mwg.php
2) Mettre include("includes/mwg.php" ); au début de votre page index.php pour sécuriser et mettre sous "surveillance" tout votre site !
3) Créer une table nommée "t_traps" avec pour nom de champs: trap_ip, trap_os, trap_login, trap_password, trap_source, trap_browser, trap_pays, trap_geoloc et trap_datetime. (des fichiers pour créé la table automatiquement ont été mit dans le fichier compressé de Mwesto Web Guard en téléchargement.)
code mwg.php
Code :
- <?php
- ####################################################################################################
- # Title: Mwesto Web Guard (MWG) [ mwg.php ]
- # Version: 1.0
- # Author: mwesto
- # Email: contact@mwesto.be
- # Home: http://www.mwesto.be
- #
- # Description: Mwesto Web Guard est un firewall PHP anti hacker, ou plutôt, un
- # piège destiné à s'activer si un visiteur tente de modifier des variables du
- # site de manières suspectes ( url, système de login (+ anti brute force),
- # module de recherche, etc. ), ce qui a pour effet de contrer la majorité des
- # failles de sécurité web. Toutes les attaques sont enregistrées et dans le cas
- # ou 5 attaques ou plus sont occasionnées par la même IP, MWG bannit le pirate
- # de votre site internet via htaccess + fonction mail alert.
- #
- # Install:
- # 1) Configurer le nom des variables de votre site comme ci-dessous.
- # 2) Mettre include("mwg.php" ); au début de chaque page devant être sécurisée et mise sous "surveillance" ( juste après votre include("connect_db.php" );. )
- # 3) Créer une table nommée "t_traps" avec pour nom de champs: trap_ip, trap_os, trap_login, trap_password, trap_source, trap_browser, trap_pays, trap_geoloc et trap_datetime.
- # 4) Configurer votre mail dans la fonction d'alert mail.
- #
- # Si vous voulez utiliser Mwesto Web Guard sur votre site, merci de mettre un lien en pied de page de votre site :
- # <a href="http://www.mwesto.be" target="_blank">© Mwesto Web Guard - Firewall PHP ( Anti Hacker )</a>
- #
- # Merci !
- #
- ####################################################################################################
- ###########################################CONFIG###################################################
- ####################################################################################################
- if(////////////// Configuration: //////////////
- //Variable alphabétique
- isset($_GET['test']) && !(ctype_alpha($_GET['test'])) ||
- isset($_GET['variable1']) && !(ctype_alpha($_GET['variable1'])) ||
- isset($_GET['variable2']) && !(ctype_alpha($_GET['variable2'])) ||
-
- //Variable numéric
- isset($_GET['variable3']) && !(is_numeric($_GET['variable3'])) ||
- isset($_GET['variable4']) && !(is_numeric($_GET['variable4'])) ||
-
- //exemple sécu système de recherche (Variable alpha/num + espace(\s) + ? + ! + _ + -)
- isset($_GET['variable5']) && preg_match("/[^A-Za-z0-9\s?!_-]/", $_GET['variable5']) ||
- isset($_GET['variable6']) && preg_match("/[^A-Za-z0-9\s?!_-]/", $_GET['variable6']) ||
-
- //exemple anti injection d'un système de login. (PAS anti brute force !)
- isset($_POST['login']) && preg_match("/[^A-Za-z0-9]/", $_POST['login']) ||
- isset($_POST['password']) && preg_match("/[^A-Za-z0-9]/", $_POST['password'])
-
- ////////////// :Configuration //////////////
- ){
-
- ####################################################################################################
- #########################################END CONFIG#################################################
- ####################################################################################################
- //-- Fonction détection OS
- function getOS( $ua = '' ) {
-
- if( ! $ua ) $ua = $_SERVER['HTTP_USER_AGENT'];
-
- $os = 'Robot';
- $os_arr = Array(
- // -- Windows
- 'Windows NT 6.1' => 'Windows Seven',
- 'Windows NT 6.0' => 'Windows Vista',
- 'Windows NT 5.2' => 'Windows Server 2003',
- 'Windows NT 5.1' => 'Windows XP',
- 'Windows NT 5.0' => 'Windows 2000',
- 'Windows 2000' => 'Windows 2000',
- 'Windows CE' => 'Windows Mobile',
- 'Win 9x 4.90' => 'Windows Me.',
- 'Windows 98' => 'Windows 98',
- 'Windows 95' => 'Windows 95',
- 'Win95' => 'Windows 95',
- 'Windows NT' => 'Windows NT',
-
- // -- Linux
- 'Ubuntu' => 'Linux Ubuntu',
- 'Fedora' => 'Linux Fedora',
- 'Linux' => 'Linux',
-
- // -- Mac
- 'Macintosh' => 'Mac',
- 'Mac OS X' => 'Mac OS X',
- 'Mac_PowerPC' => 'Mac OS X',
-
- // -- Autres ...
- 'FreeBSD' => 'FreeBSD',
- 'Unix' => 'Unix',
- 'Playstation portable' => 'PSP',
- 'OpenSolaris' => 'SunOS',
- 'SunOS' => 'SunOS',
- 'Nintendo Wii' => 'Nintendo Wii',
- 'Mac' => 'Mac',
- );
-
- $ua = strtolower($ua);
-
- foreach($os_arr as $k => $v) {
-
- if(ereg(strtolower($k),$ua)) {
-
- $os = $v;
- break;
- }
- }
-
- return $os;
- }
- //Fonction Log attaque
- function LogAttack() {
-
- mysql_query("INSERT INTO t_mwg(mwg_ip,mwg_os,mwg_login,mwg_password,mwg_source,mwg_browser,mwg_pays,mwg_geoloc,mwg_datetime)
- VALUES('".$_SERVER["REMOTE_ADDR"]."','".
- getOS()."','".
- mysql_real_escape_string($_POST["login"])."','".
- mysql_real_escape_string($_POST["password"])."','".
- mysql_real_escape_string($_SERVER["REQUEST_URI"])."','".
- mysql_real_escape_string($_SERVER["HTTP_USER_AGENT"])."','".
- mysql_real_escape_string($_SERVER["HTTP_ACCEPT_LANGUAGE"])."','".
- file_get_contents("http://www.geolocalisationip.com/GetLocality.ashx?IP=".$_SERVER["REMOTE_ADDR"])."',NOW())" );
- }
- //Fonction Bannissement
- function Bannissement() {
-
- $_SESSION['hacker'] = "1";
- $fichier=fopen(".htaccess", 'a+');
- fwrite($fichier,"\n". "Deny from ".$_SERVER["REMOTE_ADDR"]);
- fclose ($fichier);
- echo("<script>alert('BANNED');document.location='index.php';</script>" );
- }
- //Fonction Alert via Mail
- function Alert_Mail($addr_email,$info_mail) {
-
- $message = "Date / Heure : ". date('M-d-Y / h:m:s') ."\n" .
- "IP : " . $_SERVER["REMOTE_ADDR"] . "\n" .
- "Attaque : " . htmlentities($_SERVER["REQUEST_URI"]) . "\n" .
- "Login : " . htmlentities($_POST["login"]) . "\n" .
- "Password : " . htmlentities($_POST["password"]) . "\n" .
- "OS : " . getOS() . "\n" .
- "Browser : " . htmlentities($_SERVER["HTTP_USER_AGENT"]) . "\n" .
- "Géo-loc : " . file_get_contents("http://www.geolocalisationip.com/GetLocality.ashx?IP=".$_SERVER['REMOTE_ADDR']) . "\n" .
- "Langue : " . htmlentities($_SERVER["HTTP_ACCEPT_LANGUAGE"]);
-
- mail($addr_email,$info_mail,$message,"" );
- }
- //white-list [66.249.67.1->66.249.71.206(GOOGLE-BOT) | 65.55.106.138->65.55.207.51(MSN-BOT) | 195.128.18.19/20(YAHOO-BOT)] pour modifier la white liste -> http://www.google.com/support/goog [...] 5572 ça pourra vous aider.
- if (preg_match("/^66\.249\.(67\.([1-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))|((6[8-9]|70)\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5])))|71\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2(0[0-6])))$|^65\.55\.(106\.(1(3[8-9]|[4-9][0-9])|2([0-4][0-9]|5[0-5]))|((1(0[7-9]|[1-9][0-9])|2(0[0-6]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5])))|207\.([0-9]|[1-4][0-9]|5[0-1]))$|195\.128\.18\.(19|20)$/", $_SERVER['REMOTE_ADDR'])) {
-
- echo("<p>Injection sécurisée!</p>" );
- } else {
-
- $nbres_verif_ip = mysql_num_rows( mysql_query("SELECT mwg_ip FROM t_mwg WHERE mwg_ip = '".$_SERVER['REMOTE_ADDR']."'" ));
- $mail_config = "abuse@votre-nom-de-domaine.com";
- $site_config = "www.votre-nom-de-domaine.com";
-
- if($nbres_verif_ip < 5 && !(isset($_SESSION['hacker']))){
-
- LogAttack();
- Alert_Mail($mail_config,"[MWG - ".$_SERVER['REMOTE_ADDR']." - ALERT] ".$site_config);
- echo "<html><head><title>Mwesto Web Guard - ALERT !</title></head><BODY>
- <img src='images/wall_MWG.jpg' style='position:absolute; width:101%; height:102%; margin-left:-25px; margin-top:-25px;'/>
- <div style='width:50%;background-color:#fff;position:absolute;z-index:150;border:solid 1px #000;left:25%;padding:15px;margin-top:150px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;-moz-box-shadow: 8px 8px 12px;#aaa;-webkit-box-shadow:8px 8px 12px #aaa;box-shadow:8px 8px 12px #555;-moz-opacity:0.7;opacity: 0.7;filter:alpha(opacity=70);'>
- <h2 style='color:#f00;font-size:19px;line-height:1.2em;letter-spacing:-1px;background-color:#1d1c1e;padding:6px 0 0 15px;height:30px;margin:5px 0 8px -10px;text-align:center' >Mwesto Web Guard</h2>
- <br>
- <center><b>Attention ! Avertissement du système de sécurité Mwesto Web Guard.<br> Vous serez banni automatiquement à 5 avertissement !</b><br><br></center>
- <b>pourquoi?</b> soit vous avez entrer un caractère interdit comme ',\",<,% dans un des champs de recherche/login/inscription ect. soit vous avez directement modifier les variables du site dans la barre d'url avec des caractère non autorisé qui ne vous seront pas révélé pour des raisons de sécurité.<br><br>
- Heure de l'attaque : ".date("Y-m-d H:i:s" )."<br>
- Votre IP: ".$_SERVER["REMOTE_ADDR"]." <a href='http://whois.domaintools.com/".$_SERVER["REMOTE_ADDR"]."' target='_blank'>Information sur votre fournisseur d'accè internet</a><br><br>
- Ainsi que la version de votre système d'exploitation, la version de votre navigateur, votre langue, votre géolocalisation aproximative et les informations relative au déclanchement du système de sécurité ont été enregistrer dans la base de donné et un mail a été envoyé aux administrateurs du site.<br><br>
- Pour installer Mwesto Web Guard en quelque clic sur votre site rendez vous sur le site suivant (système entièrement gratuit): <a href='http://www.mwesto.be/' target='_blank'>www.mwesto.be</a><br><br>
- <center><a href='index.php'><b>Revenir sur le site</b></a></center>
- </div></body></html>";
- } else {
- LogAttack();
- Bannissement();
- Alert_Mail($mail_config,"[MWG - ".$_SERVER['REMOTE_ADDR']." - BANNED] ".$site_config);
- }
- exit();
- }
- }
- ?>
|
code mwg_logs.php (Exemple de code pour afficher les logs dans votre système admin.)
Code :
- ##################################################
- # Title: Mwesto Web Guard (MWG) [ log.php ]
- # Version: 1.0
- # Author: mwesto
- # Email: contact@mwesto.be
- # Home: www.mwesto.be
- #
- # Description: log.php permet d'afficher les attaques enregistrée par mwg.php où vous le souhaitez sous forme de tableau.
- #
- ##################################################
- $sql_log_count = mysql_num_rows(mysql_query("SELECT * FROM t_traps ORDER BY trap_datetime DESC" ));
- echo"<h1>Mwesto Web Guard - Demo Online</h1><br>
- <b>Voici les 50 dernières tentatives de piratage [<font color='#ff0000'>".$sql_log_count."</font> tentatives de piratage au total]</b><br><br>
-
- <TABLE BORDER='0' width='1400px'>
- <TR>
- <TH><font color='#d56a00'> Date/Heure </font></TH>
- <TH><font color='#d56a00'> Ip </font></TH>
- <TH><font color='#d56a00'> Info Attaque </font></TH>
- <TH><font color='#d56a00'> Login </font></TH>
- <TH><font color='#d56a00'> Password </font></TH>
- <TH><font color='#d56a00'> Systeme d'exploitation </font></TH>
- <TH><font color='#d56a00'> Info Browser </font></TH>
- <TH><font color='#d56a00'> Langue Favorite </font></TH>
- <TH><font color='#d56a00'> Géolocalisation par IP </font></TH>
- <TH><font color='#d56a00'> Banni ? </font></TH>
- </TR>";
-
- $sql_log = mysql_query("SELECT * FROM t_traps ORDER BY trap_datetime DESC LIMIT 50 OFFSET 0" );
-
- while($log = mysql_fetch_array($sql_log)) {
-
- echo("<TR>
- <TH>".$log['trap_datetime']." </TH>
- <TH><a href='http://whois.domaintools.com/".$log['trap_ip']."' target='_blank' > <font color='#18baff'>".$log['trap_ip']." </font></a></TH>
- <TH> ".$log['trap_source']." </TH>
- <TH> </TH>
- <TH> </TH>
- <TH> ".$log['trap_os']." </TH>
- <TH> ".$log['trap_browser']." </TH>
- <TH> ".$log['trap_pays']." </TH>
- <TH><a href='http://www.geoiptool.com/fr/?IP=".$log['trap_ip']."' target='_blank' > <font color='#18baff'>".$log['trap_geoloc']." </font></a></TH>" );
-
- $sql_verif_ip= mysql_num_rows(mysql_query("SELECT trap_ip FROM t_traps WHERE trap_ip = '".$log['trap_ip']."'" ));
-
- if($sql_verif_ip < 5){
-
- echo("<TH><font color='#000000'> Non </font></TH>" );
-
- } else {
-
- echo("<TH><font color='#FF0000'> Oui </font></TH>" );
-
- }
-
- echo("</TR>" );
-
- }
-
- echo"</TABLE><hr>
- <center><a href='http://www.mwesto.be' target='_blank' style='color:#8fc628;'>Mwesto Web Guard - PHP firewall | anti-hacker - by www.mwesto.be</a></center>
- ";
- ?>
|
Téléchargement gratuit et open source:
http://www.mwesto.be/files/Mwesto% [...] 20v1.0.rar
Page descriptive du projet:
http://www.mwesto.be/service/Mwesto-Web-Guard.html
Si vous avez des idées ou des remarques à propos du système merci de m'en faire part cela me permettra d'améliorer mon système.
bonne journée à vous,
ps: c'est mon premier post sur ce forum j’espère être dans la bonne section pour présenté mon système. Message édité par mwesto le 16-05-2013 à 13:50:25 ---------------
www.mwesto.be
|