Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2986 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Mwesto Web Guard - PHP Firewall - Anti Hacker [Mwesto Labs]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mwesto Web Guard - PHP Firewall - Anti Hacker [Mwesto Labs]

n°2190421
mwesto
Posté le 16-05-2013 à 13:17:18  profilanswer
 

http://www.mwesto.be/images/creations/albums/Mwesto%20Web%20Guard/2.jpg
http://www.mwesto.be/images/creations/albums/Mwesto%20Web%20Guard/3.jpg
 
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é  :p )

Code :
  1. <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 :
  1. <?php
  2. ####################################################################################################
  3. # Title: Mwesto Web Guard (MWG) [ mwg.php ]
  4. # Version: 1.0
  5. # Author: mwesto
  6. # Email: contact@mwesto.be
  7. # Home: http://www.mwesto.be
  8. #
  9. # Description: Mwesto Web Guard est un firewall PHP anti hacker, ou plutôt, un
  10. # piège destiné à s'activer si un visiteur tente de modifier des variables du
  11. # site de manières suspectes ( url, système de login (+ anti brute force),
  12. # module de recherche, etc. ), ce qui a pour effet de contrer la majorité des
  13. # failles de sécurité web. Toutes les attaques sont enregistrées et dans le cas
  14. # ou 5 attaques ou plus sont occasionnées par la même IP, MWG bannit le pirate
  15. # de votre site internet via htaccess + fonction mail alert.
  16. #
  17. # Install:
  18. # 1) Configurer le nom des variables de votre site comme ci-dessous.
  19. # 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" );. )
  20. # 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.
  21. # 4) Configurer votre mail dans la fonction d'alert mail.
  22. #
  23. # Si vous voulez utiliser Mwesto Web Guard sur votre site, merci de mettre un lien en pied de page de votre site :
  24. # <a href="http://www.mwesto.be" target="_blank">© Mwesto Web Guard - Firewall PHP ( Anti Hacker )</a>
  25. #
  26. # Merci !
  27. #
  28. ####################################################################################################
  29. ###########################################CONFIG###################################################
  30. ####################################################################################################
  31. if(////////////// Configuration: //////////////
  32.    //Variable alphabétique
  33.    isset($_GET['test']) && !(ctype_alpha($_GET['test'])) ||
  34.    isset($_GET['variable1']) && !(ctype_alpha($_GET['variable1'])) ||
  35.    isset($_GET['variable2']) && !(ctype_alpha($_GET['variable2'])) ||
  36.  
  37.    //Variable numéric
  38.    isset($_GET['variable3']) && !(is_numeric($_GET['variable3'])) ||
  39.    isset($_GET['variable4']) && !(is_numeric($_GET['variable4'])) ||
  40.  
  41.    //exemple sécu système de recherche (Variable alpha/num + espace(\s) + ? + ! + _ + -)
  42.    isset($_GET['variable5']) && preg_match("/[^A-Za-z0-9\s?!_-]/", $_GET['variable5']) ||
  43.    isset($_GET['variable6']) && preg_match("/[^A-Za-z0-9\s?!_-]/", $_GET['variable6']) ||
  44.  
  45.    //exemple anti injection d'un système de login. (PAS anti brute force !)
  46.    isset($_POST['login']) && preg_match("/[^A-Za-z0-9]/", $_POST['login']) ||
  47.    isset($_POST['password']) && preg_match("/[^A-Za-z0-9]/", $_POST['password'])
  48.  
  49.    ////////////// :Configuration //////////////
  50.    ){
  51.  
  52. ####################################################################################################
  53. #########################################END CONFIG#################################################
  54. ####################################################################################################
  55. //-- Fonction détection OS
  56. function getOS( $ua = '' ) {
  57.        
  58.         if( ! $ua ) $ua = $_SERVER['HTTP_USER_AGENT'];
  59.                
  60.                 $os = 'Robot';
  61.                 $os_arr = Array(
  62.                 // -- Windows
  63.                 'Windows NT 6.1' => 'Windows Seven',
  64.                 'Windows NT 6.0' => 'Windows Vista',
  65.                 'Windows NT 5.2' => 'Windows Server 2003',
  66.                 'Windows NT 5.1' => 'Windows XP',
  67.                 'Windows NT 5.0' => 'Windows 2000',
  68.                 'Windows 2000' => 'Windows 2000',
  69.                 'Windows CE' => 'Windows Mobile',
  70.                 'Win 9x 4.90' => 'Windows Me.',
  71.                 'Windows 98' => 'Windows 98',
  72.                 'Windows 95' => 'Windows 95',
  73.                 'Win95' => 'Windows 95',
  74.                 'Windows NT' => 'Windows NT',
  75.                
  76.                 // -- Linux
  77.                 'Ubuntu' => 'Linux Ubuntu',
  78.                 'Fedora' => 'Linux Fedora',
  79.                 'Linux' => 'Linux',
  80.                
  81.                 // -- Mac
  82.                 'Macintosh' => 'Mac',
  83.                 'Mac OS X' => 'Mac OS X',
  84.                 'Mac_PowerPC' => 'Mac OS X',
  85.                
  86.                 // -- Autres ...
  87.                 'FreeBSD' => 'FreeBSD',
  88.                 'Unix' => 'Unix',
  89.                 'Playstation portable' => 'PSP',
  90.                 'OpenSolaris' => 'SunOS',
  91.                 'SunOS' => 'SunOS',
  92.                 'Nintendo Wii' => 'Nintendo Wii',
  93.                 'Mac' => 'Mac',
  94.                 );
  95.                
  96.                 $ua = strtolower($ua);
  97.                                
  98.                 foreach($os_arr as $k => $v) {
  99.                        
  100.                         if(ereg(strtolower($k),$ua)) {
  101.                              
  102.                                 $os = $v;
  103.                                 break;
  104.                         }
  105.         }
  106.                
  107. return $os;       
  108. }
  109. //Fonction Log attaque
  110. function LogAttack() {
  111.        
  112.         mysql_query("INSERT INTO t_mwg(mwg_ip,mwg_os,mwg_login,mwg_password,mwg_source,mwg_browser,mwg_pays,mwg_geoloc,mwg_datetime)
  113.                      VALUES('".$_SERVER["REMOTE_ADDR"]."','".
  114.        getOS()."','".
  115.        mysql_real_escape_string($_POST["login"])."','".
  116.        mysql_real_escape_string($_POST["password"])."','".
  117.        mysql_real_escape_string($_SERVER["REQUEST_URI"])."','".
  118.        mysql_real_escape_string($_SERVER["HTTP_USER_AGENT"])."','".
  119.        mysql_real_escape_string($_SERVER["HTTP_ACCEPT_LANGUAGE"])."','".
  120.        file_get_contents("http://www.geolocalisationip.com/GetLocality.ashx?IP=".$_SERVER["REMOTE_ADDR"])."',NOW())" );
  121. }
  122. //Fonction Bannissement
  123. function Bannissement() {
  124.        
  125.         $_SESSION['hacker'] = "1";                   
  126.         $fichier=fopen(".htaccess", 'a+');
  127.         fwrite($fichier,"\n". "Deny from ".$_SERVER["REMOTE_ADDR"]);
  128.         fclose ($fichier);     
  129.         echo("<script>alert('BANNED');document.location='index.php';</script>" );     
  130. }
  131. //Fonction Alert via Mail
  132. function Alert_Mail($addr_email,$info_mail) {
  133.        
  134.         $message =  "Date / Heure : ". date('M-d-Y / h:m:s') ."\n" .
  135.     "IP : " . $_SERVER["REMOTE_ADDR"] . "\n" .
  136.     "Attaque : " . htmlentities($_SERVER["REQUEST_URI"]) . "\n" .
  137.     "Login : " . htmlentities($_POST["login"]) . "\n" .
  138.     "Password : " . htmlentities($_POST["password"]) . "\n" .
  139.     "OS : " . getOS() . "\n" .
  140.     "Browser : " . htmlentities($_SERVER["HTTP_USER_AGENT"]) . "\n" .
  141.     "Géo-loc : " . file_get_contents("http://www.geolocalisationip.com/GetLocality.ashx?IP=".$_SERVER['REMOTE_ADDR']) . "\n" .
  142.     "Langue : "  . htmlentities($_SERVER["HTTP_ACCEPT_LANGUAGE"]);
  143.                                                        
  144.         mail($addr_email,$info_mail,$message,"" );
  145. }
  146. //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&nbsp; ça pourra vous aider.
  147. 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'])) {
  148.  
  149.         echo("<p>Injection sécurisée!</p>" );
  150. } else {
  151.        
  152.         $nbres_verif_ip = mysql_num_rows( mysql_query("SELECT mwg_ip FROM t_mwg WHERE mwg_ip = '".$_SERVER['REMOTE_ADDR']."'" ));
  153.  $mail_config = "abuse@votre-nom-de-domaine.com";
  154.  $site_config = "www.votre-nom-de-domaine.com";
  155.                
  156.         if($nbres_verif_ip < 5 && !(isset($_SESSION['hacker']))){
  157.                  
  158.                 LogAttack();
  159.                 Alert_Mail($mail_config,"[MWG - ".$_SERVER['REMOTE_ADDR']." - ALERT] ".$site_config);
  160.    echo "<html><head><title>Mwesto Web Guard - ALERT !</title></head><BODY>
  161.    <img src='images/wall_MWG.jpg' style='position:absolute; width:101%; height:102%; margin-left:-25px; margin-top:-25px;'/>
  162.    <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);'>
  163.    <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>
  164.    <br>
  165.    <center><b>Attention ! Avertissement du syst&egrave;me de s&eacute;curit&eacute; Mwesto Web Guard.<br> Vous serez banni automatiquement &agrave; 5 avertissement !</b><br><br></center>
  166.    <b>pourquoi?</b> soit vous avez entrer un caract&egrave;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&egrave;re non autoris&eacute; qui ne vous seront pas r&eacute;v&eacute;l&eacute; pour des raisons de s&eacute;curit&eacute;.<br><br>
  167.    Heure de l'attaque : ".date("Y-m-d H:i:s" )."<br>
  168.    Votre IP: ".$_SERVER["REMOTE_ADDR"]." <a href='http://whois.domaintools.com/".$_SERVER["REMOTE_ADDR"]."' target='_blank'>Information sur votre fournisseur d'acc&egrave; internet</a><br><br>
  169.    Ainsi que la version de votre syst&egrave;me d'exploitation, la version de votre navigateur, votre langue, votre g&eacute;olocalisation aproximative et les informations relative au d&eacute;clanchement du syst&egrave;me de s&eacute;curit&eacute; ont &eacute;t&eacute; enregistrer dans la base de donn&eacute; et un mail a &eacute;t&eacute; envoy&eacute; aux administrateurs du site.<br><br>
  170.    Pour installer Mwesto Web Guard en quelque clic sur votre site rendez vous sur le site suivant (syst&egrave;me enti&egrave;rement gratuit): <a href='http://www.mwesto.be/' target='_blank'>www.mwesto.be</a><br><br>
  171.    <center><a href='index.php'><b>Revenir sur le site</b></a></center>
  172.    </div></body></html>";
  173.         } else {
  174.                 LogAttack();
  175.                 Bannissement();
  176.                 Alert_Mail($mail_config,"[MWG - ".$_SERVER['REMOTE_ADDR']." - BANNED] ".$site_config);
  177.         }
  178. exit();     
  179. }
  180. }
  181. ?>


 
