8.04.2009

SLES ile Squid ile Transparent Proxy

Gecen sene Senol'la birlikte bir calismamiz olmustu.

Yapmamiz gereken sey suydu: Sirket icinde kullanilan Proxy'i kullanamadan cikan farkli Gatewayli makinalar icin transparan bir Proxy sunucusu kurmak ve bu kisilerin o Proxy Sunucusu uzerinden internete erismelerini saglamak, dolayisiyla internet erisimlerini loglamak.

En basta soylemem lazim : Transparent Proxy islemi HTTPS baglantilar icin calismamakta

Simdi Senol'un blog'unda yer verdigi seklinden biraz alintilar yaparak kendi eklemelerimle yontemi anlatacagim.

Biz bu calismayi yaparken SLES 11 daha yoktu dolayisiyla calismayi SuSE 10.2 x86_64 ile yaptik.

Oncelikle calisma icin kullanacagimiz paketler :

iptables

ebtables

squid

bridge-utils

Ancak bridge-utils paketi SLES Medyalarindan gelmiyor. Dolayisiyla bridge-utils paketini OpenSUSE Repository den indiriyoruz.Cift arayuzlu sunucumuzu bridge olarak kullanarak ebtables ile gelen paketi Layer 2 den Layer 3 e cikarip ,HTTP trafigini sonra da iptables ile Squid'e yonlendirecegiz. Squid ile de loglayip isimizi bitirecegiz.


bridge mode


// BRIDGE Bolumu
ifconfig eth0 0.0.0.0 up
ifconfig eth1 0.0.0.0 up

brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1

// BRIDGE Bolumu

Burada iki interfacei bridge yapiyoruz.Sonra da bridge arayuzune IP veriyoruz.


ifconfig br0 192.168.1.1 netmask 255.255.255.0 up

Sonra da HTTP trafiklerini Layer 3 e tasiyoruz

ebtables -t broute -A BROUTING -p IPv4 --ip-protocol 6 --ip-destination-port 80
-j redirect --redirect-target ACCEPT

Son olarak da Layer 3 e tasidigimiz 80. port trafigini proxy ye yoneldeniriyoruz.

iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Gelen trafigi loglayacak Squid konfigurasyonlari asagida verilmis.


Bu kadar :)


Squid 3 versiyonu için /etc/squid.conf dosyası aşağıdaki gibi düzenlenebilir:

http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

  1. 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 # https, snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
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 Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
acl lan src 192.168.1.0/24
http_access allow localhost
http_access allow lan

  1. http_access allow all



http_reply_access allow all
icp_access allow all
visible_hostname suseproxy.domainadi.com
always_direct allow all
coredump_dir /var/spool/squid

Kismen Alinti : http://senoldemirkol.wordpress.com/2008/11/17/squidi-transparent-bridge-olarak-calistirmak/