24 Ocak 2008

UNIX ORTAMINDA GÜVENLİK ÖNLEMLERİ

ÖNSÖZ

Burada açıklanan konu başlıkları, sistemlerin biraz daha güvenli kullanılmasını, yetkisiz kişilerin bilerek ya da bilmeyerek sistemin işleyişine zarar vermesini engelleyen temel önlemlerdir.

Ancak, işletim sistemlerindeki hata ve boşluklardan yararlanarak yetkisiz olduğu halde yetkili kullanıcı adı ile sisteme girmek ve sistemi kendi çıkarları doğrultusunda istediği gibi değiştirmek bilgisayar kullanıcıları için çok kolaydır. Bu konuda birçok yayın INTERNET ortamında bulunmaktadır. İşletim sistemlerindeki hataları arayıp bulan pekçok da kullanıcı vardır. Bu kullanıcılara "hacker" adı verilmektedir. Bütün emelleri toplum kullanımına sunulmuş bir ürünü kendi çıkarları doğrultusunda kullanmaktır. Telefona para ödemeden kullanmak, bir bilgisayara abone ücreti ödemeden bağlanıp INTERNET olanaklarını kullanmak gibi.

Bugüne değin pekçok öyküye konu olan bu tür kullanıcıların hepsini engellemek mümkün değildir. Ama caydırıcı olmak için neler yapılması gerektiği burada kısaca anlatılmıştır.

İLK SİSTEM KURULUŞUNDAN SONRA

Genelde UNIX işletim sistemleri kurulurken en yetkili kullanıcı olan root için şifre (password) yoktur. Sistem kuruluşu bitinceye kadar bu kullanıcı için şifre verilmez. Pekçok yerde sistem kuruluşu bittiği halde root için şifre verilmeden sistem kullanıcılara teslim edilir. Bu dikkatsizlik yetkisiz bir kullanıcının "login" ekranından "root" kullanıcı adı ile girmesine olanak verir. root bir UNIX sisteminde "super" kullanıcı olduğu için herşeyi yapabilir. Böylece yetkisiz bir kişi de bilmeden en önemli bilgileri bile silebilir. Kısacası sistem kuruluşu tamamlandıktan sonra hemen root için bir şifre tanımlanmalıdır.

ŞİFRE DEĞİŞTİRME

Kullanıcı şifreleri 10-15 günlük aralıklarla değiştirilebilmeli, sistem kullanıcıyı şifre değiştirmeye zorlamalıdır. Şifre değiştirme işleminde kullanıcıların dikkat etmesi gereken konu, şifrenin anlamlı sözcüklerden oluşmamasının sağlanmasıdır. Anlamlı sözcüklerden oluşan şifreler çok kolay kırılabilir.

YETKİLİ KULLANICILAR

UNIX sistemlerinde root kadar olmasa da, yaptıkları bazı işlemler nedeniyle yetki düzeyleri yüksek kullanıcılar vardır. Genelde sistemi yükleyen kişiler bu kullanıcıların şifrelerini ilk yüklendiği biçimde bırakır, değiştirmezler. Bu tür kullanıcıların ilk yükleme anında ya şifreleri yoktur, ya da kullanıcı adı ile şifreleri aynıdır. Bu kullanıcılar ya tümüyle sistemden çıkarılmalı, ya da yetkisiz kişiler kullanmasın diye şifre verilmelidir.

Bazı kullanıcıların ilk yükleme anındaki şifreleri, yetki düzeyleri ve sistemde yapabilecekleri aşağıda anlatılmıştır :

    Kullanıcı Adı  Şifresi
    =============  ==================
    root           root veya boş
    sys            sys / system / bin
    bin            sys / bin
    mountfsys      mountfsys
    adm            adm
    uucp           uucp
    nuucp          anon
    reboot         
    umountfsys     umountfsys
    admin          admin
    
bin ve sys kullanıcısı

