На OES2 Squid интегрирован с eDir?

Для любителей просто поболтать

Re: На OES2 Squid интегрирован с eDir?

Сообщение Пилютик Михаил » 04 июл 2011, 09:50

Dimerson писал(а):кто-нибудь уже трогал в оигинале ?

у меня тут намечается кое-какое железо на предмет тестинга.
пока продумываю что и как.

autohotkey что-то не вдохновил.

сделал аналог squidtrust на C++ отдает наружу по 3 и 2 то же что и оригинальный а
вот по 1 отдает fdn cn=user.ou=context.o=context

сами понимаете если надо то отдаст и cn=user,ou=context1,o=context2 в нижнем регистре можно ксорнутый 0x55 чтоб по сети не летало открыто
посему вопрос к гуру - если допустим проверять не OU на Memeber а просто проверять обьект группа на
членов - они там в виде fdn.

и сразу отпадает необходимость борьбы с одноименными логинами в разных OU.

в общем сформулирую просьбу так :

надо бы глянутьь перловый скрит чтоб проверял группу на member и выдавал OK и не OK (что там в оригинале).
клиент если надо отдаст cn=user,o=ou ...
имя дефолт сервера
иимя дерева
имя станции
имя вендового юзверя


а зачем скрипт, если squid имеет helper squid_ldap_group. Если в качестве фильтра указать ему что-то примерно такое: -f"(&(objectclass=groupofnames)(equivalentToMe=cn=user,ou=context,o=context)(cn=группа))", то если я правильно понял, получите то, что Вам нужно
Пилютик Михаил
 
Сообщения: 310
Зарегистрирован: 09 июл 2002, 15:02
Откуда: Минск

Re: На OES2 Squid интегрирован с eDir?

Сообщение Dimerson » 04 июл 2011, 10:03

а зачем скрипт, если squid имеет helper squid_ldap_group. Если в качестве фильтра указать ему что-то примерно такое: -f"(&(objectclass=groupofnames)(equivalentToMe=cn=user,ou=context,o=context)(cn=группа))", то если я правильно понял, получите то, что Вам нужно


Скрипт нужен чтоб сходит на станцию за юзернеймом и получить
требуемое для member=c=user,ou=context1,p=context2 . вопрос как ему подсунуть каждый раз это диначмически получаемое имя.

у SquidTrust в конфиге сквида

*****************snip of squid.conf********************************

external_acl_type IPUser ttl=60 children=10 %SRC /usr/local/squid/SquidTrust.pl
acl AuthNDS external IPUser
http_access allow AuthNDS

# These hosts do not have any restrictions
http_access allow unrestricted_hosts
# Always allow access to whitelist domains
http_access allow whitelist
auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -v 2 -b T=MYTREE -f "(&(|(groupMembership=cn=LIMITEDaccess,o=INTERNET)(groupMembership=cn=FULLaccess,o=INTERNET))(objectclass=User)(cn=%s))" -u uid -P 10.1.1.7
auth_param basic children 70

*****************snip of squid.conf********************************

то есть squid_ldap_auth это если не сработало AuthNDS
а в нашем случае SquidTrust.pl ходит на станцию за cn= проверяет его на принадлежность к группе и отдает в STDOUT либо 'OK user=$nwusername' либо 'ERR'

а все что ниже работает если не сработал SquidTrust
Аватара пользователя
Dimerson
 
Сообщения: 2791
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Re: На OES2 Squid интегрирован с eDir?

Сообщение Dimerson » 04 июл 2011, 17:44

в общем на стенде все работает

доработанные
SquidTrust.exe отдает по 1 cn=user,ou=context,o=context2.
SquidTrust.pl в ответ на ip.add.re.ss передает 1 squdtrust.exe получает fdn и
делает ldap->search (scope=>"base",base=>fdn ...) получает список групп юзера и если есть членство в искомой отдает
OK username=fdn
в прочих случаях ERR.
дело за малым = потестить это со сквидом.

осталось все причесать оформить перловыми подпрограммами с параметрами.

блин прпарился чуток пока не понял почему perl читая fdn из сокета в конце строки получает \n\r - в squdtrus.exe был Socket->Receiveln.
при Socket->Receivebuffer все стало ок. сам тупил.
очепятка : ClientSocket->Sendln и ClientSocket->SendBuf соответственно
Аватара пользователя
Dimerson
 
