squid auth

Ответить
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

squid auth

Сообщение ya »

Аутентификация пользователей в Squid
Не редко возникает ситуация, когда за одним компьютером может работать несколько человек, и необходимо предоставить доступ только после того, как пользователь подтвердит свою личность путем ввода логина и пароля.


Squid поддерживает несколько вариантов аутентификации. Для проверки подлинности задействуется внешняя программа. Этого можно добиться, использовав тип ACL proxy_auth и указав в параметре auth_param (ранее authenticate_program) программу для аутентификации.

acl USERS proxy_auth REQUIRED
http_access allow USERS
http_access deny all
auth_param /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

В первых трех строках объявлен новый acl и при помощи http_access разрешен доступ для всех клиентов, входящих в данный список. Значение REQUIRED указывает на то, что любой пользователь, прошедший аутентификацию, будет допущен. Как вариант, здесь можно прописать конкретные логины. В строке ниже указываем программу для аутентификации и расположение файла паролей. В разных дистрибутивах месторасположение ncsa_auth отличается. Найти его просто:

$ dpkg -L squid3 | grep ncsa_auth

Или для RPM:

# rpm -ql squid | grep nsca_auth

Параметр children позволяет задать максимальное количество процессов, используемых для аутентификации. Небольшое количество процессов может замедлить процесс аутентификации пользователей. Используя realm, можно определить сообщение Squid, выводимое юзеру в окне ввода пароля. В принципе, текст здесь можно ввести и на русском, только вот как он будет выведен пользователю, зависит от настроек браузера. И, наконец, credentialsttl указывает время кэширования пароля.
Файл паролей создается при помощи утилиты htpasswd, которая входит в состав пакета Apache. Создадим пользователя grinder:

$ sudo htpasswd -c /etc/squid/passwd grinder
New password:
Re-type new password:
Adding password for user grinder

Напомню, что ключ ‘–с‘ используется только однажды (для создания файла), в дальнейшем добавляем учетные записи с ключом ‘-b‘. Для удобства пароль можно указывать прямо в командной строке:

$ sudo htpasswd -b /etc/squid/passwd user 123456

Перезапускать Squid при изменении списка пользователей не требуется. Чтобы никто другой не мог получить доступ к файлу паролей, следует установить соответствующие права:

$ sudo chmod 440 /etc/squid/passwd
$ sudo chown squid:squid /etc/squid/passwd

Пробуем подключиться к прокси-серверу. Чтобы не вводить каждый раз логин и пароль, их можно указать в настройках клиентского браузера.

http://system-administrators.info/?p=2543
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: squid auth

Сообщение ya »

ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: squid auth

Сообщение ya »

Так-как авторизация в squid осуществляется при помощи внешней программы, которая со своего стандартного входа считывает "username password" и возвращает "OK" или "ERR", то самым легким способом будет оборачивание нужной Вам программы в скрипт, который будет принимать "username password"-строку, передавать ее по назначению, делать запись в log-файл и возвращать squid-у результат выполнения. Примерный скрипт для auth_param basic:

squid.conf:

auth_param basic /usr/lib/squid/ncsa_auth.script /etc/squid/passwd.file
/usr/lib/squid/ncsa_auth.script:

#!/bin/bash
AUTH_DATE=`date +"%d-%m-%Y %H:%M:%S"`
while read; do
AUTH_STRING="$REPLY"
USERNAME=`echo ${AUTH_STRING} | awk -F' ' '{print $1}'`
RES=`echo ${AUTH_STRING} | /usr/lib/squid/ncsa_auth /etc/squid/passwd`
echo -e $AUTH_DATE'\tusername:'${USERNAME}'\t\tlogin result:\t'$RES >> /var/log/squid/auth.log
echo $RES
done
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: squid auth

Сообщение ya »

auth_param basic program /usr/local/squid/libexec/squid_db_auth --user user --password password --md5 --persist
acl db-auth proxy_auth REQUIRED
http_access allow db-auth
Отдельное внимание стоит уделить основным параметрам хелпера:

--user - имя пользователя БД;
--password - пароль доступа к БД;
--table - таблица в БД, по умолчанию "passwd";
--usercol - столбец с именами пользователей, по умолчанию "user";
--passwdcol - столбец с паролями, по умолчанию"password";
--plaintext - означает, что пароли в базе хранятся в открытом виде;
--md5 - означает, что пароли зашифрованы в md5 без добавления “соли”;
--salt - “соль”, используемая для шифрования пароля;
--persist - оставляет соединение с БД открытым в промежутке между запросами.
По завершении настройки необходимо обновить конфигурацию прокси-сервера командой

squid3 -k reconfigure
Ответить