Я несколько лет отслеживал 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:
при чтении строки; сделать sudo ufw вставить 1 deny из $line в любой; сделано < /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 также приходят по электронной почте, так что, возможно, вывода будет достаточно?)
Может ли кто-нибудь помочь мне написать его или хотя бы дать мне несколько советов, чтобы начать? Понятия не имею, с чего начать, пытался соединить кусочки каких-то других файлов, но получилось не очень... :(