Пятница, 26.04.2024, 02:23
Приветствую Вас, Гость
Главная » Статьи » Ubuntu

Установка squid на Ubuntu server



Установка
squid-а и всего прочего необходимого одной
стокой:



sudo
aptitude install language-pack-ru squid squidguard squidview apache2
php5 libgd-gd2-perl


Дальше
качаем коллекцию блеклистов к примеру
от сюда:
http://urlblacklist.com/cgi-bin/commercialdownload.pl?type=download&file=bigblacklist,



распаковываем:


$
tar -xzf blacklists.tar.gz

Создаем
необходимую для работы конфигурации
структуру папок:



$
sudo mkdir /etc/squid/{acl,bl}


В папке
acl будут храниться файлы определяющие
различные разрешения запреты. К примеру
у меня там лежат файлы с расширением
.usr и .ip определяющие логины и адреса
соответствующих групп. Ниже привожу
пример:



root@proxy:/etc/squid/acl#
ls -1



admins.ip



admins.usr



buhi.usr



design.usr



kadr.usr



lim.ip



managers.ip



managers.usr



market.ip



market.usr



nolim.ip



other.usr



rukovod.usr



snabg.usr


Расскажу
от куда брать логины для записи в файл
с расширением .usr. Далее мы создадим
файл, в котором будут храниться все пары
логин:хеш
пароля
для авторизации
на нашем прокси сервере:



$
sudo htpasswd -b /etc/squid/passwd user password


эта команда
годится если файл с паролями уже
существует, если необходимо его создание
то:



$
sudo htpasswd -сb /etc/squid/passwd user password


кроме того,
пароль можно не указывать прямо в команде
а использовать запрос на его ввод:



$
sudo htpasswd /etc/squid/passwd user


в этом
случае у вас будет запрошен пароль и
его подтверждение.


Собственно
файлы .usr просто хранят описание всех
логинов пользователей входящих в ту
или иную группу, т. е. после создания
пары логин:хеш пароля, нам необходимо
записать только что созданный логин в
файл с названием той группы к которой
мы хотели бы чтоб принадлежал пользователь.
Ну и конечно же включить правильное
описание этой группы в squid.conf


Далее мы
создадим каталоги содержащие определения
фильтров. Просто копируем соответствующие
папки из ранее скачанной и разархивированной
базы блеклистов. Хочу сказать сразу,
что много фильтров лучше не использовать,
иначе squid будет жутко тормозить. Конкретное
количество фильтров определяем
экспериментальным путем. Мало того, те
блек листы которые я нашел содержали
кучу неактуальной для круга моих
пользователей сайтов, поэтому я их
немного проредил (удобным средством
для «прореживания» мне кажется связка
cat
domains | grep .ru >> new_domains
,
несколько заходов с подстановкой вместо
.ru к примеру .ua или .su и дальнейшее
переименование mv
new_domains domains
). Создадим
папки и файлы для своих нужд:



$
sudo mkdir {blocked,good,lockal}&&sudo touch
{blocked,good,lockal}/domains


в
blocked/domains
— заносим домены которые не подходят
в другие категории но которые очень
хочется закрыть, ну или если вовсе и не
хочется но надо;


good/domains
— записываем домены которые по каким-то
по своей сути хорошие но почемуто
попадают под действие какого-то фильтра;


lockal/domains
— локальные сайты, мне кажется они
должны быть доступны даже когда все
остальное уже нельзя.


Пример
моего дерева коталогов:


/etc/squid


├── acl


│  
├── admins.ip


│  
├── admins.usr


│  
├── buhi.usr


│  
├── design.usr


│  
├── kadr.usr


│  
├── lim.ip


│  
├── managers.ip


│  
├── managers.usr


│  
├── market.ip


│  
├── market.usr


│  
├── nolim.ip


│  
├── other.usr


│  
├── rukovod.usr


│  
└── snabg.usr


├── bl


│  
├── ads


│  
│   └── domains


│  
├── blocked


│  
│   └── domains


│  
├── good


│  
│   └── domains


│  
├── idle


│  
│   └── domains


│  
├── local


│  
│   └── domains


│  
├── porn


│  
│   └── domains


│  
├── proxy


│  
│   └── domains


│  
├── socialnet


│  
│   └── domains


│  
└── spyware


│  
└── domains


├──
cachemgr.conf


├── passwd


└──
squid.conf