Сообщения: 2791
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Re: На OES2 Squid интегрирован с eDir?

Сообщение Dimerson » 06 июл 2011, 05:52

все причесал. на станции squidtrust.exe на сервере squidtrust.pl с параметраметрами настройки:
my @LDAPServerAddress = [ 'nwserver1.my.lan', 'oes2server1.my.lan' .... ];
my $binddn='cn=proxy-user, o=context';
my $bindpw='megakewlpass';
my $edirgroup='cn=INTERNETUSERS,o=context';
остается погонять на реальнои сквиде (смогу попозже)

и вопрос - а не надо ли пошифровать запрос/ответ между сервером и клиентом ?
Аватара пользователя
Dimerson
 
Сообщения: 2791
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Re: На OES2 Squid интегрирован с eDir?

Сообщение Музалёв Николай » 10 июл 2011, 21:43

С т.з. высокой теории (сетевой безопасности) - хотелось бы...
armoracia rusticana (lat.), "блины" и "фиги" всех видов, а также смайлики - крайне не желательны !
Музалёв Николай
 
Сообщения: 3027
Зарегистрирован: 04 июн 2002, 19:58
Откуда: Беларусь. МИНСК.

Re: На OES2 Squid интегрирован с eDir?

Сообщение Dimerson » 12 июл 2011, 15:39

Сорри за delay. Тк сдох ленточный автозагрузчик куда был настроен бакап на автопилоте
и чинить его хотят 8 недель (замена LTO-4 привода в нем 150+ круб) приживлял к sep sesam бакап на сменные usb жесткие диски. Блин Немцы траву курят не хуже индусов - долго не мог понять пошто оно не монтирует приводы по запросу. Выяснил что они дергают
udevadm который не доступен на SLES10. Пришлось в каталог /bin sesam кинуть враппер на шелле который в ответ на udevadm info --query=all --name /dev/sde1 дергает
udevinfo -q all -n /dev/sde1 ... хотя сперва надо было до этого додумаццо.

Тепер по делу (бакапы зашедулены спать можно спокойнее):
на свиде пускаем cледующий SquidTrust.pl
Код: Выделить всё
#!/usr/bin/perl

use strict;
use IO::Socket;
use Net::LDAP;


#
# Global Config Options
#
my @LDAPServerAddress = [ 'server1.dns.name', 'server2.dns.name' ];
my $binddn='cn=proxy-user, o=context';
my $bindpw='proxy-passwd';
my $edirgroup='cn=INTERNET-USERS,o=context';


$|=1;

## Main loop (START), sets the loop to wait for an input <STDIN> and sets the input to $host (clients IP address)
START: while (my $host = <STDIN>)
  {
## Checking IP Adress to validity
   if ( check_ip($host) != 1 )
    {
     print "ERR\n";
     next START;
    }
## Sets up the socket connection to the client computer
   my $port = 3333;
   my $sock = new IO::Socket::INET(PeerAddr => $host,PeerPort => $port,Proto    => 'tcp',Timeout  => '3',);

## if - else section to either print OK or ERR based on weather a successful connection was made
                                                                               
   if ($sock =~ /IO::Socket/) {
#send a command to the workstation
   my $cmd = "1";
   print $sock $cmd;
# print workstation response
   my $nwusername = <$sock>;
   if ( length $nwusername > 0 )
    {
     if ( RequestEdir($nwusername) == 1)
      {
       print "OK user=$nwusername\n";
      }
     else
      {
       print "ERR\n";
      }
     close $sock;
     next START;
    }
                                                                               
   else
    {
     print "ERR\n";
     close $sock;
     next START;
    }
                                                                               
   }
  else
   {
    print "ERR\n";
    if($sock)
     {
      close $sock;
     }
   }

  next START;
}

