LINUX.ORG.RU
ФорумAdmin

squid + что-то детализированный отчёт.


0

4

Есть ldap. В нём лежат:

cn = Ivanov Ivan
displayName = Иванов Иван
sAMAccountName = w4

Авторизация в домене происходит по паре: sAMAccountName + pass

Задача:

Настроить squid таким образом чтобы:

Пользователь: Пользователь в браузере вводил: sAMAccountName + pass и получал доступ в Интернет.

Админ: Админ мог зайти в web морду и создать группы (группы не обязательно чтоб были в LDAP), например: web + skype + vk.com_off положить туда пользователей из LDAP

В отчётах, (кто куда, сколько лазил) [видимо нужен sams] чтобы фигурировало: displayName

Сие реально?

★★★★★

Последнее исправление: DALDON (всего исправлений: 1)

Ну, я просто создал группы в Active Directory (судя по sAMAccountName у тебя тоже ОНО). И по ним разграничиваю доступ внутри сквида через squid_ldap_group.

Не веб-морда конечно, а обычный виндовый гуй к AD, но можно и самому написать морду, которая бы лазила в ADшный лдап и там шуровала. Но нафиг не надо мне.

А отчеты рисует лайтсквид, используя данные опять же из AD и подменяя логины реальными именами.

Файлы соответствий login -> displayname генерирует простой скрипт на перле, который пущается раз в час\сутки и формирует realname.txt для лайтсквида.

Вроде довольно просто.

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

У меня тестовая samba4, из соседней веточки закрутилась. Прикрутил, ejabberd + mod_shared_roster_ldap + ldap_auth, всё супер, адресную книгу в почтовике - всё опять-же не плохо, за тем исключением что evolution не асиливает редактировать её, но да особо и не надо.

То есть, если я всё правильно понимаю у тебя оно реализованно так (я squid не настраивал сам никогда, только обслуживаю древнючий ранее настроенный, по-этому и спрашиваю):

1) в squid ставим ldap_auth, squid_ldap_group, и там рулим через acl

2) заводим группы через любую GUI к ldap

3) скрипт делает привязку

4) мы тоже пользуем лайтсквид, очень довольны.

Вопрос: можно-ли в такой конфигурации запрещать группам трафик (icq, skype, резать сайты)?

То есть в конфиге squid накрутил настройки для группы, и всё будет как надо, не нужно будет в него постоянно лазить?

Просто сейчас довольно сложно по прошествии полугода вспоминать, где в каких конфигах rejik что-то кому-то было отключено. Хотелось бы-простоты в этом отношении.  — Я так понимаю, что я смогу всем хозяйством рулить прямо в squid.conf ну или настройки групп вынести в отдельные файлы?

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

1) Да, только аутентикация у меня идёт через squid_kerb_auth, но это не принципиально. В лдапе заводим группы (у меня что-то вроде proxy_full_access, proxy_no_access, proxy_mail_access и т.п.).

Приклеиваем их к ACL примерно так:

external_acl_type squid_ldap ttl=10 negative_ttl=10 %LOGIN /usr/libexec/squid/squid_ldap_group -b ou=domain.ru,dc=global -s one -D cn=admin,dc=global -W /etc/squid/ldap.password -R -H ldap://127.0.0.1:3890 -v 3 -S -f (&(sAMAccountName=%u)(memberOf=%g)) -K
acl proxy_full_access external squid_ldap CN=proxy_full_access,CN=Users,DC=domain,DC=ru
acl proxy_email_access external squid_ldap CN=proxy_email_access,CN=Users,DC=domain,DC=ru
acl proxy_no_access external squid_ldap CN=proxy_no_access,CN=Users,DC=domain,DC=ru
Ну и уже по этим ACL блокируем\разрешаем всё что надо.

2) да 3) Да, скрипт, который лезет в LDAP, находит там всех активных пользователей и генерит realname.cfg для лайтсквида вида

i.ivanov Иванов Иван Иваныч
p.petrov Петров Петр Петрович

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

А скрипт можете дать в случае чего? В целом весьма не плохо всё выглядит, хочу попробовать, до скрипта пока конечно ещё рано, но в целом может и пригодится.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON
#!/usr/bin/perl -wT

use Net::LDAP;
use lib '/opt/scripts';
use KRCOMMON;
use Encode qw(from_to);

my $users = '/var/www/squid/htdocs/realname.cfg';
my $groups = '/var/www/squidsquid/htdocs/group.cfg';

my $ldap = Net::LDAP->new('ldap://127.0.0.1:3890') or die "$@";
my $result = $ldap->bind('cn=admin,dc=global', 'password' => 'ololo');

if($result->code) {
    die 'Bind to failed!\n';
}

$result = $ldap->search(
    'base'   => 'ou=domain.ru,dc=global',
    'filter' => '(objectclass=user)',
    'scope'  => 'sub',
    'attrs'  => [ 'cn', 'sAMAccountName', 'Department' ]
);

if($result->entries <= 0) {
    die "Found no users\n";
}

my %groups = ();

open(OUT, '>' . $users);
foreach my $entry ($result->entries) {
    my $name = $entry->get_value('cn');
    my $login = $entry->get_value('sAMAccountName');
    my $dept = $entry->get_value('Department');

    from_to($name, "utf-8", "cp1251");

    if(defined $dept) {
        from_to($dept, "utf-8", "cp1251");
        $groups{$dept}{$login} = 1;
    }

    print OUT $login . "\t" . $name . "\n";
}
close(OUT);

my $i = 1;
open(OUT, '>' . $groups);
foreach my $group (sort keys %groups) {
    foreach my $login (sort keys %{$groups{$group}} ) {
        my $num = sprintf("%02d", $i);
        print OUT $login . "\t" . $num . "\t" . $group . "\n";
    }
    $i++;
}
close(OUT);

Что-то в таком духе. Он заодно еще по полю Департамент по группам разбрасывает.

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