Помогите завершить сценарий (поддельные IP-адреса Google, возможно, fail2ban)

Я наблюдал за IP-адресом Google, который обращался к моему серверу в течение нескольких лет, и определил эти маски: 66.249 .64.0 / 19 66.102.0.0/20 64.233.160.0/19 34.64.0.0/10 216.58.192.0/19 74.125.0.0/16

Затем я создал этот скрипт на php, который я включаю во все свои веб-сайты.

include_once('function_global/cidr_match_function.php');
    if(cidr_match($_SERVER['REMOTE_ADDR'], '66.249.64.0/19') === false && cidr_match($_SERVER['REMOTE_ADDR'], '66.102.0.0/20') === false && cidr_match($_SERVER['REMOTE_ADDR'], '64.233.160.0/19') === false && cidr_match($_SERVER['REMOTE_ADDR'], '34.64.0.0/10') === false && cidr_match($_SERVER['REMOTE_ADDR'], '216.58.192.0/19') === false&& cidr_match($_SERVER['REMOTE_ADDR'], '74.125.0.0/16') === false){ 
    $fake_google_ip_list = file_get_contents('function_global/ip_add_fwd.txt');

        if(strpos($fake_google_ip_list, $_SERVER['REMOTE_ADDR']) === false){
            file_put_contents('function_global/ip_add_fwd.txt', $_SERVER['REMOTE_ADDR'].PHP_EOL , FILE_APPEND | LOCK_EX);
        }
    }
}

В результате получился файл, содержащий список IP-адресов, которые выдавали себя за Google и обращались к моему серверу с мошенническими намерениями.

Затем я, примерно раз в день, запускаю эту консольную команду, которая добавляет все эти ip в ufw:

while read line; do sudo ufw insert 1 deny from $line to any; done < /var/www/html/function_global/ip_add_fwd.txt

и загружаю новый пустой файл на сервер.

Я хотел бы автоматизировать эту последнюю часть и, возможно, использовать fail2ban вместо того, чтобы заполнять все больше и больше ip, которые могут никогда не вернуться в ufw.

И я думаю, что мне нужен сценарий .sh или что-то подобное, но я понятия не имею, как его написать ... (Я программист на php, и я использую ubuntu только как веб-сервер, ограниченный тем, что необходимо для функционирование моих сайтов).

Сценарий должен быть:

  • вызываемым с помощью crontab
  • добавить список IP-адресов в ufw, или, скорее, fail2ban
  • очистить ip_add_fwd.txt
  • , возможно, отправьте мне электронное письмо со списком IP-адресов, просто чтобы узнать, что он сделал, и иметь возможность проверить, работает ли он правильно (выходные данные crontab также приходят по электронной почте, так что, может быть, вывода будет достаточно?)

. Может ли кто-нибудь помочь мне написать это или хотя бы дать мне несколько советов для начала? Понятия не имею, с чего начать, я пытался соединить части некоторых других файлов, но это не очень хорошо ...: (

0
задан 30 August 2021 в 23:23

1 ответ

Вы можете попробовать этот подход.

Для Apache, чтобы настроить «тюрьму» веб-сервера в конфигурации fail2ban, есть руководство: fail2ban с Apache

Здесь вы можете настроить временные запреты для IP-адресов, а также есть клиент fail2ban-client, который вы может вызвать прямо из вашего php-скрипта (необходимо проверить разрешения), чтобы заблокировать IP-адреса вручную.

Я думаю, что это будет работать лучше, чем подход cron, но если вы все еще хотите использовать оболочку:

#!/bin/bash
#assuming one IP per line
input="/var/www/html/function_global/ip_add_fwd.txt"
while IFS= read -r line
do
    sudo ufw deny from $line to any;
done < "$input"

#This line will empty the file
echo "">"$input"
1
ответ дан 4 September 2021 в 09:26

Другие вопросы по тегам:

Похожие вопросы: