- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
// Проверка активных ip-адресов
$is_active = false;
if ($dir = opendir($path_active)) {
while (false !== ($filename = readdir($dir))) {
// Выбирается ip + время активации этого ip
if (preg_match('#^(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})_(\d+)$#', $filename, $matches)) {
if ($matches[2] >= time() - self::intervalSeconds) {
if ($matches[1] == $ip_address) {
$times = intval(trim(file_get_contents($path_active . $filename)));
if ($times >= self::intervalTimes - 1) {
touch($path_block . $filename);
unlink($path_active . $filename);
} else {
file_put_contents($path_active . $filename, $times + 1);
}
$is_active = true;
}
} else {
unlink($path_active . $filename);
}
}
}
closedir($dir);
}
// Проверка заблокированных ip-адресов
$is_block = false;
if ($dir = opendir($path_block)) {
while (false !== ($filename = readdir($dir))) {
// Выбирается ip + время блокировки этого ip
if (preg_match('#^(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})_(\d+)$#', $filename, $matches)) {
if ($matches[2] >= time() - self::blockSeconds) {
if ($matches[1] == $ip_address) {
$is_block = true;
$time_block = $matches[2] - (time() - self::blockSeconds) + 1;
}
} else {
unlink($path_block . $filename);
}
}
}
closedir($dir);
}
// ip-адрес заблокирован
if ($is_block) {
header('HTTP/1.0 502 Bad Gateway');
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
echo '<html xmlns="http://www.w3.org/1999/xhtml">';
echo '<head>';
echo '<title>502 Bad Gateway</title>';
echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />';
echo '</head>';
echo '<body>';
echo '<h1 style="text-align:center">502 Bad Gateway</h1>';
echo '<p style="background:#ccc;border:solid 1px #aaa;margin:30px au-to;padding:20px;text-align:center;width:700px">';
echo 'К сожалению, Вы временно заблокированы, из-за частого запроса страниц сайта.<br />';
echo 'Вам придется подождать. Через ' . $time_block . ' секунд(ы) Вы будете автоматически разблокированы.';
echo '</p>';
echo '</body>';
echo '</html>';
exit;
}
ISO 08.04.2022 21:02 # 0
А таже «ip6tables», «nftables», «ufw» и прочие «firewalld».
guest6 08.04.2022 21:23 # 0
guest6 08.04.2022 21:23 # +1
Теперь хакеры его не положат?
Если без шуток, то можно написать плагин к sshguard (или fail2ban)+ ipset (ну или что там в nft заместо ево)
guest6 08.04.2022 21:25 # +1
guest6 08.04.2022 21:27 # +1
Если тратить по два евро в месяц на поддержку VPS для вашего бизнеса нерентабельно, то я рекомендую завести страницу Вконтакте. Она намного дешевле, и неплохо защищена от ддос атак
ISO 08.04.2022 21:43 # +1
Половину зарплаты буржуям отдавать?!
Без зелёного через год.
guest6 08.04.2022 21:44 # +1
через год ты будешь хоститься в Облако@Mail.ru, по паспорту и ИНН, а там оплату в рублях принимают
ISO 08.04.2022 22:16 # 0
guest6 08.04.2022 22:20 # +1
да-/
Выживет в итоге один только Борманд и еще 1024-
До сибири не долетит
ну, может оно и к лучшему
Steve_Brown 09.04.2022 13:11 # 0
nyTuH_nugop 09.04.2022 07:25 # 0
guest6 09.04.2022 03:03 # 0
guest6 08.04.2022 21:45 # 0
guest6 08.04.2022 21:50 # 0
То есть удачной ддос атакой можно быстро закончить все inodes на шареде? отличный скрипт
А почему создается файлик я тоже понимаю: не на всех хостингах есть mysql и memcached
ISO 08.04.2022 21:54 # 0
Я самую мякотку-то пропустил!
ISO 08.04.2022 21:54 # +1
guest6 08.04.2022 22:06 # 0
Steve_Brown 09.04.2022 13:08 # 0
xyu_30cm 09.04.2022 19:10 # 0
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