[Comm] проблема с squid_auth_ldap
crux
=?iso-8859-1?q?crux_=CE=C1_syktsu=2Eru?=
Пн Мар 1 21:21:06 MSK 2004
Добрый вечер, community.
Настраиваю авторизацию пользователей на прокси сервере squid в
ldap-каталоге. Столкнулся с проблемой в хелпере squid_auth_ldap.
Суть в том, что по всей видимости ни сам squid ни squid_auth_ldap никак
не эскейпят строку, содержащую имя пользователя.
Вот пример squid.conf:
auth_param basic program /usr/libexec/squid_ldap_auth -b
ou=Users,dc=home,dc=ru -f (&(uid=%s)(accountStatus=active)) -P -h localhost
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
acl password proxy_auth REQUIRED
http_access allow password
http_access deny all
В первой строке указывается в качестве фильтра для поиска в LDAP
выражение (&(uid=%s)(accountStatus=active)), где вместо %s в
squid_auth_ldap подставляется имя пользователя. И это имя никак не
эскейпится!
Например, такие два пользователя будут абсолютно идентичны (т.е. смогут
авторизоваться на прокси):
vasya
vasya)(objectClass=*
Если подставить оба эти имени в строку поиска, то фильтр будет
совершенно корректный, поэтому авторизация прокатывает.
Теоретически такие символы как "(",")","&" и т.д. должны вырезаться из
строки, подставляемые в строку фильтра, т.к. они являются
зарезервированными.
Чем это грозит? Ну например, я пытаюсь сделать ограничение по трафику
скачиваемого юзерами через прокси. Определение скачанного трафика
основывается на имени пользователя в логах squid. Если пользователь
сможет вот так каверкать своё имя, он может легко превысить свой лимит,
используя такие псевдологины.
Соотвественно извечный вопрос: что делать?
Версия squid 2.5STABLE4 (собрано из сырцов), ALM2.2.
--
crux
Подробная информация о списке рассылки community