Jan.01

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 ;

  • Herhangi bi Linux Dağıtımı (tercihen CentOS, Ubuntu)
  • En az 486 DX2 66 Mhz. işlemcili 64 mb RAM li bir pc.
  • CDROM
  • 2 Ethernet Kartı

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 :

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 :

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 :

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 :

4

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 :

5.JPG

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 :

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 :

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 :

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.

Linux,Güvenlik,Network,Internet,ubuntu
Share this Story:
  • facebook
  • twitter
  • gplus

About Muzaffer Ali AKYIL

Merhabalar, Adım Muzaffer Akyıl, Bilgi teknolojileri ile içli dışlı, teknolojiyi yakından takip eden, web ve masaüstü programlama ile uğraşıp, saatlerce kastığı şeyleri hiç bir karşılık beklemeden paylaşmayı amaç eden biriyim.


Yorumlar(9)

  1. Kemal Bozdağ
    3815 days önce

    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 :)

  2. Kemal Bozdağ
    3815 days önce

    Bu arada makalenin devamını da en kısa sürede bitirmeni ümid ediyorum..

  3. Rahmi
    3757 days önce

    Hala devam edecek diyor. Bitir de tam olsun kaynak baş ucuna koy. Evlilik yaramadı galiba. :)

  4. Gökhan Ulus
    3586 days önce

    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….

  5. muzaffer
    3586 days önce

    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.

  6. Kenan
    2588 days önce

    Merhaba Muzaffer Bey
    Öncelikle vermiş olduğunuz güzel bilgiler için teşekkür ederim. Gerçekten yararlı bilgiler vermişsiniz. Yanlız bu konuda bir problemim var yardımcı olursanız sevinirim. Centos üzerinde squid çalışıyor iptables aktif filtreleme ve engelleme işlemleri aktif. Problemim Ms Outlook çalışmıyor. 110 ve 587 portlarını nasıl aktif edebilirim zannedersem ondan dolayı çalışmıyor.

  7. muzaffer
    2588 days önce

    Merhabalar Kenan Bey,
    Sorununuzu Iptables firewall dan port açarak giderebileceğiniz gibi, eğer kullandığınız Linux üzerinde bu makalede anlatılanlar haricinde başka bir şey yapmıyorsanız, size SmoothWall ı tavsiye ederim. Burada anlatılanların kat ve kat fazlasını size bedava olarak kolay yönetilebilir bir panel ile sunmaktadır.
    Detaylı bilgi için : http://www.smoothwall.org/

  8. Mehmet selim keçeci
    2509 days önce

    Merhaba muzaffer bey verdiğiniz bilgiler çok güzel sistemi denedim güzel çalışıyor ama ben centos 5.5 i386 üzerinde yaptım sistemi transparent proxy ayarları yazdığınız sh komutlarıyla çalışmıyor.
    squid deki transparent eklemelerinide squid tanımıyor.
    ama sistem olorak güzel yapmışsınız
    transparent proxy çalışmaması dışında her şey güzel
    ip tabanlı yetkilendirme yapabiliyoruz.
    msn kitlemesi de güzel çalışıyor.
    centos üstündeki sistem ipcop ve smotwall gibi sistemlerden daha hızlı çalışıyor internete daha hızlı giriyor.
    sistemdeki sorunları çözüp
    otamatik yükletme yapmaya çalışıyorum baya bitirdim
    ama transparent proxy bir türlü çalışmadı
    birde dansguardian la birlikte tam olarak çalışmıyor squid
    ya ben ayarlarını yapamadım yada bir sorun var
    ikisi ayrı ayrı çalışıyor ikisini birleştirdiğimdede squid deki kuralları almıyor.
    msn dir ip tabanlı filitrelemeler çalışmıyor.

  9. Ferdi KILIÇ
    2033 days önce

    Olay bizim Erge dönergecine dönmüş. :) Artık bu makaleyi pfsense üzerinde bitirelim diyorum:))

Bir yorum bırak

 

Comment