4images Forum & Community

4images Modifications / Modifikationen => Mods & Plugins (Requests & Discussions) => Topic started by: rinaldos on July 19, 2009, 03:54:21 PM

Title: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: rinaldos on July 19, 2009, 03:54:21 PM
[MOD] IP Sperre für eine Zeit XX Sekunden
Dieser MOD soll dein System etwas mehr absichern. Kaum eine Website ist gegen BRUTE FORCE Angriffe geschützt. Mit dieser Erweiterung kannst du festlegen, nach wievielen fehlerhaften LOGINS und wie lange die IP Adresse des vermeintlichen Angreifers gesperrt bleiben soll.
Die Sperre bezieht sich nur auf die Webseite. Solltest du SSH oder FTP aktiviert haben, hat dies keinen einfluss auf die Sperre.

Wenn die Anzahl X überschritten ist, wird dem vermeintlichen Angreifer nur noch eine Seite angezeigt, welche Ihn daraufhin weist, wann er sich wieder normal einloggen kann. Sobald eine Adresse gesperrt ist, bekommt der ADMIN eine EMAIL (sofern im ACP aktiviert).

Der Counter wird nach erst wieder zurückgesetzt, wenn die Zeit X abgelaufen ist. Diese Zeit kannst du im ACP frei definieren. Die Zeit wird dort in Sekunden angegeben.
        1 min = 60 Sekunden
        10 min = 600 Sekunden
        1 Stunde = 3600 Sekunden
        1 Tag = 86400 Sekunden
        usw.
Sinnvolle Werte sind sicherlich ein Wert zwischen 5 - 10 Login Versuchen und eine Sperre zwischen 10 - 60 Minuten.
Default Werte im ACP:
Logins: 10
Sperre: 600 (10 Minuten)
Email: deaktiviert

Wenn noch drei Versuche übrig sind, erscheint ein Java POPUP und ziegt die verbleibenden Versuche an.

Dieser MOD hat mich auf die Idee der Absicherung gebracht:
http://www.4homepages.de/forum/index.php?topic=25322.0

Nicht zu verwechseln mit [MOD] Ban v1.7
http://www.4homepages.de/forum/index.php?topic=7066.0

DEMO http://4images_1.rinaldos.homeip.net
Benutze einen Benutzernamen und ein Passwort deiner Wahl. Du hast zwei Versuche. Der Zugriff auf die Webseite ist dann für Dich 120 Sekunden gesperrt

zu ändernde Dateien: 8
neue Dateien: 1

Schritt 1
öffne /admin/setting.php
finde

 show_form_footer($lang['save_changes'], "", 2);


füge darüber ein

  show_table_separator($setting_group[xx], 2, "setting_group_xx");
  show_setting_row("mod_block_count");
  show_setting_row("mod_block_time");
  show_setting_row("mod_block_email", "radio");


xx = Die Fortlaufende Nummer deiner SETTINGS

Schritt 2
öffne /includes/constants.php
finde

define('USERS_TABLE', $table_prefix.'users');


füge darüber oder darunter ein:

// MOD BLOCK IP ADRESSE
define('USERS_LOGIN_COUNT_TABLE', $table_prefix.'users_login_count');
// MOD BLOCK IP ADRESSE


Schritt 3
öffne /includes/page_header.php
finde

if (!defined('ROOT_PATH')) {
  die("Security violation");
}


füge darunter ein:

// MOD BLOCK IP
reset_invalid_login();

if ((get_invalid_login($count_login) >= $config['mod_block_count']) && ($user_info['user_level'] != ADMIN)) {
    $IP = $_SERVER['REMOTE_ADDR'];
    $sql = "SELECT count, time
            FROM ".USERS_LOGIN_COUNT_TABLE."
            WHERE IP = '".$IP."'";
    $result = $site_db->query_firstrow($sql);
    $count = $result['count'];
    $time = $result['time'];
    $current_time = time();
    $time_retry = $config['mod_block_time'];
    if (($current_time <= $time) && ($user_info['user_level'] != ADMIN)) {
      $main_template = "login_fail";
      $login_time = format_date($config['date_format']." ".$config['time_format'],$time);
      $site_template->register_vars(array(
      "invalid_login_german" => $lang['invalid_login_german'],
      "invalid_login_english" => $lang['invalid_login_english'],
      "login_time" => $login_time,
    ));
      $site_template->print_template($site_template->parse_template($main_template));
      exit;
    }
}
// MOD BLOCK IP


