SQUID - присвоение нескольких шаблонов пользователю

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
chinchipos
проходил мимо
Сообщения: 8
Зарегистрирован: 2013-02-25 18:04:04

SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение chinchipos » 2013-02-25 19:17:23

Добрый день!

В организации 500 пользователей. Для проксирования доступа в интернет используется SQUID + SAMS. Появилась задача кардинальным образом пересмотреть политику доступа в интернет.

Что нужно:
1) прокси сервер под FreeBSD (желательно SQUID)
2) подсчет трафика, блокирование пользователей, хранение истории посещаемых страниц (все, что так хорошо умеет делать SAMS)
3) Администрировать прокси сервер желеательно через WEB-интерфейс
4) каждый пользователь в один из трех временных интервалов (с 8-00 до 10-00; с 12-00 до 14-00; с 17-00 до 19-00) имеет право посещать социальные сети и интернет-магазины. Интервал пользователь выбирает сам, админ его каким-то образом указывает в конфиге прокси сервера. В остальное время пользователи не имеют права пользоваться соц-сетями и интернет-магазинами.
5) доступ к соцсетям должен быть только у одного отдела и высшего руководства
6) внешние почтовые сервисы запрещены для всех, кроме двух самых топовых менеджеров
7) доступ к ICQ и прочим месенджерам должен быть только у тех пользователей, которым начальство разрешило такой доступ
8) доступ к Skype должен быть только у тех пользователей, которым начальство разрешило такой доступ (Возможно ли это сделать средствами самого прокси сервера мне не ясно. Как вариант запретить доступ по SSL)
9) У большинства пользователей метод CONNECT должен быть разрешен только на определенные IP и URL адреса (чтобы всякими анонимайзерами не пользовались)
10) Метод POST ограничен размером 2 Мб (в дополнение к п.6)
11) доступ к анонимайзерам, удаленному управлению (удаленный рабочий стол), порнухе, радио, музыке запрещен для всех.
12) видео разрешено только тем пользователям, которым начальство согласовало доступ

В чем проблема:
SAMS позволяет создавать шаблоны и присваивать их пользователям. При условиях, определенных выше, групп будет много их неудобно администрировать - запутаться можно. Нпример:

Код: Выделить всё

     group_1 = white_list (доступ только по белому списку)
     group_2 = Deny ICQ, Deny Video, Deny SocialNets, Deny WebMail
     group_3 = Allow ICQ, Deny Video, Deny SocialNets, Deny WebMail
     ...     ...     ...    ...
     group_17 = Allow ICQ, Allow Video, Allow SocialNets, Allow WebMail
Было бы удобно, если каждому пользователю можно было крыжить доступ через веб-морду. Примерно так:

Код: Выделить всё

Add User --> Vasia Pupkin:
     login   vpupkin
     limit   500 Мб в месяц
     FreeSerfingTimeInterval    1 (c 8-00 до 10-00)
     acl Allow_ICQ = YES
     acl Allow_Video = NO
     acl Allow_SocialNets = YES
     acl Allow_Webmail = NO
Также было бы удобным самому формировать акцес листы и потом применять (или не применять) их к каждому конкретному пользователю. Грубо говоря нужно сделать так, чтобы можно было конфигурировать каждого пользователя в отдельности (и делать это через веб-интерфейс).

Что было сделано:
Я предположил что если оставить связку SQUID+SAMS, то подобные "фокусы" можно реализовать с помощью сторонней программы,которой SQUID будет передавать url и login_name пользователя. Я поэкспериментировал с редиректорами http://squid.opennet.ru/redirect.shtml (кроме "Редиректор для Squid - написан Владимиром Олейником" - у меня мозгов не хватило).Самым близким к истине оказался SquidGuard, но или он не может сделать то, что я от него хочу, или я просто не понял его философию.

Вопросы:
1) С помощью каких программных средств это можно сделать (бесплатные)?
2) Можно ли это реализовать, используя в качестве прокси-сервера squid?
3) Как это можно сделать?
4) Есть ли готовые решения?
Последний раз редактировалось f_andrey 2013-02-25 19:48:41, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума, оформляйте сообщение по человечески.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение gumeniuc » 2013-02-25 21:13:14

Как планируете авторизировать пользователей ?
Чем SquidGuard не угодил.
Да шо ему сделается...

michajlo
рядовой
Сообщения: 33
Зарегистрирован: 2013-02-15 12:30:45

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение michajlo » 2013-02-26 12:40:49

также интересуют эти вопросы.....

chinchipos
проходил мимо
Сообщения: 8
Зарегистрирован: 2013-02-25 18:04:04

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение chinchipos » 2013-02-26 18:08:11