В принципе
все готово, для того чтоб редактировать
собственно /etc/squid.conf. Условно, конфиг
делится на четыре части, деления условные,
просто мне так нравится.


  1. Что
    трогать нельзя неумелыми руками(общие
    настройки squid-а);


  2. Кто и
    Что(описания групп пользователей, и
    фильтров);


  3. Кому
    Чего (сопоставление групп пользователей
    и фильтров);


  4. Кому и
    Сколько (описание delaypool-сов).



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


$ sudo cp
/etc/squid/squid.conf /etc/squid/squid.conf.orig


Пример
моего squid.conf:


#--------------------
Ne znaeh, ne lez'-------------


#
Begin


http_port
3128


icp_port
0


hierarchy_stoplist
cgi-bin ?


acl
QUERY urlpath_regex cgi-bin \?


no_cache
deny QUERY


error_directory
/usr/share/squid/errors/Russian-1251


cache_mem
16 MB


cache_swap_low
90


cache_swap_high
95


maximum_object_size
4096 KB


ipcache_size
1024


ipcache_low
90


ipcache_high
95


fqdncache_size
1024


cache_dir
ufs /home/squid/spool/ 1024 16 256


cache_log
/var/log/squid/cache.log


cache_store_log
/var/log/squid/store.log


mime_table
/usr/share/squid/mime.conf


access_log
/var/log/squid/access.log


log_mime_hdrs
off


pid_filename
/var/run/squid.pid


debug_options
ALL,1


log_fqdn
off


refresh_pattern
^ftp: 1440 20% 10080


refresh_pattern
^gopher: 1440 0% 1440


refresh_pattern
. 0 20% 4320


quick_abort_min
16 KB


quick_abort_max
16 KB


quick_abort_pct
95


negative_ttl
5 minute


positive_dns_ttl
1 hour


negative_dns_ttl
5 minute


range_offset_limit
0 KB


connect_timeout
120 second


peer_connect_timeout
30 seconds


#siteselect_timeout
4 second


read_timeout
15 minute


request_timeout
30 second


client_lifetime
1 day


pconn_timeout
120 second


ident_timeout
10 seconds


#
shutdown_liftime 30 second


cache_mgr hostmaster


cache_effective_user proxy


cache_effective_group proxy


visible_hostname proxy.germes-design.com.ua


unique_hostname proxy.germes-design.com.ua


logfile_rotate 10


append_domain .germes-design.com.ua





memory_pools off


log_icp_queries off


icp_hit_stale off


minimum_direct_hops 4


client_db off


netdb_low 900


netdb_high 1000


netdb_ping_period 5
minutes


query_icmp off


uri_whitespace strip


ignore_unknown_nameservers
on



auth_param basic
program /usr/lib/squid/ncsa_auth /etc/squid/passwd


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


auth_param
basic children 5


auth_param
basic realm SQUID





#
End


#
---------------------dal'he mogno lezt'-------------


#


#


#
----------------===== Кто и Что =====-------------


#
----------------------- Porti -------------------------


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
SSL_ports port 443 563 3313


acl
Safe_ports port 20


acl
Safe_ports port 21 # ftp


acl
Safe_ports port 80 # http


acl
Safe_ports port 443 # https


acl
Safe_ports port 3389 # rdp


acl
Safe_ports port 5190 # ICQ


acl
Safe_ports port 5222 # jabber


acl
Safe_ports port 8000 # online radio


#acl
Safe_ports port 6667-6669 7770-7776 # IRC


acl
CONNECT method CONNECT


acl
Mailport port 25 110 143 465 993 995





#
------------------------------------------------------------





acl
office src 192.168.0.0/255.255.255.0





#
------------------- Зона заблокированных ip
---------------------





acl
ban_ip src 192.168.0.200/255.255.255.254


http_access
deny ban_ip





#
------------------- Bez parolniy vxod ------------------------





acl
no_limit_ip src "/etc/squid/acl/nolim.ip"


acl
limit_ip src "/etc/squid/acl/lim.ip"





http_access
allow no_limit_ip


#
-------------------- Gruppi -------------------------


#
-BUHI


acl
buhi_usr proxy_auth "/etc/squid/acl/buhi.usr"





#
-KADRI


acl
kadr_usr proxy_auth "/etc/squid/acl/kadr.usr"





#
-MANAGERI


acl
manag_usr proxy_auth "/etc/squid/acl/managers.usr"


acl
manag_ip src "/etc/squid/acl/managers.ip"





