Установка SAMS2 на FreeBSD 10.1 Squid 3.4
Всё уже поставлено и работает на тестовом сервере, сейчас буду ставить на боевой сервер и, на всякий случай, задокументирую, что делалось, ибо не всё гладко прошло и пришлось править некоторые исходники SAMS'а…
буду ставить всё из портов, кроме sams'а 🙂
ставим samba:
# cd /usr/ports/net/samba41/ # make config-recursive # make install clean
ставим squid:
# cd /usr/ports/www/squid # make config-recursive
включим DELAY_POOLS, чтоб можно было регулировать полосу пропускания.
# make install clean
ставим php:
# /usr/ports/lang/php5 # make config-recursive # make install clean # /usr/ports/lang/php5-extensions # make config
включим GD,LDAP,MYSQL,ZLIB
# make -DBATCH install clean
конфигурируем php:
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
в php.ini добавим строку
date.timezone = Europe/Moscow
где нибудь после [date].
ставим apache:
# cd /usr/ports/www/apache24 # make config-recursive # make install clean # cd /usr/ports/www/mod_php5 # make config # make install clean
ставим mysql:
# cd /usr/ports/databases/mysql56-server # make install clean
создадим конфиг для mysql в файле /usr/local/etc/my.cnf
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES character-set-server=utf8 collation-server=utf8_general_ci thread_concurrency = 8 query_cache_limit = 2M query_cache_size = 16M
конфиг для samba в файле /usr/local/etc/smb4.conf:
[global] workgroup = DOMAIN_NAME server string = Proxy Server security = ads hosts allow = 192.168. 127. load printers = no log file = /var/log/samba4/log.%m max log size = 50 realm = DOMAIN_NAME.LOCAL domain master = no preferred master = no dns proxy = no winbind separator = / winbind use default domain = yes winbind uid = 10000-20000 winbind gid = 10000-20000 winbind enum users = yes winbind enum groups = yes winbind refresh tickets = yes winbind offline logon = true winbind cache time = 600
конфиг /usr/local/etc/squid/squid.conf
auth_param ntlm program /usr/local/bin/ntlm_auth –diagnostics –helper-protocol=squid-2.5-ntlmssp auth_param ntlm children 20 auth_param basic program /usr/local/bin/ntlm_auth –helper-protocol=squid-2.5-basic auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours auth_param basic casesensitive off acl authusers proxy_auth REQUIRED http_access allow authusers http_port 3128 coredump_dir /var/squid/cache 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 # TAG: acl # TAG: url_rewrite_access # TAG: url_rewrite_program # TAG: url_rewrite_children # TAG: delay_pools # TAG: delay_class # TAG: delay_access # TAG: delay_parameters # TAG: http_access # TAG: http_access2 # TAG: icp_access # http_access deny all
в /etc/rc.conf дописываем
samba_server_enable=”YES” squid_enable=”YES” mysql_enable=”YES” apache24_enable=”YES” samsd_enable=”YES”
включимся в домен:
# net join -U Administrator
запустим самбу:
# /usr/local/etc/rc.d/samba_server start
проверим:
# wbinfo -p
Ping to winbindd succeeded
# wbinfo -t
checking the trust secret for domain DOMAIN via RPC calls succeeded
# wbinfo -u
чтоб у squid был доступ к winbind и NTLM работало:
# pw group add winbind_priv # pw user mod squid -G winbind_priv # chown -R :winbind_priv /var/db/samba4/winbindd_privileged/ # /usr/local/etc/rc.d/squid start
должно уже работать и пускать всех доменных пользователей
ставим sams:
Источник: http://www.proffit-serv.ru/index.php/article/help-blog-menu/161-sams2-freebsd
Настройка SQUID на FreeBSD
SQUID – прокси сервер для выхода в интернет.
Установка:
# cd /usr/ports/www/squid# make install cleanНастройки все по умолчанию.После установки, SQUID настроен на раздачу интернета через порт 3128, без авторизации.Перед запуском необходимо создать каталог для кэш, для чего нужно выполнить команду:
# squid –z
Запуск:
# /usr/local/etc/rc.d/squid start
Добавим SQUID в автозагрузку, для этого достаточно внести изменение в файл /etc/rc.conf , добавив строчку – squid_enable=”YES”
Это минимальные настройки, которые позволяют сразу начать работать программе и раздавать интернет, с указанием необходимых настроек подключения в браузере(ip прокси сервера и порт)
Для более гибкого изменения настроек, существует файл конфигурации squid.conf, который находится в каталоге /usr/local/etc/squid/
Настройка авторизации через Имя/Пароль
Один из способов – это использования списка, который содержит себе перечень всех пользователей, которым разрешен доступ в интернет. Список этот нужно создать с помощью утилиты htpasswd, только для того понадобиться установить Apache.
Далее добавляем пользователей и создаем новый список:
htpasswd -b –c /usr/local/etc/passwd admin admin
Ключ –с создает новый фал, при последующем добавлении пользователя, этот ключ не используется.
htpasswd -b /usr/local/etc/passwd user12345 (user – имя, 12345 – пароль)
В файле squid.
conf раскомментируем и отредактируем строчку (у меня в конфиге было написано /usr/local/libexec/ncsa_auth, пришлось исправить на /usr/local/libexec/squid/ncsa_auth):
auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/passwd
В этой строчке показано, что будет запущена программа ncsa_auth, которая читает файл паролей passwd.Раскоментирум и добавим следующие строки:
aclpasswordproxy_authREQUIRED
acl – это списки доступа, как от источника так и к источнику.
В этом примере создается список доступа, который имеет названиеpassword , указывающий на то, что все подключения должны проходить через авторизацию Имя/Пароль.
Надо отметить только то, что сами списки не влияют на работу всей системы, пока они не будут включены с помощью оператора http_access с указанием параметра allow (разрешить) или deny (запретить).
http_access allow password
Файл конфигурации читается сверху вниз, и от того как расположены списки и операторы, будет зависеть работа SQUID.По умолчанию, как уже писалось, доступ к интернет разрешен для всех компьютеров в локальной сети, о чем свидетельствуют следующие строки в файле конфигурации:*************#Списки доступа, указывающие какой сети возможен выход через прокси сервер.acl localnet src 10.0.0.0/8acl localnet src 172.16.0.0/12acl localnet src 192.168.0.0/16
#Оператор, разрешающий список под назавние localnet
http_access allow localnet
Как уже писалось, что от того, как расположены списки доступа и операторы, можно строить разные способы работы SQUID.
К примеру, если нужно одному компьютеру предоставить беспарольный доступ в интернет, а у всех остальных требовать ввода имени и пароля, то это можно сделать следующем образом:
auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/passwd
acl password proxy_auth REQUIRED
Источник: http://ddr64.ru/nastrojka-squid-na-freebsd/
Squid3 на сервере FreeBSD 10.0 и доменные пользователи. Часть 2 Дневник Максим Боголепов
Дело в том, что при ldap-аутентификации на squid доменный пользователь вынужден постоянно вводить свой логин и пароль в случаях, если сам squid был перезагружен, или пользователь закрыл и снова открыл окно браузера. В случае с Firefox и даже Internet Explorer все не так критично, т.
к. браузер запоминает эту пару для аутентификации, и пользователю необходимо просто нажать на кнопочку подтверждения OK.
А вот в случае Opera, Chrome и сделанного на его основе Yandex-браузера, логин и пароль каждый раз приходится полностью вводить заново… Согласитесь, это вызывает раздражение у пользователей.
Вот тут-то мне и пришлось задуматься, как сделать авторизацию доменных пользователей “тихой”, таким образом, чтобы проверяемые credentials брались из их текущей сессии в windows. В этом мне помогла аутентификация с помощью kerberos.
В squid3 существует поддержка negotiate аутентификации с помощью kerberos. Для этого необходимо при установке squid отметить опцию AUTH_KERB, как показано на рисунке выбора опций ниже. Так же, мной осталась отмечена возможность аутентификации по ldap (опция AUTH_LDAP), для определения принадлежности пользователей к той или иной группе, существующей в AD.
Итак, начнем. На момент написания статьи имеем следующее:
# uname -a
FreeBSD squid.domain.ru 10.0-RELEASE FreeBSD 10.0-RELEASE #0: Wed Mar 5 13:09:19 MSK 2014 [email protected]:/usr/obj/usr/src/sys/MYKERNEL amd64
# cd /usr/ports/www/squid
# less distinfo
SHA256 (squid3.4/squid-3.4.9.tar.xz) = 0a0f13bc745437e78df14c31828d9324979b1f2f940b9ce8c9d5bbb7d5fcaa7c
SIZE (squid3.4/squid-3.4.9.tar.xz) = 2160416
Произведем установку squid:
# portsnap fetch update
# cd /usr/ports/www/squid
# make config
Отметьте необходимые опции:
И произведите собственно установку:
# make install clean
Все необходимые хелперы для аутентификации вы обнаружите по пути:
# ls -Al /usr/local/libexec/squid/
total 1156
-r-xr-xr-x 1 root wheel 4150 13 ноя 16:30 basic_db_auth
-r-xr-xr-x 1 root wheel 10401 13 ноя 16:30 basic_fake_auth
-r-xr-xr-x 1 root wheel 16277 13 ноя 16:30 basic_getpwnam_auth
-r-xr-xr-x 1 root wheel 36937 13 ноя 16:30 basic_ldap_auth
-r-xr-xr-x 1 root wheel 81439 13 ноя 16:30 basic_msnt_auth
-r-xr-xr-x 1 root wheel 3960 13 ноя 16:30 basic_msnt_multi_domain_auth
-r-xr-xr-x 1 root wheel 43101 13 ноя 16:30 basic_ncsa_auth
-r-xr-xr-x 1 root wheel 24979 13 ноя 16:30 basic_pam_auth
-r-xr-xr-x 1 root wheel 1466 13 ноя 16:30 basic_pop3_auth
-r-xr-xr-x 1 root wheel 38266 13 ноя 16:30 basic_radius_auth
-r-xr-xr-x 1 root wheel 9348 23 окт 14:59 basic_smb_auth
-r-xr-xr-x 1 root wheel 2229 23 окт 14:59 basic_smb_auth.sh
-r-xr-xr-x 1 root wheel 285751 13 ноя 16:30 cachemgr.cgi
-r-xr-xr-x 1 root wheel 43193 13 ноя 16:30 digest_file_auth
-r-xr-xr-x 1 root wheel 97041 13 ноя 16:30 diskd
-r-xr-xr-x 1 root wheel 25082 13 ноя 16:30 ext_file_userip_acl
-r-xr-xr-x 1 root wheel 38879 13 ноя 16:30 ext_ldap_group_acl
-r-xr-xr-x 1 root wheel 22421 13 ноя 16:30 ext_time_quota_acl
-r-xr-xr-x 1 root wheel 19906 13 ноя 16:30 ext_unix_group_acl
-r-xr-xr-x 1 root wheel 5005 23 окт 14:59 ext_wbinfo_group_acl
-r-xr-xr-x 1 root wheel 5505 13 ноя 16:30 helper-mux.pl
-r-xr-xr-x 1 root wheel 14828 13 ноя 16:30 log_file_daemon
-r-xr-xr-x 1 root wheel 60388 13 ноя 16:30 negotiate_kerberos_auth
-r-xr-xr-x 1 root wheel 24960 13 ноя 16:30 negotiate_kerberos_auth_test
-r-xr-xr-x 1 root wheel 26841 13 ноя 16:30 negotiate_wrapper_auth
-r-xr-xr-x 1 root wheel 34843 13 ноя 16:30 ntlm_fake_auth
-r-xr-xr-x 1 root wheel 119401 13 ноя 16:30 ntlm_smb_lm_auth
-r-xr-xr-x 1 root wheel 2428 13 ноя 16:30 storeid_file_rewrite
-r-xr-xr-x 1 root wheel 8014 13 ноя 16:30 unlinkd
-r-xr-xr-x 1 root wheel 10473 13 ноя 16:30 url_fake_rewrite
-r-xr-xr-x 1 root wheel 2251 13 ноя 16:30 url_fake_rewrite.sh
Теперь необходимо провести некоторые важные подготовительные работы.
Примем, наш домен – domain.ru (уровень домена и леса – Windows Server 2003, хотя в моей сети и присутствует вторичный dc под управлением Windows Server 2008 R2). Сервер FreeBSD 10.0, на котором мы конфигурируем squid – squid.domain.ru, имеющий ip — 192.168.0.
3. Имя пользователя в нашем домене, от имени которого будут проверяться credentials доменных юзеров – squid с паролем squid.
Версия heimdal (включен в FreeBSD по умолчанию) – свободной реализации Kerberos 5, имеющей совместимость с MIT krb5 и обратную совместимость с krb4:
# kinit –version
kinit (Heimdal 1.5.2)
Copyright 1995-2011 Kungliga Tekniska Hц╤gskolan
Send bug-reports to [email protected]
Хотя все описанное далее справедливо и для версии Heimdal 1.1.0 на FreeBSD 8.4, что лично мной проверено.
192.168.0.2 и 192.168.0.21 — IP адреса двух домен-контроллеров (dc.domain.ru и dc2.domain.ru), на обоих запущены сервисы DNS.
Обязательно приведите сетевые настройки своего сервера FreeBSD к виду:
файл /etc/resolv.conf:
# less /etc/resolv.conf
domain domain.ru
search domain.ru
nameserver 192.168.0.2
nameserver 192.168.0.21
файл /etc/hosts:
# less /etc/hosts
127.0.0.1 localhost.domain.ru localhost
192.168.0.3 squid.domain.ru squid
192.168.0.3 squid.domain.ru.
Проверьте вывод команды hostname:
# hostname
squid.domain.ru
Если вывод вас не устроит, внесите в /etc/rc.conf следующую строку:
# less /etc/rc.conf | grep hostname
hostname=”squid.domain.ru”
DNS вашего домена должен иметь прямую — A и обратную — PTR записи, описывающие ваш сервер FreeBSD, на котором вы настраиваете squid (проверяем запросом к одному из dns-серверов):
# host squid 192.168.0.2
Using domain server:
Name: 192.168.0.2
Address: 192.168.0.2#53
Aliases:
squid.domain.ru has address 192.168.0.3
# host 192.168.0.3 192.168.0.2
Using domain server:
Name: 192.168.0.2
Address: 192.168.0.2#53
Aliases:
3.0.168.192.in-addr.arpa domain name pointer squid.domain.ru.
Думаю, что излишне, но все же: ваш домен должен иметь синхронизацию с единым сервером времени – и dc, и сервер FreeBSD, и клиентские компьютеры пользователей.
Последнее допущение: на вашем сервере FreeBSD нет других работающих сервисов, использующих kerberos.
Приведем настройку файла /etc/krb5.conf к следующему виду (источник — wiki.squid-cache.org):
# less /etc/krb5.conf [libdefaults] default_realm = DOMAIN.RU dns_lookup_kdc = no dns_lookup_realm = no ticket_lifetime = 24h default_keytab_name = /usr/local/etc/squid/squid.keytab default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 [realms] DOMAIN.RU = { kdc = 192.168.0.2 kdc = 192.168.0.21 admin_server = 192.168.0.2 default_domain = domain.ru } [domain_realm] .domain.ru = DOMAIN.RU domain.ru = DOMAIN.RU
Где /usr/local/etc/squid/squid.keytab – кейтаб для сервера FreeBSD, где мы настраиваем squid, для осуществления проверки credentials пользователей на нашем dc.
Сам кейтаб мы сформируем на одном из наших домен-контроллеров, чтобы не использовать ничего лишнего с сервера FreeBSD.
Я получил кейтаб на сервере Windows Server 2003 R2 при помощи команды ktpass, входящей в состав Support Tools со второго установочного диска.
Идем на dc, запускаем cmd.exe и вводим волшебные символы в одну строку:
C:>ktpass -princ HTTP/[email protected] -mapuser squid -crypto RC4-HMAC-NT -pass “squid” -ptype KRB5_NT_PRINCIPAL -out C:squid.keytab
— где:
- -princ — имя сервиса и принципала;
- -mapuser — аккаунт принципала;
- -crypto — используемый алгоритм шифрования;
- -pass — пароль к аккаунту принципала;
- -ptype — тип запроса от принципала;
- -out — файл для вывода кейтаба.
Справку по данной команде вы получите по ktpass -?. Обратите внимание на синтаксис в данной команде. Мне пришлось много экспериментировать, прежде чем удалось сделать работоспособный кейтаб. Он был получен именно с данными ключами.
Вывод работы команды ktpass для получения кейтаба:
C:>ktpass -princ HTTP/[email protected] -mapuser squid -crypto RC4-HMAC-NT -pass “squid” -ptype KRB5_NT_PRINCIPAL -out C:squid.keytab
Targeting domain controller: dc.domain.ru
Using legacy password setting method
Successfully mapped HTTP/squid.domain.ru to squid.
Key created.
Output keytab to C:squid.keytab:
Keytab version: 0x502
keysize 69 HTTP/[email protected] ptype 1 (KRB5_NT_PRINCIPAL) vno 24 etype 0x17 (RC4-HMAC) keylength 16 (0x8996736ca369980aeaa1ca641c8a2d6a)
Обратите внимание, имя пользователя squid для входа в домен поменяется на:
Теперь переместите (рекомендуется сделать это “секурно”) полученный кейтаб с домен-контроллера на ваш сервер FreeBSD и положите в каталог /usr/local/etc/squid, или в место, которое вы указали в вашем /etc/krb5.conf. Учтите одно, если вы не обозначили файл кейтаба, как это сделал я, будет приниматься во внимание кейтаб по умолчанию, который должен иметь имя и располагаться: /etc/krb5.keytab.
Просмотреть содержимое вашего файла кейтаб вы можете командой:
# ktutil -k /usr/local/etc/squid/squid.keytab list
/usr/local/etc/squid/squid.keytab:
Vno Type Principal Aliases 24 arcfour-hmac-md5 HTTP/[email protected]
Теперь вы можете попробовать получить билетик инициализации от вашего домена. Делается это командой:
# kinit -k -t /usr/local/etc/squid/squid.keytab HTTP/squid.domain.ru
Если на этом этапе у вас ничего не получилось (выдает какие-либо ошибки), в дальнейшем у вас ничего не выйдет. Проверено… 🙁
Просмотреть содержимое билетика вы можете командой:
# klist
Credentials cache: FILE:/tmp/krb5cc_0 Principal: HTTP/[email protected] Issued Expires Principal
Nov 10 03:12:04 2014 Nov 10 13:12:04 2014 krbtgt/[email protected]
Так как данный билетик нам больше не пригодится, уничтожьте его командой kdestroy и проверьте:
# kdestroy
# klist
klist: No ticket file: /tmp/krb5cc_0
Наконец, нам необходимо указать squid’у, где он должен брать кейтаб. Это очень важная опция для запуска! Поместите в ваш /etc/rc.conf следующие строки:
# less /etc/rc.conf | grep squid
squid_enable=”YES”
squid_krb5_ktname=”/usr/local/etc/squid/squid.keytab”
— где squid_krb5_ktname – файл, указанный вами в вашем /etc/krb5.conf, куда вы положили полученный с домен-контроллера кейтаб.
Теперь перейдем непосредственно к конфигурированию squid. Учтите, что negotiate авторизация должна идти самой первой, перд basic (если вы таковую будете использовать, как я). Здесь приведен необходимый минимум в части касающейся:
# nano -w /usr/local/etc/squid/squid.conf
#прописываем аутентификатор auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -d -r -s HTTP/[email protected] auth_param negotiate children 10 startup=5 idle=1 auth_param negotiate keep_alive on
#задаем acl SQUID для которой требуется аутентификация acl SQUID proxy_auth REQUIRED
#разрешаем полный доступ в интернет прользователям, прошедшим аутентификацию http_access allow SQUID
#запрещаем всем остальным доступ к кэшу http_access deny all
#указываем порт для работы squid http_port squid.domain.ru:3128
#видимое имя хоста visible_hostname squid.domain.ru
#расположение файла hosts hosts_file /etc/hosts
Разберем аутентификатор:
- -d — включает полный дебаг (без него при отладке очень сложно понять, что к чему);
- -r — в логах access.log убирает от авторизовавшегося пользователя его REALM (@DOMAIN.RU);
- -s — имя сервиса принципала.
В остальном настройка аналогична тому, как она была произведена в прошлой статье: Настройка кеширующего сервера squid3 на компьютере под управлением FreeBSD 10.0 совместно с доменными пользователями.
Теперь наконец-то можно произвести запуск squid и осуществить мониторинг его работы:
# /usr/local/etc/rc.d/squid start
# tail -f /var/squid/logs/access.log
# tail -f /var/squid/logs/cache.log
Напоследок приведу свой полный рабочий файл конфигурации кеширующего сервера squid (все кавычки – прямые “):
# less /usr/local/etc/squid/squid.conf | grep -v “^#” auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -r -s HTTP/[email protected] auth_param negotiate children 10 startup=5 idle=1 auth_param negotiate keep_alive on
auth_param basic program /usr/local/libexec/squid/basic_ldap_auth -R -D [email protected] -W /usr/local/etc/squid/scrt -b “DC=domain,DC=ru” -f “sAMAccountName=%s” -h 192.168.0.2 auth_param basic children 10 startup=5 idle=1 auth_param basic realm Welcome! Please, enter your password auth_param basic credentialsttl 12 hours auth_param basic casesensitive off acl localnet src 192.168.0.0/24 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 443 # https acl Safe_ports port 1025-65535 # unregistered ports http_access deny !Safe_ports acl CONNECT method CONNECT http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager http_access deny to_localhost http_access allow localhost acl QUERY urlpath_regex cgi-bin ? cache deny QUERY acl SQUID proxy_auth REQUIRED external_acl_type ldap_users ttl=1200 %LOGIN /usr/local/libexec/squid/ext_ldap_group_acl -R -b “DC=domain,DC=ru” -f “(&(sAMAccountName=%v) (memberOf=cn=%a,OU=Squid,DC=domain,DC=ru))” -D [email protected] -W /usr/local/etc/squid/scrt -h 192.168.0.2 acl squid.denyall external ldap_users squid.denyall http_access deny all squid.denyall acl squid.exclusive external ldap_users squid.exclusive http_access allow all squid.exclusive http_access allow SQUID http_access deny all http_port squid.domain.ru:3128 cache_dir ufs /var/squid/cache/squid 100 16 256 coredump_dir /var/squid/cache/squid access_log stdio:/var/squid/logs/access.log squid cache_log /var/squid/logs/cache.log cache_store_log none 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 visible_hostname squid.domain.ru error_default_language ru error_directory /usr/local/etc/squid/errors/ru error_log_languages on hosts_file /etc/hosts forwarded_for off
Basic аутентификация используется мной для доступа к интернету через squid пользователей с компьютеров не входящих в домен. На таких компьютерах необходимо ввести логин и пароль какого-нибудь доменного пользователя.
Одно важное замечание: в настройках браузера в качестве прокси-сервера теперь необходимо указывать не его ip, а FQDN (Fully Qualified Domain Name — «полностью определённое имя домена»). Т.е. не 192.168.0.3, а squid.domain.ru. Чтобы осуществить данную настройку через AD, сделайте так:
Откройте оснастку Group Policy Management, выберите необходимую Group Policy Objects (в моем случае – test), Edit -> Конфигурация пользователя -> Конфигурация Windows -> Настройка Internet Explorer -> Подключение и внесите свои настройки (squid.domain.ru, порт 3128):
Вот теперь – все!
P.S. у вас могут возникнуть трудности с доступом к интернету при kerberos аутентификации с компьютеров под управлением Windows XP. Да, таковых в моей сети пока еще тоже предостаточно. Дело в том, что даже при наличии в сети NTP-сервера для синхронизации времени всех устройств, она (синхронизация) не выполняется в должной мере на Windows XP.
Microsoft благополучно прекратила поддержку этой операционной системы, поэтому обновление timezone для нее не было выпущено после последнего закона о переходе на “зимнее время” в России. Чтобы исправить сие недоразумение, вам необходимо вручную переставить временную зону.
Например для MSK выставить в свойствах даты и времени зону для Калининграда (GMT+03:00):
После выставления временной зоны таким образом и синхронизации времени с вашим ntp сервером в сети, squid будет авторизовывать пользователей с такого компьютера под управлением Windows XP.
______
небольшое дополнение: если вы не желаете хранить пароль для доменного пользователя, от имени которого проверяется наличие пользователя или группы вашего домена, во внешнем файле (в моём примере – файл /usr/local/etc/squid/scrt), вы можете обозначить этот пароль непосредственно в файле настройки squid при объявлении хелперов с помощью опции -w. соответствующие строки конфигурационного файла из моего примера будут иметь вид:
…
auth_param basic program /usr/local/libexec/squid/basic_ldap_auth -R -D [email protected] -w password -b “DC=domain,DC=ru” -f “sAMAccountName=%s” -h 192.168.0.2
…
external_acl_type ldap_users ttl=1200 %LOGIN /usr/local/libexec/squid/ext_ldap_group_acl -R -b “DC=domain,DC=ru” -f “(&(sAMAccountName=%v) (memberOf=cn=%a,OU=Squid,DC=domain,DC=ru))” -D [email protected] -w password -h 192.168.0.2
…
Источник: http://www.maxblogs.ru/articles/squid3-na-servere-freebsd-100-i-domennye-polzovateli-chast-2
Установка SAMS2 на FreeBSD 10.1, Squid 3.4 с NTLM авторизацией
Всё уже поставлено и работает на тестовом сервере, сейчас буду ставить на боевой сервер и, на всякий случай, задокументирую, что делалось, ибо не всё гладко прошло и пришлось править некоторые исходники SAMS'а… буду ставить всё из портов, кроме sams'а 🙂 ставим samba:
# cd /usr/ports/net/samba41/
# make config-recursive
# make install clean
ставим squid:
# cd /usr/ports/www/squid
# make config-recursive включим DELAY_POOLS, чтоб можно было регулировать полосу пропускания.
# make install clean
ставим php:
# /usr/ports/lang/php5
# make config-recursive
# make install clean
# /usr/ports/lang/php5-extensions
# make config
включим GD,LDAP,MYSQL,ZLIB
# make -DBATCH install clean конфигурируем php:
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
в php.ini добавим строку
date.timezone = Europe/Moscow
где нибудь после [date].
ставим apache:
# cd /usr/ports/www/apache24
# make config-recursive
# make install clean
# cd /usr/ports/www/mod_php5
# make config
# make install clean
ставим mysql:
# cd /usr/ports/databases/mysql56-server
# make install clean создадим конфиг для mysql в файле /usr/local/etc/my.cnf
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
character-set-server=utf8
collation-server=utf8_general_ci
thread_concurrency = 8
query_cache_limit = 2M
query_cache_size = 16M
конфиг для samba в файле /usr/local/etc/smb4.conf:
[global]
workgroup = DOMAIN_NAME
server string = Proxy Server
security = ads
hosts allow = 192.168. 127.
load printers = no
log file = /var/log/samba4/log.%m
max log size = 50
realm = DOMAIN_NAME.LOCAL
domain master = no
preferred master = no
dns proxy = no
winbind separator = /
winbind use default domain = yes
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind refresh tickets = yes
winbind offline logon = true
winbind cache time = 600
конфиг /usr/local/etc/squid/squid.conf
auth_param ntlm program /usr/local/bin/ntlm_auth –diagnostics –helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 20
auth_param basic program /usr/local/bin/ntlm_auth –helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl authusers proxy_auth REQUIRED
http_access allow authusers
http_port 3128
coredump_dir /var/squid/cache
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
# TAG: acl
# TAG: url_rewrite_access
# TAG: url_rewrite_program
# TAG: url_rewrite_children
# TAG: delay_pools
# TAG: delay_class
# TAG: delay_access
# TAG: delay_parameters
# TAG: http_access
# TAG: http_access2
# TAG: icp_access
#
http_access deny all
в /etc/rc.conf дописываем
samba_server_enable=”YES”
squid_enable=”YES”
mysql_enable=”YES”
apache24_enable=”YES”
samsd_enable=”YES”
включимся в домен:
# net join -U Administrator
запустим самбу:
# /usr/local/etc/rc.d/samba_server start
проверим:
# wbinfo -p
Ping to winbindd succeeded
# wbinfo -t
checking the trust secret for domain DOMAIN via RPC calls succeeded
# wbinfo -u
чтоб у squid был доступ к winbind и NTLM работало:
# pw group add winbind_priv
# pw user mod squid -G winbind_priv
# chown -R :winbind_priv /var/db/samba4/winbindd_privileged/
# /usr/local/etc/rc.d/squid start
должно уже работать и пускать всех доменных пользователей
ставим sams:
# cd ~
Источник: http://www.grayfort.com/2015/01/sams2-freebsd-101-squid-34-ntlm.html
Установка и настройка прокси-сервера Squid с kerberos авторизацией на ОС FreeBSD
Для организации кеширования web-трафика необходимо использовать прокси сервер. В данной статье пойдет речь об установке и настройке ОС FreeBSD и прокси сервера Squid для работы в доменной среде Windows.
1. Устанавливаем на ПК (физический или виртуальный) ОС FreeBSD последней доступной версии. Номера версии программ не указываю намеренно, т.к. они постоянно обновляются. Процесс установки
ОС в данную статью не входит, т.к. он тривиально прост и доступен любому системному администратору (не сложнее установки Windows).
2. Из портов устанавливаем дополнительное ПО:
- Apache
- PHP со всеми доступными модулями
- Krb5
- Logrotate
- MySql клиент и сервер
- Openldap-sasl-client
- Samba
- Winbind
- Squid
- SquidGuard
Все связанные программы подтянутся автоматически во время установки. После этого приступаем к самой настройке работоспособности сервера.
Настраиваем DNS
Для правильной настройки DNS правим файл /etc/resolv.conf Содержание файла:
domain ВАШ ЛОКАЛЬНЫЙ ДОМЕН
search ВАШ ЛОКАЛЬНЫЙ ДОМЕН
nameserver ВАШ ЛОКАЛЬНЫЙ DNS сервер
nameserver ВАШ ЛОКАЛЬНЫЙ DNS сервер
Настройка синхронизации времени
Для корректной работы авторизации доменных пользователей необходимо синхронизировать сервер с временем контроллера домена. Настройки производятся в файле /etc/ntp.conf. По большому счету особых настроек производить не нужно. Достаточно вписать в раздел списка источников времени адрес контроллера домена (можно всех):
server ВАШ КОНТРОЛЛЕР ДОМЕНА
Остальные источники закомментировать.
В файл /etc/rc.conf добавляем строку:
ntpd_enable=”YES”
Запускаем сервер времени: /etc/rc.d/ntpd start
Настройка Samba
Переходим в каталог /usr/local/etc
- Нас интересует файл smb4.conf. Если такого файла нет, то создаем.
- Содержимое файла:
[global]
workgroup = ВАШ ДОМЕН
server string = WebProxy
security = ADS
hosts allow = ВАШИ ВНУТРЕННИИ СЕТИ 127.
log file = /var/log/samba4/log.%m
max log size = 500
password server = FGDN КОНТРОЛЛЕРА ДОМЕНА
realm = ВАШ ДОМЕН
kerberos method = secrets and keytab
client signing = yes
client use spnego = yes
dns proxy = no
unix charset = koi8-r
dos charset = cp866
winbind use default domain = yes
winbind uid = 10000-15000
winbind gid = 10000-15000
winbind enum users = yes
winbind enum groups = yes
client NTLMv2 auth = yes
winbind refresh tickets = yes - В файл /etc/rc.conf добавляем строчку: samba_server_enable=”Yes”
- Запускаем сервер командой: /usr/local/etc/rc.d/samba_server start
Настройка Kerberos
- Открывакм файл /etc/krb5.conf Если такого файла нет, то создаем.
- Содержимое файла:
[libdefaults]
default_realm = ВАШ ДОМЕН
clockskew = 300
dns_lookup_kdc = true
dns_lookup_realm = true
ticket_lifetime = 24hrenew_lifetime = 7d
forwardable = yes
default_keytab_name = /usr/local/etc/squid/squid.keytab
# for Windows 2008 with AES
default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5[realms]
ВАШ ДОМЕН = {
kdc = FQDN ПЕРВОГО КОНТРОЛЛЕРА ДОМЕНА
kdc = FQDN ВТОРОГО КОНТРОЛЛЕРА ДОМЕНА
admin_server = FQDN КОНТРОЛЛЕРА ДОМЕНА
kpasswd_server = FQDN КОНТРОЛЛЕРА ДОМЕНА
default_domain = ВАШ ДОМЕН
}[domain_realm]
.ваш домен = ВАШ ДОМЕН
ваш домен = ВАШ ДОМЕН[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmin.log - В домене создаем пользователя webproxyuser с паролем webproxysquid
- Заходим в консоль любого контроллера домена. Открываем сомандную строку с правами администратора. Создаем файл keytab с помощью команды: ktpass -princ HTTP/FGDN вашего прокси-сервера@ваш домен -mapuser webproxy@ваш домен -crypto rc4-hmac-nt -pass “webproxysquid” -ptype KRB5_NT_PRINCIPAL -out squid.keytab
- Копируем полученный файл в каталог /usr/local/etc/squid
- Задаем права доступа на скопированный файл: chown squid:squid /usr/local/etc/squid/squid.keytab
Настройка SQUID
Все настройки работы прокси-сервера Squid осуществляются в файле /usr/local/etc/squid/squid.conf.
Что требуется для доменной авторизации:
- Настраиваем методы авторизации на прокси-сервере:
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -r -s HTTP/FQDN прокси-сервера@ВАШ.ДОМЕН
auth_param negotiate children 100 startup=10 idle=5
auth_param negotiate keep_alive onЭти три строчки относятся к “kerberos авторизации”. Данный тип авторизации необходим доменным пользователям Windows для того, что бы пользователю не выдавалось окно авторизации при каждом открытии браузера. Т.е., так называемая, прозрачная авторизация.auth_param basic program /usr/local/libexec/squid/basic_ldap_auth -R -D adread@ваш.домен -W /usr/local/etc/squid/scrt -b “DC=ваш,DC=домен” -f “sAMAccountName=%$s” -h ИП АДРЕСС КД
auth_param basic children 30 startup=5 idle=1
auth_param basic realm Enter your password
auth_param basic credentialsttl 12 hours
auth_param basic casesensitive off
Это, так называемая, “basic” авторизация. Необходима для работы на устройствах, не входящих в домен. При открытии браузера выдается окно, в котором необходимо ввести имя и пароль пользователя из домена, имеющего право доступа в интернет. Для функционирования необходимо в домене создать пользователя с логином adread. Этот пользователь необходим для того, что бы Squid смог сопоставить вводимое имя на соответствие с пользователем домена. Пароль данного пользователя записывается в файл /usr/local/etc/squid/scrt. На файл scrt назначаются права 640. - Активируем доступ доменным пользователем, описываем часы и дни рабочего времени:
acl DOMAIN_USERS proxy_auth REQUIRED
acl WorkTime time MTWHF 09:00-18:00external_acl_type ldap_users ttl=1200 %LOGIN /usr/local/libexec/squid/ext_ldap_group_acl -R -b “DC=ваш,DC=домен” -f “(&(sAMAccountName=%v) (memberOf:1.2.840.113556.1.4.1941:=cn=%a,OU=WebProxy,DC=ваш,DC=домен))” -D adread@ваш.домен -W /usr/local/etc/squid/scrt -h FQDN КД
Немного подробнее о последней строке. Здесь происходит проверка наличия пользователя АД в группах и подгруппах опреденного контейнера. В нашем случае в АД создан контейнер “WebProxy”, в котором созданы группы с которыми оперирует Squid.
Пришлось создать отдельный контейнер, т.к. возникла некая несовместимость с кириллическими названиями контейнеров АД.
Далее настраиваем ACL, режем видео и аудио потоки, рекламу и т.д.
Описание этих действий будет входить в дальнейшие статьи.
Прочитано 2725 раз Последнее изменение Понедельник, 08 января 2018 22:18
Источник: https://www.arus.ru/index.php/biblioteka/shpory/item/3854-squid-kerberos-freebsd
Установка SAMS с NCSA и IP авторизацией на FreeBSD из портов
Что такое SAMS, его возможности и принцип работы хорошо описаны здесь — http://www.permlug.org/wiki/sams. К сожалению в свое время я не нашел хорошей пошаговой инструкции по установке SAMS из портов в системе FreeBSD, поэтому написал собственную шпаргалку. Надеюсь, она поможет начинающим обойти те подводные камни, которые попались мне.
Установка проводилась на FreeBSD 6.3, на момент установки в системе присутствовали следующие пакеты:
mysql-5.0.51a php5-5.2.6 apache-2.2.9
samba-3.0.31_1
Связка Apache2 + PHP + MySQL без проблем работала (о её установке читайте в предыдущих заметках), оставалось поставить из портов последние доступные версии squid-2.7.5 и sams-1.0.3.
Ставим squid, обязательно выбираем опцию — Enable delay pools:
# cd /usr/ports/www/squid
# make install clean
В /usr/local/etc/squid/squid.conf включаем ncsa авторизацию (это важный пункт, т.к. SAMS этого сам не сделает). Раскомментируем и подправим следующие строчки:
auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/ncsa.sams auth_param basic children 5 auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
Создаем файл ncsa.sams. По идее SAMS сделает его самостоятельно, но нам сейчас нужно, чтобы Squid запустился еще до SAMS с целью тестирования его работы.
# touch /usr/local/etc/squid/ncsa.sams
Запускаем Squid:
# rehash # squid -z
# /usr/local/etc/rc.d/squid start
Проверяем работу Squid. Должно показаться что-то вроде:
# ps -ax | grep squid 18859 ?? Is 0:00.00 /usr/local/sbin/squid -D 18861 ?? S 0:00.18 (squid) -D (squid) 18862 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth) 18863 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth) 18864 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth) 18865 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
18866 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
Приступаем к установке SAMS из портов. При конфигурации выбираем поддержку Apache 2 (у меня он и стоит):
# cd /usr/ports/www/sams # make config # make # make install # cp /usr/local/etc/sams.conf.sample /usr/local/etc/sams.conf
# make setup
Здесь нужно будет ввести пароль пользователя root в MySQL, согласиться на создание баз данных и пользователя sams и назначить ему пароль.
# make clean
После завершения инсталяции следуем выданным инструкциям. В конфиг Apache добавляем:
Alias /sams/ «/usr/local/share/sams/» AllowOverride AuthConfig Options Indexes MultiViews Order allow,deny Allow from all
В файл /etc/rc.conf добавим:
sams_enable=”YES”
squid_enable=”YES”
Прописываем правильные пути в файле /usr/local/etc/sams.conf. Мой файл выглядит так:
[client] SQUID_DB=squidlog SAMS_DB=squidctrl MYSQLHOSTNAME=localhost MYSQLUSER=sams MYSQLPASSWORD=samspasswd MYSQLVERSION=5.0 SQUIDCACHEFILE=access.log SQUIDROOTDIR=/usr/local/etc/squid SQUIDLOGDIR=/usr/local/squid/logs SQUIDCACHEDIR=/var/spool/squid SAMSPATH=/usr/local SQUIDPATH=/usr/local/sbin SQUIDGUARDLOGPATH=/var/log SQUIDGUARDDBPATH=/var/db/squidGuard RECODECOMMAND=/usr/local/bin/iconv -f KOI8-R -t 866 %finp > %fout LDAPSERVER=servername_or_ipadress LDAPBASEDN=your.domain LDAPUSER=DomainAdministrator LDAPUSERPASSWD=passwd LDAPUSERSGROUP=Users REJIKPATH=/usr/local/rejik SHUTDOWNCOMMAND=/sbin/shutdown -h now CACHENUM=0 MYSQLUSER=sams MYSQLPASSWORD=123456
MYSQLHOSTNAME=localhost
Запускаем sams:
# samsdaemon
Проверяем запустилось ли всё что нужно:
# ps -ax | grep sams 25865 ?? I 0:00.00 /usr/local/bin/samsf 25868 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth) 25869 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth) 25870 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth) 25871 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth) 25872 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth) 22678 p0- S 0:13.77 samsdaemon
26153 p0 R+ 0:00.00 grep sams
Заходим в веб-интерфейс SAMS — http://ip_server/sams/ по умолчанию пользователь admin, пароль qwerty.
SAMS -> SAMS administration -> SAMS settings выбираем NCSA авторизацию, ставим галочку на «Insert SQUID logs in database». Записывам настройки.
ВАЖНО!!! Обязательно изменить в «templates» тип авторизации на NCSA (по умолчанию стоит по IP). Если не сделать этого, то в консоли будет вываливаться сообщение о пуcтом файле default.sams.
Добавляем новых пользователей. Делаем переконфигурирование — SAMS -> SQUID -> SQUID reconfiguration -> Reconfigurate
Идем в браузер, прописываем настройки прокси и пробуем выйти в Интернет. Если всё настроено правильно, то должно появится окно авторизации, вводим логин и пароль ранее добавленного пользователя и выходим на бескрайние просторы Интернета.
Теперь, когда настроена авторизация по логину/паролю, можно без труда настроить авторизацию по IP адресу.
Для этого нужно создать дополнительный шаблон и указать в нём тип авторизации «IP», затем добавляем новых пользователей указав в их профиле новый шаблон, а также IP адрес с которого должен работать пользователь, пароль указывать не нужно, но в браузере всё так же требуется прописать настройки прокси-сервера.
Решение разных проблем
Спустя некоторое время после использования SAMS выяснилось, что периодически падает демон samsf отвечающий за непрерывную обработку логов Squid. Оказалось, что разработчики более не поддерживают его и рекомендуется использовать опцию «Discret parser» SAMS -> SAMS administration -> SAMS settings. Периодичность я поставил 1 минуту. После этого всё нормализовалось.
Если при реконфигурировании SAMS новые пользователи не добавляются в ncsa.sams то можно попробовать убить процессы samsdaemon и samsf и запустить samsdaemon заново.
Другой частый вариант при первых запусках SAMS — не стартует squid или ругается на несуществующий процесс. В этом случае нужно в ручную создать файл /usr/local/etc/squid/ncsa.
sams (даже если вы его создавали в начале установки, то при реконфигурировании SAMS он скорей всего был удален), затем в папке /usr/local/squid/logs удаляем файл squid.pid (иногда также помогает удаление |access.
log) после этого лучше перезагрузиться.
Ещё один нюанс настройки SAMS — при перезапуске сервера SAMS норовит стартовать раньше MySQL, в результате чего он не может открыть нужные таблицы. Есть несколько способов это устранить, один из них дополнить в файле /usr/local/etc/rc.d/sams строчку:
# REQUIRE: LOGIN cleanvar
# REQUIRE: LOGIN cleanvar mysql
Другой вариант — убрать из /etc/rc.conf строчку sams_enable=”YES” и прописать в crontab строчку:
@reboot /usr/local/etc/rc.d/sams start
Перезагружаем сервер, смотрим работу SAMS, если всё нормально, то на этом настройку можно считать завершенной.
Следует иметь в виду, что в SAMS есть масса других подводных камней, которые могут проявиться при попытке настроить авторизацию по NTLM и т.д.
Есть также вероятность, что в один не очень хороший день SAMS может упасть без видимой причины. В этих случаях я советую искать ответы на форуме http://www.permlug.
org/forum/sams/ Многие подобные ситуации уже обсуждались и ответы были найдены, нужно лишь искать.
На всякий случай приведу примеры файлов конфигурации.
Пример файла /usr/local/etc/rc.d/sams
#!/bin/sh
# $FreeBSD: ports/www/sams/files/sams.sh.in,v 1.1 2006/12/29 20:18:35 miwi Exp $
# PROVIDE: sams # REQUIRE: LOGIN cleanvar mysql — очень важно, без mysql не будет стартовать при загрузке ОС
# KEYWORD: shutdown
# Define these sams_* variables in one of these files: # /etc/rc.conf # /etc/rc.conf.local # /etc/rc.conf.d/sams # # DO NOT CHANGE THESE DEFAULT VALUES HERE # sams_enable=${sams_enable-«NO»} sams_flags=${sams_flags-«»}
sams_pidfile=${sams_pidfile-«/var/run/samsdaemon.pid»}
. /etc/rc.subr
name=»sams» rcvar=`set_rcvar`
command=»/usr/local/bin/samsdaemon»
load_rc_config $name
pidfile=»${sams_pidfile}»
run_rc_command «$1»
Пример файла /usr/local/etc/squid/squid.conf:
auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/ncsa.sams
auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours acl _sams_4934254f2ae45 src «/usr/local/etc/squid/4934254f2ae45.sams» acl _sams_4934254f2ae45_time time MTWHFAS 00:00-23:59 acl _sams_default proxy_auth «/usr/local/etc/squid/default.sams» acl _sams_default_time time MTWHFAS 00:00-23:00 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 acl localnet src 10.0.0.0/8 # RFC1918 possible internal network acl localnet src 172.16.0.0/12 # RFC1918 possible internal network acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl SSL_ports port 443 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 http_access allow _sams_4934254f2ae45 _sams_4934254f2ae45_time http_access allow _sams_default _sams_default_time http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access deny all icp_access allow localnet icp_access deny all http_port 3128 hierarchy_stoplist cgi-bin ? access_log /usr/local/squid/logs/access.log squid 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 acl shoutcast rep_header X-HTTP09-First-Line ^ICYs[0-9] upgrade_http0.9 deny shoutcast acl apache rep_header Server ^Apache broken_vary_encoding allow apache delay_pools 2 delay_class 1 2 delay_class 2 2 delay_access 1 allow _sams_4934254f2ae45 delay_access 1 deny all delay_parameters 1 524288/524288 524288/524288 delay_access 2 allow _sams_default delay_access 2 deny all delay_parameters 2 64000/64000 64000/64000
coredump_dir /usr/local/squid/cache
Источник: http://rakovski.ru/freebsd/ustanovka-sams-s-ncsa-i-ip-avtorizaciej-na-freebsd-iz-p/
Прокси сервер Squid, аналитика его логов Sarg на FreeBSD
В процессе моего внедрения ubuntu и freeBSD на предприятии возникла таки необходимость отслеживать насколько рационально используется интернет канал: куда и сколько ходят в интернет.
Настроить систему я решил на давно и исправно работающем компьютере под управлением freeBSD 7.1, единственная функция которого до этого была шлюз интернета для локальной сети. Итак, в качестве исходных данных — — freeBSD 7.
1; — локальная сеть 192.168.0.0/24;
— желание смотреть кто и сколько ходит в интернет.:) Пока только смотреть — меры по ограничению и запретам можно будет прикрутить позже.
Для этого мне понадобятся: 1. прозрачный прокси squid; 2. веб сервер apache;
3. анализатор логов прокси сервера sarg.
Перед установкой я скачал и установил новое дерево портов, удалив старое:
1. Установка squid:
Чтоб получить минимальный конфиг squid, который позволит мне собирать статистику пользования интернет без дополнительных настроек браузеров пользователей (т.е. прокси — прозрачный), я так отредактировал файл /usr/local/etc/squid/squid.conf:
Потом создал директорию для кеша:
Затем в файле фаервола (у меня — /etc/ipfw.rules) создал правило перед форвардингом NAT:
где
netin=”192.168.0.0/24″ — моя локальная сеть;
oif=”age0″ — сетевая, в которую включен провайдер интернета.
Для применения правила перезапустил фаервол:
и добавил в /etc/rc.conf строки:
2. Установка apache22:
В ходе установки, в появившемся окошке с выбором опций я пометил крестиками все пункты с упоминанием mod_proxy и mod_cgid — без них не хотел стартовать apache. После установки отредактировал в файле /usr/local/etc/apache22/httpd.conf
параметр ServerName до такого вида:
где hostname — параметр записанный в файле /etc/rc.conf
Затем выполнил в оболочке:
— загрузка модуля для работы apache. Для запуска, перезапуска и остановки веб сервера используются команды:
apachectl start, apachectl restart, apachectl stop соответственно.
Запустил apache:
После выполнения, если нет ошибок, можно посмотреть запустился ли процесс httpd и если нет, то смотреть логи запуска:
3. Установка Sarg:
После установки сначала создал на локальном сервере папку, куда sarg выведет аналитику логов squid:
потом поправил конфиг sarg, где редактировал строки:
Аналитика логов прокси сервера будет представлять из себя несколько связанных веб страничек — мини-сайт.
Чтобы apache при обращении к себе понимал, куда ему перенаправлять пользователя — в моем случае меня на просмотр статистики, нужно либо по имени, либо по порту идентифицировать мою веб страницу со статистикой.
Для этого я в файле конфига апача добавил порт для прослушивания и строку включения конфига «виртуального хоста» моей веб страницы со статистикой:
Т.е. теперь при обращении из браузера компьютера локальной сети по адресу http://локальный_IP_адрес_веб_сервера:8001 я должен попадать на гланую страницу своей статистики, осталось только создать сам конфиг виртуального хоста в моем случае такой:
Ну вот и все:)
Перезагрузил веб сервер, запустил в шелле:
и пошел из браузера смотреть кто сколько налазил по интеренетам и где:)
Статья не претендует на звание мануала а лишь описывает частный случай минимальной установки и настройки. для дальнейших манипуляций рекомендую читать мануалы и гуглить)
freeBSD, simple manual, работа с сайтами, сеть
Источник: http://usefree.com.ua/squid-apache-sarg/