Squid linux настройка пользователей

Настройка 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 с запросом авторизации. Запускаем браузер и пытаемся зайти на какой либо сайт. Появится запрос на необходимость авторизации.

Читайте также:  Linux create folder with date

squid_ncsa

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

Источник

Установка и настройка Squid на Ubuntu

Обновлено

Обновлено: 11.11.2021 Опубликовано: 30.07.2020

Используемые термины: Squid, Ubuntu. Данную инструкцию можно также применять для установки SQUID на Debian. В качестве клиентов могут использоваться Windows, Linux, Mac OS и любые браузеры.

Установка и базовая настройка

Если сеть клиентских компьютеров отличается от стандартной (192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8), необходимо ее добавить в acl, например:

* кавычки обязательны
** после необходимо создать файл /etc/squid/acl_localnet и с каждой строчки перечислить разрешенные IP-адреса.
С точки зрения безопасности, лучше закомментировать все подсети, которые не используются в нашей локальной сети, например:

# TAG: acl
.
#acl localnet src 0.0.0.1-0.255.255.255
#acl localnet src 10.0.0.0/8
#acl localnet src 100.64.0.0/10
#acl localnet src 169.254.0.0/16
#acl localnet src 172.16.0.0/12
acl localnet src 192.168.0.0/16
#acl localnet src fc00::/7
#acl localnet src fe80::/10

* в данном примере мы оставили только подсеть 192.168.0.0/16. Разрешаем доступ для локальных сетей, которые заданы опцией acl localnet:

* данную опцию нужно либо раскомментировать, либо вставить выше опции http_access deny all. Настраиваем директорию для кэша:

* где ufs — файловая система (ufs для SQUID является самой подходящей); /var/spool/squid — директория хранения кэша; 4096 — объем пространства в мегабайтах, которое будет выделено под кэш; 32 — количество каталогов первого уровня, которое будет создано для размещение кэша; 256 — количество каталогов второго уровня, которое будет создано для размещение кэша. Останавливаем squid:

Проверка

Настройка Firefox для использования прокси-сервера

Заходим в настройки браузера и настраиваем использование прокси-сервера. Например, в Mozilla Firefox настройки нужно выставить такими: * где 192.168.163.166 — IP-адрес моего прокси-сервера. Теперь открываем сайт 2ip.ru. После его загрузки мы увидим внешний IP-адрес — он должен соответствовать той сети, от которой работает настроенный SQUID.

Читайте также:  Автостарт oracle на linux

Прозрачный прокси

Прозрачный прокси позволяет автоматически использовать прокси-сервер, не настраивая при этом браузер компьютера. Пользователи могут даже не знать, что трафик идет через squid. Открываем конфигурационный файл:

* порт 3128 будет для прозрачного проксирования. Порт 3129 должен быть указан в качестве прокси. И перезапускаем конфигурацию squid:

Для работы прозрачного проксирования. необходимо, чтобы шлюз перекидывал запросы по нужным портам на наш прокси. Это выполняется разными способами в зависмости от реализации шлюза. Для примера, если нашим шлюзом будет наш сервер со squid, то нужно выполнить команды:

Авторизация по логину и паролю

# TAG: auth_param
.
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/auth_users
auth_param basic children 25
auth_param basic realm SQUID PROXY
auth_param basic credentialsttl 3 hours

* где /usr/lib/squid/basic_ncsa_auth — расположение ncsa_auth (в зависимости от системы может находиться в другом каталоге); /etc/squid/auth_users — файл с логинами и паролями; children 25 разрешает 25 одновременных подключений; SQUID PROXY — произвольная фраза для приветствия; credentialsttl 3 hours будет держать сессию 3 часа, после потребуется повторный ввод логина и пароля. Создаем acl для пользователей, которые прошли регистрацию. Сделаем регистрацию обязательной:

Слушаем на определенном интерфейсе

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

* в данном примере squid будет слушать на адресе 192.168.1.15. И перечитываем конфигурацию squid:

Исходящий сетевой интерфейс

На нашем сервере может быть несколько внешний IP-адресов. По умолчанию, все исходящие запросы будут работать через интерфейс со шлюзом по умолчанию. Чтобы иметь возможность работы со squid через разные интерфейсы в настройку вносим:

acl 217_66_157_33 localip 217.66.157.33
tcp_outgoing_address 217.66.157.33 217_66_157_33

acl 217_66_157_34 localip 217.66.157.34
tcp_outgoing_address 217.66.157.34 217_66_157_34

Читайте также:  Print all processes linux

* в данном примере, при подключении к прокси через IP 217.66.157.33, исходящие пакеты будут от IP 217.66.157.33; аналогично для IP 217.66.157.34. Перечитываем конфигурацию squid:

Настройка цепочки прокси-серверов

  • hostname — другой сервер, на который мы будем передавать запрос.
  • type — тип «родства» другого сервера. Могут быть варианты:
    • parent
    • sibling
    • multicast

    * более подробное описание можно найти в самом конфигурационном файле SQUID.

    Если на прокси, к которому мы подключаемся, необходима авторизация, добавляем опцию login:

    cache_peer 10.11.12.13 parent 3128 3128 proxy-only login=loginname:password

    Запрещаем использование нашего прокси-сервера напрямую (не через cache_peer):

    # TAG: never_direct
    .
    never_direct allow all

    Перечитываем конфигурацию squid:

    Источник

Оцените статью
Adblock
detector