gumeniuc писал(а):Как планируете авторизировать пользователей ?
Чем SquidGuard не угодил.
1) NCSA, логин/пароль
2) Не смог написать конфиг под свои нужды. У меня получилось примерно следующее (временные интервалы не затрагивал):

Код: Выделить всё

logdir	/var/log
dbhome	/var/db/squidGuard
#TAG: src
src deny_ICQ {
	user	aym
}
src deny_Video {
	user	aym
}
src deny_SocialNets {
              user       aym
}
src deny_Mail {
              user       aym
}
#TAG: dest
dest icq {
	domainlist	icq/domains
	urllist	icq/urls
}
dest video {
	domainlist	video/domains
	urllist	video/urls
}
dest socialnets {
	domainlist	socialnets/domains
	urllist	socialnets/urls
}
dest mail {
	domainlist	mail/domains
	urllist	mail/urls
}
# TAG: acl
acl {
	deny_ICQ {
		pass	!icq
	}
	deny_Video {
		pass	!video
	} 
	deny_SocialNets {
		pass	!socialnets
	} 
              deny_Mail {
		pass	!mail
	} 
	default {
		pass	none
		redirect	http://www.google.ru
	}
}
Не срабатывает вот эта часть:

Код: Выделить всё

# TAG: acl
acl {
	deny_ICQ {
		pass	!icq
	}
	deny_Video {
		pass	!video
	} 
	deny_SocialNets {
		pass	!socialnets
	} 
              deny_Mail {
		pass	!mail
	} 
	default {
		pass	none
		redirect	http://www.google.ru
	}
}
Если вот так, то срабатывает:

Код: Выделить всё

# TAG: acl
acl {
	deny_ICQ {
		pass	!icq any
	}
	default {
		pass	none
		redirect	http://www.google.ru
	}
}
Как правильно написать конфиг - я не додумался!

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение gumeniuc » 2013-02-26 20:22:38

chinchipos писал(а):
Не срабатывает вот эта часть:

Код: Выделить всё

# TAG: acl
acl {
	deny_ICQ {
		pass	!icq
	}
	deny_Video {
		pass	!video
	} 
	deny_SocialNets {
		pass	!socialnets
	} 
              deny_Mail {
		pass	!mail
	} 
	default {
		pass	none
		redirect	http://www.google.ru
	}
}
Если вот так, то срабатывает:

Код: Выделить всё

# TAG: acl
acl {
	deny_ICQ {
		pass	!icq any
	}
	default {
		pass	none
		redirect	http://www.google.ru
	}
}
При постановке правил надо указывать действие по умолчанию, в случае если URL не подходит к упомянутым ACL. Во втором случае есть в deny_ICQ это есть, а в первом почему-то забыли указать.
Да шо ему сделается...

chinchipos
проходил мимо
Сообщения: 8
Зарегистрирован: 2013-02-25 18:04:04

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение chinchipos » 2013-02-27 11:15:46

gumeniuc писал(а):При постановке правил надо указывать действие по умолчанию, в случае если URL не подходит к упомянутым ACL. Во втором случае есть в deny_ICQ это есть, а в первом почему-то забыли указать.
Поправил конфиг. Теперь так:

Код: Выделить всё

# TAG: Global variables
logdir	/var/log
dbhome	/var/db/squidGuard

# TAG: Time rules
# abbrev for weekdays:
# s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat

# TAG: Source
src deny_icq {
	user	aym
}
src deny_video {
	user	aym
}
src deny_socialnets {
	user	aym
}
src deny_mail{
	user	aym
}
src allow_other {
	user	aym
}

# TAG: Destination
dest icq {
	domainlist	icq/domains
}
dest video {
	domainlist	video/domains
}
dest socialnets {
	domainlist	socialnets/domains
}
dest mail {
	domainlist	mail/domains
}

# Rewrite rules

# Policies
acl {
	deny_icq {
		pass	!icq
	}
	deny_video {
		pass	!video
	}
	deny_socialnets {
		pass	!socialnets
	}
	deny_mail {
		pass	!mail
	}
	allow_other {
		pass any
	}
	default {
		pass	none
		redirect	http://www.google.ru
	}
}
В базах данных squidguard следующее:

Код: Выделить всё

icq   icq.com
video   youtube.com
socialnets   vk.com
mail   mail.ru
1) Если задать вот такие правила, то блокируется только icq.com (редирект на гугл выдает), а на все остальные сайты заходит:

Код: Выделить всё

