Настройка SQUID авторизации по логину и паролю. NCSA-авторизация

Появилась необходимость настроить Squid 3.5.19 с авторизацией по логину и паролю. Т.е. чтобы при попытке посетить какой либо интернет ресурс пользователю выдавался запрос авторизации, в случае успешной авторизации доступ в интернет предоставлялся, в ином случае, пользователь получал бы отказ доступа. В Squid реализовать такой метод авторизации можно с помощью basic_ncsa_auth.

При данном методе авторизации имя пользователя и пароль будут хранится в текстовом файле. Логин и пароль будем создавать при помощи утилиты htpasswd входящую в состав apache-utils. Пароли будут хранится в хешированном виде.

Итак все действия ниже я буду производить на Ubuntu server 14.04.5 x64 с установленным Squid 3.5.19 по данной статье.

Создание списка пользователей

Установим apache-utils в состав которой входит утилита htpasswd, с помощью который мы будем создавать список пользователей

sudo apt-get install apache2-utils

Создаем файл с паролями:

htpasswd -c /etc/squid/internet_users jakonda
New password: *******
Re-type new password: *******
Adding password for user jakonda

Информация: Ключ с — указывает, что необходимо создать новый файл с паролями. Если файл с таким именем уже существует, то он будет перезаписан.

Посмотрим что у нас получилось

cat /etc/squid/internet_users
jakonda:$apr1$Mgz6BK.x$vkApJxeLf5OoyUb8ibm.d0

Видим что все успешно создалось. jakonda — имя пользователя, а $apr1$Mgz6BK.x$vkApJxeLf5OoyUb8ibm.d0 — хеш пароля.

Добавим нового пользователя в существующий файл:

htpasswd -b /etc/squid/internet_users user1 Aa1234567
Adding password for user user1

Еще раз посмотрим все ли успешно прошло

cat /etc/squid/internet_users
jakonda:$apr1$Mgz6BK.x$vkApJxeLf5OoyUb8ibm.d0
user1:$apr1$zySOW9Lr$JHThT2Vz5hye8jQx8yGBh1

Все отлично, новый пользователь добавлен. С создание файла паролей и добавлением в него пользователей разобрались.

Конфигурация Squid с запросом авторизации по логину и паролю

Теперь необходимо настроить Squid чтобы запрашивался логин и пароль доступа в интернет. Как писал выше, реализовывать это будем с помощью basic_ncsa_auth. Ниже я представляю свой вариант настройки Squid (/etc/squid/squid.conf). Конфиг с комментариями, поэтому разобраться в нем не составит труда.

#################################
# Настройка авторизации в Squid #
#################################
# Параметры авторизации в Squid для доступа в интернет через basic_ncsa_auth
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/internet_users
# Количество одновременных подключений
auth_param basic children 5
# Сообщение в окне запроса авторизации
auth_param basic realm =Jakonda Proxy-Server=
# Время жизни сессий подключившихся пользователей
auth_param basic credentialsttl 8 hours
######################################
# Обслуживаемые прокси-сервером сети #
#####################################
# Правило указывающее доступ в интернет только через авторизацию
acl internet_users proxy_auth REQUIRED
#################################################
# Правила какие порты разрешены прокси-сервером #
#################################################
# Порт SSL для подключений по HTTPS-протоколу
acl SSL_ports port 443
# Список портов, к которым разрешен доступ через прокси-сервер по протоколу HTTP
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 CONNECT method CONNECT
################################################################
# Пути к файлам запрещающих, разрешающих определенные действия #
################################################################
# Путь к списку IP-адресов пользователей, для которых не действуют запреты
acl AdminsIP src "/etc/squid/AdminsIP.txt"
# Путь к черному списку сайтов
acl BlackList dstdomain "/etc/squid/BlackList.txt"
# Путь к списку адресов которым запрещен интернет
acl BlockInetExlWhite src "/etc/squid/BlockInetExlWhite.txt"
# Путь к белому списку сайтов
acl WhiteList dstdomain "/etc/squid/WhiteList.txt"
#########################
# Параметры DNS записей #
#########################
# Список DNS серверов(IP адреса), которые будут использоватся вместо тех, что определены в /etc/resolv.conf файле
dns_nameservers 10.7.7.118
#########################################
# Правила ограниченией доступа клиентов #
#########################################
# Запретить доступ к портам, отсутствующим в списке выше
http_access deny !Safe_ports
# Запретить метод CONNECT не на SSL-порт
http_access deny CONNECT !SSL_ports
# Разрешить только локальное управление кэшем
http_access allow localhost manager
http_access deny manager
# Не ограничивать локальный доступ с сервера
http_access allow localhost
# Не ограничивать доступ администраторам
http_access allow AdminsIP
# Блокировать интернет конкретным пользователям
http_access deny BlockInetExlWhite !WhiteList
# Блокировать запрещенные сайты
http_access deny BlackList
# Правила разрешающего доступ в интернет только прошедшим авторизацию пользователям
http_access allow internet_users
# Блокирует все, что не было разрешено выше
http_access deny all
################################################
# Правила подключений клиентов к прокси-серверу#
################################################
# Подключения через прозрачный порт
http_port 10.7.7.87:3128 intercept options=NO_SSLv3:NO_SSLv2
# Подключение через указания прокси-сервера на строне клиента
http_port 10.7.7.87:3130 options=NO_SSLv3:NO_SSLv2
# Подключение по HTTPS через прозрачный порт с параметрами подставки сертификата
https_port 10.7.7.87:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidca.pem
# Принимаем сертификаты, даже если они не прошли проверку.
always_direct allow all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
# Укажем список блокируемых ресурсов (в файле домены вида .domain.com) и правила блокировки их
acl blocked ssl::server_name "/etc/squid/BlackList.txt"
# Устанавливаем защищенное соединение и считываем заголовок HTTP
acl step1 at_step SslBump1
ssl_bump peek step1
# Закрываем соединение, если клиент заходит на ресурс указанные в blocked
ssl_bump terminate blocked
ssl_bump splice all
sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
#########################################
# Дополнительные параметры конфигурации #
#########################################
# Путь для дискового кеширования
cache_dir aufs /var/spool/squid 20000 49 256
# Путь сохранения дампов аварийного завершения
coredump_dir /var/spool/squid
# Время жизни объектов для протоколов FTP и GOPHER
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
maximum_object_size 61440 KB
minimum_object_size 3 KB
cache_swap_low 90
cache_swap_high 95
# Максимальный размер объекта, сохраняемого в оперативной памяти
maximum_object_size_in_memory 512 KB
memory_replacement_policy lru
# Количество ротаций лог-файлов (0 - отключена ротация, 15 - максимальное количество)
logfile_rotate 0
# E-mail адрес Cache менеджера, для отправки уведомлений и отображении в страницах ошибок
cache_mgr it@test.ru

Обязательно перезапускаем Squid

sudo service squid restart

Теперь проверим работу Squid с запросом авторизации. Запускаем браузер и пытаемся зайти на какой либо сайт. Появится запрос на необходимость авторизации.

squid_ncsa

Вот так просто мы решили задачу. Надеюсь статья будет полезной.

 

Понравилась или оказалась полезной статья, поблагодари автора

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (2 голос(ов), в среднем: 4,50 из 5)
Загрузка...

Всего комментариев: 2 Комментировать

  1. Евгений /

    Вы проверяли выложенный конфиг? При такой конфигурации авторизация не работает. Также тут пропущены некоторые моменты, например, откуда отрылся сертификат для SSL

    1. Жаконда / Автор записи

      Да и более того не одна кратно им пользовался.

Оставить ответ

двенадцать + одиннадцать =