NCSA_AUTH ile Şifreli Squid Proxy Kurulumu | FreeBSD
Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYmoasZG' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
Kendi proxy sunucunuzu kurmak istiyorsunuz ancak sunucunun bir Open proxy sunucusuna dönüşmesini için -ki bu çok kısa bir zaman alacaktır- proxy sunucunuza şifre koymak istiyorsunuz. Böyle bir gereksiniminiz olması durumunda, squid kullanmak yerinde olabilir. Zira, squid default olarak bir çok authentication yöntemini desteklemektedir. Bu kimlik doğrulama yöntemlerinden birisi de ncsa_auth kullanmaktır. ncsa_auth, squid sunucularının, NCSA ya da apache httpd password dosyalarını okuyabilmesine olanak sağlamaktadır. |
Bu yazıda, FreeBSD 7.2 üzeride, squid ve ncsa_auth kullanarak ile, kimlik denetimli bir proxy sunucusunun nasıl kurulabileceğine değinmek istiyorum.
İşe öncelikle squid kurarak başlıyoruz.
SQUID KURULUMU
Squid, default olarak ncsa_auth desteklediği için kurulum sırasında ekstra bir şey yapmanıza gerek yok. Default olarak squid kurulumu iş görecektir. Ben paketi port ağacından yüklüyorum.
NOT: Kurulumu port ağacından yapacağımız için öncesinde port ağacınızı güncellemek isteyebilirsiniz. Bu işlem için bkz: http://www.syslogs.org/2008/06/using-portsnap/ |
Kurulumu şu şekilde yapıyoruz…
# cd /usr/ports/www/squid31 # make install clean
Kurulumdan sonra, squid ile ilgili conf dosyaları /usr/local/etc/squid dizini altında oluşturuluyor. Bu dosyalar arasında bizim kullanacağımız tek dosya squid.conf dosyası. Bu dosya ön tanımlarla geldiğinden ve içerisinde kullanmayacağımız bir çok parametre olduğundan dolayı, ben bu dosyanın bir yedeğini alıp içerisini boşaltıyorum ve sacdece eklemek istediğim paramtreleri bu boş dosyayay ekliyorum.
Önce dosyanın yedeğini alıp içeriğini boşaltalım:
# cd /usr/local/etc/squid # cp squid.conf squid.conf.orj # > squid.conf
Şimdi elimizde boş bir squid.conf dosyası var, bu dosyayı editleyelim;
# vi squid.conf
Ve boş dosyaya aşağıdaki yapılandırma parametrelerini yapıştıralım.
visible_hostname sunucuismi.alanadi.com auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid.passwd auth_param basic realm Squid Proxy Sunucusu acl proxy_kullanicilari proxy_auth REQUIRED http_access allow proxy_kullanicilari icp_access deny all htcp_access deny all http_access deny all http_port 8989 forwarded_for off hierarchy_stoplist cgi-bin ? access_log /usr/local/squid/logs/access.log squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern (cgi-bin|\?) 0 0% 0 refresh_pattern . 0 20% 4320 icp_port 0 coredump_dir /usr/local/squid/cache
Dosyayı kaydederek çıkalım.
Conf dosyasına eklediğimiz satırlarla ilgili açıklamalar şu şekilde:
-
visible_hostname sunucuismi.alanadi.com:
Sunucunun görünen adı. Buraya fake bir isim ve alanadı yazabilirsiniz.
-
auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid.passwd:
Squid'in hangi kimlik doğrulama mekanizması kullanacağını söylediğimiz bölüm. Bu satırda, auth işlemleri için /usr/local/libexec/squid dizini altındaki ncsa_auth programının kullanılmasını ve bu program ile /usr/local/etc dizini altındaki squid.passwd dosyasının okunmasını söylüyoruz. Bir sonraki adımda, squid.passwd dosyasını oluşturacağız.
-
auth_param basic realm Squid Proxy Sunucusu
Kullanıcıların, kimlik denetimi ekranında görecekleri, proxy sunucusu ile ilgili bilgi içeren ibare.
-
acl proxy_kullanicilari proxy_auth REQUIRED
proxy_kullanicilari isimli access list için kimlik doğrulaması yapılmasını söylediğimiz bölüm.
-
http_access allow proxy_kullanicilari
proxy_kullanicilari isimli access liste http erişiminin verildiği kısım.
-
http_access deny all
Geri kalan herkese http erişiminin engellendiği kısım. Böylece, kimlik denetiminden geçen kullanıcılar haricinde kimse bu proxy sunucusunu kullanarak erişim sağlayamayacaktır.
-
http_port 8989
Proxy sunucusunun dinleyeceği port numarası. Bu portu kendi belirleyeceğiniz bir rakam olarak belirleyebilirsiniz.
-
forwarded_for off
Squid'in http requestlerinde kullanıcılarının gerçek iplerini iletmesini sağlayan forwarded_for parametresinin kapatılması. Client IP adresinizin görünmemesini istiyorsanız bu değeri off yapmalısınız. (Gizli işler çevirmek istiyorsanız : )
Dosyay eklediğimiz önemli paramterler bunlardı. Diğerleri satırlara da kısaca değinmek gerekirse: başka proxy sunucuları ile irtibata geçmeyeceğimiz için icp ve htcp protokollerine izin vermiyoruz. ve ayrıca default squid refresh pattern değerlerini kullanıyoruz.
Sanırım yapılandırma ile ilgili bu kadar bilgi yeterli olur.
Şimdi şifrelerimizi belirleyeceğimiz passwd dosyasının oluşturulması işini yapalım.
HTPASSWD ile NCSA/apache TİPİ PASSWORD DOSYASI OLUŞTURMAK
Yazının başında da dediğim gibi squid'in ncsa_auth kullanarak kimlik doğrulaması yapabilmesi için apache stili bir password dosyasına ihtiyacı bulunuyor. Bu dosyayı apache ile birlikte gelen htpasswd programı ile oluşturabiliyoruz. Eğer sisteminizde apache kurulu ise htpasswd programı halihazırda bulunuyordur. Fakat sunucuda apache yoksa, program tek başına kurulabilir bir paket olmadığından izlenebilecek üç yol bulunuyor.
- Apache kurmak :)
- Üzerinde apache kurulu olan başka bir makinada htpasswd kullanarak password dosyasını oluşturmak ve dosyanın içeriğini squid sunucusuna aktarmak.
- Apache'yi sadece derleyerek binary dosyalarının oluşturulmasını sağlamak ve derlenen dosyalar içerisinden htpasswd ile ilgili olanları almak.
Ben bu yöntemlerden üçüncüsünün nasıl yapıldığından bahsetmek istiyorum. Siz diğer iki yöntemden birini kullanacaksanız aşağıdaki adım başlığını geçebilirsiniz.
Apache Kurmaya Gerek Kalmadan htpasswd Programının Edinilmesi
Apache'yi derleyelim:
# make -C /usr/ports/www/apache22
Bu işlemin ardından binary dosyaları oluşturulmuş fakat sisteme yüklenmemiş oluyor. Ilgili dizinde htpasswd dosyasını aratırsanız binary'nin kendisini ve kütüphananesini bulabilirsiniz:
# cd /usr/ports/www/apache22 # find . -name htpasswd
Çıktı şöyle olacaktır:
./work/httpd-2.2.11/support/htpasswd ./work/httpd-2.2.11/support/.libs/htpasswd
Evet dosyalar oluşturulmuş; şimdi bu dosyaları ilgili sistem dizinine taşıyalım:
Not: htpasswd kütüphanesinin bulunması gereken /usr/local/sbin/.libs dizini öntanımlı olarak bulunmadığı için bu dizini manuel olarak oluşturacağız.
# mkdir /usr/local/sbin/.libs # cp /usr/ports/www/apache22/work/httpd-2.2.11/support/htpasswd /usr/local/sbin/ # cp /usr/ports/www/apache22/work/httpd-2.2.11/support/.libs/htpasswd /usr/local/sbin/.libs/
Şimdi htpasswd programı kullanıma hazır bulunuyor. Yani artık squid.passwd isimli password dosyasını oluşturabiliriz.
NOT: htpasswd ile işiniz bittikten sonra, derlenen dosyaların hepsini temizlemek istiyorsanız make -C /usr/ports/www/apache22 clean komutunu kullanabilirsiniz. Ancak bu durumda htpasswd programı ikinci sefer kullanılamaz. Dolayısı ile böyle bir işlem yapmak istiyorsanız, işlemi tüm kullanıcıları oluşturduktan sonra yapmalısınız. Tam temizlik için ilgili komuttan sonra /usr/local/sbin altındaki htpasswd binaryisini ve .libs dizinini silebilirsiniz. |
Htpasswd ile Password Dosyasının Oluşturulması
Programcığın kullanımı çok kolay; conf dosyasının içerisinde belirttiğimiz /usr/local/passwd/squid.pass dosyasının oluşturulması ve bir kullanıcı eklenmesi için aşağıdaki komutu kullanabilirsiniz.
# htpasswd -c /usr/local/etc/squid.passwd kullanici_adi
Komutun çıktısı şu şekilde olacaktır:
New password: Re-type new password: Adding password for user kullanici_adi
Bu şekilde hem /usr/local/etc/squid.passwd dosyası oluşturulmuş oldu hem de bir kullanici belirlemiş olduk.
Password Dosyasına Kullanıcı Eklemek
Aynı komutu ikinci kez çalıştırmanız durumunda bir önce oluşturduğunuz kullanıcıya ait bilgiler uçacaktır. Bu nedenle dosyaya ekleme yapmak için komutu aşağıdaki gibi -c parametresi olmaksızın girmelisiniz.
# htpasswd /usr/local/etc/squid.passwd diger_kullanici
Artık tüm işlemler tamamlandı. Bundan sonraki aşama squid sunucusunu başlatmaktır.
SQUID'in BAŞLATILMASI
Squid'i başlatmadan önce cache dizinlerinin oluşturulması için aşağıdaki komutu verin.
# squid -z
Dizinler oluşturulduktan sonra squid'i başlatın.
# /usr/local/etc/rc.d/squid start
Herşey yolunda gittiyse, proxy sunucusu hazır demektir. Browser'ınızın proxy ayarlarını set ettiğinizde kullanıcı adı ve şifre girmenizin isteyen ekran gelecektir. Kullanıcı bilgilerinizi girerek surf yapmaya başlayabilirsiniz.
Kaynaklar:
http://www.cyberciti.biz/tips/linux-unix-squid-proxy-server-authentication.html
Bu yazılar da ilginizi çekebilir:
- apache: password protected bir alanda dosya / dizin exclusion
- Squid ve IPFIREWALL ile Transparan Proxy Kurulumu
- Apache mod_proxy, mod_cache ile Reverse Proxy Kurulumu
- Squid ile web sitelerini manupule etmek
- mod_rewrite – .htaccess ile Bakım Sayfasına Yönlendirme
Yorumlar
Henuz yorum yapilmamis.
Yorumda bulunun.