# Policies
acl {
	deny_icq {
		pass	!icq
	}
	deny_video {
		pass	!video
	}
	deny_socialnets {
		pass	!socialnets
	}
	deny_mail {
		pass	!mail
	}
	allow_other {
		pass any
	}
	default {
		pass	none
		redirect	http://www.google.ru
	}
}
Вывод: срабатывает только первое правило.

2) Если задать вот такие правила, то блокируется только icq.com (редирект на гугл выдает), а на все остальные сайты заходит (тоже поведение как и в предыдущем пункте):

Код: Выделить всё

# Policies
acl {
	deny_video {
		pass	!video
	}
	deny_icq {
		pass	!icq
	}
	deny_socialnets {
		pass	!socialnets
	}
	deny_mail {
		pass	!mail
	}
	allow_other {
		pass any
	}
	default {
		pass	none
		redirect	http://www.google.ru
	}
}
Вывод: срабатывает только второе правило.

3) Если задать вот такие правила, то блокируется только icq.com (редирект на гугл выдает), а на все остальные сайты заходит (тоже поведение как и в предыдущих двух пунктах):

Код: Выделить всё

# Policies
acl {
	deny_video {
		pass	!video  any
	}
	deny_icq {
		pass	!icq  any
	}
	deny_socialnets {
		pass	!socialnets  any
	}
	deny_mail {
		pass	!mail  any
	}
	allow_other {
		pass any
	}
	default {
		pass	none
		redirect	http://www.google.ru
	}
}
Вывод директива "any" не влияет (в данном случае) на выполнение правил.

4) Если задать вот такие правила, то блокируются все (любые) сайты (редирект на гугл):

Код: Выделить всё

# Policies
acl {
	deny_video {
		pass	!video  none
	}
	deny_icq {
		pass	!icq  none
	}
	deny_socialnets {
		pass	!socialnets  none
	}
	deny_mail {
		pass	!mail  none
	}
	allow_other {
		pass any
	}
	default {
		pass	none
		redirect	http://www.google.ru
	}
}
Вывод: правило "allow_other" не срабатывает.

5) Если в конфиге "src video" и "src icq" поменять местами, и использовать правила "acl" из пункта 3, то блокируется только youtube.com (редирект на гугл).
Вывод: если в нескольких "src" содержится одно и тоже имя пользователя, то будет использоваться только первый "src" (может не совсем корректно сформулировал, но как-то так).

Я не знаю какие варианты конфигов для squidGuard попробовать, поэтому и отказался от него. Если у вас есть что предложить, предлагайте - я попробую потестить.

Ghost_01
проходил мимо

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение Ghost_01 » 2013-02-27 13:44:39

А вот так, нормально работает ?

Код: Выделить всё

# Policies
acl {
   deny_video {
      pass   !video  any
   }
   deny_icq {
      pass   !icq  any
   }
   deny_socialnets {
      pass   !socialnets  any
   }
   deny_mail {
      pass   !mail  any
   }
     default {
      pass   none
      redirect   http://www.google.ru
   }
}

Account
рядовой
Сообщения: 37
Зарегистрирован: 2011-07-01 15:01:13

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение Account » 2013-02-27 13:53:46

У Вас пользователь кроме того что входит в группы ограничения, так и еще в группу которой разрешено все

Код: Выделить всё

src allow_other {
   user   aym
}

Код: Выделить всё

allow_other {
      pass any
   }
Вам не кажется, что в этом и кроется несрабатывание правил?

chinchipos
проходил мимо
Сообщения: 8
Зарегистрирован: 2013-02-25 18:04:04

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение chinchipos » 2013-02-27 16:38:22

Ghost_01 писал(а):А вот так, нормально работает ?
Account писал(а):У Вас пользователь кроме того что входит в группы ограничения, так и еще в группу которой разрешено все
Вам не кажется, что в этом и кроется несрабатывание правил?
Не работает. При таком конфиге блокирует только youtube.com (все как и раньше):

Код: Выделить всё

# TAG: Global variables
logdir   /var/log
dbhome   /var/db/squidGuard

# TAG: Time rules
# abbrev for weekdays:
# s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat

# TAG: Source
src deny_icq {
   user   aym
}
src deny_video {
   user   aym
}
src deny_socialnets {
   user   aym
}
src deny_mail {
   user   aym
}

# TAG: Destination
dest icq {
   domainlist   icq/domains
}
dest video {
   domainlist   video/domains
}
dest socialnets {
   domainlist   socialnets/domains
}
dest mail {
   domainlist   mail/domains
}

# Rewrite rules