Schritt 4
öffne /lang/deutsch/main.php
füge vor ?> folgende zeilen ein

// MOD BLOCK IP ADRESSE
$lang['invalid_login_text'] = "Es hat sich jemand mit einem falschen Benutzernamen / Passwort versucht einzuloggen. Sollte dieser Versuch mehrfach sein, wird die Webseite gerade gehackt";
$lang['invalid_login_emailsubject'] = "Benutzer login failed";
$lang['invalid_login_german'] = "Diese <font color=\"#FF0000\">Webseite</font> ist f&uuml;r Dich vorr&uuml;bergehend geschlossen. Du hast dich zuoft mit einem falschen Benutzernamen oder einem falschen Passwort versucht anzumelden.Das System sperrt automatisch f&uuml;r eine gewisse Zeit deine IP Adresse. Du kannst es wieder versuchen am / um:<br> ";
$lang['invalid_login_english'] = "Sorry, but the <font color=\"#FF0000\">Website</font> is temporarily closed for you. Due to many LOGIN FAILURES please revisit this Website again at: <br> ";
$lang['invalid_login_1'] = "Du hattest bisher ";
$lang['invalid_login_2'] = "fehlgeschlagene Versuche gehabt. Dir verbleiben noch ";
$lang['invalid_login_3'] = "Versuch(e)";
// MOD BLOCK IP ADRESSE


Schritt 5
öffne /lang/deutsch/admin.php
füge vor ?> folgende zeilen ein

// MOD BLOCK IP ADRESSE
$setting_group[xx]="INVALID LOGINS";
$setting['mod_block_count'] = "Anzahl der Versuche zum einloggen";
$setting['mod_block_time'] = "Wie lange bleibt die IP Adresse gesperrt?<br> Zeit ist in Sekunden einzutragen";
$setting['mod_block_email'] = "Per EMAIl Admin benachrichtigen?";
// MOD BLOCK IP ADRESSE


xx = Deine letzte SEETTINGS GROUP + 1

Schritt 6
erstelle eine Datei im Verzeichnis lang/Deine Sprache/email/login_email.html
füge folgenden Code in diese Datei ein
Code: [Select]
Hallo

{text}
----------
Benutzer: {user_name}
Versuch: {login_date}
Anzahl: {login_counts}
IP-Adresse: {IP}
Browser: {Browser}
----------

Schritt 7 am 15.02.2010 geändert
öffne /includes/functions.php
füge vor ?> folgende Zeilen ein

// MOD BLOCK IP
function get_invalid_login($count_login) {
 global $site_db, $config, $lang;
  $IP = $_SERVER['REMOTE_ADDR'];
  $current_time = time();
  // $time_retry = $config['mod_block_time'];
  // $retry_time = $current_time + $time_retry;
  
  $sql1 = "SELECT COUNT(IP) AS ips
           FROM ".USERS_LOGIN_COUNT_TABLE."
           WHERE IP = '".$IP."'";
  $result1 = $site_db->query_firstrow($sql1);
  $num_ips = $result1['ips'];
  if ($num_ips == "1"){
     //  if ($current_time >= $retry_time){
           $sql = "SELECT count FROM ".USERS_LOGIN_COUNT_TABLE."
                   WHERE ip = '".$IP."'";
           $result= $site_db->query_firstrow($sql);
           $count_login = $result['count'];
     //  }
    }
return $count_login;
}

function reset_invalid_login() {
global $site_db, $config, $lang;
  $IP = $_SERVER['REMOTE_ADDR'];
  $current_time = time();
  $time_retry = $config['mod_block_time'];
  $retry_time = $current_time + $time_retry;
  
  $sql1 = "SELECT COUNT(IP) AS ips
           FROM ".USERS_LOGIN_COUNT_TABLE."";
  $result1 = $site_db->query_firstrow($sql1);
  $num_ips = $result1['ips'];
  if ($num_ips >= "1"){
      // changed if ($current_time >= $retry_time){
       if ($current_time <= $retry_time){
           $sql = "DELETE FROM ".USERS_LOGIN_COUNT_TABLE."
                  WHERE time <= '".$current_time."' ";
           $site_db->query($sql);
       }
    }
}

