Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

WinCity.Ru _ Серверное ПО _ SquidNT

Автор: NALIM Среда, 25 Июня 2003, 19:27

собственно хотелось бы спросить у народа, есть ли у кого нить типа русского конфига ( ну что б описалово настроек там по русски было )
для Apache я такое нашёл а вот для сквида - чтото не могу .....

да, и обработчик логов подскажите для него плиз

спасибо

Автор: NALIM Вторник, 15 Июля 2003, 12:31

видимо по моему вопросу никто не знает
но всеравно спасибо

Автор: Acden Воскресенье, 04 Марта 2007, 2:41

Помогите с установкой прокси на Windows 2003 Server.

Перечитал сайт squid-cache.org, но не нашёл ответов о том как сделать
авторизацию по логину из Active Directory.

Проинсталлировать удалось, начал пускать/непускать при указании настроек
прокси. А вот как сделать ограничения на пользователей пока не понял.


Подскажите, кто знает - где можно почитать ответ на этот вопрос, или, может,
кто знает решение?

C Уважением,
Александр (Acden).

Автор: Gvan Суббота, 28 Апреля 2007, 11:25

В ближайшее время тоже собираюсь озаботиться проблемой натягивания сквида под виндовс...
Если что получится, то отпишусь о результатах... кому будет интересно...

Автор: Gvan Понедельник, 21 Апреля 2008, 14:52

Для тех, кому интересно, выкладываю настройки сквида. Как и в ситуации с OpenVPN, по сквиду информации много, но на сбор того, что нужно, уходит масса времени sad.gif
В данном посте постараюсь рассказать, как сделано у меня и как это работает. Всё, что приведено ниже работает. Не стоит рассматривать мой пример, как единственно правильный, т.к. вариантов может быть множество. Я привожу подобный пример только для того, чтобы помочь всем, кто впервые столкнулся с подобным зверем, с ответом на вопрос “с чего начать”.

Исходные данные.
Есть 2 офиса, какое-то количество vpn-юзеров, пара терминальных серверов с “плавающим” количеством терминальных пользователей. ОС пользователей – WinXP, терминалы – Win2k3, впн построен на OpenVPN. Браузеры у доменных пользователей в офисах и на терминалах – IE 6.0 и FrontMotion Firefox, адрес прокси назначается групповой политикой.
Адреса:
локальные сети офисов 192.168.20.0/24 и 192.168.50.0/24
впн-сеть: 10.10.10.0/24
терминалы в главном офисе: 192.168.20.140, 192.168.20.29
прокси-сервер в главном офисе: 192.168.20.150

Задачи и условия.
1. “поднять” бесплатный и надежный прокси, через который должны ходить все пользователи.
2. запретить посещение некоторых сайтов
3. запретить закачку некоторых типов файлов
4. запретить использование “левых” http-прокси
5. запретить использование некоторых почтовых сервисов
6. запретить icq
7. обеспечить авторизацию пользователей на терминальном сервере
8. на vpn-пользователей не должны действовать никакие ограничения по запретам, за исключением обращений на неизвестные порты.
9. для всех запретов необходимо предусмотреть возможность исключений
10. собирать статистику по использованию ынтырнета каждый день и суммарную за месяц.

