Yazılar

Dansguardian + Squid problemi.Nam-ı diğer follow_x_forwarded_for

Açıklama

Tıpkı diğer yazdığım belgeler gibi bu belge de kirlidir.Ama siz buna aldırmayabilirsiniz.Çünkü işe yaramaz şeyler yazmamaya gayret ediyorum.Bozuk türkçem için tekrar özür.Birgün düzelecek:)

Neden Dansguardian? Squid bize yetmez mi?

Eğer konu içerik filtreleme ise yetmez.Çünkü squid çok başarılı bir http proxydir,access control list yapısı bence benzersizdir ancak konu içerik filtreleme (dikkat adres satırı değil,içerik!) olunca ne yazıkki yetersiz kalıyor.

Dansguardian işte burda devreye giriyor,squidin yapamadığı içerik filtrelemeyi başarıyla gerçekleştiriyor.

Peki neden sadece dansguardian kullanamıyoruz?

Öööle yapmış adamlar napalım yani:)Dansguardian mutlaka bir http proxy ile beraber çalışmak zorunda.Cachei,Acl,Delay Pools,Httpd Accel gibi özellikleri yok.Tek yaptığı iş web sayfalarının içeriğine bakmak.Bunu da gayet iyi yapıyor.

Sorun ne peki?

Dansguardian ile squidi aynı makinaya kurdunuz.dansguardian da ve squidde standart ayarlarları yaptınız.Herşey çalışır durumdayken squid’in access.log una bir bakın.Tüm web isteklerinin kaynak ip’lerinin değişmiş olduğunu göreceksiniz.Artık tüm isteklerin kaynağı proxy sunucunuz gibi görünmektedir.Bu durumda squid’in access control listeleri kullanılamaz hale gelir.

Çözüm ne?

Bildiğim kadarıyla ilk çözüm squid 2.4 versiyonuna bir yamayla başladı.Ama ben bununla ilgilenmedim.Burada yapacağımız squid kurulumu kaynaktan derleme olacaktır.(squid-2.6.STABLE6.tar.gz)

Dansguardian için debian stable depolarından normal kurulum yeterli olacaktır.Dansguardian tarafında sadece dansguardian.conf ta yapacağımız iki satır değişiklik,hepsi bu.

Squid Kurulumu

Yukarda bahsettiğim tar.gz dosyasını www.squid-cache.org dan indirin.Sisteminizde istediğiniz bir yere açın.Şu parametrelerle derleyin.

./configure –enable-follow-x-forwarded-for –enable-linux-netfilter –enable-delay-pools –enable-arp-acl

make all

ve son olarak make install

Aşağıda verdiğim derleme seçeneklerini kısaca açıklamaya çalışacağım

ilk parametre olan enable-follow-x-forwarded-for bizim sorunumuzu çözen parametre.Başka proxy üzerinden istek yapan hostların kendi ip sini bulmamıza yardımcı olur.Buradaki başka proxy dansguardian oluyor.

–enable-linux-netfilter bize transparan proxy yapmamıza imkan tanıyan derleme seçeneğidir.

–enable-delay-pools : Delay Pools Squid’de bandwidth management yapmanıza imkan tanır.

–enable-arp-acl : Ip değiştirmeyi bilen akıllı kullanıcılarınıza,bunun yeterli olmayacağını göstermenize imkan tanıyan parametre.Onlar ethernet kartı veya mac adreslerini değiştirmeyi öğreninceye kadar ,size kurallarınızı uygulayabilme imkanı tanır.

Herhangi bir hata yoksa,squid sisteminize başarıyla kurulmuştur.Eğer farklı bir yol belirlemediyseniz squid /usr/local altındadır.

Aşağıdakileri adım adım yapın.
Proxy adında bir grup ve bu gruba üye aynı isimde bir kullanıcı yaratın.

/usr/local/squid/var/log ve /usr/local/var/cache dizinlerinin haklarını bu kullanıcı ve grupla değiştirin.

/usr/local/squid/etc/squid.conf un bir yedeğini alın.Aşağıdaki satırları dosyanıza ekleyin.

İlk sayfada;

# Squid normally listens to port 3128
http_port sunucu_ip_no:3128 transparent

Acl ile ilgili bölümde koyu olan bölümleri ilave edin.
acl all src 192.168.0.0/255.255.255.0 (siz bunu kendi networkünüze göre ayarlayın)
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
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
follow_x_forwarded_for allow all

acl_uses_indirect_client on
# delay_pool_uses_indirect_client on (band genişliği sınırlaması yapmıyorsanız buna ihtiyacınız olmaycaktır.
log_uses_indirect_client on

Daha sonra http_access ile başlayan bölüme geçin, kendi politikanıza göre izinleri ve yasakları ayarlayın.

Dosyayı kaydederek çıkın.Squid başlatılmadan önce cache dizin yapısı oluşturulmalıdır.

/usr/local/squid/sbin/squid -z ile cache yapısını oluşturun.Burada bir hata alırsanız dosya izinlerini kontrol edin.

Hata yoksa;

/usr/local/squid/sbin/squid

komutu ile squid çalışacaktır.

Dansguardianın Ayarlanması

Daha önce de belirttiğim gibi dansguardianın standart kurulumu yeterli.Debian veya türevi bi OS kullanıyorsanız apt-get install dansguardian komutu ile sisteminize kurabilirsiniz.

Not:Eğer bunu da kaynaktan derlemek isterseniz dansguardian’ın virüs tarama yeteklerini incelemenizi tavsiye ederim.Ben çok başarılı bulamadım.Özellikle flash web sitelerinde yükleme esnasında çok bekletiyor.Zaten virüs dediğimiz şey sadece web sayfalarında gelse bu kadar başımız ağrımazdı.Anti-virus koruma istiyorsanız size snort_inline+clamav ı tavsiye ederim.Onun dökümanı da bu blogda mevcuttur.Reklam!

/etc/dansguardian altında dansguardian.conf dosyasını açın.

İlk satırlarda UNCONFIGURED yazısı başına bir # ilave edin.

# DansGuardian config file for version 2.8.0

# **NOTE** as of version 2.7.5 most of the list files are now in dansguardianf1.conf

# Comment this line out once you have modified this file to suit your needs
#UNCONFIGURED

Daha sonra şu bölümleri ayarlayın

# Network Settings
#
# the IP that DansGuardian listens on. If left blank DansGuardian will
# listen on all IPs. That would include all NICs, loopback, modem, etc.
# Normally you would have your firewall protecting this, but if you want
# you can limit it to only 1 IP. Yes only one.
filterip = sunucu_ip_no

# the port that DansGuardian listens to.
filterport = 8080

# the ip of the proxy (default is the loopback – i.e. this server)
proxyip = sunucu_ip_no

# the port DansGuardian connects to proxy on
proxyport = 3128

Sonra biraz daha ilerleyerek şu satırları bulun değerleri on yapın.

# Misc settings

# if on it adds an X-Forwarded-For: to the HTTP request
# header. This may help solve some problem sites that need to know the
# source ip. on | off
forwardedfor = on

# if on it uses the X-Forwarded-For: to determine the client
# IP. This is for when you have squid between the clients and DansGuardian.
# Warning – headers are easily spoofed. on | off
usexforwardedfor = on

Dosyayı kaydederek çıkın.Dansguardian’ı start edin.Squidin çalıştığına emin olun.En son bir client başına geçerek birkaç web sayfasına girin.Daha sonra

tail -f /usr/local/squid/var/logs/access.log yazarak istekleri izleyin.Artık squid’de gerçek client ip lerini görebilecek ve buna göre kendi acl lerinizi yazabileceksiniz.