function count_invalid_login($user_name) {
    global $site_db, $site_sess, $user_info, $config, $lang, $script_url;
    $IP = $_SERVER['REMOTE_ADDR'];
    $current_time = time();
    $time_retry = $config['mod_block_time'];
    $retry_time = $current_time + $time_retry;
    $sql1 = "SELECT COUNT(IP) AS ips
             FROM ".USERS_LOGIN_COUNT_TABLE."
            WHERE IP = '".$IP."'";
    $result1 = $site_db->query_firstrow($sql1);
    $num_ips = $result1['ips'];
    if ($num_ips == "0"){
        $sql = "INSERT INTO ".USERS_LOGIN_COUNT_TABLE."
              (IP, count, time)
              VALUES
              ('".$IP."', '1', '".$retry_time."')";
      $site_db->query($sql);
      $count = "1";
      $count_rest = $config['mod_block_count'] - $count;
    }else {
           $sql = "UPDATE ".USERS_LOGIN_COUNT_TABLE." SET
                  count = count + 1,
                  time = '".$retry_time."'
                  WHERE IP = '".$IP."'";
           $site_db->query($sql);
           $sql = "SELECT count FROM ".USERS_LOGIN_COUNT_TABLE."
                  WHERE IP = '".$IP."'";
           $result = $site_db->query_firstrow($sql);
           $count = $result['count'];
           $count_rest = $config['mod_block_count'] - $count;
     }

   if ($count_rest <= "3"){
      echo "<script language='javascript'>alert('".$lang['invalid_login_1']." ".$count." ".$lang['invalid_login_2']." ".$count_rest." ".$lang['invalid_login_3']."')</script>";
   }

  $htaccess_email_send = $config['mod_block_email'];
  $count_login_retry = $config['mod_block_count'];
  
  if (($htaccess_email_send == 1) && ($count >= $count_login_retry)) {
      $current_time = time();
      include_once(ROOT_PATH.'includes/email.php');
      $text = $lang['invalid_login_text'];
      $user_password = trim($HTTP_POST_VARS['user_password']);
      $site_email = new Email();
      $site_email->set_to($config['site_email'], $config['site_name']);
      $site_email->set_from($config['site_email'], $config['site_name']);
      $site_email->set_subject($lang['invalid_login_emailsubject']);
    
      $site_email->register_vars(array(
        "user_name" => stripslashes($user_name),
        "login_date" => format_date($config['date_format']." ".$config['time_format'], $current_time),
        "login_counts" => $count,
        "site_name" => $config['site_name'],
        "text" => $text,
        "IP" => $_SERVER['REMOTE_ADDR'],
        "Browser" => $_SERVER['HTTP_USER_AGENT']
         ));
        $site_email->set_body("login_email", $config['language_dir']);
        $site_email->send_email();
        $site_email->reset();
  }
    return $count;
}


Schritt 8
erstelle in Deinem Template Verzeichnis folgende Datei
login_fail.html
füge folgenden Code ein

Code: [Select]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
<title>BLOCKED IP</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-15" />
<meta name="language" content="german,deutsch,DE,AT,CH,S">
</head>
<table width="90%" align="center" border="0"cellspacing="0" cellpadding="0">
 <tr>
  <td align="center">
   <table border="0" width="640" align="center" id="table1" style="border-collapse: collapse">
    <tr>
     <td width="100%" height="480" align="center">
     <h2>{invalid_login_german} {login_time}</h2>
     <h2>------------------</h2>
     <h2>{invalid_login_english} {login_time}</h2>
     <p>&nbsp;</p>
     </td>
    </tr>
   </table>
  </td>
 </tr>
</table>
</body>
</html>

Schritt 9
öffne login.php
finde

if ($error) {
  $main_template = "error";
  include(ROOT_PATH.'includes/page_header.php');
  show_error_page($error);
}


ersetze mit

if ($error) {
  $main_template = "error";
  include(ROOT_PATH.'includes/page_header.php');
  count_invalid_login($user_name);
  show_error_page($error);
}