#
# RequestEdir(fdn)
#
sub RequestEdir
{
my $ldap=Net::LDAP->new(@LDAPServerAddress,port=>636,scheme => 'ldaps') or die "$@";

my $base=$_[0];
my $scope = "base";
my $attnames=["groupMembership"];

my $mesg = $ldap->bind( $binddn, password=> $bindpw );


$mesg = $ldap->search(  base=>$base,scope=>$scope,attrs=>$attnames, filter => '(objectClass=*)');

my $founded=0;

foreach my $entry ($mesg->entries)
  {
   my @attrs = $entry->attributes;
   foreach my $attr (@attrs)
   {
    my @value = $entry->get_value($attr);
    foreach my $value (@value){
    if( lc($value) eq lc($edirgroup))
     {
      $founded = 1;
     }
   }
  }
}
                                                                               
return $founded;
}

#
# check_ip(ip.ad.re.ss)
#
sub check_ip
{
my @nums = split /\./, shift;
return 0 if scalar @nums != 4;
foreach my $num (@nums)
  {
   return 0 if int($num) < 0 || int($num) > 255;
  }
return 1;
}


на станции пускаем squidtrust.exe

проверка станции телнетом:

telnet ip-address 3333
потом
1 - получаем fdn
2 - имя компа
3 - имя вендового юзера

Squidtrust.pl
делает запрос на станцию получает fdn и для fdn получает все группы если в списке групп юзера есть cn=INTERNET-USERS,o=context то выдает ОК User=cn=... в других слачях выдает
ERR.

на сервере проверять perl squidtrust.pl
оно ждет в stdin айпишник и в ответ выдает резалт.

если все ок то добавлять ACL сквиду и вперед (см первоисточник - в нем ничего не проверялось только получалось имя юзера и все).

SquidTrust.exe лежит в http://files.mail.ru/HSXE80
MD5 (SquidTrust.exe) = 2dcb6bf142bfe1b2f7d4235c6e90af6c
размер из-за VCL-ности.
на голом Win32API типа WinMain и поехали в пооцессе.

Код может и не оптимален но хочется это попробовать в деле. на SLES10 доставлял perl-net-ldap и пакадж для perl+ssl (имечко подзабыл но перл поскажет строку для google)
Аватара пользователя
Dimerson
 
Сообщения: 2791
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Re: На OES2 Squid интегрирован с eDir?

Сообщение Музалёв Николай » 15 июл 2011, 13:44

А сейчас, дети, я раскажу вам страшную и смешную сказку как раз на тему этой самой интеграции...

И серьёзно.

Для работы такой связки нужен фантомный пользователь, как я понимаю. П.к. мере в моей системе он имеется.

Так вот, намедни по плану рутинных работ по сети у меня была запланирована перерегистрация прямоходящих: уточнялись фамилии (для дев) , новые места работы, новые телефоны... ну, сами знаете - надо время от времени актуализировать информацию, что видна в NWSEND'е.

Так вот, чтобы заставить моих двуногих эту процедуру пройти, было объявлено, что кто не пройдёт её в установленном порядке, то с 1 июля он в сеть не войдёт.

Для реализации этой угрозы в начале мая в NWADMIN'е были выбраны все пользователи и одним разом им была установлена блокировка с 01.07.

ВСЕМ пользователям!

А в Дереве есть ещё несколько служебных/фантомных пользователя ( от ПАРАШЮТА, чёрный ход Админа, сам Админ и тд...), но они - на самом "верху" и я с них блокировку снял сразу.

А прокси-пользователь был изначально размещён "поглубже", с глаз долой. Раз настроенный он работал, как часы и мы о нём не вспоминали в прямом смысле - годами.

И вот надысь наступило 01.07, блокировка сработала и после вчерашней перезагрузки... отвалилась идентификация в лин-сквиде по NW-ЛДАПу...

Коллега-линукс говорит "закрыт порт ЛДАП, не могу достучаться..." (???)

В общем - получили массу удовольствия и существенно продвинули свои знания в области взаимодействия двух систем... пока не удосужились просто пересмотреть всю сеть, всё Дерево.

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

И как только добрались до инженерного контейнера, то тут же бросился в глаза - вот он, наш "красавчик"...

Перерегистрировали его, сняли блок - и всё заработало...

Мда.
armoracia rusticana (lat.), "блины" и "фиги" всех видов, а также смайлики - крайне не желательны !
Музалёв Николай
 
Сообщения: 3027
Зарегистрирован: 04 июн 2002, 19:58
Откуда: Беларусь. МИНСК.