Реализация.
Скачиваем SquidNT (http://www.acmeconsulting.it/SquidNT/). Распаковываем его в корень диска D: (d:squid), в моём примере все пути указывают на этот путь.
Установка службы:
d:\squid\sbin\squid.exe -i -f d:/squid/etc/squid.conf -n Squid26_12
Создание кэша:
d:\squid\sbin\squid.exe -z -f d:/squid/etc/squid.conf
Привожу пример конфигурационного файла (d:\squid\etc\squid.conf), который удовлетворяет всем вышеперечисленным условиям (чтобы сэкономить место, я вырезал некоторые закомментированные дефолтовые настройки).
squid.conf
# NETWORK OPTIONS
# -----------------------------------------------------------------------------

# TAG: http_port
# Прокси ждёт обращений по 80 порту на локальном интерфейсе
http_port 192.168.20.250:80
# Для пользователей, использующих NAT, все обращения по 80 порту перенаправляются
# NAT’ом на 127.0.0.1:3128 (“прозрачный” прокси).
http_port 127.0.0.1:3128 transparent

# TAG: icp_port
# The port number where Squid sends and receives ICP queries to
# and from neighbor caches. Default is 3130. To disable use
# "0". May be overridden with -u on the command line.
#
#Default:
# icp_port 3130
icp_port 0

# TAG: hierarchy_stoplist
# A list of words which, if found in a URL, cause the object to
# be handled directly by this cache. In other words, use this
# to not query neighbor caches for certain objects. You may
# list this option multiple times. Note: never_direct overrides
# this option.
#We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?

# TAG: cache
# A list of ACL elements which, if matched, cause the request to
# not be satisfied from the cache and the reply to not be cached.
# In other words, use this to force certain objects to never be cached.
#
# You must use the word 'DENY' to indicate the ACL names which should
# NOT be cached.
#
# Default is to allow all to be cached
#We recommend you to use the following two lines.
acl QUERY urlpath_regex cgi-bin ?
cache deny QUERY

# TAG: broken_vary_encoding
# Many servers have broken support for on-the-fly Content-Encoding,
# returning the same ETag on both plain and gzip:ed variants.
# Vary replies matching this access list will have the cache split
# on the Accept-Encoding header of the request and not trusting the
# ETag to be unique.
#
# Apache mod_gzip and mod_deflate known to be broken so don't trust
# Apache to signal ETag correctly on such responses
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache


# OPTIONS WHICH AFFECT THE CACHE SIZE
# -----------------------------------------------------------------------------

# TAG: cache_mem (bytes)
#Default:
# cache_mem 8 MB
cache_mem 30 MB

# TAG: maximum_object_size (bytes)
#Default:
# maximum_object_size 4096 KB
maximum_object_size 8192 KB

# LOGFILE PATHNAMES AND CACHE DIRECTORIES
# -----------------------------------------------------------------------------

# TAG: cache_dir
#Default:
#cache_dir ufs d:/squid/var/cache 100 16 256
cache_dir ufs d:/squid/var/cache 4096 16 256

# TAG: access_log
# These files log client request activities. Has a line every HTTP or
# ICP request. The format is:
# access_log <filepath> [<logformat name> [acl acl ...]]
# To log the request via syslog specify a filepath of "syslog"
access_log d:/squid/var/logs/access.log squid

# TAG: cache_log
# Cache logging file. This is where general information about
# your cache's behavior goes. You can increase the amount of data
# logged to this file with the "debug_options" tag below.
cache_log d:/squid/var/logs/cache.log

# TAG: cache_store_log
# Logs the activities of the storage manager. Shows which
# objects are ejected from the cache, and which objects are
# saved and for how long. To disable, enter "none". There are
# not really utilities to analyze this data, so you can safely
# disable it.
cache_store_log none

# TAG: emulate_httpd_log on|off
# The Cache can emulate the log file format which many 'httpd'
# programs use. To disable/enable this emulation, set
# emulate_httpd_log to 'off' or 'on'. The default
# is to use the native log format since it includes useful
# information Squid-specific log analyzers use.
#
#Default:
# emulate_httpd_log off
emulate_httpd_log on

# TAG: mime_table
# Pathname to Squid's MIME table. You shouldn't need to change
# this, but the default file contains examples and formatting
# information if you do.
#
#Default:
mime_table d:/squid/etc/mime.conf

# TAG: pid_filename
# A filename to write the process-id to. To disable, enter "none".
#Default:
#pid_filename none
pid_filename d:/squid/var/logs/squid.pid

# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS
# -----------------------------------------------------------------------------

# TAG: ftp_user
# If you want the anonymous login password to be more informative
# (and enable the use of picky ftp servers), set this to something
# reasonable for your domain, like wwwuser@somewhere.net
#Default:
#ftp_user anonymous@user.com
ftp_user Squid@

# TAG: diskd_program
# Specify the location of the diskd executable.
# Note that this is only useful if you have compiled in
# diskd as one of the store io modules.
#
diskd_program d:/squid/libexec/diskd-daemon.exe

# TAG: unlinkd_program
# Specify the location of the executable for file deletion process.
#
unlinkd_program d:/squid/libexec/unlinkd.exe

# TAG: auth_param
# В оригинальном файле в дистрибутиве описаны все методы аутентификации
# В примере используется мой самописный js-скрипт для basic аутентификации,
# если он Вас не устраивает, можете написать что-то сво Я только изложу идею.
# Принцип работы скрипта примитивен: в памяти постоянно (за счёт бесконечного
# цикла) висит процесс, который ждет, когда пользователь введёт имя и пароль.
# Потом сквид подпихивает имя и пароль скрипту (они подпихиваются в виде строки,
# где имя и пароль разделены пробелом). Когда скрипт получает что-то на вход,
# он проверяет перебором соответствие полученной строки из сквида и
# строки из файлика с логин/паролями auth.conf. Если соответствие найдено, то сквиду
# в выходном потоке выдаётся “OK” (т.е. авторизация пройдена успешно),
# если соответствий не найдено, то – “ERR”.
# В скрипте Вы можете подправить параметры, которые отвечают за запись в
# журнал приложений виндовса факты авторизации. Для себя я оставил только
# запись в журнал неудачных попыток авторизации.

auth_param basic program c:/winnt/system32/cscript.exe //B //h:cscript //nologo d:/squid/etc/auth.js d:/squid/etc/auth.conf
auth_param basic children 5
auth_param basic realm Squid-proxy authentication
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

# ACCESS CONTROLS
# -----------------------------------------------------------------------------

# TAG: acl
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8

#---------- P O R T S list-----------------------------
acl SSL_ports port 443 5190 #ports for method CONNECT
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl CONNECT method CONNECT

# TAG: http_access
# Allowing or Denying access based on defined access lists
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager

#---------- P O R T S access---------------------------
# Запрет всех портов, за исключением Safe_ports
http_access deny !Safe_ports
# Запрет метода connect по всем портам, за исключением SSL_ports
http_access deny CONNECT !SSL_ports

#----------------- VPN (BEGIN) --------------
# список ip-адресов vpn-сети находится в файле
acl vpn src "d:/squid/etc/ip_vpn.txt"
# разрешить доступ пользователям vpn-сети
http_access allow vpn
#----------------- VPN (END) ----------------

#----------------- ICQ (BEGIN) --------------
# список ip-адресов кому разрешено (в файле ip_icq_allow.txt) и запрещено (ip_icq_deny.txt)
# пользоваться ICQ
acl ip_icq_allow src "d:/squid/etc/ip_icq_allow.txt"
acl ip_icq_deny src "d:/squid/etc/ip_icq_deny.txt"
# подсеть и домен ICQ
acl ICQ_ADDR dst 64.12.0.0/16 205.188.0.0/16
acl ICQ_DOMAIN url_regex icq.com

# разрешить icq группе ip_icq_allow
http_access allow CONNECT ICQ_ADDR ip_icq_allow
http_access allow ICQ_DOMAIN ip_icq_allow

# запретить icq группе ip_icq_deny
http_access deny CONNECT ICQ_ADDR ip_icq_deny
#----------------- ICQ (END) ----------------

#---- FITERS list (BEGIN)-----------------------------------------------------------------------
#список запрещенных url
acl block_url url_regex "d:/squid/etc/block_url.txt"
#список запрещенных url прокси
acl block_free_proxy url_regex "d:/squid/etc/block_free_proxy.txt"
#список запрещенных расширений файлов
acl block_url_extention_file urlpath_regex -i "d:/squid/etc/block_url_extention-files.txt"
#список разрешенных почтовых url
acl mail_white url_regex "d:/squid/etc/mail_white.txt"
#список запрещенных почтовых url
acl mail_black url_regex "d:/squid/etc/mail_black.txt"
#проблемные url, которые неправильно отображаются при применении блокирующих по url фильтров
acl gemor_sites url_regex *rbc.ru*
#---- FITERS list (END)-----------------------------------------------------------------------

#----------- IP list (BEGIN) ---------------------------------------------
#ip отдел ИТ
acl it_dept src "d:/squid/etc/ip_it_dept.txt"

#ip список разрешено ходить на запрещённые сайты
acl url_allow src "d:/squid/etc/ip_url_allow.txt"

#ip разрешено ходить на почтовые сайты
acl webmail_allow src "d:/squid/etc/ip_webmail_allow.txt"

#ip всех локальных сетей
acl our_networks src "d:/squid/etc/ip_our_networks.txt"

#ip где требовать авторизацию
acl ip_need_auth src "d:/squid/etc/ip_need_auth.txt"
#----------- IP list (END) ---------------------------------------------

#----------- IP access (BEGIN) -------------------------------------------
#открывать геморные сайты без проверок
http_access allow gemor_sites !ip_need_auth

#блокировки по url с исключением (см. IP list)
http_access deny block_url !it_dept !url_allow !ip_need_auth

#блокировки по url фри-прокси с исключением (см. IP list)
http_access deny block_free_proxy !it_dept !ip_need_auth

#блокировки по расширению файла в url с исключением (см. IP list)
http_access deny block_url_extention_file !it_dept !ip_need_auth

#разрешенные адреса web-mail
http_access allow mail_white !ip_need_auth

#блокировки web-mail по url с исключением (см. IP list)
http_access deny mail_black !webmail_allow !it_dept !ip_need_auth

#разрешить доступ группе our_networks
http_access allow our_networks !ip_need_auth
#----------- IP access (END) ----------------------------------------

#----------- AUTH list (BEGIN) -----------------------------------------------------------
#acl запрашивать авторизацию
acl parol proxy_auth REQUIRED

#группы авторизованных юзеров (аналогия с IP list, только в файлах имена пользователей)
acl auth_users_allow proxy_auth "d:/squid/etc/auth_url_allow.txt"
acl auth_it_dept proxy_auth "d:/squid/etc/auth_it_dept.txt"
acl auth_webmail_allow proxy_auth "d:/squid/etc/auth_webmail_allow.txt"
#----------- AUTH list (END) ------------------------------------------------------------

#----------- AUTH access (BEGIN) ---------------------------------------------
#открывать геморные сайты без проверок
http_access allow ip_need_auth parol gemor_sites

#блокировки доступа по url, прокси и по расширению с исключениями (см. AUTH list)
http_access deny ip_need_auth parol !auth_users_allow !auth_it_dept block_url
http_access deny ip_need_auth parol !auth_users_allow !auth_it_dept block_free_proxy
http_access deny ip_need_auth parol !auth_users_allow !auth_it_dept block_url_extention_file

#разрешить mail_white
http_access allow ip_need_auth parol mail_white

#блокировать доступ к mail_black с исключениями (см. AUTH list)
http_access deny ip_need_auth parol !auth_webmail_allow !auth_it_dept mail_black

#разрешить доступ авторизованным пользователям
http_access allow ip_need_auth parol
#----------- AUTH access (END) -------------------------------------------

#запретить доступ всем, кто не перечислен в ip_vpn.txt, ip_our_networks.txt и auth.conf
http_access deny all
#----------------- ACCESS CONTROLS (END) -------------------------

# MISCELLANEOUS
# -----------------------------------------------------------------------------
# TAG: dns_testnames
# The DNS tests exit as soon as the first site is successfully looked up
# This test can be disabled with the -D command line option.
dns_testnames ya.ru www.ru microsoft.com

# TAG: logfile_rotate
# Specifies the number of logfile rotations to make when you
# type 'squid -k rotate'.
logfile_rotate 40

# TAG: icon_directory
icon_directory d:/squid/share/icons

# TAG: error_directory
error_directory d:/squid/share/errors/Russian-1251

# DELAY POOL PARAMETERS (all require DELAY_POOLS compilation option)
# -----------------------------------------------------------------------------
# От использования delay_pools отказался, т.к. “ширина” канала позволяет не
# лимитировать канал.
# Однако хочу сказать, что эта опция работает исправно и настройки её не представляют
# сложности, требуется только внимательность.
# Пример можно посмотреть здесь http://opennet.ru/base/net/squid_speed.txt.html

Дополнительные файлы (должны находиться в d:\squid\etc).
Конфигурационные файлы.

1. Скрипт аутентификации auth.js (скопируйте приведённый ниже текст и вставьте в обычный текстовый файл, после чего файл переименуйте в auth.js)

/* ======================================================================
NAME: auth.js
AUTHOR: gvan, ***
DATE : 18.04.2008
COMMENT: script for basic authentication (squid)
========================================================================= */
var UserName_casesensitive = false,//squid parameter "auth_param basic casesensitive off"
Write_ApplicationLog_full = false,
Write_ApplicationLog_ErrorOnly = true;

var Arg = WScript.Arguments.Unnamed;
FSO = WScript.CreateObject("Scripting.FileSystemObject");
var FileName,StringPass,StringPass_Array,StringFile,StringFile2,i,Reply,File,Stoped;


FileName=Arg(0);
i=0;

while(i==0)
{
StringPass = WScript.StdIn.ReadLine();
StringPass_Array = StringPass.split(" ");
try
{
StringPass = StringPass_Array[0]+" "+StringPass_Array[1].replace("%20"," ");
}
catch(e)
{
StringPass = "Error StdIn string ["+StringPass+"]!";
WriteApplicationLog(1,StringPass);
}

Reply = "ERR";
Stoped = 0;
File = FSO.OpenTextFile(FileName,1);
while((File.AtEndOfStream==false)&&(Stoped==0))
{
StringFile=new String(File.ReadLine());

if(StringFile.substr(0,1)!="#")
{
if(UserName_casesensitive)
StringFile2 = StringFile;
else
StringFile2 = StringFile.replace(StringFile.substring(0,StringFile.indexOf(" ")),StringFile.substring(0,StringFile.indexOf(" ")).toLowerCase());

if(StringFile2==StringPass)
{
Reply="OK";
Stoped=1;
}//end if(StringFile==StringPass)
}//end if(StringFile.substr(0,1)!="#")
}//end while((File.AtEndOfStream==false)&&(Stoped==0))
WScript.StdOut.WriteLine(Reply);
File.Close();

if(Write_ApplicationLog_full)
if(Reply=="OK")
WriteApplicationLog(0,"SQUID Reply = "+Reply+"rnAuth user = "+StringPass);
else
WriteApplicationLog(1,"SQUID Reply = "+Reply+"rnUnknown auth user = "+StringPass);
else
if(Write_ApplicationLog_ErrorOnly&&(Reply=="ERR"))
WriteApplicationLog(1,"SQUID Reply = "+Reply+"rnUnknown auth user = "+StringPass);
}//end while(i==0)

function WriteApplicationLog(intType,Msg)
{
var SUCCESS = 0,
ERROR = 1,
WARNING = 2,
INFORMATION = 4,
AUDIT_SUCCESS = 8,
AUDIT_FAILURE = 16;

var WshShell = WScript.CreateObject("WScript.Shell");

WshShell.LogEvent(intType,Msg);
}


2. Файл с пользователями и паролями auth.conf (сначала идёт логин, всё, что после пробела – пароль). Настоятельно рекомендую во ВСЕХ файлах, где указывается логин пользователя, писать его маленькими буквами.
# Пользователь 1
user_1 qwERty
# Пользователь 2 (пароль пользователя содержит “пробел”)
user_2 18 qqq
# Администратор 1
admin1 YYY uuu
# Администратор 2
Admin2 bbb NNN

3. Файл mime.conf. Оставил без изменений.
4. ip_need_auth.txt - ip-адреса компов, на которых необходимо требовать авторизации пользователей.
192.168.20.140
192.168.20.29

5. ip_our_networks.txt - ip-адреса локальной сети (в настоящее время разрешена вся подсеть 192.168.20.0/24 и несколько адресов из сети филиала)
192.168.20.0/24
192.168.50.4
192.168.50.52

6. ip_vpn.txt - ip-адреса vpn-сети (в настоящее время разрешена вся подсеть 10.10.10.0/24)
10.10.10.0/24

Файлы, которые используются для запретов (фильтры):
1. block_free_proxy.txt - список прокси-анонимайзеров (неполный)
proxy
towel.greyfyre.info
domainuniverzum.com

2. block_url.txt - список блокировок по url (неполный)
anekdot.ru
fishki.net
livejournal

3. block_url_extention-files.txt - список блокировок по расширению файлов (неполный)
*.(avi|flv|mp3|mpg|mpeg|mp4|ogg|wmv)$
4. mail_black.txt - список запрещённых почтовиков (неполный)
chat
mail
smtp

5. mail_white.txt - список разрешенных почтовиков (неполный).
icewarp.com
gmail.com


Файлы, которые используются для списков (групп) пользователей (логины маленькими буквами!!!).
1. auth_it_dept.txt - список логинов сотрудников IT-отдела (на группу не действуют многие ограничения, подробности см. в squid.conf)
admin1
admin2

2. ip_it_dept.txt - список логинов сотрудников IT-отдела
192.168.20.30
192.168.50.52

Содержимое оставшихся файлов (auth_url_allow.txt, ip_url_allow.txt, auth_webmail_allow.txt, ip_webmail_allow.txt, ip_icq_allow.txt, ip_icq_deny.txt), аналогично по структуре и написанию двум описанным выше.

Примечания:
1. Все списки и фильтры можно использовать непосредственно в squid.conf. Однако я вынес много списков и фильтров в отдельные текстовые файлы, потому что мне кажется это гораздо удобнее, чем лазить в squid.conf
2. Фильтры в squid.conf срабатывают при первом совпадении. (например, для сайта из группы gemor_sites фильтры применяться не будут)
3. Для применения внесенных изменений, проще и быстрее (вместо рестарта службы) пользоваться командой:
D:\squid\sbin\squid.exe -n Squid26_12 -f d:/squid/etc/squid.conf -k reconfigure
4. Для ротации логов можно использовать по шедулеру команду:
D:\squid\sbin\squid.exe -n Squid26_12 -f d:/squid/etc/squid.conf -k rotate
5. Сквид не стартует, если не видит dns-серверов, либо не может “разрешить” тестовые dns-имена. Рекомендую изучить ключ –D
6. Сквид через какое-то время начинает падать из-за антивируса NOD32 (вернее из-за его какого-то модуля, подробно вопрос не изучал, ибо нодом не пользуюсь)
7. Пример настройки анализатора (я использую виндовый sarg) приводить не буду, т.к. на вкус и цвет… smile.gif Скажу только, что для ротации и упорядочивания логов, а также для запуска анализатора, использую самописные скрипты из шедулера, там нет ничего сложного.

Вроде всё… Если что-то забыл, допишу. Надеюсь, что кому-нить это пригодится.

Автор: NALIM Пятница, 04 Июля 2008, 1:48

пригодится
великое спасибо
тольок такой вопрос - скрид виндовый может работать как NAT ????

Автор: Gvan Понедельник, 14 Июля 2008, 12:02

Цитата(NALIM @ Пятница, 04 Июля 2008, 1:48)
скрид виндовый может работать как NAT ????

к сожалению, как нат (transparent) в чистом виде он работать не может sad.gif
чтобы это заработатло, нужно ставить нат (виндовый не годится), на котором можно организовать маппинг портов, т.е. нужно ловить обращения в интернет на 80 порт и заворачивать, допустим, на 127.0.0.1 tcp/3128...
Это умеет делать Lan2Net. Только вот стабильность работы Lan2Net, при количестве пользователей более 15, оставляет желать лучшего sad.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)