Schritt 10
Führe den INSTALLER aus dem zip aus.



Das sollte es gewesen sein :-)
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: Sebas Bonito on July 19, 2009, 06:01:50 PM
Sehr gut! Danke dafür...

Diese MOD müsste eigentlich ein Pflicht- und Standardwerkzeug von 4images sein  :!:

Update: Mir fällt gerad ein und auf, dass der Ansatz noch ergänzt werden müsste. Du sprichst die BruteForce Attacks an, und da werden zig-Tausende IPs verwendet. Von daher sollte man nicht nur die IP sperren, sondern (zusätzlich) auch den kompletten Account.
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: KurtW on July 19, 2009, 06:12:30 PM
Hallo,
toller Mod, gefallt mir gut.
Kleine Änderung wäre noch gut, um normalen vergesslichen Usern keine Überrachung zu bescheren.

z.B.
3 Versuche frei
 - Versuch 1 falsch: Sie haben noch 2 Versuche frei
 - Versuch 2 falsch: Sie haben noch 1 Versuch frei
 - Versuch 3 falsch: Deine Meldung der Sperre für xx Minuten

Gruß
Kurt
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: rinaldos on July 19, 2009, 06:18:25 PM
Hallo Kurt,
das ist sicherlich eine sinnvolle Erweiterung :-) Man kennt ja das Problem mit den Passwörtern ....Ich werde mal schauen was ich noch machen kann :-)

@Schnick und Schnack
Wenn ich den Account sperre, dann kommt der normale Nutzer nicht mehr rein. Folglich müsste eine Neuaktivierung dem Nutzer zugeschickt werden. Wenn ich dann Spass hätte würde ich schnell alle Accounts einer Webseite sperren :-) Daher kommt eine Sperre des Accounts nicht in Frage. Auch wenn bei einer Bruteforce Attacke viele IP Adressen genutzt werden, ist dies wenigstens ein kleiner Schutz gegen Script Kiddies.
Meines Erachtens, machen das pfiffige Hacker besser. Die gehen nicht über die Webseite, sondern eher auf Betriebssystemebene. Also so würde ich es machen. Da wäre dein SSH oder FTP viel lukrativer :-)
Bei mir als Bsp, ist der ssh Port serienmäßig deaktiviert. Wenn er aber trotzdem offen sein sollte, sperrt meine Firewall automatisch die IP Adresse. Die wird dann erst nach einer Stunde wieder freigegeben. Dies ist eigentlich nur eine kleine Abwandlung der Funktion meiner Firewall .....

LG
Ingo
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: Jan-Lukas on July 19, 2009, 06:36:23 PM
Affengeil, und mit Kurts Vorschlag ein Muss für jede Galerie.

Quote
Dieser MOD hat mich auf die Idee der Absicherung gebracht:
http://www.4homepages.de/forum/index.php?topic=25322.0

War ich ja auch mal für was gut  :lol:

LG

Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: rinaldos on July 19, 2009, 07:59:00 PM
@All
ich habe Schritt 4 und Schritt 7 erneuert. Mit der Änderung erfolgt ein JAVA POPUP und zeigt die verbleibenden Versuche an. Aufgrund der LANG Files kann jeder seinen eigenen Text einfügen :-)

Auf der Demo Seite sind nun zwei Versuche nötig :-)

Gruß
Ingo
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: Bommel on January 09, 2010, 08:16:51 PM
Aus diesem Beitrag entfernt: http://www.4homepages.de/forum/index.php?topic=8542.msg144436#msg144436 , da ich denke, dass er besser hierher gehört.

Hallo allerseits,

bei der Suchfunktion taucht jetzt, nachdem Einbau dieses Mods dieser Fehler auf:

Quote
Notice: Undefined variable: config in /home/WH4448059/wwwroot/includes/functions.php on line 2046 Notice: Undefined variable: count_login in /home/WH4448059/wwwroot/includes/page_header.php on line 30 Notice: Undefined variable: config in /home/WH4448059/wwwroot/includes/functions.php on line 2023

Der MOD funktioniert aber ohne Probleme. Da ich nun etwas unerfahren bin, was solche Fehlerbehebungen anbelangt - kann mir irgendjemand von den Profis hier bitte helfen.

