alexsmf/ng13
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
NG-13 method for quick send ban/unban and other request to remote servers via http. Функционал NG-13 предназначен для быстрого забанивания IP-адресов на многих фронтендах. Чтобы забанить 10 IP-адресов на 10 удалённых серверах потребуется не более одной секунды, и с увеличением количества IP-адресов и удалённых серверов это время почти не изменится. Высокая скорость достигается за счёт того, что на удалённые сервера вешается "демон", который всё время читает access-лог веб-сервера (nginx) и реагирует на управляющие команды. В принципе, команды могут быть какие угодно, забанивание-разбанивание лишь частный случай. Думаю, этот функционал несложно прикрутить модулем прямо к самому nginx. Управляющие команды передаются в специально созданном формате NG-13, с защитой паролем. Совершенно исключена возможность посылать управляющие команды не зная пароля. Не сработает и повторная отправка перехваченных команд (используется метка времени). В файле ng13_functions.php для работы есть функции ng13_encode и ng13_decode, где ng13_encode алгоритм упаковки строки управления, ng13_decode алгоритм распаковки-проверки. Пример вызова функций мгновенной рассылки банов находится в файле ng13_ban_send.php его можно вызвать из командной строки, например, следующим образом: php ng13_ban_send.php 1.2.3.4 1.1.1.1 -2.3.4.5 такой вызов пошлет на все фронтенды команду забанить IP 1.2.3.4 и 1.1.1.1 и разбанть 2.3.4.5 Список фронтендов, а также их пароли и управляющие адреса задаются в файле ad_config.php Кроме того, отдельно может быть интересна система автоматического управления фронтендами. Автоматический конфигуратор-рассыльщик для nginx находится в файле config_sender.php Внутри него прописывается шаблон конфига для nginx (с подстановкой переменных и т.д.) Вызов из командной строки "php config_sender.php all" автоматически сформирует и разошлёт конфигурационные файлы: - default (конфиг для nginx) - adw.php (демон на PHP который должен крутиться на всех фронтендах) - adw (скрипт для init.d чтобы управлять демоном через sevice adw start/stop/restart ) После того как файлы сформированы, они рассылаются на фронтенды, выставляются нужные права, и затем выполняются команды "service nginx restart" и "service adw restart". remote.php используется рассыльщиком-конфигуратором для управления удаленными серверами. Этот скрипт кроме того можно вызывать из командной строки, неоторые примеры вызовов: php remote.php ssh "ls /etc/" all ok - выполнит комаду "ls /etc/" на всех фронтендах php remote.php copy /var/tmp/file1 /var/tmp/ all ok - скопирует файл на все фронтенды. Чтобы можно было автоматически управлять удалёнными серверами, вот небольшая инструкция: 1. Прежде всего надо создать пару ключей: "ssh-keygen -d" вводим имя фронтенда, например, front1 , а вместо пароля жмём два раза ентер. В результате появятся два файла: "front1" (приватный ключ) и "front1.pub" (публичный ключ) 2. Ставим права на приватный ключ: "chmod 600 front1" 3. Копируем на front1.pub на фронтенд в папку ~/.ssh/ и переименовываем в "authorized_keys2" 4. Пробуем подключиться и что-нибудь выполнить, например: "scp -i front1 'root@server:~/file' ." В remote.php предполагается, что ключи лежат в папке ~/.ssh/ и имена совпадают с фронтендами.
About
NG-13 method for quick send ban/unban and other request to remote servers via http.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published