Настройка прозрачного прокси сервера squid на debian 7 (ubuntu)

И так, зачем же вообще нужен прозрачный прокси сервер на базе squid и Debian 7 ? Трафик давно уже кэшировать не нужно, он стал дешевым, каскад прокси тоже никому не интересен, а вот заблокировать социальные сети пользователям по приказу высшего руководства он нам очень даже поможет. Для начала, расскажу вам, что такое прозрачный прокси сервер и чем он отличается от обычного.

Transparent proxy, он же прозрачный прокси, нужен для того, чтобы не менять в настройках каждого браузера параметры сети. Это сильно облегчает жизнь системному администратору. Весь трафик по протоколу http средствами iptables будет заворачиваться на squid и проходить через соответствующие политики доступа.

Прокси сервер squid

 

И так, для начала обновим систему и установим сам squid

aptitude update
aptitude upgrade
aptitude install squid3

и сразу же затрем дефолтный конфиг
>/etc/squid3/squid.conf

Теперь определимся, чей трафик будет проксироваться, а кого пустим напрямую. В нашей офисной сети по-прежнему четыре сегмента разделенные по средствам vlan. Очевидно, что проксировать трафик ИТ-отдела и ТОП-менеджмента нам не нужно, следовательно остается бухгалтерия и коммерческий отдел. Создадим для них списки доступа и разрешим им доступ в интернет.

nano -w /etc/squid3/squid.conf

# NET ACLs
acl buh src 192.168.10.64/26
acl komotdel src 192.168.10.128/26
#ACCESS
http_access allow buh
http_access allow komotdel
http_access deny all
http_port 3128

Так же, добавим некоторые значения по умолчанию в наш squid.conf. После изменения он будет выглядеть следующим образом:

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
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
#NET ACLs
acl buh src 192.168.10.64/26
acl komotdel src 192.168.10.128/26
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
#ACCESS
http_access allow buh
http_access allow komotdel
http_access deny all
http_port 3128
coredump_dir /var/spool/squid3
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

Теперь переводим squid в режим работы transparent proxy. Для этого создадим отдельный vlan, на который будем натить все проксируемые сети.
vconfig add eth2 3128
ifconfig eth2.3128 172.16.100.1/32 up

Сразу пропишем этот интерфейс в /etc/network/interfaces

# VLAN 3128 (Proxy)
auto vlan3128
iface vlan3128 inet static
address 172.16.100.1
netmask 255.255.255.255
vlan_raw_device eth2

Чтобы заставить работать squid в режиме прозрачного прокси, нужно изменить строчку
http_port 3128 на http_port 172.16.100.1:3128 transparent
Сохраняем изменения и реконфигурируем прокси
squid -k re

Теперь изменим настройки NAT для коммерческого отдела и бухгалтеров

#VLAN101
$FW -A FORWARD -s 0/0 -d $NET101 -j ACCEPT
$FW -A INPUT -s $NET101 -d 172.16.100.1 -p tcp --dport 3128 -j ACCEPT
$FW -t nat -A PREROUTING -i vlan101 -d 0/0 -p tcp -m multiport --dport 80,8080 -j DNAT --to 172.16.100.1:3128
$FW -t nat -A POSTROUTING -s $NET101 -j MASQUERADE
$FW -A INPUT -i vlan101 -s $NET101 -d $VLAN101 -j ACCEPT
#VLAN102
$FW -A FORWARD -s 0/0 -d $NET102 -j ACCEPT
$FW -A INPUT -s $NET102 -d 172.16.100.1 -p tcp --dport 3128 -j ACCEPT
$FW -t nat -A PREROUTING -i vlan102 -d 0/0 -p tcp -m multiport --dport 80,8080 -j DNAT --to 172.16.100.1:3128
$FW -t nat -A POSTROUTING -s $NET102 -j MASQUERADE
$FW -A INPUT -i vlan102 -s $NET102 -d $VLAN102 -j ACCEPT

После внесения этих изменений в скрипт iptables, применяем их и пробуем работу интернета. Сайты по протоколу http должны открываться через прокси, https при таком подходе не работает. Для всех разрешенных ИТ политикой https узлов необходимо отдельно прописать настройки NATа. Об этом и блокировке социальных сетей я расскажу в следующей статье.