#
-DESIGNERI


acl
design_usr proxy_auth "/etc/squid/acl/design.usr"





#
-MARKETI


acl
market_usr proxy_auth "/etc/squid/acl/market.usr"


acl
market_ip src "/etc/squid/acl/market.ip"





#
-SNABG


acl
snabg_usr proxy_auth "/etc/squid/acl/snabg.usr"





#
-Руководство


acl
rukov_usr proxy_auth "/etc/squid/acl/rukovod.usr"





#
Admins


acl
admins_usr proxy_auth "/etc/squid/acl/admins.usr"


acl
admins_ip proxy_auth "/etc/squid/acl/admins.ip"





#
Other


acl
other_usr proxy_auth "/etc/squid/acl/other.usr"








#
------------ Запрещения/Разрешения
---------------------------





acl
worktime time 9:00-17:30


acl
dinnertime time 12:00-12:30





acl
porn dstdomain "/etc/squid/bl/porn/domains"


acl
porn_reg dstdom_regex
-i adult|blow-?job|bondage|cyberlust|cybercore|hardcore|incest|masturbat|obscene|pedophil|pedofil|porn|sexdream|girl|softcore|striptease


acl
media url_regex
-i \.exe$|\.mpa$|\.torrent$|\.mp3$|\.wma$|\.m3u$|\.avi$|\.mpg$|\.mpeg$|\.wmv$|\.wav$|\.asf$|\.flv$


acl
video_upload rep_mime_type -i ^video/x-msvideo$


acl
video_upload rep_mime_type -i video/x-msvideo


acl
video_upload rep_mime_type -i ^video/mpeg$


acl
video_upload rep_mime_type -i video/mpeg


acl
video_upload rep_mime_type -i video/x-flv


acl
video_upload rep_mime_type -i ^video/x-flv$


acl
ip_port url_regex
\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}:\d{4,6}


acl
baners url_regex "/etc/squid/bl/ads/domains"


acl
proxy dstdomain "/etc/squid/bl/proxy/domains"


acl
socnet dstdom_regex -i odnoklas|vkontakt


#acl
socnet dstdomain "/etc/squid/bl/socialnet/domains"


acl
spyware dstdomain "/etc/squid/bl/spyware/domains"


acl
blocked dstdomain "/etc/squid/bl/blocked/domains"


acl
leisure_time dstdomain "/etc/squid/bl/idle/domains"





acl
local dstdomain "/etc/squid/bl/local/domains"


acl
good dstdomain "/etc/squid/bl/good/domains"





#


#


#
----------------===== Кому Чего =====-------------





http_access allow Mailport


http_access
allow local


http_access
deny ip_port


http_reply_access deny video_upload
!good worktime


http_access deny leisure_time
worktime !dinnertime !good


http_access deny porn
!good worktime


http_access deny porn_reg
!good worktime


http_access
deny baners !good worktime


http_access deny proxy
!good worktime


http_access deny socnet
!good worktime


http_access deny spyware
!good worktime


http_access deny blocked
!good worktime





#
------------ Разрешения входа
---------------------------


#
-------------#### admins ####------------------


http_access
allow admins_usr


http_access
allow admins_ip




#
----------------------------------------------------


Особо
внимательный народ заметит что тут нет
ничего про делейпулы, а вот не сложилось
у меня с ними... все некогда мне с ними
разобраться.


Не хочется
описывать все по пунктам, тем более что
так же хорошо как в родном squid.conf.orig у
меня не получиться. Но обращу внимание
на:


http_port
— указывает на какой порт нужно
подключаться к прокси серверу;


cache_mem
— размер кэша;


auth_param
— блок конфигов определяющий каким
образом будет происходить аутентификация
пользователей, особый интерес представляет
вот эта строка - auth_param
basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
.
/usr/lib/squid/ncsa_auth,
указывает какой модуль использовать
для аутентификации, а /etc/squid/passwd,
указывает какой файл использовать для
хранения логинов и паролей.


acl
Safe_ports port
— описываем какие порты
может пропускать проксик.


Дальше
пошло описание групп пользователей. В
общем тут все просто мы составляем
соответствие названию группы и
логинам/апишникам пользователей,
входящих в нее. Стоит помнить о том что
если описательная часть указывается в
ковычках, то сквид будет искать такой
файл, т. е. именно ковычки говорят что
в строке acl
market_usr proxy_auth "/etc/squid/acl/market.usr"
,
описание пользователей нужно искать в
файле /etc/squid/acl/market.usr


