Рейтинг:0

Помогите доделать скрипт (поддельные гугл айпи, возможно fail2ban)

флаг mx

Я несколько лет отслеживал 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 также приходят по электронной почте, так что, возможно, вывода будет достаточно?)

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

jpbrain avatar
флаг ca
Привет. Какое программное обеспечение веб-сервера вы используете?
alebal avatar
флаг mx
веб-сервер апач
Рейтинг:1
флаг ca

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

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

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

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

#!/бин/баш
#при условии, что один IP-адрес в строке
input="/var/www/html/function_global/ip_add_fwd.txt"
в то время как IFS= чтение строки -r
делать
    sudo ufw deny from $line to any;
сделано < "$ input"

#Эта строка очистит файл
эхо "">"$ ввод"

скрипт с fail2ban

#!/бин/баш
#при условии, что один IP-адрес в строке
input="/var/www/html/function_global/ip_add_fwd.txt"
в то время как IFS= чтение строки -r
делать
    #sudo ufw deny from $line to any;
    sudo fail2ban-client set apache-badbots banip $line;
сделано < "$ input"

#Эта строка очистит файл
эхо "">"$ ввод"  

# добавлено JP - перечислит все запрещенные IP-адреса для apache-badbots
sudo fail2ban-client получить apache-badbots banip --with-time;
alebal avatar
флаг mx
Привет, мне нравится решение fail2ban, оно быстрее, легче, замечательно, но о нем трудно что-то найти... Практически я нашел только это https://stackoverflow.com/questions/36101796/fail2ban-add-manually-ip- from-php-script-using-exec-or-shell-exec, и они останавливаются на файле конфигурации. Для меня проблема в том, что в /etc/fail2ban много файлов, какой правильный? какой файл .conf нужен для fail2ban-client. Если я смогу понять, какой файл .conf использовать, я думал о символической ссылке, в каталоге, к которому я могу получить доступ через php... возможно ли это?
alebal avatar
флаг mx
Можете ли вы помочь мне понять, какой файл использовать и можно ли использовать символическую ссылку?
jpbrain avatar
флаг ca
Привет. Я не понимаю вашу идею символической ссылки. Вы можете объяснить, что вы имеете в виду?
alebal avatar
флаг mx
Похоже, php не может получить доступ к конфигурационному файлу каталога fail2ban... (в /etc), может быть, с символической ссылкой?
jpbrain avatar
флаг ca
в обоих случаях вам нужно быть пользователем root. Таким образом, один из подходов будет заключаться в использовании cron для запуска оболочки, а в оболочке использовать fail2ban или ufw. Вызов из php от имени пользователя root требует проверки безопасности. Может быть, это не очень хорошая идея.
alebal avatar
флаг mx
Exec через php не должен требовать root для использования fail2ban-client, верно? Проблема заключается в файле конфигурации, который должен прочитать fail2ban, и он находится в каталоге /etc, к которому www-data не может получить доступ. В последнем комментарии даже говорят копировать в доступную директорию, но я не знаю, насколько хорошо копировать конфигурационный файл, в том числе и потому, что я не понял, что это за файл. К сожалению, дискуссия вроде бы закончилась, но казалось, что до нее еще далеко...
jpbrain avatar
флаг ca
Fail2ban также нуждается в root для выполнения действий через брандмауэр ufw. Таким образом, подход с символическими ссылками не вариант. Два шага, которые я описываю, работают. php пишет файл с ips. Cron запускает оболочку от имени пользователя root каждые 10 минут или около того и очищает файл.
alebal avatar
флаг mx
Итак... я делаю небольшие изменения для работы с fail2ban в режиме cron...#!bin/bash #при условии, что один IP-адрес в строке input="/var/www/html/function_global/ip_add_fwd.txt" в то время как IFS= чтение строки -r делать #sudo ufw deny from $line to any; sudo fail2ban-client set apache-badbots banip $line; сделано "$ ввод"
alebal avatar
флаг mx
но когда я пытаюсь это сделать: sudo /var/www/html/function_global/google_ip_list_ban_cron sudo: невозможно выполнить /var/www/html/function_global/google_ip_list_ban_cron: Нет такого файла или каталога... что он не понимает? где находится ip_add_fwd.txt? я сохраняю новый файл в том же каталоге... https://ibb.co/chVmwCn
jpbrain avatar
флаг ca
извините..опечатка. исправьте "#!/bin/bash" и повторите попытку. Кроме того, файл необходимо запускать из-под root cron.
alebal avatar
флаг mx
Спасибо, вроде работает... Я создаю этот crontab 5 0 * * * root /var/www/html/function_global/google_ip_list_ban_cron в sudo nano /etc/crontab, должен ли crontab работать?
jpbrain avatar
флаг ca
Да. Он должен работать.
alebal avatar
флаг mx
Хорошо, но сегодня я хотел бы получить письмо с IP-адресами, которые он добавил в fail2ban, но ничего не пришло. Результаты кронтабов приходят на почту, можно ли добавить вывод с обработанным ip?
jpbrain avatar
флаг ca
Две вещи, на которые следует обратить внимание: есть ли директива MAIL в файле crontab? Генерируется ли какой-либо вывод?
alebal avatar
флаг mx
да, почта находится в верхней части файла crontab, сегодня он отправил мне письмо, почта говорит: 0 1 1 1 1 1 1 1 1 1 1 ... должно быть результатом fail2ban, но было бы неплохо иметь заблокированные IP...
jpbrain avatar
флаг ca
Может быть, лучше отправить статус fail2ban в конце скрипта.
alebal avatar
флаг mx
как ??? без понятия как это сделать...
jpbrain avatar
флаг ca
Можете ли вы опубликовать свой реальный сценарий? если вы используете «fail2ban-client», есть опция, которая перечисляет запрещенные IP-адреса для тюрьмы.
alebal avatar
флаг mx
добавил к вашему первому сообщению... но очень похоже на ваше...
alebal avatar
флаг mx
Можем ли мы просто распечатать в почте содержимое файла ip_add_fwd.txt?
jpbrain avatar
флаг ca
Давайте [продолжим это обсуждение в чате](https://chat.stackexchange.com/rooms/129411/discussion-between-jpbrain-and-alebal).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.