Установка и настройка прокси сервера на freebsd 10 (squid+sams2)

Установка 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]

Читайте также:  Восстановление или перенос сервера freebsd

Хотя все описанное далее справедливо и для версии 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:

Читайте также:  Failed to start lsb: bring up/down networking

# 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. Из портов устанавливаем дополнительное ПО:

  1. Apache
  2. PHP со всеми доступными модулями
  3. Krb5
  4. Logrotate
  5. MySql клиент и сервер
  6. Openldap-sasl-client
  7. Samba
  8. Winbind
  9. Squid
  10. 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

  1. Нас интересует файл smb4.conf. Если такого файла нет, то создаем.
  2. Содержимое файла:
    [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
  3. В файл /etc/rc.conf добавляем строчку: samba_server_enable=”Yes”
  4. Запускаем сервер командой: /usr/local/etc/rc.d/samba_server start

Настройка Kerberos

  1. Открывакм файл /etc/krb5.conf Если такого файла нет, то создаем.
  2. Содержимое файла:
    [libdefaults]
            default_realm = ВАШ ДОМЕН
            clockskew = 300
            dns_lookup_kdc = true
            dns_lookup_realm = true
            ticket_lifetime = 24h

            renew_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

  3. В домене создаем пользователя webproxyuser с паролем webproxysquid
  4. Заходим в консоль любого контроллера домена. Открываем сомандную строку с правами администратора. Создаем файл keytab с помощью команды: ktpass -princ HTTP/FGDN вашего прокси-сервера@ваш домен -mapuser webproxy@ваш домен -crypto rc4-hmac-nt -pass “webproxysquid” -ptype KRB5_NT_PRINCIPAL -out squid.keytab
  5. Копируем полученный файл в каталог /usr/local/etc/squid
  6. Задаем права доступа на скопированный файл: chown squid:squid /usr/local/etc/squid/squid.keytab

Настройка SQUID

Все настройки работы прокси-сервера Squid осуществляются в файле /usr/local/etc/squid/squid.conf.

Что требуется для доменной авторизации:

  1. Настраиваем методы авторизации на прокси-сервере:
    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.

  2. Активируем доступ доменным пользователем, описываем часы и дни рабочего времени:
    acl DOMAIN_USERS proxy_auth REQUIRED
    acl WorkTime time MTWHF 09:00-18:00

    external_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/

Ссылка на основную публикацию