Размещение SQUID ACL в БД MySQL - возможно ли это?

Главный вопрос, можно ли создать squid acl для получения учетных данных из базы данных mysql? Описание ситуации. Устройство PI — Raspberry PI Устройство B — Компьютер Сервер PI подключается к серверу, зная его статический IP, при этом открывается порт при запуске обратного шелла, поэтому пропинговав сервер по заданному IP адресу и порту получаем доступ к PI. Устройство B хочет связаться с PI и не знает его IP, поэтому оно пытается пропинговать сервер, с которого получает информацию о том, какой порт является PI. Эта операция выполняется на сервере squid - для пользователя из базы данных (я сделал это из руководств - авторизация squid через базу данных mysql) сервер получает информацию, может ли пользователь войти на прокси-сервер. Я хотел бы также сгенерировать ACL Squid для БД, чтобы знать, какие порты могут получить определенные пользователи PI.

Таким образом, в ACL будет размещена информация, на каком локальном порту сервера пользователь может пройти аутентификацию (будет запущена обратная оболочка, чтобы она автоматически подключалась к PI)


person m.aibin    schedule 26.11.2014    source источник


Ответы (1)


Возможно использование external_acl или rewrite_program. Для программирования используйте C, Perl, PHP, ShellScript. Вам нужно только вернуть ERR для отрицания или OK для разрешения доступа. На external_acl вы можете передать для программирования любые параметры, URL, назначение порта, источник порта, источник ip, назначение домена, пользователя.

базовый пример, разрешите доступ к "google"

#!/usr/bin/php -q
<?php
include "mysql.php";
include "funcoes.php";

$temp = array();
stream_set_timeout(STDIN, 86400);
if (!defined(STDIN)) {
define("STDIN", fopen("php://stdin", "r"));
}


while (!feof(STDIN)) {
$input = trim(fgets(STDIN));
$found = 0;
$login = 0;
$temp = split(' ', $input);
$output = $temp[0] . "\n";
$url_output = $output;
$url_output_debug = $temp[0];

$pos = strpos($url_output, 'google');
if ($pos !== false) {
    $output = "OK \n";
    $found = 1;
} else {
    $output = "ERR \n";
}

fwrite(STDOUT, $output);
}
?>
person Marcos Carraro    schedule 02.12.2014