Страница 1 из 1

SQUID, SAMS, схемы авторизации

Добавлено: 2014-10-18 12:07:17
maxim.ishchenko
Доброго времени суток.
Имеется непрозрачный прокси, с установленным Squid 2.7 и SAMS 1.3. Squid настроен на NTLM-авторизацию. Пользователи берутся из Active Directory. Имеется необходимость добавить IP авторизацию, т.к. имеются рабочие станции не входящие в домен. Подскажите пожалуйста, каким образом можно это реализовать, т.к. ранее я со Squid-ом дела не имел. Привожу конфиг Squid (комментарии исключены):

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

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 300
auth_param ntlm keep_alive on
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 300
auth_param basic realm Proxy Server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl _sams_543e75aaf1cf2 src "/etc/squid/543e75aaf1cf2.sams"
acl _sams_5432282885920 proxy_auth "/etc/squid/5432282885920.sams"
acl _sams_543228747c1f2 proxy_auth "/etc/squid/543228747c1f2.sams"
acl _sams_5433bdb7828c1 proxy_auth "/etc/squid/5433bdb7828c1.sams"
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 0.0.0.0/32
acl ntlm proxy_auth REQUIRED
acl localnet src 10.18.0.0/32
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443          # https
acl SSL_ports port 563          # snews
acl SSL_ports port 873          # rsync
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl Safe_ports port 631         # cups
acl Safe_ports port 873         # rsync
acl Safe_ports port 901         # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
acl GET method GET
http_access allow _sams_543e75aaf1cf2
http_access allow _sams_5432282885920
http_access allow _sams_543228747c1f2
http_access allow _sams_5433bdb7828c1
http_access allow ntlm
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access allow CONNECT SSL_ports
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 8080
hierarchy_stoplist cgi-bin ?
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log squid
log_fqdn off
url_rewrite_program /usr/bin/samsredir
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern (Release|Packages(.gz)*)$       0       20%     2880
refresh_pattern .               0       20%     4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
delay_pools 4
delay_class 1 2
delay_class 2 2
delay_class 3 2
delay_class 4 2
delay_access 1 allow _sams_5432282885920
delay_access 1 deny all
delay_parameters 1 0/0 0/0
delay_access 2 allow _sams_543228747c1f2
delay_access 2 deny all
delay_parameters 2 0/0 0/0
delay_access 3 allow _sams_5433bdb7828c1
delay_access 3 deny all
delay_parameters 3 0/0 0/0
delay_access 4 allow _sams_543e75aaf1cf2
delay_access 4 deny all
delay_parameters 4 0/0 0/0
hosts_file /etc/hosts
coredump_dir /var/spool/squid
В файле /etc/squid/543e75aaf1cf2.sams список IP-адресов c которых разрешен доступ к интернету (на данный момент один - для теста), в остальных файлах, созданных средствами SAMS хранятся списки пользоателей Active Directory по группам.

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

10.18.123.2/255.255.255.255

Re: SQUID, SAMS, схемы авторизации

Добавлено: 2014-10-19 0:41:17
Reaper666
А зачем IP-авторизация, тем более, что это даже ни разу не авторизация, а просто разрешение на проход через прокси. У тебя же настроена BASIC-авторизация. Машина не из домена попытается пройти по первой схеме, её не пустит, тогда она будет использовать 2 схему. И пользователю будет предложено ввести логин и пароль для входа, только и того.

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

acl ntlm proxy_auth REQUIRED
И посчет этой строки. У тебя прокси неавторизованных пользователей пропускает или нет? Мне почему-то кажется, что пропускает

Re: SQUID, SAMS, схемы авторизации

Добавлено: 2014-10-19 7:04:07
maxim.ishchenko
Нет, не авторизованных не пропускает, что касается IP-авторизации - шеф сказал, чтобы никаких запросов паролей, вот и пытаюсь сделать

Re: SQUID, SAMS, схемы авторизации

Добавлено: 2014-10-20 22:02:56
Reaper666
Тогда сделай вот так. http_access allow localnet вынеси в начало разрешений, то есть туда, где у тебя начинаются запреты и разрешения для ацеэлек. Сквид увидев, что этим айпишникам можно в инет, выпустит их без вопросов, и остальные разрешения проверять не будет.

Re: SQUID, SAMS, схемы авторизации

Добавлено: 2014-10-21 10:44:33
maxim.ishchenko
Попробовал, результат тот же, более того, после того как добавляю средствами SAMS пользователя с авторизацией по IP, реконфигурирую SAMS, пробую перейти на любую страницу, чтобы проверить - на странице ничего не отображается, т.е. нет даже сообщения о том что страница недоступна или доступ запрещен и в accees.log ничего нет. В cache.log касательно проверяемого IP следующее:

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

