แฒแแ แแ แแฆแ! แกแขแแขแแแจแ แแ แแแขแงแแแ, แแฃ แ แแแแ แจแแฃแซแแแแ แฉแแแฃแแแแ แแแ แฐแแกแขแแแแแก แแแแฎแแแ แแแแแแก แแแแญแแ แแ IP แแแกแแแแ แแแแ, แ แแแแแแแช แฌแแ แแแฅแแแแแ แแแแแแข แแแขแแแ แแแแก แกแแแขแแ แแ แจแแแแแ แแแแแแแแ แแกแแแ แฐแแกแขแแแแแก แฎแแแกแแฌแงแแแแแก แแแแแงแแแแแแ, แแฅแแแแ php แแแแ โแชแแขแโ, แ แแแแแแแแ แแแ แแแแก แกแฃแ แแแ.
แฒจแแกแแงแแแแ แแแแแชแแแแแ:
- แกแแแขแ แจแแฅแแแแแแ CMS WordPress-แแ
- แแแแแขแแก แฐแแกแขแแแแ (แแก แแ แแ แแก แ แแแแแแ, แแแแ แแ แแแแแแแกแขแ แแชแแฃแแ แแแแแแแก แแแ แแแแก แแแแแแญแแแแ แแฅแแแแ แแ แแแแแ แแขแฃแแ แฐแแกแขแแแแแก แแ แแแแแแแ แแกแแแ)
- WordPress แกแแแขแ แแแแฅแแแแแ แกแแแฆแแช 2000 แฌแแแก แแแกแแฌแงแแกแจแ แแ แแฅแแก แแแแ แ แแแแแแแแแ แกแขแแขแแแแ แแ แแแกแแแแแ
- PHP แแแ แกแแ 7.2
- WP-แก แแฅแแก แฃแแฎแแแกแ แแแ แกแแ
- แแแ แแแแฃแแ แแแ แแแแแก แแแแแแแแแแแจแ, แกแแแขแแ แแแแฌแงแ แแแฆแแแ แแแขแแแ แแแแก แแแแแ แแ แแแ MySQL-แแ แฐแแกแขแแแแแก แแแแแชแแแแแแก แแแฎแแแแแ. แงแแแแแแฆแแฃแ แแ แแก แแแฉแแแแแแแแ แแญแแ แแแแแ แแแ แแแก 120%-แก แแ แ แแแแแ แแจแแ
- Yandex-แแก แแแฎแแแแแ. Metrica-แก แกแแแขแก แแฆแแจแ 100-200 แแแแแแแแ แกแขแฃแแ แแแก
แฃแแแ แแแแแก แงแแแแแกแ, แแก แแแแแแแ:
- แแแแแชแแแแ แแแแแก แชแฎแ แแแแแ แแแแฌแแแแแ แแแแ แแแแแ แแแแแแกแแแ
- แแแแแ แแฃแแ แแงแ แแ แแกแแญแแ แ แแแแแแแขแแแ, แแแแแจแแแ แแแซแแแแแแฃแแ แแแแแก แกแแฅแชแแแแ
แแแแแแ แแฃแแแ, แแฅแแแแ แงแฃแ แแแฆแแแ แแแแแ แแแแแแแฎแแแแ แแ แคแแฅแขแแ, แ แแ แกแชแแแแก แฅแแจแแ แแแแก แแแ แแแแขแแแ (แฅแแจแแ แแแแก แแแแแแแขแแแ), แแแแแแแ แแแแแแ แแแแแแ - แแแแ แแ แแ แแ แกแแแขแแแแ 120% แแแขแแแ แแแ แฃแชแแแแแ แแแ แฉแ แแ แแฎแแแแ แแ แแ แจแแแซแแแแแแ.
แ แแแแ แแแแแแงแฃแ แแแแแ แฐแแกแขแแแแแก แแแแแชแแแแ แแแแแแแก แกแแแแ แแฃแแ แแแขแแแ แแแ
แแแแ แแ แแก แกแแแแแ แกแแแขแ, แฅแแแแแ แแ แแก แกแฎแแ แกแแแขแแแ, แ แแแแแแกแแช แแฅแแ แแแแแ cms แแ แแแแฎแแแแแแ แแแแแ แขแ แแคแแแ, แแแแ แแ แฅแแแแแ แแแแแแ แแแขแแแ แแแแก.
แแแแแแแ
- แแแแ แ แแชแแแแแแ แแแแแแแ แแแแแชแแแแ แฅแแจแแ แแแแก แแแ แแแแขแแแแ, แแแแแแ แแแแแแ แฉแแขแแ แแ แ แแแแแแแแ แแแแ แแก แแแแแแแแแแแจแ (แกแแแแแแแแ แแ, แแ แฎแแแก แแแแแแแแแแแจแ แฐแแกแขแแแแแ แแ แแกแแแแก แแแแฌแแ แ, แ แแ แแกแ แชแฃแแแ แแแงแแแ แแ แแแแแจแฃแแ แแแฅแแแแแแ)
- แฉแแขแแ แแ แแแแแแแ แแ แแแแ แแแแฎแแแแแแแก แซแแแแ, แจแแแแแ แแแแแ แจแแแชแแแแ แแแแแชแแแแ แแแแแก แกแขแ แฃแฅแขแฃแ แ แแ แชแฎแ แแแแก แขแแแ
- แแแแแแแแกแแแแก, แฉแแแ แแแ แแแ แ แแแจแ แแแงแแแแแแแ แฉแแจแแแแแฃแ AWStats-แก (แกแฎแแแแ แจแแ แแก, แแก แแแแฎแแแ แ แงแแแแแแ แชแฃแแ IP แแแกแแแแ แแแก แแแแแแแแแก แขแ แแคแแแแก แแแชแฃแแแแแก แแแฎแแแแแ
- แแแขแ แแแ - แแแขแ แแแ แแแแฌแแแแก แแแคแแ แแแชแแแก แแฎแแแแ แแแแแแแแแแแ แแ แแ แ แแแขแแแแ
- แแงแ แแชแแแแแแแแ, แแแแแแงแแแแแแแแ แแแแแแแขแแแ WP-แกแแแแก, แ แแแแแแกแแช แจแแฃแซแแแแ แแแแแขแแ แแแแก แแแคแแแขแแ แ แแ แแแแแแแแ แแฃแแแแช แแแแแแ แแแแแก แฅแแแงแแแแแกแ แแ แกแฎแแแแแกแฎแแ แแแแแแแแชแแแแแก แแแฎแแแแแ.
- แกแ แฃแแแแ แ แแแแแแแฃแ แ แแแ แแฆแแแฉแแแ แกแแแขแแก แแ แแ แแฆแแ แแแฎแฃแ แแ แจแแแแจแแแแ โแฉแแแ แแแแแ-แแแขแ แแแแแแก แฅแแแจ แแแ แโ - แแก แแกแแแ แแแแแแแ แชแแแแแแ แแแแฃแแแก แแแแแงแแแแแแ. แแ แจแแแแฎแแแแแจแ, แฉแแแ แแแแแ แแแขแแแ แแแแก แแแชแแแแก, แแแแ แแ แแ แ แแฃแแแแแแ แแแแจแแแแแแแแแแก, แ แแแแแ WP แแแแแแแแแ แแคแฃแซแแแแ แฐแฃแแแแก แแ แแแแแแแขแแแ แแฌแงแแแแ แแแแแแแ แแฅแขแแแแแแก, แ แแแแกแแช แแแฎแแแแ โhookโ แแ แกแแแแ โhookโ แแแฎแแแแ, แแแแแชแแแแ แแแแแจแ แแแแฎแแแแ แจแแแซแแแแ. แฃแแแ แแแแแแแแฃแแแ
แแแแ
- แแแแแแแแแแ IP แแแกแแแแ แแแแ, แ แแแแแแแช แฃแแแ แแ แแแแฎแแแแแก แแแแแแแแ แแแแแ แแ แแจแ.
- แฉแแฌแแ แแ แฐแแขแแแแก แ แแแแแแแแ แกแแแขแแ
- แแแแแแแแ แกแแแขแแ แฌแแแแแ แฐแแขแแแแก แ แแแแแแแแแก แแแฎแแแแแ
- แแแแแแแแ .htaccess แคแแแแจแ แฉแแแแฌแแ แแก โแฃแแ แโ แแแแแงแแแแแแ
- แแ แแ แแแแแแฎแแแ แกแฎแแ แแแ แแแแขแแแ, แ แแแแ แแชแแ iptables แแ Nginx-แแก แฌแแกแแแ, แ แแแแแ แแฌแแ แฐแแกแขแแแแแ
แแแฉแแแ แแแแ, แแแแขแแ แฃแแแ แแแแฎแแ แชแแแแแแก, แ แแแแแ แแแแก แแแ แแจแ...
- แชแฎแ แแแแแแก แจแแฅแแแ แแแแแชแแแแแแก แแแกแแแ แแแแแแแ
CREATE TABLE `wp_visiters_bot` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `ip` VARCHAR(300) NULL DEFAULT NULL, `browser` VARCHAR(500) NULL DEFAULT NULL, `cnt` INT(11) NULL DEFAULT NULL, `request` TEXT NULL, `input` TEXT NULL, `data_update` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE INDEX `ip` (`ip`) ) COMMENT='ะะฐะฝะดะธะดะฐัั ะดะปั ะฑะปะพะบะธัะพะฒะบะธ' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1;
CREATE TABLE `wp_visiters_bot_blocked` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `ip` VARCHAR(300) NOT NULL, `data_update` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE INDEX `ip` (`ip`) ) COMMENT='ะกะฟะธัะพะบ ัะถะต ะทะฐะฑะปะพะบะธัะพะฒะฐะฝะฝัั ' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=59;
CREATE TABLE `wp_visiters_bot_history` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `ip` VARCHAR(300) NULL DEFAULT NULL, `browser` VARCHAR(500) NULL DEFAULT NULL, `cnt` INT(11) NULL DEFAULT NULL, `data_update` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `data_add` DATETIME NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE INDEX `ip` (`ip`) ) COMMENT='ะััะพัะธั ะฒัะตั ะทะฐะฟัะพัะพะฒ ะดะปั ะดะตะฑะฐะณะฐ' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1;
- แแแแแ แจแแแฅแแแแ แคแแแแ, แ แแแแแจแแช แแแแแแแแแกแแแ แแแแก. แแแแ แฉแแแฌแแ แแแ แแแแแแ แแแฃแ แแแแแแแแขแแ แชแฎแ แแแแแจแ แแ แจแแแแแฎแแแก แแกแขแแ แแแก แแแแแ แแแแกแแแแก.
แคแแแแแก แแแแ IP แแแกแแแแ แแแแแก แฉแแกแแฌแแ แแ
<?php if (!defined('ABSPATH')) { return; } global $wpdb; /** * ะะตัะฝัั ะบะพะฝะบัะตัะฝัะน IP ะฐะดัะตั ะฟะพัะตัะธัะตะปั * @return boolean */ function coderun_get_user_ip() { $client_ip = ''; $address_headers = array( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR', ); foreach ($address_headers as $header) { if (array_key_exists($header, $_SERVER)) { $address_chain = explode(',', $_SERVER[$header]); $client_ip = trim($address_chain[0]); break; } } if (!$client_ip) { return ''; } if ('0.0.0.0' === $client_ip || '::' === $client_ip || $client_ip == 'unknown') { return ''; } return $client_ip; } $ip = esc_sql(coderun_get_user_ip()); // IP ะฐะดัะตั ะฟะพัะตัะธัะตะปั if (empty($ip)) {// ะะตั IP, ะฝั ะธ ะธะดะธัะต ะปะตัะพะผ... header('Content-type: application/json;'); die('Big big bolt....'); } $browser = esc_sql($_SERVER['HTTP_USER_AGENT']); //ะะฐะฝะฝัะต ะดะปั ะฐะฝะฐะปะธะทะฐ ะฑัะฐัะทะตัะฐ $request = esc_sql(wp_json_encode($_REQUEST)); //ะะพัะปะตะดะฝะธะน ะทะฐะฟัะพั ะบะพัะพััะน ะฑัะป ะบ ัะฐะนัั $input = esc_sql(file_get_contents('php://input')); //ะขะตะปะพ ะทะฐะฟัะพัะฐ, ะตัะปะธ ะฑัะปะพ $cnt = 1; //ะะฐะฟัะพั ะฒ ะพัะฝะพะฒะฝัั ัะฐะฑะปะธัั ั ะฒัะตะผะตะฝะฝัะผะธ ะบะพะฝะดะธะดะฐัะฐะผะธ ะฝะฐ ะฑะปะพะบะธัะพะฒะบั $query = <<<EOT INSERT INTO wp_visiters_bot (`ip`,`browser`,`cnt`,`request`,`input`) VALUES ('{$ip}','{$browser}','{$cnt}','{$request}','$input') ON DUPLICATE KEY UPDATE cnt=cnt+1,request=VALUES(request),input=VALUES(input),browser=VALUES(browser) EOT; //ะะฐะฟัะพั ะดะปั ะธััะพัะธะธ $query2 = <<<EOT INSERT INTO wp_visiters_bot_history (`ip`,`browser`,`cnt`) VALUES ('{$ip}','{$browser}','{$cnt}') ON DUPLICATE KEY UPDATE cnt=cnt+1,browser=VALUES(browser) EOT; $wpdb->query($query); $wpdb->query($query2);
แแแแแก แแ แกแ แแ แแก แแแแแขแแ แแก IP แแแกแแแแ แแแก แแแฆแแแ แแ แชแฎแ แแแจแ แฉแแฌแแ แ. แแฃ ip แฃแแแ แแ แแก แชแฎแ แแแจแ, cnt แแแแ แแแแแ แแแแ (แกแแแขแแ แแแแฎแแแแแก แ แแแแแแแแ)
- แแฎแแ แกแแจแแแแแแแแ... แแฎแแ แแแแฌแแแแแ แฉแแแ แฅแแแแแแแกแแแแก :)
แกแแแขแแ แแแแแแฃแแ แแแแฎแแแแแก แฉแแกแแฌแแ แแ, แฉแแแ แแฃแแแแจแแ แแแ แคแแแแแก แแแแก WordPress-แแก แแแแแแ แคแแแแก - wp-load.php. แแแแฎ, แฉแแแ แแชแแแแ แแแ แแแแก แคแแแแก แแ แแฃแกแขแแ แแแก แจแแแแแ, แ แแช แแแแแแแฃแ แ แชแแแแแ $wpdb แฃแแแ แแ แกแแแแแก
แแกแ แ แแ, แแฎแแ แฉแแแ แแฎแแแแแ, แ แแแแแแแ แฎแจแแ แแ แแ แแก แแแแแจแแฃแแ แแกแ แแฃ แแก IP แแแกแแแแ แแ แฉแแแแก แแแแแแแแ แแ แคแแแฏแแแ แงแแแแ 5 แฌแฃแแจแ แแ แแฎแแ แแฅ แแแงแฃแ แแแแ แกแฃแ แแแแก แแแกแแแแแแ.
แจแแแแแ แฃแแ แแแแ แแแแแแแแ แแ โแแแแแโ IP, แแแฎแกแแแแ .htaccess แคแแแแ แแ แแแแแแขแแ แแแ แคแแแแแก แแแแแก.
Order allow,deny
Allow from all
# start_auto_deny_list
Deny from 94.242.55.248
# end_auto_deny_list
แแกแ แแแ, แแฎแแ 94.242.55.248 - แแ แแฅแแก แฌแแแแแ แกแแแขแแ แแ แแ แฅแแแแก แแแขแแแ แแแแก แแแแแแ
แแแแ แแ แงแแแแ แฏแแ แแ แแกแแแ แฎแแแแ แแแแแ แแแ แแ แแ แแก แซแแแแแ แแแ แแแแ แแแแชแแแ แแ แแแ แแ แแแแกแ, แแแแแก แแแแแแ แแงแ แแแขแแแแแแฃแ แ แงแแคแแแแงแ
แแแแแ แแแแแแแขแแ แคแแแแ, แ แแแแแแช แจแแกแ แฃแแแแแ CRON-แแก แกแแจแฃแแแแแแ แงแแแแ 30 แฌแฃแแจแ:
แคแแแแแก แแแแแก แจแแชแแแ .htaccess
<?php
/**
* ะคะฐะนะป ะฐะฒัะพะผะฐัะธัะตัะบะพะณะพ ะทะฐะดะฐะฝะธั ะฑะปะพะบะธัะพะฒะพะบ ะฟะพ IP ะฐะดัะตัั
* ะะพะปะถะตะฝ ะทะฐะฟัะฐัะธะฒะฐัััั ัะตัะตะท CRON
*/
if (empty($_REQUEST['key'])) {
die('Hello');
}
require('wp-load.php');
global $wpdb;
$limit_cnt = 70; //ะะธะผะธั ะทะฐะฟัะพัะพะฒ ะฟะพ ะบะพัะพััะผ ะพัะฑะธัะฐัั
$deny_table = $wpdb->get_results("SELECT * FROM wp_visiters_bot WHERE cnt>{$limit_cnt}");
$new_blocked = [];
$exclude_ip = [
'87.236.16.70'//ะฐะดัะตั ั
ะพััะธะฝะณะฐ
];
foreach ($deny_table as $result) {
if (in_array($result->ip, $exclude_ip)) {
continue;
}
$wpdb->insert('wp_visiters_bot_blocked', ['ip' => $result->ip], ['%s']);
}
$deny_table_blocked = $wpdb->get_results("SELECT * FROM wp_visiters_bot_blocked");
foreach ($deny_table_blocked as $blocked) {
$new_blocked[] = $blocked->ip;
}
//ะัะธััะบะฐ ัะฐะฑะปะธัั
$wpdb->query("DELETE FROM wp_visiters_bot");
//echo '<pre>';print_r($new_blocked);echo '</pre>';
$file = '.htaccess';
$start_searche_tag = 'start_auto_deny_list';
$end_searche_tag = 'end_auto_deny_list';
$handle = @fopen($file, "r");
if ($handle) {
$replace_string = '';//ะขะตัั ะดะปั ะฒััะฐะฒะบะธ ะฒ ัะฐะนะป .htaccess
$target_content = false; //ะคะปะฐะณ ะฝัะถะฝะพะณะพ ะฝะฐะผ ััะฐััะบะฐ ะบะพะดะฐ
while (($buffer = fgets($handle, 4096)) !== false) {
if (stripos($buffer, 'start_auto_deny_list') !== false) {
$target_content = true;
continue;
}
if (stripos($buffer, 'end_auto_deny_list') !== false) {
$target_content = false;
continue;
}
if ($target_content) {
$replace_string .= $buffer;
}
}
if (!feof($handle)) {
echo "ะัะธะฑะบะฐ: fgets() ะฝะตะพะถะธะดะฐะฝะฝะพ ะฟะพัะตัะฟะตะป ะฝะตัะดะฐััn";
}
fclose($handle);
}
//ะขะตะบััะธะน ัะฐะนะป .htaccess
$content = file_get_contents($file);
$content = str_replace($replace_string, '', $content);
//ะัะธัะฐะตะผ ะฒัะต ะฑะปะพะบะธัะพะฒะบะธ ะฒ ัะฐะนะปะต .htaccess
file_put_contents($file, $content);
//ะะฐะฟะธัั ะฝะพะฒัั
ะฑะปะพะบะธัะพะฒะพะบ
$str = "# {$start_searche_tag}" . PHP_EOL;
foreach ($new_blocked as $key => $value) {
$str .= "Deny from {$value}" . PHP_EOL;
}
file_put_contents($file, str_replace("# {$start_searche_tag}", $str, file_get_contents($file)));
แคแแแแแก แแแแ แกแแแแแแ แแแ แขแแแ แแ แแ แแแแขแแฃแแแ แแ แแแกแ แแแแแแ แ แแแแแ แแแแแแ แแแแกแแแแก แแแแแแแแขแแแแก แแแฆแแแ แแ .htaccess แคแแแแจแ แแแแแแแแแก แฌแแกแแแแก แจแแงแแแแ แแแแแแขแแ แแแก แจแแ แแก.
# แแแฌแงแแแแก_แแแขแแแแขแฃแ แ_แฃแแ แแก_แกแแแก แแ # แแแกแแกแ แฃแแแก_แแแขแแแแขแฃแ แ_แฃแแ แแก_แกแแแก
แแฎแแ "แแแแแ" IP-แแแ แแแแแแแแแแ แแ .htaccess แคแแแแ แแกแ แแแแแแงแฃแ แแแ:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Order allow,deny
Allow from all
# start_auto_deny_list
Deny from 94.242.55.248
Deny from 207.46.13.122
Deny from 66.249.64.164
Deny from 54.209.162.70
Deny from 40.77.167.86
Deny from 54.146.43.69
Deny from 207.46.13.168
....... ะฝะธะถะต ะดััะณะธะต ะฐะดัะตัะฐ
# end_auto_deny_list
แจแแแแแแ, แแ แแแแแก แแฃแจแแแแแก แแแฌแงแแแแก แจแแแแแ, แแฅแแแ แจแแแแซแแแแ แแแฎแแ แจแแแแแ แฐแแกแขแแแแแก แแแแแแจแ:
PS: แแแกแแแ แแแขแแ แแกแแ, แแฃแแชแ แแแฌแแแ แแแแแแแฅแแแงแแ แฉแแแก แแแแแแแ แแแ, Habre-แแ แฃแคแ แ แแแคแแ แแแแแฃแแ แแแ แกแแ แแแแแฆแ.
แฌแงแแ แ: www.habr.com