Bu kullanıcı aslında sıradan bir kullanıcı gibidir. Ancak pekçok programın ve kütüğün sahibi olduğu için çok güçlüdür. Örneğin passwd kütüğünün sahibi "bin" kullanıcısı ise, sisteme "bin" olarak girip passwd kütüğüne "root" yetkisinde yeni bir kullanıcı ekleyebilirsiniz.

reboot kullanıcısı

Bu kullanıcının şifresi yoksa, yetkisiz biri ağda, sunucu görevi yapan bilgisayarı beklenmedik bir anda durdurup yeniden başlatabilir. Belki de çok önemli bir işi yarıda kesip tüm veri tabanını bozmuş olabilir.

mountfsys ve umountfsys kullanıcıları

reboot kullanıcısı gibi. Özellikle umountfsys beklenmedik anda kütük sistemini UNIX dışına çıkarıp tüm sistemin işlemesini bozabilir.

adm ve admin kullanıcıları

Buradaki kullanıcı için çoğu kez bir program çalışır ve bu program yardımı ile sistemle ilgili düzenleme ve ayar işlemleri yapılır. Sisteme yeni kullanıcı eklenebilir. Eğer şifre değiştirilmez ise yetkisiz biri çok rahat kendisine yeni bir kullanıcı tanımlayabilir.

KULLANIM HAKLARI

UNIX ortamında bir kütüğü kullanmak için üç temel hak vardır; Okuma, Yazma, Çalıştırma. Veri kütükleri için Çalıştırma hakkı olamaz. Bu hak yalnız program ve "shell" komutlarına verilir. Bir kişinin bir kütük üzerinde okuma hakkı varsa, kişi o kütükteki tüm bilgileri okur ve başka bir yere kopyalayabilir.

Bir kişinin bir kütük üzerinde yazma hakkı varsa, o kütükteki bilgileri silebilir veya değiştirebilir.

KULLANICI, GRUP VE DİĞERLERİ İÇİN KÜTÜK KULLANIM HAKLARI

UNIX ortamında kullanıcılar yetkilerine göre gruplara bölünmüştür. Aynı grupta olan kullanıcılar birbirlerinin kütüklerine erişebilirler, birbirlerinin yurtlarında dolaşabilirler. Kütük sahibi ile aynı grupta olmayan kullanıcılara diğer kullanıcılar denir.

Her kütüğün kullanım hakkı, o kütüğün sahibi, kütük sahibi ile aynı grupta olanlar ve diğerleri diye bölümlere ayrılır. Bu gruplamaların her birinde farklı okuma, yazma ve çalıştırma hakları vardır. Örneğin kütük sahibinin kütük üzerinde hem okuma hem de yazma hakkı varken, aynı gruptaki diğer kullanıcıların yalnız okuma hakkı bulunabilir. Diğer kullanıcılar için kütüğe erişim hakkı verilmeyebilir.

UNIX ortamında bu bilgi "ls -l" komutu ile

    - rwx rwx rwx 
       |   |   +--- diğerleri
       |   +------- aynı gruptakiler
       +----------- kütük sahibi
    
biçiminde gösterilir.

Bir kütük yaratılırken kütük üzerindeki kullanıcı erişim hakları .profile kütüğünde yer alan umask komutu ile belirlenir. Ancak kütük sahibi bu hakları chmod komutu ile değiştirebilir. "root", "super" kullanıcı olduğu için sistemdeki bütün kütüklere erişebilir.

KULLANICI VE GRUP NUMARASI ATAMA HAKKI

