LINUX.ORG.RU

Прокси/файрвол с авторизацией


0

0

Подскажите такую вещь: нужен прокси/файрвол для Linux, с авторизацией на клиенте, с возможностью работы в DHCP-сети, с возомжностью устанавливать для логина время действия и желательно объем выкачанного трафика. Ведущий логи с возможностью создания отчетов. Плюс фильтрация содержимого, естественно... Что порекомендуете? Лучше сразу на мыло - al_leb@mail.ru. Спасибо


Не знаю конечно, но может NuFW?

anonymous
()
12 октября 2006 г.

squid настроенный на авторизацию по пользователям и созданой группой blocked, в которую вносятся перебравшие лимит и группа local для пользователей которые вообще не имеют права в инет ходить (в моем варианте blocked перетирается каждый запуск скрипта - иногда приходится увеличивать лимиты). скриптик, который это дело все обрабатывает. по crond пробегается по логу сквида и пихает в MySQL, суммирует, потом смотрит список пользователей и лимиты и логи сквида и при переборе добавляет перебравших в blocked... вообщем что-то такое.

deys ★★★
()
Ответ на: комментарий от deys

ну и для размышлений

куски из squid.conf
...
acl blocked proxy_auth "/usr/local/squid/etc/groups/blocked"
acl local proxy_auth "/usr/local/squid/etc/groups/local"
...
http_access deny local !localurl
http_access deny blocked
...



squid_log.pl
.....

#!/usr/bin/perl
#
# просмотр access.log и занесение в MySQL
#
##################################################
use POSIX qw(strftime);

my $conf = "../etc/sqpadmin.conf";
my $stop_log = undef();
my $access_log = undef();

load_conf();

sub load_conf
{
open (CONF,"<$conf") || die "Cant open $conf\n";
    while (<CONF>)
        {
        chomp;
        ($option,$value) = split(/=/);
        $stop_log = $value if $option eq "stop_log";
        $access_log = $value if $option eq "access_log";
        }
close CONF;
}

use Mysql;
    $db=Mysql->Connect('localhost', 'sqp', 'sqp', 'pass');

# Открыть access.log со строки указанной в stop_log
open START, "$stop_log" || die "Cent open $stop_log\n";
$iii = <START>;
close START;
    ###
open LOG, "$access_log";
    for ($i = 1; $i <= $iii; ++$i)
       {
        $tmpsss = <LOG>;
      }

    foreach(<LOG>)
        {
        $iii+= 1;

            s/^\d+\.\d+/strftime("%Y-%m-%d %H:%M:%S",localtime $&)/e;
            s/ - /   /g;

    next unless ($day, $time, $elapsed, $ip, $replycode, $isiz, $method, $url, $
login, $hierarhy, $mimetype) =
        m/^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+)
\s+(\S+)\s+(\S+)\s/;

$url=~s|(^http://)([^/]*/).*|\1\2 |;

print "$day | $time |  $ip  | $login |  $isiz byte |  $replycode  $method $url\n
";

$db->Query("insert into http values ('$day', '$time', '$ip', '$login', '$url', '
$file', $isiz)");
}

close LOG;


# Записать в stop_log строку остановки
open (STOP, ">$stop_log") || die "Cent open $stop_log\n";
print STOP $iii;
close STOP;

# End
#######

deys ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.