Следующим
идет описание фильтров. Тоже вроде все
тривиально. В мануалах описано какие
словечки за что отвечают, но добавлю,
что тут работает тот же принцип, то что
в кавычках — файл.


Далее —
сопоставление групп пользователей и
фильтов. Вообще надо сказать, что в
конфиге сквида, порядок имеет значение.
Не даром, группе no_limit_ip
я разрешил доступ в самом начале описания
групп и фильтров. Принцип такой, сквид
просматривает конфиг сверху вниз, и в
соответствии с этим порядком выставляет
разрешения. Если он в самом начале
встретил строку http_access
allow no_limit_ip
, он пропустит
пользователей входящих в эту группу и
закончит просмотр конфига. Если посмотреть
мой конфиг видно что разрешения для
группы admins находятся почти в конце
участка «вынесения вердиктов фильтрам»,
почти но не в конце, после описания этой
группы идет запрет на фильтр media.
Что это значит, это значит что сквид не
будет админам рубить медиафайлы, но
будет рубить все остальное.


Еще важное
замечание, хочу обратить внимание на
синтаксис фильтра:


http_access deny blocked
!good worktime


перевожу
на человеческий язык эту надпись:
запретить доступ группе blocked исключая
группу good и причем, только в рабочее
время. Ну мы то с вами знаем что blocked и
good это фильтры сайтов, а worktime описан как
время.


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





Чтение
логов сквида





В принципе
их можно читать прям так как есть, правда
это скучно и не очень то и удобно, зато
в высшей степени информативно. Для
помощи в этом занятии может послужить
моя статья про awk.


Но мы с
вами люди ленивые, ну по крайней мере
я. Поэтому логи я смотрю lightsquid-om а текущее
состояния проксика, просматриваю
squidview-ом. Кстати последний мы уже
поставили, в настройке он не нуждается
и прям уже готов к работе, запускайте в
консоли команду squidview и обозревайте,
обозревайте и обозревайте. Там есть
хелп, обязательно его прочтите, благо
он не большой.


Lightsquid... в
общем то, мне этот сквидвьюер нравится,
хотя некоторые предпочетают к примеру
sarg, тоже кстати не плохой, но шибко он
тяжелый. Я знаю есть люди которые ставят
и то и другое, и смотрят текущую статистику
с помощью лайтсквида которая обновляется
раз в 10-15 минут, а саржем подытоживают
статистику за день. Их право, но мне
этого не нужно, поэтому — lightsquid.


Скачиваем
с офсайта: http://sourceforge.net/projects/lightsquid/files/
там выберете последнюю версию.


Распаковываем
в … а куда хотите, у меня в /home лежит. И
делаем символическую ссылку этой папки
в /var/www:


$
sudo ln -s /home/lightsquid /var/www/lightsquid


далее
открываем /etc/apache2/httpd.conf и добавляем
следующие строки:


Alias
/stat /var/www/lightsquid


<Directory
"/var/www/lightsquid">



AddHandler
cgi-script .cgi



AllowOverride All


AuthType
Basic


AuthName
"Restricted Files"



AuthBasicProvider
file



AuthUserFile
/etc/squid/passwd


Require
user admin


</Directory>


Тут мы
указываем алиас, т. е. теперь наша
статистика доступна по двум адресам в
сети 1) http://proxyserver.local/lightsquid,
2) http://proxyserver.local/stat.
Далее мы в качестве защиты от чтения
статистики кем попало, ограничиваем
доступ к этой папке только пользователю
admin, при этом мы используем файл с паролями
squid-а.


Следующим,
и завершающим шагом, нам необходимо
настроить чтение логов сквида с каким
то периодом. Для этих нужд используется
файл crontab и несложный скрипт. В моем
случае, надеюсь что и в вашем, нам просто
необходимо положить следующий скрипт
в /etc/cron.hourly:


#!/bin/sh




test
-x /var/www/lightsquid/lightparser.pl &&
/var/www/lightsquid/lightparser.pl


Сохраняем
его к примеру, под именем lightsquid и
выставляем ему атрибут запуска:


$
sudo chmod +x /etc/cron.hourly/lightsquid


И собственно
все.



Категория: Ubuntu | Добавил: xpavlus (16.11.2010)
Просмотров: 7795 | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Бесплатный конструктор сайтов - uCoz
grand theft auto: vice city неоспоримый 4