вторник, 28 февраля 2012 г.

Установка прозрачного прокси сервера Squid на CentOS 5.5


Источник: http://metalcandy.ru/how-to-forge-centos/219-transperity-proxy-squid-on-centos?showall=1

Конечно Squid популярный с открытом кодом GPL прокси сервер. Он имеет множество применений, от ускорения веб-сервера путем кеширования на неоднократные просьбы, кеширование запросов доменных имён, а блокирование сетевых ресурсов. Squid в первую очередь предназначена для работы в Linux / Unix-подобных систем. Squid это высокопроизводительный прокси-сервер кеширования для веб-клиентов, поддержка FTP, Gopher, HTTP и объектов данных. В отличие от традиционных программ кеширования, Squid обрабатывает все запросы в одном, не блокирование, I / O инициативе процесса. Squid хранит метаданные и особенно горячие запросы сохраняются в оперативной памяти, кеш DNS поиск, поддерживает неблокирующий DNS поиска, и реализует отрицательное кеширование отказавших запросов. Установим и настроим прозрачный прокси сервера Squid на CentOS / RHEL 5.


1. Установка Squid

Используем терминальную консоль введём команду:
yum install squid
Loading "installonlyn" plugin
 Setting up Install Process
 Setting up repositories
 Reading repository metadata in from local files
 Parsing package install arguments
 Resolving Dependencies
 --> Populating transaction set with selected packages. Please wait.
 ---> Package squid.i386 7:2.6.STABLE6-4.el5 set to be updated
 --> Running transaction check
Dependencies Resolved
=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
 Installing:
 squid                   i386       7:2.6.STABLE6-4.el5  updates           1.2 M
Transaction Summary
=============================================================================
 Install      1 Package(s)
 Update       0 Package(s)
 Remove       0 Package(s)
Total download size: 1.2 M
 Is this ok [y/N]: y
 Downloading Packages:
 Running Transaction Test
 Finished Transaction Test
 Transaction Test Succeeded
 Running Transaction
 Installing: squid                        ######################### [1/1]
Installed: squid.i386 7:2.6.STABLE6-4.el5
 Complete!

2. Настройка Squid

Настройка прозрачного прокси сервера Squid без аутентификации. Запретим скачивать файлы с определенными расширениями, закроем большую часть баннеров и прочую рекламу, запретим доступ к некоторым сайтам. Эти правила буду действительны для основной части пользователей интернета. И будет создана группа с полным доступом ко всем ресурсам сети интернет.
Squid конфигурационный файл находится в /etc/squid/squid.conf. Отредактируйте файл:
vi /etc/squid/squid.conf
# 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
 acl SSL_ports port 443 563
 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
# TAG: http_access
 http_access allow manager localhost
 http_access deny manager
 http_access deny CONNECT !SSL_ports
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
 acl our_networks src 192.168.0.0/24
 acl full-access src 192.168.0.100-192.168.0.103
 acl full-access src 192.168.0.2
 acl bad_url url_regex "/etc/squid/acl/bad_url.domain"
 acl upload url_regex "/etc/squid/acl/upload.domain"
 acl filetypes urlpath_regex -i "/etc/squid/acl/filetypes.acl"
 acl banners url_regex "/etc/squid/acl/ads.acl"
http_access deny banners !full-access
 http_access deny filetypes !full-access
 http_access deny upload !full-access 
 http_access deny bad_url !full-access
 http_access allow our_networks
 http_access allow full-access
#  TAG: http_reply_access
 icp_access allow all
 
# NETWORK OPTIONS
# -----------------------------------------------------------------------------
# TAG: http_port
 http_port 3128 transparent
# TAG: hierarchy_stoplist
 hierarchy_stoplist cgi-bin ?
 
# DISK CACHE OPTIONS # -----------------------------------------------------------------------------
# TAG: cache_replacement_policy
 cache_dir ufs /var/spool/squid 40000 16 256
# TAG: maximum_object_size         (bytes)
 maximum_object_size 50 MB
# TAG: cache_swap_low     (percent, 0-100)
# TAG: cache_swap_high    (percent, 0-100)
 cache_swap_low 90
 cache_swap_high 95
 
# LOGFILE OPTIONS
# -----------------------------------------------------------------------------
#  TAG: access_log
 access_log /var/log/squid/access.log squid
 # OPTIONS FOR TUNING THE CACHE
# -----------------------------------------------------------------------------
# TAG: cache
 acl QUERY urlpath_regex cgi-bin \?
# TAG: refresh_pattern
 refresh_pattern ^ftp:             1440     20%      10080
 refresh_pattern ^gopher: 1440     0%       1440
 refresh_pattern .                 0        20%      4320
# TAG: store_avg_object_size       (kbytes)
 store_avg_object_size 70 MB
# HTTP OPTIONS
# -----------------------------------------------------------------------------
#  TAG: broken_vary_encoding
 acl apache rep_header Server ^Apache
 cache deny QUERY
 broken_vary_encoding allow apache

Сохраните и закройте файл конфигурации Squid.
Создадим директорию и файлы в которых буду хранится правила который буду блокировать сетевые ресурсы.
cd /etc/squid/  mkdir acl cd /etc/squid/acl/
 
vi bad_url.domain vi upload.domain vi filetypes.acl vi ads.acl
Запустите Squid прокси сервер:
chkconfig squid on /etc/init.d/squid start
init_cache_dir /var/spool/squid... Starting squid: .       [  OK  ]
Проверка порта 3128:
netstat -tulpn | grep 3128
tcp        0      0 0.0.0.0:3128                0.0.0.0:*                   LISTEN      20653/(squid)
Откройте TCP порт 3128

3. Настройка Iptables

Проверти брандмауэр iptables на наличие открытых портов и настройте его для работы как шлюз для прокси сервера Squid. Отредактируйте /etc/sysconfig/iptables:
vi /etc/sysconfig/iptables
Настройка snat и переброс порта 80 через 3128 для прозрачного прокси сервера, добавив в таблицу *nat строки:
-A POSTROUTING -o eth0 -j SNAT --to-source IP адрес интернет соединения
 -A PREROUTING -p tcp -m tcp -s 192.168.0.0/24 --dport 80 -j REDIRECT --to-port 3128
Открыть порт 3128 добавив в таблицу *filter строки: 
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3128 -j ACCEPT
или
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3128 -j ACCEPT
Перезапустите iptables:
/etc/init.d/iptables restart
Flushing firewall rules:                                   [  OK  ]
 Setting chains to policy ACCEPT: filter                    [  OK  ]
 Unloading iptables modules:                                [  OK  ]
 Applying iptables firewall rules:                          [  OK  ]
 Loading additional iptables modules: ip_conntrack_netbios_n[  OK  ]

4. Проверка работы Squid

Сервер установлен и запущен протестируем его на клиентской машине с ip адресом к примеру 192.168.0.37 и откроем к примеру www.yandex.ru и www.vkontakte.ru
Не увидим баннеры и яндекс директ, ну и яндекс фотки т.к. заблокирован под домен foto.yandex.ru
Не увидим интернет ресурс vkontakte.ru т.к. он тоже заблокирован.
Примеры файлов
.vkontakte.ru
.mail.ru

.depositfiles.com

\.(exe)$

/adv/.*\.gif$
/[Aa]ds/.*\.gif$
/[Aa]d[Pp]ix/
/[Aa]d[Ss]erver
/[Aa][Dd]/.*\.[GgJj][IiPp][FfGg]$
/[Bb]annerads/
/adbanner.*\.[GgJj][IiPp][FfGg]$
/images/ad/
/reklame/

Комментариев нет:

Отправить комментарий