Так же для этих целей можно настроить отдельный порт в конфигурации на Веб сервере (Apache, Nginx и т.д.)
настраиваем в iptables доступ для этого порта определенным ip адресам.
Рассмотрим один из примеров.
В папке Веб- интерфейса Zabbix нужно создать файлик script.php путь в моем случае такой \var\www\html\html\
Файл script.php
Код: Выделить всё
<?php
if(isset($_GET['hname'])){
if(isset($_GET['alarm'])){
if(isset($_GET['ip'])){
if(isset($_GET['port'])){
$hostname = $_GET['hname'];
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];
if(isset($_GET['host'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['host'];
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];}
if(isset($_GET['name'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['host'] . ' ' . $_GET['name'];
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['host'];}
if(isset($_GET['porotocol'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['host'] . ' ' . $_GET['name'] . ' ' . $_GET['protocol'];
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['host'] . ' ' . $_GET['name'];}
} else {$text = error_port;}
} else {$text = error_ip;}
} else {$text = error_alarm;}
} else {$text = error_hname;}
echo $text;
// Отправим данные траппером в заббикс
shell_exec("zabbix_sender -z 127.0.0.1 -p 10051 -s '$hostname' -k getipportunauthorizedaccess -o '$text'");
?>
Отправка данных с Fail2Ban
Для теста из браузера
Код: Выделить всё
http://192.168.175.111/script.php?alarm=true&ip=192.168.175.123&port=445&name=dom9&host=iphost&protocol=tcp
Код: Выделить всё
http://192.168.175.111/script.php?alarm=false&ip=192.168.175.123&port=445&name=dom9&host=iphost&protocol=tcp
Код: Выделить всё
http://192.168.175.111/script.php?hname=Serv¤tip=thip192.168.175.204&alarm=true&ip=192.168.175.123&port=445&name=dom9&host=iphost&protocol=tcp
Код: Выделить всё
http://192.168.175.111/script.php?hname=Serv¤tip=thip192.168.175.204&alarm=false&ip=192.168.175.123&port=445&name=dom9&host=iphost&protocol=tcp
Код: Выделить всё
actionban = curl -X GET http://192.168.60.111/script.php?hname=<hname>\&alarm=true\&ip=<ip>\&port=<name>\&host=<ip-host>
Код: Выделить всё
actionban = curl -X GET http://192.168.60.111/script.php?hname=<hname>\¤tip=<currentip>\&alarm=true\&ip=<ip>\&port=<name>\&host=<ip-host>
Тесты
Отправка данных
Код: Выделить всё
http://192.168.175.111/script.php?alarm=1&ip=192.168.175.123&port=445
Код: Выделить всё
curl -X POST -d "alarm=1&ip=192.168.175.123&port=80" http://192.168.175.111/script.php
curl -X GET http://192.168.175.111/script.php?alarm=1\&ip=192.168.175.123\&port=445
curl -X GET http://192.168.175.111/script.php?alarm=true\&ip=<ip>\&port=<port>\&name=<name>\&host=<ip-host>\&protocol=<protocol>
curl -X GET http://192.168.175.111/script.php?alarm=false\&ip=<ip>\&port=<port>\&name=<name>\&host=<ip-host>\&protocol=<protocol>
Действия
Открывает триггер
Код: Выделить всё
actionban = curl -X GET http://192.168.175.111/script.php?alarm=true&ip=<ip>&port=<F-PORT>&name=<name>&host=<ip-host>&protocol=<F-PROTO>
Код: Выделить всё
actionban = curl -X GET http://192.168.175.111/script.php?hname=<hname>\&alarm=true\&ip=<ip>\&port=<name>\&host=<ip-host>
Код: Выделить всё
zabbix_sender -z 192.168.175.111 -p 10051 -s <hname> -k getipportunauthorizedaccess -o "<hname> true <ip>:<name> <ip-host>"
Код: Выделить всё
actionban = curl -X GET http://192.168.175.111/script.php?hname=<hname>\¤tip=<currentip>\&alarm=true\&ip=<ip>\&port=<name>\&host=<ip-host>
Код: Выделить всё
zabbix_sender -z 192.168.175.111 -p 10051 -s <hname> -k getipportunauthorizedaccess -o "<hname> <currentip> true <ip>:<name> <ip-host>"
Код: Выделить всё
actionban = curl -X GET http://192.168.175.111/script.php?hname=<hname>\¤tip=<hip>\&alarm=true\&ip=<ip>\&port=<name>\&host=<ip-host> & sleep 10&& zabbix_sender -z 192.168.175.111 -p 10051 -s \"<hname>\" -k getipportunauthorizedaccess -o \"<hname> <hip> true <ip>:<name> <ip-host>\
Код: Выделить всё
actionunban = curl -X GET http://192.168.175.111/script.php?alarm=false&ip=<ip>&port=<F-PORT>&name=<name>&host=<ip-host>&protocol=<F-PROTO>
Разное тесты настройки
// Отправим данные траппером в заббикс
shell_exec("zabbix_sender -z 127.0.0.1 -p 10051 -s '$hostname' -k getipportunauthorizedaccess -o '$text'");
?>
01.03.2023 09:10:57 Serv thip192.168.175.204 true 192.168.175.5:445 screensquid
Триггер
Последнее значение: {ITEM.LASTVALUE}
Попытка доступа c {ITEM.VALUE} на ip {HOST.CONN} ; {HOST.HOST} ;{HOST.NAME}
Попытка доступа
НА {{ITEM.VALUE}.iregsub("thip([0-9.]+)\s+", "\1")}
PORT {{ITEM.VALUE}.iregsub(":([0-9]+)\s+", "\1")}
C {{ITEM.VALUE}.iregsub("\s+([0-9.]+):", "\1")}
{{ITEM.VALUE}.iregsub("[0-9.:]+\s+(.*)", "\1")}
{{ITEM.VALUE}.iregsub("\s+([0-9.:]+)\s+", "\1")}
true 192.168.175.123:445
Файл script.php
Показать
Принимающая сторона
/var/www/html/script.php
<?php
if(isset($_GET['alarm'])){
if(isset($_GET['ip'])){
if(isset($_GET['port'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];
if(isset($_GET['name'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];
} else {$text = $text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];}
if(isset($_GET['host'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'];
} else {$text = $text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];}
if(isset($_GET['porotocol'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'] . ' ' . $_GET['protocol'];
} else {$text = $text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'];}
} else {$text = error_port;}
} else {$text = error_ip;}
} else {$text = error_alarm;}
echo $text;
// Отправим данные траппером в заббикс
shell_exec("zabbix_sender -z 127.0.0.1 -p 10051 -s 'fail2ban' -k getipportunauthorizedaccess -o '$text'");
?>
НОВЫЙ С ИМЕНЕМ
<?php
if(isset($_GET['hname'])){
if(isset($_GET['alarm'])){
if(isset($_GET['ip'])){
if(isset($_GET['port'])){
$hostname = $_GET['hname'];
$text = $_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];
if(isset($_GET['name'])){
$text = $_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];
} else {$text = $_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];}
if(isset($_GET['host'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'];
} else {$text =$_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];}
if(isset($_GET['porotocol'])){
$text =$_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'] . ' ' . $_G
} else {$text = $_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'];}
} else {$text = error_port;}
} else {$text = error_ip;}
} else {$text = error_alarm;}
} else {$text = error_hname;}
echo $text;
// Отправим данные траппером в заббикс
shell_exec("zabbix_sender -z 127.0.0.1 -p 10051 -s '$hostname' -k getipportunauthorizedaccess -o '$text'");
?>
ТЕКУЩИЙ IP хоста
<?php
if(isset($_GET['hname'])){
if(isset($_GET['alarm'])){
if(isset($_GET['ip'])){
if(isset($_GET['port'])){
$hostname = $_GET['hname'];
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];
if(isset($_GET['name'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];}
if(isset($_GET['host'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' .
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];}
if(isset($_GET['porotocol'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' .
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] .
} else {$text = error_port;}
} else {$text = error_ip;}
} else {$text = error_alarm;}
} else {$text = error_hname;}
echo $text;
/var/www/html/script.php
<?php
if(isset($_GET['alarm'])){
if(isset($_GET['ip'])){
if(isset($_GET['port'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];
if(isset($_GET['name'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];
} else {$text = $text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];}
if(isset($_GET['host'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'];
} else {$text = $text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];}
if(isset($_GET['porotocol'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'] . ' ' . $_GET['protocol'];
} else {$text = $text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'];}
} else {$text = error_port;}
} else {$text = error_ip;}
} else {$text = error_alarm;}
echo $text;
// Отправим данные траппером в заббикс
shell_exec("zabbix_sender -z 127.0.0.1 -p 10051 -s 'fail2ban' -k getipportunauthorizedaccess -o '$text'");
?>
НОВЫЙ С ИМЕНЕМ
<?php
if(isset($_GET['hname'])){
if(isset($_GET['alarm'])){
if(isset($_GET['ip'])){
if(isset($_GET['port'])){
$hostname = $_GET['hname'];
$text = $_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];
if(isset($_GET['name'])){
$text = $_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];
} else {$text = $_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];}
if(isset($_GET['host'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'];
} else {$text =$_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];}
if(isset($_GET['porotocol'])){
$text =$_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'] . ' ' . $_G
} else {$text = $_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'];}
} else {$text = error_port;}
} else {$text = error_ip;}
} else {$text = error_alarm;}
} else {$text = error_hname;}
echo $text;
// Отправим данные траппером в заббикс
shell_exec("zabbix_sender -z 127.0.0.1 -p 10051 -s '$hostname' -k getipportunauthorizedaccess -o '$text'");
?>
ТЕКУЩИЙ IP хоста
<?php
if(isset($_GET['hname'])){
if(isset($_GET['alarm'])){
if(isset($_GET['ip'])){
if(isset($_GET['port'])){
$hostname = $_GET['hname'];
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];
if(isset($_GET['name'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];}
if(isset($_GET['host'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' .
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];}
if(isset($_GET['porotocol'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' .
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] .
} else {$text = error_port;}
} else {$text = error_ip;}
} else {$text = error_alarm;}
} else {$text = error_hname;}
echo $text;