Bu erişim hakkı bir programı, program sahibinin veya grubun yetkileri ile çalıştırabilme işlemidir. Yani programın sahibi "root" ise bir kullanıcı bu programı çalıştırdığında program "root" yetkisinde işlem yapar. Örneğin şifre değiştirme, mount, umount ve login bu tür programlardır. Kullanıcı Numarası Atama hem kütük sahibi hem de aynı grupta olan kullanıcılar için verilebilir. Kullanıcı ve grup numarası atama yetkisi kullanıcı için verilmiş ise program çalışırken o kütüğün sahibine ait kullanıcı numarası etkin kullanıcı numarası olarak atanır. Gruba bu hak verilmiş ise programı çalıştıran kişi, grup numarasını etkin grup numarası olarak kullanır. Diğer kullanıcılar için bu kavram text on swap olarak tanımlanır. Yani diğer kullanıcı, bu programı çalıştırabilir ama okuyamaz ve kütüğe yazamaz. Bu özellik güvenlik önlemi gerektiren yollarda ve kütüklerde çok sık kullanılır.

YOL (DIRECTORY) HAKLARI

Bir yol adımında kullanıcının çalıştırma hakkı yoksa o yolda ilerleyemez, hiçbir biçimi ile yolun altındaki kütükleri göremez. Kullanıcı yolun sahibi bile olsa bu cümle doğrudur. Ancak root tüm yolları gezebilir. Kullanıcının bir yol adımında okuma hakkı yok, erişim (çalıştırma) hakkı varsa o adımın altındaki kütükleri göremez ama çalıştırabilir. Yol adımı üzerinde text on swap hakkı varsa kütükleri çalıştırabilir ama göremez. Çalıştırma (x) ve text on swap (t) hakları arasındaki en önemli fark kullanıcı (x) hakkı olan bir yola "cd" komutu ile gidebilir ve buradaki kütüklerin adlarını "ls" komutu ile öğrenebilir, ama (t) hakkı varsa "cd" komutu ile o yola girse bile "ls" komutu ile içindeki kütükleri göremez.

Örneğin /etc yolunda diğer kullanıcılar için (t) hakkı verilmiş ise. Bu yolun sahibi olmayan kullanıcılar /etc yolu altındaki kütüklerin adlarını bile göremezler ama buradaki programları çalıştırabilirler.

BAZI ÖNEMLİ KÜTÜKLER