Re: На OES2 Squid интегрирован с eDir?

Сообщение Dimerson » 19 июл 2011, 10:09

Воркает в логах сквида записи
1311084175.188 1725 192.168.100.254 TCP_MISS/200 3435 GET recent.php cn=user,ou=context1,ou=context2,o=context3 DIRECT/90.156.201.56 text/html

взял пустой сервер (интел 1u с ксеоном x34xx 8 гиг рамы 2 сас харда в раиде1 на lsi 1078)

debian squeeze amd64

squid3

модули для перла:
для ldap
для io socket ssl

mysquidtrust.pl
правим acl

все

сие было повторено на sles10 sp4 завелось с полпинка
2 гига кеша рамы сквиду 3 x (отд раздела под cache 2GB) на отд reiser смонтированном с notail noatime.
летает как пташка

пишу через него

upd 2:
Сквид от слес 10 сп 4 имеет свойство зацикливать microsoft update (там версия 2.5 что-то там дремучее). по кругу раз 100 перекачивает свои кабы со списками пачтей и меееддленно так.
на слес 11 сп 1 пока не патченном ms update воркает наура без шаманства с параметрами. то есть пока остановился на нем (2.7 стабле какой-то).

пока думаю как замутить с более продвинутыми ACL ну и как с шифрованием м-у squidtrust.pl и squidtrust.exe
upd3:
подумываю изобрести велосипед = аналог aclcheck.nlm.
то есть используя SquidTrust.exe
Через external_acl проверять не только принадлежность к разным группам а еще и ACL на предмет доступа к сайтам итд итп. Чтобы не прописывать несколько раз external acl ipuser трам там там .advanced
потом deny acl
потом external acl ipuser трам там там .ordinary
итд а все за один вызов хелпера.
придется лепить внешний бакенд из списка групп и url/адресов ....

то есть один внешний хелпер. ttl=0 negative_ttl=0 и он на любой запрос будет проверять в базе все ли ок.
Аватара пользователя
Dimerson
 
Сообщения: 2791
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Re: На OES2 Squid интегрирован с eDir?

Сообщение Пилютик Михаил » 23 сен 2011, 11:13

Добрый день!

Что показывает опыт использования squidtrust.exe? Все прекрасно?

Мне кажется было бы неплохо убрать возможность выгрузить его через контекстное меню(защита от шаловливых рук "простых" пользователей) и наоборот сделать модуль для выгрузки squidtrust. Тогда удобно было бы управлять загрузкой/выгрузкой из login-скрипта.
Пилютик Михаил
 
Сообщения: 310
Зарегистрирован: 09 июл 2002, 15:02
Откуда: Минск

Re: На OES2 Squid интегрирован с eDir?

Сообщение Dimerson » 23 сен 2011, 13:41

я на своем компе юзаю его. для тесту.

тестовый squid: xeon32xx (под 3 гигагерца) 8 гиг рамы интеловский сервер с интерированным LSI 1078 , 2 SAS 10 k rpm hdd. кеш на reiser.
sles11 sp1 uptodate (AMD64)

имхо тормозит собака по сравнению с бордюром на P4 2400 4 гига RAMBUS на сказях.

