Linux + Squid + iptables ile Internet Yönetimi
Şirketlerde birçok IT yöneticisinin başına gelmiştir. Kullanıcıların istenmeyen sitelere girişleri, istenmeyen yazılımlarla download yapmaları ve bunun gibi bir çok mesele. IT yöneticileri bunları izlemek, engellemek, raporlamak için çözümler aramaktadırlar.
Bende izlediğim bazı gruplarda bu olayı nasıl yapacaklarını soran bir çok arkadaşa Linux+Squid+iptables 3 lüsünü öneriyorum. Bilinenin aksine Linux işletim sistemleri bundan 5 yıl öncesinde olduğu gibi anlaşılması zor işletim sistemleri değiller artık. Şimdi aşağıdaki yazımda bunların nasıl kurulacağını ve nasıl konfigure edileceğini anlatmaya çalışacağım.
Öncelikle gereksinimlerimizi yazalım ;
Ben yazımda CentOS kurulu bir Virtual Machine bilgisayar kullanıcam. Bu dağıtımları kendi sitelerinde bulabilirsiniz.
CentOS - http://www.centos.org
ubuntu - http://www.ubuntu.com
ubuntu Türkiye - http://www.ubuntu-tr.com
CentOS Server linux dağıtımını CDROM'a takıp pcmizi çalıştırdığımızda karşımıza kurulum ekranı gelicektir.(Resim 1)
Resim 1 :
Bize ilk sorduğu Medyanın (CDnin) sorunsuz olup olmadığını test edip etmemesidir. CD nin temiz olduğuna eminseniz Skip diyebilirsiniz.
Kurulumu yapmamıza yardımcı olacak olan kurulum sihirbazı yüklenmesi tamamlandığında karşımıza Resim 2 deki gibi bir ekran gelicektir. Artık kurulumumuza başlayabiliriz.
Resim 2 :
Next dediğimizde bize sistem dilini devamında sistem klavye dilini belirlememizi isticektir. Her ikisindede Turkish seçilmelidir.
Devam eden ekranda sistemi kurmak için diskin bölümlerinin oluşturulması aşaması gelecektir. Burada Diski otomatik bölümlendirmesini ve mevcut bölümlerin silinmesini onayladığımızda kur diskimizi Resim 3 teki gibi parçalara böler.
Resim 3 :
Bir sonraki ekran Önyükleyici belirlenmesi. Bu ekranda bir değişiklik yapmadan İleri diyerek devam edelim. Devamında ise Ağ yapılandırması ekranı karşımıza gelecektir. Öncelikle bir ağ planımızı yapalım. Sizde kendinize uygun bir şekilde yapabilirsiniz.
Modem IP : 10.0.0.1
DMZ IP Aralığı : 10.0.0.3 - 10.0.0.254
Linux WAN IP : 10.0.0.2
Linux WAN Gateway(Ağ Geçidi) : 10.0.0.1
Linux LAN IP : 10.0.1.1
Local IP Aralığı : 10.0.1.2 - 10.0.1.254
Local Ağ Geçidi : 10.0.1.1
Alt Ağ Maskesi : 255.0.0.0
Not : Demilitarized Zone (DMZ) Linux tarafından kısıtlanmadan direkt modem üzerinden internete bağlanmasını istediğiniz cihazlardır.
Diagram :
Bu durumda Linux makinemize bağlı 2 adet ethernet kartını network ayarları ekranında yukarıdaki tabloya uygun bir şekilde ayarlıyoruz.(Resim 5)
Resim 5 :
Bir sonraki adım Güvenlik Duvarı ayarları. Biz burada CentOS üstune iptables kuracağımızdan CentOS üstünde gelen güvenlik duvarını kullanmıyoruz. Güvenlik duvarını ve SELinux ı kapalı hale getirip devam edelim.
Sonraki ekranda Sistem Dilini English yapıyoruz. TR desteği tam olmadığından ve çıkan sorunlara ingilizce yanıt bulmak daha kolay olduğundan ingilizceyi seçiyoruz.
Bir sonraki ekranda artık konfigurasyonumuz bitiyor ve bizden sistemin yöneticisi olan root kullanıcısının şifresini belirlememizi istiyor. Şifre yazıp devam ediyoruz.
Sonraki aşamada bize neleri kurmak istediğimizi belirtmemizi istiyor. Bu aşamada Ön tanımlı paketleri kurmak şu anda bize yeterli. Ön tanımlı paketlerimizi kuruyoruz. Ve İleri deyip kurulumumuzu başlatıyoruz.
Ve CentOS Kurulumumuz tamamlanıyor. (Resim 6)
Resim 6 :
Sistem yeniden başladıktan sonra terminal ekranında açılır ve bizden login olmamız istenir. Daha önceden belirlediğimiz root kullnıcısı ve şifresi ile sisteme login olunur. (Resim 7)
Resim 7 :
Bundan Sonraki adımları burada kod çerçevesinde yazacağım.
Öncelikle Network ayarlarımızı tekrar tanımlayalım ve sınayalım :
[root@proxy ~]$ ifconfig eth0 10.0.0.2 netmask 255.0.0.0 [root@proxy ~]$ ifconfig eth1 10.0.1.1 netmask 255.0.0.0 [root@proxy ~]$ route add default gw 10.0.0.1
Devamında sunucunun güncelliğini kontrol ediyoruz.
[root@proxy ~]$ yum upgrade ...... Transaction Summary ============================================================================= Install 3 Package(s) Update 169 Package(s) Remove 0 Package(s) Total download size: 187 M Is this ok [y/N]:Y # Y tuşuna basarak devam ediyoruz.
yum gerekli bileşenleri kontrol edip internetten indirip sisteme kuracaktır.
CentOS ile apache webserver, squid, iptables zaten gelmektedir. Eğer kurulumda sisteme yüklenmemişse aşağıdaki kodu yazarak sisteme kurulmasını sağlayabilirsiniz.
[root@proxy ~]$ yum install httpd php iptables squid
Şimdi bize bir adet metin editoru lazım. Config dosyalarımızı rahat bir şekilde düzenlemek için. Ben bu işlem için Pico/pine/nano yu kullanıyorum. Linux terminal ekranından bir adresten dosya çekmek için wget komutu kullanılır.
Not : Adres sığmadığı için bu linkin adresini kullanınız.
[root@proxy ~]$ wget ftp://ftp.nluug.nl/pub/ibiblio/distributions/smeserver/releases/testing/7.2/smeos/i386/CentOS/RPMS/pine-4.64-3.el4.rf.i386.rpm [root@proxy ~]$ rpm -Uhvf pine-4.64-3.el4.rf.i386.rpm
Böylece artık bir metin editörümüz var (pico)
Artık Webmin (Linux Yönetim Web Arayüzü) kurabiliriz.
Not : Adres sığmadığı için bu linkin adresini kullanınız.
[root@proxy ~]$ wget http://kent.dl.sourceforge.net/sourceforge/webadmin/webmin-1.340-1.noarch.rpm [root@proxy ~]$ rpm -Uhvi webmin-1.340-1.noarch.rpm
Webmin kurulduktan sonra ağda bulunan herhangi bir makineden browser adres çubuğuna http://10.0.1.1:10000 yazdığımızda karşımıza webmin panel gelecek ve root kullanıcısı ve şifresi ile login olup sistemdeki ayarlamaları bu panel üzerinden rahatça yapabiliriz.
Webmin'in dili varsayılan olarak ingilizce gelir. Soldaki menüden Webmin Language/Themes ten Dil seçimi yapabilirsiniz.
Squid Proxy Sunucusunun çalışması için Webmin panelimizde Sunucular bölümünden Squid Proxy Sunucusunu seçiyoruz. Squid ilk defa çalışacağı için Cache için bir klasörün ilklendirilmesini isteyecektir. Resim 8 deki gibi Cache İlklendir butonuna basarak bu işlemi yapalım.
Resim 8 :
Squid kurulumumuz tamamlandığına göre artık Güvenlik Duvarımızı çalışır hale getirme zamanı geldi. Bunun için Linux config dosyalarının bulunduğu /etc klasörüne bir dosya oluşturup bunun içinde iptables ayarlarını tanımlayacağız. ve bu dosyayı her açılışta çalışması için ayarlayacağız. o yuzden tekrar terminale geçiyoruz.
Linux sunucumuz ağda olduğuna göre artık ne monitöre nede klavye mouse ihtiyacımız var. Terminali ağımızdaki herhangi bir pc den de yönetebiliriz. Bunun için Putty isimli ufak bir SSH bağlantı yazılımı kullanıyoruz. Programı bu linkten indirebilirsiniz. Kullanımı gayet basittir. Çalıştırdığımızda gelen ekranda Host kısmına Linux Sunucumuzun IP adresini yazıp SSH ı seçmemiz ve Connect dememiz yeterlidir. Putty üzerinde kopyalama/yapıştırma Windows gibi değildir. Kopyalamak için kopyalanacak yeri seçmeniz yeterlidir. Yapıştırmak içinse yapıştırılacak yere imleci getirip mouse sağ butonu ile yapıştırılır.
Güvenlik Duvarını aktif etmek için Putty ile Linux Sunucumuza bağlanıp sırası ile aşağıdaki komutları verelim.
Not : Örnek Güvenlik Duvarı Konfigurasyon Dosyası için tıklayın..
[root@proxy ~]$ cd /etc [root@proxy etc]$ pico rc.firewall
# Burada metin editörümüz bize boş bir rc.firewall dosyası oluşturup düzenlemek için ekranımıza getirir. Yukarıda verdiğim dosya içeriğini kendinize göre düzenleyip buraya yapıştırarak Ctrl+X ve Y Enter diyerek kaydedip çıkmamız gerekmektedir.
[root@proxy etc]$ chmod +x rc.firewall [root@proxy etc]$ ./rc.firewall
Böylece yukarıda tanımladığımız tüm güvenlik tanımlamaları uygulanmış oldu. Artık Squid Proxy Sunucusu üzerinde Kullanıcı tanımlamaları ve kısıtlama tanımlamaları yapmaya başlayabiliriz.
Çok özür dileyerek makaleme uzun bir arada sonra devam ediyorum.
Şimdi squid proxy sunucusunun kullanıcı tanımlamalarını yapmaya başlayabiliriz.
Webmin üzerinden squid sunucusu ayarlarına girdiğimizde karşımıza Resim 8 deki gibi bir görüntü gelmesi gerekmektedir. Giriş kontrol kısmı kullanıcı tanımlamarı yapmamıza ve bu kullanıcılara kısıtlamalar vermemizi sağlıyacaktır.
Giriş kontrol kısmı temelde 2 alandan oluşur. Bunlar tanımlamalar ve kısıtlamalardır.
Sol taraf Tanımlamalar, Sağ taraf ise kısıtlamaları oluşturur.
Öncelikle yukarıda tanımladığımız ağ özelliklerine uygun örnek bir squid configuration dosyasını sizlere sunacağım. Bu dosya üzerinde kendi networkünüze uyarlayarak /etc/squid altına eskisinin üstüne yüklerseniz sizin için çok rahat olucaktır. Geri kalan tüm ayarlamalarıWebmin üzerinde çok rahat bir şekilde yapabilrisiniz.
Önemli Uyarı : Unutulmaması gereken en önemli şey sağ tarafta bulunan kısıtlamalar alanının en altında her zaman İzin verilmedi(Deny) all kısıtının bulunmasıdır. Bu kısıtın altında bulunacak tanımlamalar Squid tarafından dikkate alınmaz ve kullanıcı kısıtlanmış sayılır.
Tüm bu ayarlamalar tamamlandıktan sonra artık Squid ve iptables i çalıştırma zamanımız gelmiş demektir.
[root@proxy etc]# service squid start Starting squid: [OK] [root@proxy etc]# ./rc.firewall setting global variables applying general security settings to /proc filesystem applying nat rules applying icmp rules applying squid rules applying the open port(s) to the firewall rules applying default drop policies ### quicktables is loaded ### [root@proxy etc]#
komutları ile firewall ve proxy sunucumuzu çalışır hale getirdik.
Makalede kullanılan örnek dosyalar
Örnek iptables Dosyası
Örnek Squid Configuration File
Örnek MSNYasak Dosyası
Örnek Yasak Dosyası
Kolay Gelsin.
Benzer Yazılar
Eğer yazıyı beğendiyseniz ya da ekleyecekleriniz varsa, lütfen yorumunuz yazın veya RSS aboneliği ile yeni yazılardan anında haberdar olun.
Yorumlar
Nasıl Halan Devam Ediyor mu Makalenin Devamı ?
Adam sözünde durur be kardeşim bir iyilik yapıyorsun tam yap yada yapmıyorum de bu konuyuda kapat.Bir sene oldu hala devam edecek….
Mehabalar Gökhan Bey,
Evet siteminizde haklısınız. Geçen sene ortalarında evlendiğim ve iş yoğunluğum sebebiyle kişisel sitemle pek ilgilenemedim. Ama farkında iseniz görünüm konusunda değişiklikler ile tekrar ilgilenmeye başladım. Bu makalenin yarım kaldığını hatırlattığınız iyi oldu. en kısa sürede makale sonlandırılacaktır.


Merhaba,
Haklısın, bizlerin çokca karşılaştığı ve windows platformlarında çok rahat çözdüğümüz bu olayı, ben de ilk defa linux üzerinde çözmeyi deniyorum. Yazdıkların gerçekten çok işime yaradı.
Teşekkürler..
Ve tabi ki centos