Buradaki kütüklerin içeriğinin yetkisiz kullanıcılar tarafından değiştirilmemesi gerekir. Bu kütükler sistemde çok iyi korunmalıdır. Mümkünse bu kütüklerin erişim hakları diğer kullanıcıların erişemiyeceği biçimde tanımlanmalıdır.

  • /etc/passwd - Kullanıcı tanımlarının ve şifrelerinin bulunduğu kütük.

    Bu kütüğün genel yapısı :

    kullanıcı adı:şifre:kullanıcı no:grup no:açıklama:kullanıcı yurdu:çalışacak program

    biçimindedir. Eğer shadow kütüğü varsa buradaki şifre alanında "x" simgesi bulunur.

  • /etc/shadow - Şifreler için gölge kütük. Bu kütükteki bilgileri yalnız "root" okuyabilir.

  • /etc/group - Bu kütük geçerli kullanıcı gruplarını tanımlar. Kalıbı :
      grupadı:şifre:grupno:bu gruptaki kullanıcılar
      
    Çoğu sistemlerde grup için şifre tanımlanmamıştır. Bu durumda sıradan bir kullanıcı kendini önce yetkili bir gruba tanıtıp, sonra "newgrp" komutu ile yetkili bir grubun üyesi yapabilir.

  • /usr/mail/<Kullanıcı_adı> - "mail" programının bir kullanıcıya gelen postayı sakladığı yerdir. Bu yola yalnız ilgili kullanıcı girebilmeli, diğer kullanıcılara kapalı olmalıdır.

  • /usr/lib/cron/crontabs - Buradaki kütükler "cron" programının yapacağı işleri tanımlamak için kullanılır. Yetkisiz kullanıcılar bu alana komut girmemelidir.

  • /etc/inetd.conf - inetd programı ağdan gelen mesajları dinler. İstenilen servisi bulunca inetd.conf kütüğündeki programı çalıştırarak bu mesajın algılanmasını sağlar.

  • /etc/services - inetd ve diğer ağ programları tarafından kabul edilen servisleri tanımlandığı kütüktür.

  • /etc/exports - nfs için hangi sistemlerin hangi kütük sistemlerine nasıl erişeceğini gösteren kütüktür.

    Bu kütüğün genel kalıbı :

      mutlak yol  bilgisayar adı(paylaşım seçenekleri)
      

    Bilgisayar adı için genişletilebilir karakterler kullanılabilir. Paylaşım seçenekleri hakkında açıklayıcı bilgi her UNIX sisteminde bulunmaktadır. Ya "man nfsd" ya da "man exports" komutu ile bu bilgilere erişilebilir.

  • /etc/hosts - Bu kütük ağdaki diğer komşu bilgisayarların adlarını içerir. Güvenlik ve bakım kolaylığı için bu kütükte yalnız yerel bilgisayarın kısa adı ve uzun adı bulunmalı, diğer bilgisayarların adları ise ad sunucusundan alınmalıdır. Böylece ad sunucuya eklenen bir bilgisayar adı, ağ içindeki diğer bilgisayarlar tarafından da tanınmış olur. Hepsinde yeniden tanımlama yapılmaz.

  • /etc/hosts.allow - Başka bilgisayarların sisteme erişmesi için bu kütükte tanımlarının bulunması gerekir.

    /etc/hosts.deny - Başka bilgisayarların erişimini engellemek bu kütüğe yazılan bilgisayar adı ile olur.

    Bu kütüklerdeki tanımların genel kalıbı :

      <deamon prg>:<bilgisayar adı>[:<shell komutu>]
      

    biçimindedir.

    deamon programlar bir ya da daha çok program adı ve program adı için kullanılan genişletilebilir karakterlerdir (wild characters). Bu programlar boşluk veya virgül ile birbirlerinden ayrılır.

    bilgisayar adı bir ya da daha çok bilgisayar adı, yöre adı veya genişletilebilir karakterlerdir. Bilgisayar adları boşluk veya virgül ile birbirinden ayrılır.

    Bilgisayar adı tanımlama :

    • nokta (.) ile başlayan bilgisayar adlarında erişim yapan bilgisayar adının sonu aynı olanlar ilgili kütükte yer alıyor kabul edilir. Örneğin .yore.com.tr bu yöredeki tüm bilgisayarlar anlamına gelir.
    • nokta (.) ile biten bilgisayar adlarında başı aynı olan bilgisayar adresleri ilgili kütükte yer alıyor kabul edilir. Örneğin 195.174.26. bu adresle başlayan tüm bilgisayarlar anlamına gelir.
    • n.n.n.n/m.m.m.m biçiminde yazılan bilgisayar adları ağ ve maske tanımı olarak kabul edilir ve bu ağ içindeki bilgisayarlardan maskelenebilenler ilgili kütükte yer alıyor demektir. Örneğin 195.174.26.0/255.255.255.0 bu ağdaki maskelenebilen tüm bilgisayarları tanımlar.
    • ALL sözcüğü tüm bilgisayarlar anlamına gelir.
    • LOCAL noktalı olmayan bilgisayar adları demektir.
    • UNKNOWN bilinmeyen bilgisayar adları demektir.
    • KNOWN bilinen bilgisayar adları demektir.
    • PARANOID adı, adresine uymayan bilgisayarlar demektir.
    • EXCEPT komutu, bilgisayar ve deamon program listelerindeki istisnalar için kullanılır. Yani bir türe uygun tanım dışında kalanlar bu komut ile belirtilir. Örneğin :

        .yore.com.tr EXCEPT bodrum.yore.com.tr
        
      gibi.

  • /etc/resolv.conf - Bu kütükte yer alan bilgiler; ağ üzerindeki bilgisayarlar adlarının çözümünde kullanılan eklerin sıralanışı ve ad sunucu (name server) bilgisayarların hangi sıra ile aranacağını tanımlar.

  • /etc/networks - sistemin tanıdığı ağların adları burada yer alır.