на предмет этого как быть ? :(((
Аватара пользователя
Dimerson
 
Сообщения: 2791
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Re: На OES2 Squid интегрирован с eDir?

Сообщение Пилютик Михаил » 23 сен 2011, 14:04

Dimerson писал(а):я на своем компе юзаю его. для тесту.

тестовый squid: xeon32xx (под 3 гигагерца) 8 гиг рамы интеловский сервер с интерированным LSI 1078 , 2 SAS 10 k rpm hdd. кеш на reiser.
sles11 sp1 uptodate (AMD64)

имхо тормозит собака по сравнению с бордюром на P4 2400 4 гига RAMBUS на сказях.

на предмет этого как быть ? :(((

Т.е. с прозрачной аутентификацией через squidtrust вопросов не возникает?

Squid тормозит, это значит медленно сохраняет в кэш и отдает или медленно отдает из кэша? А из настроек Squid все выжали?
Пилютик Михаил
 
Сообщения: 310
Зарегистрирован: 09 июл 2002, 15:02
Откуда: Минск

Re: На OES2 Squid интегрирован с eDir?

Сообщение Андрей Тр. aka RH » 23 сен 2011, 16:20

Dimerson писал(а):я на своем компе юзаю его. для тесту.

define тормозит - у нас несколько лет стоял сквид ( даже не один ), на более хилом железе, и при 200-300 клиентов тормозов не было замечено ( но это было без сквидтраста, ессно ). или же тормоза именно от сквидтраста ?
Даешь отдельный раздел по ZENworks ... :bad-words: .. и печати !
Аватара пользователя
Андрей Тр. aka RH
 
Сообщения: 3937
Зарегистрирован: 18 июн 2002, 11:27

Re: На OES2 Squid интегрирован с eDir?

Сообщение Пилютик Михаил » 23 сен 2011, 17:26

Мы тоже тестируем squidtrust на SLES10sp3. Железо - x86_64, Celeron E3400 2.6Gz, ОЗУ 2Гб, SATA.
Тормозов никаких не замечаю, правда все это тестирование - один-два пользователя.
Подумываю пускать в работу.
Пилютик Михаил
 
Сообщения: 310
Зарегистрирован: 09 июл 2002, 15:02
Откуда: Минск

Re: На OES2 Squid интегрирован с eDir?

Сообщение Dimerson » 24 сен 2011, 09:33

сквидтраст непричем - там TTL настроен он не каждый раз ходит за юзером.
я про время отклика прокси.

главный плюс это то что он прозрачен для M$ update. 3.7+ апдейтит все но часто спотыкается на проверке версий WUA. Раза с 10 идет. у 392 было что-то типа не апдейтился офис через проксю M$ апдейтом.

а на sles11 sp1 вроде все апдейтится ок. только скорость не совсем радует.

думаю надо бы тут обсудить конфиги.
Аватара пользователя
Dimerson
 
Сообщения: 2791
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Re: На OES2 Squid интегрирован с eDir?

Сообщение Dimerson » 26 сен 2011, 12:59

в общем у меня так:
Intel(R) Xeon(R) CPU X3450 @ 2.67GHz
8 гиг рамы
пока я сделал дисковую подисстему на зеркале из 2-х SAS HDD:
[0:2:0:0] disk INTEL AXXROMBSASMR 1.40 /dev/sda

Squid Cache: Version 2.7.STABLE5

Код: Выделить всё
external_acl_type IPUser ttl=180 negative_ttl=5 children=10 %SRC /usr/local/bin/SquidTrust.pl
acl AuthNDS external IPUser
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 192.168.100.0/24
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow AuthNDS
http_access deny all
icp_access deny all
http_port 3128
hierarchy_stoplist cgi-bin ?
cache_mem 4096 MB
cache_dir aufs /var/cache/squid1 2048 128 256
cache_dir aufs /var/cache/squid2 2048 128 256
cache_dir aufs /var/cache/squid3 2048 128 256
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY\s[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
header_access X-Forwarded-For deny all
header_access Via deny all
visible_hostname yyy.yyy.zzz.zzz
error_directory /usr/share/squid/errors/Russian-1251
cachemgr_passwd squidcachemgr all
coredump_dir /var/cache/squid


разделы под cache:
/dev/sda5 on /var/cache/squid1 type reiserfs (rw,noatime,noacl,notail)
/dev/sda6 on /var/cache/squid2 type reiserfs (rw,noatime,noacl,notail)
/dev/sda7 on /var/cache/squid3 type reiserfs (rw,noatime,noacl,notail)


System architecture: x86_64
Baseproduct: SUSE_SLES.prod
SUSE_SLES.prod:
summary: SUSE Linux Enterprise Server 11 SP1
name version: SUSE_SLES 11.1
SP, release: 1 1.152
arch: x86_64


пока ему далеко до BM37 на P4 2,4GHz ....
с авторизацией через squid trust все ок.
единственное, если надо проверять принадлежность к нескольком группам то надо несколько экземпляров SquidTrust итд итп. имется в виду если делать группы
unlimited, common, restricted итд
Аватара пользователя
Dimerson
 
Сообщения: 2791
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Пред.След.

Вернуться в Флейм

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron