«

»

Mar 05 2010

MySQL yetkilendirmeli (MD5 parolalı) Squid v3 Kurulumu

Normal debian paketinde maleseef mysql yetkilendirmesi gelmiyor. Bunun için kaynak koddan derleyeceğiz.

squid'i derle:

./configure –enable-gnuregex –enable-useragent-log –enable-snmp –enable-err-language=Turkish –enable-referer-log –enable-basic-auth-helpers=DB

make

make install (veya debian paketi oluşturmak için; checkinstall)

/usr/local/squid klasörüne kendi dosyalarını koyacak

Başlangıcı ayarla (/etc/rc.local altına şunları ekle):

# Squid'i baslat
if [ -f /usr/local/squid/sbin/squid ]; then
echo -n ' Squid'
echo
/usr/local/squid/sbin/squid
fi

/usr/local/squid/libexec/squid_db_auth dosyasında şu değişiklikleri yap:

Parolalar MySQL üzerinde MD5 özeti olarak tutulduğu için, yetkilendirme betiğinde birkaç düzenleme yapılmalıdır. Parolalar açık olarak yazılı ise, 1 ve 2. maddelere gerek yok, 3'e atla.

Düzenleme (2011.11.21): Squid'in 3.1.16 sürümü ile yeniden yaptığım çalışmada aşağıdaki 2. maddeye gerek olmadığını, çünkü dosyanın başında my $md5 = 1; şeklinde bir değişken tanımlayarak işi çözdüklerini gördüm. Benzer şekilde, alttaki 1. maddeye de gerek kalmamış. Bunu da varsayılan olarak dahil etmişler.

1. Baş tarafa use "use Digest::MD5 qw(md5_hex);" ekle

2. Aşağıdaki satırı gözüktüğü gibi yap (md5_hex eklendi):

next if (!check_password(md5_hex($password), @$row[0]));

3. Bağlantı satırlarını kendine göre değiştir:

my $dsn = "DBI:mysql:database=veritabani_adi:host=sunucu_adi:port=3306";
my $db_user = "kullanici";
my $db_passwd = "parola";

my $db_table = "tablo_adi";
my $db_usercol = "kullanici-adi";

my $db_passwdcol = "parola";
my $db_cond = "";
my $plaintext = 1;
my $persist = 1;

Yetkilendirme betiğinin çalışıp çalışmadığını kontrol et:

/usr/local/squid/libexec/squid_db_auth yazarak enter'a bas. Gelen satırda kullanıcı_adı yaz, bir boşluk koyarak parola yaz. Enter'a bastığında OK veya ERR yazısı göreceksin. Bu şekilde önce veritabanına bağlantıda sorun olup olmadığını anlayabilirsin.

Düzenleme (2011.11.21): Üstteki paragraf sonunda DBI ile ilgili bir hata verirse, Perl için DBI modülünün yüklenmesi gerekiyor. Bunun için, Debian'da şu komut verilebilir: aptitude install libclass-dbi-mysql-perl

Access Control List (ACL) leri düzenle.

visible_hostname Vekil.Sunucusu

auth_param basic program /usr/local/squid/libexec/squid_db_auth

auth_param basic children 5

auth_param basic realm eposta kullanici adi ve parolanizi girin: (@bilecik.edu.tr'den oncesi)

auth_param basic credentialsttl 1 minute

auth_param basic casesensitive off

acl db-auth proxy_auth REQUIRED

http_access allow db-auth

acl kutuphane_hedef dstdomain "/usr/local/squid/etc/squid.hedefler.conf"

http_reply_access allow kutuphane_hedef

acl deny_all_replies src all

http_reply_access deny deny_all_replies

 

Örnek hedefler dosyası (/usr/local/squid/etc/squid.hedefler.conf)

.hukukturk.com

.isiknowledge.com

.sciencedirect.com

.ebscohost.com

.whatismyip.com

 

/usr/local/squid/etc/squid.conf dosyasını aç, acl dosyasını include ettir:

“INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS” yazan satırı bul. Bunun alt tarafında bulunan, “http_access deny all” satırından önce, şunu ekle:

include /usr/local/squid/etc/squid.acl.conf

 

vekil.pac ayarla:

function FindProxyForURL(url, host)

{

var pr_in = "PROXY 79.123.224.202:3128; DIRECT";

var pr_no = "DIRECT";

 

if (dnsDomainIs( host,".aip.org") ||

dnsDomainIs( host,".ebsco.com") ||

dnsDomainIs( host,".ebscohost.com") ||

dnsDomainIs( host,".ieee.org") ||

dnsDomainIs( host,".ieeexplore.ieee.org") ||

dnsDomainIs( host,".informaworld.com") ||

dnsDomainIs( host,"www.informaworld.com/smpp") ||

dnsDomainIs( host,".iop.org") ||

dnsDomainIs( host,".isiknowledge.com") ||

dnsDomainIs( host,".sub3.isiknowledge.com") ||

dnsDomainIs( host,".apps.isiknowledge.com") ||

dnsDomainIs( host,".isinet.com") ||

dnsDomainIs( host,".scholar.google.com") ||

dnsDomainIs( host,".sciencedirect.com") ||

dnsDomainIs( host,".portal.isiknowledge.com") ||

dnsDomainIs( host,".acs.org") ||

dnsDomainIs( host,".whatismyip.com")) {

return pr_in;

}

else

return pr_no;

}

 

SARG kur:

aptitude install sarg

/etc/squid/sarg.conf dosyasını düzenle. access.log dosyasının yerini göster. Web çıktılarını nereye atacağını göster. Dili seç.

Zaten kendisi cron'a zamanlayıcı ekler.

http://sunucu.adresi/squid-reports/ adresinden raporları görebilirsin.

Elle raporları güncellemek istersen, sarg-reports ve sarg komutlarını kullanabilirsin.

Bad Behavior has blocked 14 access attempts in the last 7 days.