Aşağıdaki kütüklere yazılan bilgi, sistem yöneticisi tarafından sürekli izlenmeli varsa önemli kayıtlar incelenerek kimin sistem güvenliğini aşmaya çalıştığı belirlenmeli, gerekirse önlem alınmalıdır.

  • /usr/adm/sulog - "su" komutunun kullanımına ait bilgileri saklar.

  • /usr/adm/loginlog - login bilgilerini saklar.

  • /usr/adm/errlog - Hata mesajlarının yazıldığı kütüktür.

INTERNET ORTAMINDA KULLANILAN BAZI PROGRAMLAR

INTERNET ortamında kullanılan bazı programlarda alınması gereken güvenlik önlemlerine ait kısa açıklama bu bölümde anlatılmıştır.

  • ftp : bilgisayarlar arasında kütük taşıma programı. Bu program misafir kullanıcı (anonymous veya ftp) olarak sisteme erişildiğinde yetki ayarları açısından önemlidir. Buradaki yetki ayarları şöyle özetlenebilir :

    • ~ftp yurduna ftp kullanıcısı sahip olmalı ve baskasının Yazma yetkisi olmamalı.
    • ~ftp/bin yolunun sahibi "root" olmalı ve başkasının yazma yetkisi olmamalı. Burada "ls" programı bulunmalı ve erişim yetkisi "--x --x --x" olarak tanımlanmalı.
    • ~ftp/etc yolunun sahibi "root" olmalı ve başkasının yazma yetkisi olmamalı.
    • ~ftp/etc yolu altında "passwd" ve "group" kütükleri "ls" komutunun kullanıcı adlarını alabilmesi için bulunmalı ve "passwd" kütüğü gerçek kütük olmamalı, şifre alanı boş olmalıdır. Bu kütüklere erişim yetkisi "r-- r-- r--" olarak tanımlanmalıdır.
    • ~ftp/pub yolunda "rwx r-x r-x" yetkileri bulunmalı, bu yolun sahibi ftp kullanıcısı olmalıdır.
    • ~ftp/incoming yolunda "rwx -wx -wx" yetkileri bulunmalı, herkes buraya yazabilmeli ama buradan okuma yapamamalı.

  • rlogin : ağa bağlı diğer bir bilgisayarın login ekranından terminal olarak sisteme girme işlemidir (telnet gibi).

  • rsh : ağa bağlı diğer bir bilgisayarda komut çalıştırma işlemidir. Özellikle benzer tanımlanmış bilgisayarların birinde tanımlı bir kullanıcı, diğerinde de varsa login yapmadan bir sistemden diğerine geçiş yapılabilir. Bu nedenle rsh kullanılan ortamlarda sistemin dış kullanıcılardan ve yetkisiz kullanıcılardan korunması gereklidir.

  • finger: Bu program sistemde tanımlı kullanıcılara ait bilgi verir. INTERNET ortamında bu programın dış kullanıcılara kapalı olmasında yarar vardır. Hangi kullanıcının en son ne zaman sisteme girdiği bu komutla öğrenilebilmektedir. Yetkisiz biri uzun zamandır kullanılmayan bir kullanıcıyı bu komutla kolayca bulup onun yerine sistemi kullanmayı deneyebilir. Çünkü bu kullanıcının şifresi çok uzun zamandır değişmemiştir ve şifre deneme çalışmaları kimsenin dikkatini çekmez.


Ana Sayfaya   Teknik Bilgiler Sayfasina


Aglar Aglink Agteknik C-Kodlama C-Önişleme CRC/LRC DEA etcsrv Çatal (fork) ilet inetd Make Msg Auth Özyinelemeli Robotlar için SDLC Güvenlik Seri uçlar SNA LU0 SNA LU6.2 tcp/ip tcp Programı Unix vi Editör