Hier noch die betreffenden Zeilen aus der Fehlermeldung:

functions.php
Zeile 2046
Code: [Select]
  $time_retry = $config['mod_block_time'];Zeile 2023
Code: [Select]
  $time_retry = $config['mod_block_time'];
page_header.php
Zeile 30-51
Code: [Select]
if ((get_invalid_login($count_login) >= $config['mod_block_count']) && ($user_info['user_level'] != ADMIN)) {
    $IP = $_SERVER['REMOTE_ADDR'];
    $sql = "SELECT count, time
            FROM ".USERS_LOGIN_COUNT_TABLE."
            WHERE IP = '".$IP."'";
    $result = $site_db->query_firstrow($sql);
    $count = $result['count'];
    $time = $result['time'];
    $current_time = time();
    $time_retry = $config['mod_block_time'];
    if (($current_time <= $time) && ($user_info['user_level'] != ADMIN)) {
      $main_template = "login_fail";
      $login_time = format_date($config['date_format']." ".$config['time_format'],$time);
      $site_template->register_vars(array(
      "invalid_login_german" => $lang['invalid_login_german'],
      "invalid_login_english" => $lang['invalid_login_english'],
      "login_time" => $login_time,
    ));
      $site_template->print_template($site_template->parse_template($main_template));
      exit;
    }
}

Scheinbar handelt es sich hier um die Variable "mod_block_time". Wo muss ich ansetzen, um diesen Fehler zu beheben?

Freundliche Grüße, Bommel

Nachtrag:

Habe jetzt diesen MOD noch einmal entfernt. Die Fehlermeldung taucht nicht mehr auf. Entweder:


Ich nehme an, dass ersteres der Fall ist. Ob dem so ist werde ich gleich sehen, wenn ich diesen MOD noch einmal neu integriere.

Freundliche Grüße, Bommel

Nachtrag:

Also, es scheint nicht so, dass ich Fehler beim Einpflegen dieses MODs gemacht habe. Die Fehlermeldung taucht erneut bei der Such-Funktion auf. Da ich ungern auf diesen MOD verzichten möchte, suche ich jetzt hier bei euch einen Denkanstoss.

Freundliche Grüße, Bommel
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: rinaldos on January 10, 2010, 03:25:06 PM
Hi Bommel,
deaktiviere doch mal in der global.php
Code: [Select]
error_reporting(E_ERROR | E_WARNING | E_PARSE);
error_reporting(E_ALL);

indem du ein // vor die Zeilen setzt. Das die Meldungen da sind, weiss ich, habe aber noch keinen Weg gefunden die zu deaktivieren. Wenn ich die Variablen vorher mal mit 0 oder anders definiere, funktioniert die Modifikation leider nicht mehr .....

Der Fehler ist noch ein kleiner BUG in diesem MOD. In einem Produktivsystem solltest du sowieso solche Fehlermeldungen deaktivieren. Das bietet dem Hacker eine noch geringere Angriffsmöglichkeit, da er nicht sieht ob seine Aktionen Fehler oder so bringen.


Sobald ich einen Weg gefunden habe dieses zu deaktivieren werde ich es hier so schnell als möglich posten :-)

Gruß
Ingo
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: KurtW on January 10, 2010, 04:02:19 PM
Hi,

euch fehlt jeweils die "$config" und "$lang" in der includes/functions.php
Code: [Select]
global $site_db, $config, $lang;

Kurt
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: rinaldos on January 10, 2010, 06:03:21 PM
@KurtW
Danke für den Tip, ich habe den Thread oben aktualisiert. Schön dich nochmal zu lesen :-)

LG
Ingo
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: Bommel on January 10, 2010, 09:53:59 PM
Hallo Rinaldos & KurtW,

Hi Bommel,
deaktiviere doch mal in der global.php....
Das hatte ich bereits schon gemacht. Fand ich irgendwo bei meiner Suche im Forum. Jedoch hatte ich dabei kein so gutes Gefühl, da ich noch im Begriff bin, meine Galerie aufzubauen. Da ich nicht so viel Erfahrung damit habe, sah ich letztendlich die Fehlermeldungen als wertvolle Lernhilfe an. So habe ich sie wieder aktiviert.
...Der Fehler ist noch ein kleiner BUG in diesem MOD. In einem Produktivsystem solltest du sowieso solche Fehlermeldungen deaktivieren. Das bietet dem Hacker eine noch geringere Angriffsmöglichkeit, da er nicht sieht ob seine Aktionen Fehler oder so bringen...
Das spielt eh keine Rolle. Meine Galerie ist nur ein rein privates System, mithilfe der ich meine Familie, Verwandschaft usw. mit unseren Fotos versorge. Dann gibts hoffentlich endlich Ruhe. ;)