# Policies
acl {
   deny_icq {
      pass   !icq any
   }
   deny_video {
      pass   !video any
   }
   deny_socialnets {
      pass   !socialnets any
   }
   deny_mail {
      pass   !mail any
   }
   default {
      pass   none
      redirect   http://www.google.ru
   }
}
Мне нужно, чтобы пользовательвходил в несколько групп, но рабочего варианта пока нет. Может быть его в принципе нет.

Кроме squidGuard что еще можно попробовать? см. условия в первом посте.

Account
рядовой
Сообщения: 37
Зарегистрирован: 2011-07-01 15:01:13

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение Account » 2013-02-27 16:52:55

А так

Код: Выделить всё

acl {
  deny_icq {
    pass !icq !video !socialnets !mail all
   }
   default {
      pass none
      redirect   http://www.google.ru
   }
}

chinchipos
проходил мимо
Сообщения: 8
Зарегистрирован: 2013-02-25 18:04:04

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение chinchipos » 2013-02-27 17:30:46

Account писал(а):А так
Так мне не надо! Мне нужно пользователю присваивать различные шаблоны. Мне не нужно добавлять пользователей в конкретную группу (см первый пост).

При предложенном Вами варианте я могу воспользоваться средствами SAMS.

chinchipos
проходил мимо
Сообщения: 8
Зарегистрирован: 2013-02-25 18:04:04

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение chinchipos » 2013-02-27 17:43:13

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

Код: Выделить всё

# TAG: Source
src deny_icq {
   user   user1 user2 user3 user4
}
src deny_video {
   user   user1 user3
}
src deny_socialnets {
   user   user1 user2 user 4
}
src deny_mail {
   user   user1 user5 
}
Смысл следующий: если я хочу запретить пользователю доступ в ICQ, я добавляю его в группу "deny_icq". Если я хочу запретить этому пользователю еще и доступ к соцсетям, то я добавляю его в группу "deny_socialnets". Мне нужен какой-то инструмент, который бы позволял добавлять одного пользователя в разные группы (присваивать несколько шаблонов доступа одному пользователю).

Account
рядовой
Сообщения: 37
Зарегистрирован: 2011-07-01 15:01:13

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение Account » 2013-02-28 8:53:46

chinchipos писал(а):Конфиги, которые я выкладывал выше это всего-лишь частный случай. Для того, чтобы проверить работоспособность. Если так будет понятней, то вот часть конфига, которая показывает, что мне нужно:

Код: Выделить всё

# TAG: Source
src deny_icq {
   user   user1 user2 user3 user4
}
src deny_video {
   user   user1 user3
}
src deny_socialnets {
   user   user1 user2 user 4
}
src deny_mail {
   user   user1 user5 
}
Смысл следующий: если я хочу запретить пользователю доступ в ICQ, я добавляю его в группу "deny_icq". Если я хочу запретить этому пользователю еще и доступ к соцсетям, то я добавляю его в группу "deny_socialnets". Мне нужен какой-то инструмент, который бы позволял добавлять одного пользователя в разные группы (присваивать несколько шаблонов доступа одному пользователю).
Да я Вас понимаю. Просто сами подумайте как Ваши правила должен интерпретировать squidguard.
Он берет первую группу и проверяет видя что данной группе запрещено то то, а остальное разрешено, независимо от того что пользователь входит и в остальные группы. Тут происходит конфликт правил мне кажется. Если пользователь подпадает под первое, в котором кроме определенных ресурсов разрешено все остальное, а в последующих в какие он входит что то запрещено. Применимо к Вашему случаю, даже не знаю что посоветовать.
С другой стороны, сколько же вам групп так может понадобится, ведь начальство может Вам так начать пихать кучу сайтов и для каждого будут индивидуальные настройки для пользователей.

Аватара пользователя
J.Korvin
сержант
Сообщения: 232
Зарегистрирован: 2008-11-22 12:03:41

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение J.Korvin » 2013-03-28 10:42:55

Столкнулся с таким же вопросом. Например acl squid позволяют пользователю иметь например группу в которой запрещено !isq и потом группу в которой isq разрешение и того когда пользователь в двух группах то будет ему разрешение isq.
А вот можно ли так же в squidguard сделать? Как не пытался заставить работать он смотрит первую группу в которой пользователь и дает права только для данной группы. :(
Эсли ты с ножом значит ты с мясом.

chinchipos
проходил мимо
Сообщения: 8
Зарегистрирован: 2013-02-25 18:04:04

Re: SQUID - присвоение нескольких шаблонов пользователю

Непрочитанное сообщение chinchipos » 2013-04-19 18:15:23

Решил свою проблему с помощью REJIK. Сделал небольшую самописную Web-морду для управления пользователями (присвоение групп доступа). Как закончу, выложу описание и конфиги.