Настройка 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
[note]Информация: Ключ с — указывает, что необходимо создать новый файл с паролями. Если файл с таким именем уже существует, то он будет перезаписан.[/note]
Посмотрим что у нас получилось
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. свяжитесь пожалуйста со мной )
С чем именно нужна помощь ?
Есть вопрос по squid ни где не могу найти ответ. У меня настроенный сквид, все работает. Встала задача с черным списком, размер файла со списком запрещенных сайтов получился более 300 мегабайт и при подключении его сквид не запускается. Может какой параметр необходимо поправить?
Покажите для начала как вы пытаетесь это все сделать, а дальше будем посмотреть исходя из ваших данных…
Вы проверяли выложенный конфиг? При такой конфигурации авторизация не работает. Также тут пропущены некоторые моменты, например, откуда отрылся сертификат для SSL
Да и более того не одна кратно им пользовался.