SHOW:
|
|
- or go back to the newest paste.
| 1 | <?php | |
| 2 | ||
| 3 | - | /* |
| 3 | + | $ Ad_ddos_query = 10, / / number of requests per second to detect DDOS attacks |
| 4 | - | CHMOD /iplog/ to 777 |
| 4 | + | $ Ad_check_file = 'check.txt'; / / file to write the current state during the monitoring |
| 5 | - | Create and CHMOD /iplog/iplogfile.dat to 666 |
| 5 | + | $ Ad_temp_file = 'all_ip.txt'; / / temporary file |
| 6 | - | add the following line in any important .php file in the same directory as your anti_dos.php file so it can check IPs when that file is loaded, best example is index.php if you have it. |
| 6 | + | $ Ad_black_file = 'black_ip.txt'; / / will be entered into a zombie machine ip |
| 7 | - | include("anti_dos.php"); //anti-DoS, prevents rapid accessing
|
| 7 | + | $ Ad_white_file = 'white_ip.txt'; / / ip logged visitors |
| 8 | $ Ad_dir = 'anti_ddos'; / / directory with scripts | |
| 9 | - | if you have a known cookie on your site, |
| 9 | + | $ Ad_num_query = 0, / / current number of requests per second from a file $ check_file |
| 10 | - | you can use this, otherwise just ignore this, it will set a different limit |
| 10 | + | $ Ad_sec_query = 0, / / second from a file $ check_file |
| 11 | - | for people with this cookie |
| 11 | + | $ Ad_end_defense = 0, / / end while protecting the file $ check_file |
| 12 | $ Ad_sec = date ("s"); / / current second
| |
| 13 | - | I use yourothercookie as the cookie ID for the forum, my forum uses ID |
| 13 | + | $ Ad_date = date ("mdHis"); / / current time
|
| 14 | - | greater than 0 for all members and -1 for guests and members who have logged out, |
| 14 | + | $ Ad_defense_time = 10000 / / ddos attack detection time in seconds at which stops monitoring |
| 15 | - | so making it match greater than zero means members will get better access and |
| 15 | + | |
| 16 | - | guests with or without cookies won't |
| 16 | + | |
| 17 | ||
| 18 | - | Also I use these cookies in the "flood alert" emails to make sure an important user didn't get banned. Someone could fake a cookie, so always be suspicious. Tez |
| 18 | + | if (! file_exists ("{$ ad_dir} / {$ ad_check_file}") or! file_exists ("{$ ad_dir} / {$ ad_temp_file}") or! file_exists ("{$ ad_dir} / {$ ad_black_file}") or ! file_exists ("{$ ad_dir} / {$ ad_white_file}") or! file_exists ("{$ ad_dir} / anti_ddos.php")) {
|
| 19 | - | */ |
| 19 | + | die ("Not enough files.");
|
| 20 | - | $cookie = $_COOKIE['cookie1']; |
| 20 | + | } |
| 21 | - | $othercookie = $_COOKIE['cookie2']; |
| 21 | + | |
| 22 | require ("{$ ad_dir} / {$ ad_check_file}");
| |
| 23 | ||
| 24 | - | if($cookie && $othercookie > 0) $iptime = 10; // Minimum number of seconds between visits for users with certain cookie |
| 24 | + | if ($ ad_end_defense and $ ad_end_defense> $ ad_date) {
|
| 25 | - | else $iptime = 10; // Minimum number of seconds between visits for everyone else |
| 25 | + | require ("{$ ad_dir} / anti_ddos.php");
|
| 26 | } Else {
| |
| 27 | if ($ ad_sec == $ ad_sec_query) {
| |
| 28 | - | $ippenalty = 60; // Seconds before visitor is allowed back |
| 28 | + | $ Ad_num_query + +; |
| 29 | } Else {
| |
| 30 | $ Ad_num_query = '1 '; | |
| 31 | - | if($cookie && $othercookie > 0)$ipmaxvisit = 30; // Maximum visits, per $iptime segment |
| 31 | + | } |
| 32 | - | else $ipmaxvisit = 15; // Maximum visits per $iptime segment |
| 32 | + | |
| 33 | if ($ ad_num_query> = $ ad_ddos_query) {
| |
| 34 | $ Ad_file = fopen ("{$ ad_dir} / {$ ad_check_file}", "w");
| |
| 35 | - | $iplogdir = "./iplog"; |
| 35 | + | $ Ad_end_defense = $ ad_date + $ ad_defense_time; |
| 36 | - | $iplogfile = "iplog.dat"; |
| 36 | + | $ Ad_string = '<? Php $ ad_end_defense ='. $ Ad_end_defense. ';?>'; |
| 37 | fputs ($ ad_file, $ ad_string); | |
| 38 | - | $ipfile = substr(md5($_SERVER["REMOTE_ADDR"]), -2); |
| 38 | + | fclose ($ ad_fp); |
| 39 | - | $oldtime = 0; |
| 39 | + | } Else {
|
| 40 | - | if (file_exists($iplogdir.$ipfile)) $oldtime = filemtime($iplogdir.$ipfile); |
| 40 | + | $ Ad_file = fopen ("{$ ad_dir} / {$ ad_check_file}", "w");
|
| 41 | $ Ad_string = '<? Php $ ad_num_query ='. $ Ad_num_query. '; $ Ad_sec_query ='. $ Ad_sec. ';?>'; | |
| 42 | - | $time = time(); |
| 42 | + | fputs ($ ad_file, $ ad_string); |
| 43 | - | if ($oldtime < $time) $oldtime = $time; |
| 43 | + | fclose ($ ad_fp); |
| 44 | - | $newtime = $oldtime + $iptime; |
| 44 | + | } |
| 45 | } | |
| 46 | - | if ($newtime >= $time + $iptime*$ipmaxvisit) |
| 46 | + | ?> |