2014/10/21 11:36:32| aclMatchIp: '10.18.123.7' found
2014/10/21 11:36:32| aclMatchAclList: returning 1
2014/10/21 11:36:32| aclCheck: checking 'http_access allow _sams_543e75aaf1cf2  '
2014/10/21 11:36:32| aclMatchAclList: checking _sams_543e75aaf1cf2
2014/10/21 11:36:32| aclMatchAcl: checking 'acl _sams_543e75aaf1cf2 src "/etc/squid/543e75aaf1cf2.sams" '
2014/10/21 11:36:32| aclMatchIp: '10.18.123.7' NOT found
2014/10/21 11:36:32| aclMatchAclList: no match, returning 0
2014/10/21 11:36:32| aclCheck: checking 'http_access allow _sams_543e762f6431a  '
2014/10/21 11:36:32| aclMatchAclList: checking _sams_543e762f6431a
2014/10/21 11:36:32| aclMatchAcl: checking 'acl _sams_543e762f6431a src "/etc/squid/543e762f6431a.sams" '
2014/10/21 11:36:32| aclMatchIp: '10.18.123.7' found
2014/10/21 11:36:32| aclMatchAclList: returning 1
2014/10/21 11:36:32| aclCheck: match found, returning 1
2014/10/21 11:36:32| aclCheckCallback: answer=1
2014/10/21 11:36:32| The request CONNECT bay402-m.hotmail.com:443 is ALLOWED, because it matched '_sams_543e762f6431a'
2014/10/21 11:36:32| aclCheckFast: list: (nil)
2014/10/21 11:36:32| aclCheckFast: no matches, returning: 1
2014/10/21 11:36:32| aclCheckFast: list: 0x7f4989703248
2014/10/21 11:36:32| aclMatchAclList: checking _sams_5432282885920
2014/10/21 11:36:32| aclMatchAcl: checking 'acl _sams_5432282885920 proxy_auth "/etc/squid/5432282885920.sams" '
2014/10/21 11:36:32| aclAuthenticated: returning 0 sending authentication challenge.
2014/10/21 11:36:32| aclMatchAclList: no match, returning 0
2014/10/21 11:36:32| aclMatchAclList: checking all
2014/10/21 11:36:32| aclMatchAcl: checking 'acl all src all'
2014/10/21 11:36:32| aclMatchIp: '10.18.123.7' found
2014/10/21 11:36:32| aclMatchAclList: returning 1
2014/10/21 11:36:32| aclCheckFast: list: 0x7f498a246898

Re: SQUID, SAMS, схемы авторизации

Добавлено: 2014-10-21 22:32:48
Reaper666
Тогда предоставь вот что.
1) Как прописан ACL, в котором есть разрешенные IP-адреса.
2) Попробуй не самсом это делать, а руками.
3) Ты рестартишь самс или сквид?
Просто я у тебя вижу icp_access allow localnet, но нигде не вижу, чтобы ты разрешил доступ локальным адресам.
И еще. Судя по логам, разрешенный IP он находит в _sams_543e762f6431a, но в конфиге сквида такой ACL-ки я у тебя не вижу.

Re: SQUID, SAMS, схемы авторизации

Добавлено: 2014-10-23 8:40:35
maxim.ishchenko
ACL с разрешенными адресами:

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

acl _sams_543e762f6431a src "/etc/squid/543e762f6431a.sams"
...
http_access allow _sams_543e762f6431a
В конфиге он отсутствует потому что изменилась машина на которой я тестировал данный способ авторизации.
Указывать IP-адрес в конфиге SQUID явным образом пробовал - результат не изменился:

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

acl workstation src 10.18.123.7
...
http_access allow workstation
...
После внесения изменений делаю:

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

squid -k reconfigure
Помимо этого пробовал перезапускать службы SQUID и SAMS
Подозревал что дело в acl:

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

acl ntlm proxy_auth REQUIRED
Но даже если комментирую данный acl - результата никакого. Впоследствии нашел следующее:

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

В squid.conf добавить строки:

acl NTLM     proxy_auth   REQUIRED
...
http_access      allow        NTLM

Первая строка создает правило, согласно которому:
* Доступом к прокси-серверу управляет внешняя программа (программы), описанная в секции auth_param. Если какая-либо из программ завершается с ошибкой, отсутствует или дает отрицательный ответ, то вызывается следующая по списку, пока не будут просмотрены все присутствующие в файле squid.conf строки auth_param.
* Для доступа к прокси-серверу необходим положительный ответ от программы-аутентификатора (хелпера), иначе доступ предоставлен не будет. Завершение с ошибкой, отсутствие или отрицательный ответ всех хелперов считаются отрицательным результатом и являются основанием для отказа в доступе.
Вторая строка разрешает доступ к прокси только в том случае, если проверка правила NTLM, описанного в первой строке, завершилась успешно.