Skip to content

alexsmf/ng13

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

No packages published

Languages