Источник: 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/
Комментариев нет:
Отправить комментарий