Die Lösung von KurtW hat zumindest einen Teil der Probleme beseitigt. Geblieben ist noch die folgende Meldung:

Quote
Notice: Undefined variable: count_login in /home/WH4448059/wwwroot/includes/page_header.php on line 30

Die Zeile lautet:

Code: [Select]
if ((get_invalid_login($count_login) >= $config['mod_block_count']) && ($user_info['user_level'] != ADMIN)) {
Habe mir das nochmal angeschaut, aber im Moment bin ich zu müde dafür. Mein Kind hat mich heute bis in den Abend auf Trab gehalten. Kein Wunder bei dem Schnee.  :D

Danke für eure Hilfe.

Freundliche Grüße, Bommel
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: shadowhunter on February 10, 2010, 05:59:26 PM
Hallo!

Erstmals, super MOD, Danke!

Ich habe noch ein kleines Problem:
Wenn man nach x-Versuchen die maximale Anzahl der Versuche erreicht hat, dann kommt die "login_fail.html" Datei nicht, sondern einfach die "error"-Steite (Login nicht erfolgreich). Danach funktioniert die Galerie ganz normal; jedoch keine Sperrung.
Die Javascript-Meldung erscheint auch bei den 3 letzten Versuchen. Sonst funktioniert der MOD richtig. Das E-Mail wird auch einwandfrei verschickt.
Ich habe alles so gemacht, wie es hier beschrieben ist.
Irgendetwas in beim eingefügten Code in der Datei "page_header.php" funktioniert nicht ganz bei mir...

Könnte mir bitte jemand weiterhelfen. Danke im Voraus.
Grüsse

Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: rinaldos on February 10, 2010, 07:45:14 PM
Hi,
wenn ich das richtig sehen, laufen Deine Seiten in einer Art iframe (frameset). Da kann es ja nicht gehen, da die Seiten ja über das Frame aktiv sind, und erst später durch 4images gesteuert werden........

Gruß

P.S. Test war ich
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: shadowhunter on February 12, 2010, 09:42:37 PM
Danke für den Post!
Das mit dem Frameset ist so - meine Seite besitzt Frames.
Jedoch habe ich das Frameset einmal "ausgeschaltet" (-> 4images alleine) und danach diesen MOD wieder getestet: Leider ohne Erfolg...
Der Fehler kann somit nicht am Frameset liegen!
Was könnte noch den Fehler sein? Irgendetwas im page_header.php?
Danke im Voraus.
Gruss
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: shadowhunter on February 15, 2010, 06:44:12 PM
Hallo!
Betreffend dem beschriebenen Problem vom Beitrag #11:

Ich habe deinen Code durchdacht und nach meinen Kenntnissen funktioniert der folgende Code (von "functions.php")

Code: [Select]
function get_invalid_login($count_login) {
 global $site_db, $config, $lang;
  $IP = $_SERVER['REMOTE_ADDR'];
  $current_time = time();
  $time_retry = $config['mod_block_time'];
  $retry_time = $current_time + $time_retry;
  
  $sql1 = "SELECT COUNT(IP) AS ips
           FROM ".USERS_LOGIN_COUNT_TABLE."
           WHERE IP = '".$IP."'";
  $result1 = $site_db->query_firstrow($sql1);
  $num_ips = $result1['ips'];
  if ($num_ips == "1"){
       if ($current_time >= $retry_time){
           $sql = "SELECT count FROM ".USERS_LOGIN_COUNT_TABLE."
                   WHERE ip = '".$IP."'";
           $result= $site_db->query_firstrow($sql);
           $count_login = $result['count'];
       }
    }
return $count_login;
}
bei der Zeile (14)
Code: [Select]
if ($current_time >= $retry_time){nicht!

Nach folgender Änderung funktioniert es auch bei mir:
Code: [Select]
...
       //if ($current_time >= $retry_time){
           $sql = "SELECT count FROM ".USERS_LOGIN_COUNT_TABLE."
                   WHERE ip = '".$IP."'";
           $result= $site_db->query_firstrow($sql);
           $count_login = $result['count'];
       //}
...

Weil die Bedingung $current_time >= $retry_time nie eintrifft, da $current_time = time(); $retry_time = $current_time + $time_retry;


Zusätzlich noch eine Bemerkung zum Code function reset_invalid_login() { in "functions.php":
Die Zeile if ($current_time >= $retry_time){ ist ebenfalls unlogisch und das Löschen von Einträgen in der db funktioniert auch bei mir nicht!


Was meint ihr dazu? Seit ihr der gleichen Meinung?
Gruss
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: rinaldos on February 15, 2010, 07:31:23 PM
Asche auf mein Haupt.

Ich selber nutze das so, wie du es gerade geschrieben hast. Ich habe wohl vergessen den Post anzupassen :-( Klar das es bei mir klappt, und woanders nicht :-( Mein Gott ich werde wirklich alt :-( Sollte mal das kleingedruckte in meinem Code lesen *g*

Gebe dir recht mit dem was du schreibst, sorry das ich nicht vorher mal den Code verglichen habe ......

Gruß

Ingo

P.S. Werde direkt den ersten Post korrigieren und mit der Änderungen im Schritt 7 werden auch die ungültigen Logins nach einer Zeit gelöscht. Dafür habe ich in der function reset_invalid_login() eine Zeile geändert. Für alle die diesen MOD drinnen haben, bitte Schritt 7 aktualisieren .-) Sorry nochmals für die Unannehmlichkeiten, und das ich einfach Blind war.....
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: shadowhunter on February 16, 2010, 12:36:03 PM
Hallo Ingo

Kein Problem! Dies kann jedem einmal passieren...

Jetzt funktioniert alles einwandfrei ;) Danke für den MOD.

Gruss
Jones
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: wflorian on March 31, 2015, 07:49:46 PM

[MOD]
Schritt 1
öffne /admin/setting.php
finde

 show_form_footer($lang['save_changes'], "", 2);


füge darüber ein

  show_table_separator($setting_group[xx], 2, "setting_group_xx");
  show_setting_row("mod_block_count");
  show_setting_row("mod_block_time");
  show_setting_row("mod_block_email", "radio");


xx = Die Fortlaufende Nummer deiner SETTINGS


Schritt 5
öffne /lang/deutsch/admin.php
füge vor ?> folgende zeilen ein

// MOD BLOCK IP ADRESSE
$setting_group[xx]="INVALID LOGINS";
$setting['mod_block_count'] = "Anzahl der Versuche zum einloggen";
$setting['mod_block_time'] = "Wie lange bleibt die IP Adresse gesperrt?<br> Zeit ist in Sekunden einzutragen";
$setting['mod_block_email'] = "Per EMAIl Admin benachrichtigen?";
// MOD BLOCK IP ADRESSE


xx = Deine letzte SEETTINGS GROUP + 1




xx = Die Fortlaufende Nummer deiner SETTINGS
Was ist denn damit gemeint? Oder stehe ich hier gerade auf dem Schlauch? Bitte um Hilfe hier! Danke euch!!
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: senloel on March 31, 2015, 08:27:13 PM
Hallo,

schau mal nach dem Code über

 show_form_footer($lang['save_changes'], "", 2);


Dort stehen weitere "Setting Groups", die ähnlich aussehen wie die Einzufügende:

  show_table_separator($setting_group[xx], 2, "setting_group_xx");
  show_setting_row("mod_block_count");
  show_setting_row("mod_block_time");
  show_setting_row("mod_block_email", "radio");


Konkret heißt das: Die Nummer der letzten Setting Group finden (im obenstehenden Code als "XX" dargestellt) und zu dieser Zahl 1 addieren und "XX" mit dieser Zahl ersetzen.
Title: Re: [MOD] IP Sperre für eine Zeit XX Sekunden
Post by: wflorian on April 01, 2015, 11:12:00 AM
You are right  8O

Vielen Dank!!