code mwg_logs.php (Exemple de code pour afficher les logs dans votre système admin.)

Code :
  1. ##################################################
  2. # Title: Mwesto Web Guard (MWG) [ log.php ]
  3. # Version: 1.0
  4. # Author: mwesto
  5. # Email: contact@mwesto.be
  6. # Home: www.mwesto.be
  7. #
  8. # Description: log.php permet d'afficher les attaques enregistrée par mwg.php où vous le souhaitez sous forme de tableau.
  9. #
  10. ##################################################
  11. $sql_log_count = mysql_num_rows(mysql_query("SELECT * FROM t_traps ORDER BY trap_datetime DESC" ));
  12. echo"<h1>Mwesto Web Guard - Demo Online</h1><br>
  13.  <b>Voici les 50 dernières tentatives de piratage [<font color='#ff0000'>".$sql_log_count."</font> tentatives de piratage au total]</b><br><br>
  14.      
  15.          <TABLE BORDER='0' width='1400px'>
  16.      <TR>
  17.      <TH><font color='#d56a00'> Date/Heure </font></TH>
  18.      <TH><font color='#d56a00'> Ip </font></TH>
  19.      <TH><font color='#d56a00'> Info Attaque </font></TH>
  20.      <TH><font color='#d56a00'> Login </font></TH>
  21.      <TH><font color='#d56a00'> Password </font></TH> 
  22.      <TH><font color='#d56a00'> Systeme d'exploitation </font></TH>
  23.      <TH><font color='#d56a00'> Info Browser </font></TH>
  24.      <TH><font color='#d56a00'> Langue Favorite </font></TH>
  25.      <TH><font color='#d56a00'> Géolocalisation par IP </font></TH>
  26.      <TH><font color='#d56a00'> Banni ? </font></TH>
  27.      </TR>";
  28.    
  29. $sql_log = mysql_query("SELECT * FROM t_traps ORDER BY trap_datetime DESC LIMIT 50 OFFSET 0" );
  30.                        
  31. while($log = mysql_fetch_array($sql_log)) {
  32.                        
  33.         echo("<TR>
  34.               <TH>".$log['trap_datetime']." </TH>
  35.               <TH><a href='http://whois.domaintools.com/".$log['trap_ip']."' target='_blank' > <font color='#18baff'>".$log['trap_ip']." </font></a></TH>
  36.               <TH> ".$log['trap_source']." </TH>
  37.               <TH>  </TH>
  38.               <TH>  </TH>
  39.               <TH> ".$log['trap_os']." </TH>
  40.               <TH> ".$log['trap_browser']." </TH>
  41.               <TH> ".$log['trap_pays']." </TH>
  42.               <TH><a href='http://www.geoiptool.com/fr/?IP=".$log['trap_ip']."' target='_blank' > <font color='#18baff'>".$log['trap_geoloc']." </font></a></TH>" );
  43.                                        
  44. $sql_verif_ip= mysql_num_rows(mysql_query("SELECT trap_ip FROM t_traps WHERE trap_ip = '".$log['trap_ip']."'" ));
  45.                                        
  46.         if($sql_verif_ip < 5){
  47.                                        
  48.                   echo("<TH><font color='#000000'> Non </font></TH>" );
  49.                                        
  50.         } else {
  51.                                                
  52.                   echo("<TH><font color='#FF0000'> Oui </font></TH>" );
  53.                                                
  54.         }
  55.                                        
  56.         echo("</TR>" );
  57.                                                                  
  58. }
  59.        
  60. echo"</TABLE><hr>
  61.          <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>
  62.          ";
  63. ?>


 
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
mood
Publicité
Posté le 16-05-2013 à 13:17:18  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Mwesto Web Guard - PHP Firewall - Anti Hacker [Mwesto Labs]

 

Sujets relatifs
[Résolu] Besoin aide calcul temps en PHPInsérer une donnée dans une base SQlite via PHP
[PHP]Problème d'autentification en PHPTemps de développement entre PHP/Java/Flash
[JS/PHP/XML] Les encodages...Function PHP : heu comment expliquer je deviens fou ;)
Script PHP (rémunéré)renvoi de formulaire html par PHP
Petite aide niveau tablea en HTML/PHP?Php connaitre le login
Plus de sujets relatifs à : Mwesto Web Guard - PHP Firewall - Anti Hacker [Mwesto Labs]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR