Linux'unuzu güvenli hale getirin...

Linux bölümünde yer alan bu konu EMRE tarafından paylaşıldı.

  1. EMRE

    EMRE seda kolik

    Linux'unuzu güvenli hale getirin
    Not: Aşağıdaki yazı (2600 dergisi 16:2 sayısı) MIFF in bir yazısından çeviridir:

    Sonunda Windows`u silip Linux kurdunuz fakat 'script kiddie'ler tarafından sahiplenilmek (hack edilmek) istemiyorsunuz. Bot çiftliği, icmp kaynağı, spam için bir arabirim olmak ve mail`lerinizin, özel dosyalarınızın okunup silinmesini istemiyorsunuz.

    OK, bugün Linux makinanızı güvenli hale getirmek için bazı pratik yöntemler anlatacağım. Öncelikle söyleyeyimki: Herşeyden bahsetmeme imkan yok - hack edilmemeniz için hiçbir garanti yoktur. Sadece karşı tarafta girmeye çalışandan biraz daha fazla bilmek amacımız. Önemli konulara değineceğim ve mümkün olan yerlerde detaya gireceğim fakat sizinde biraz araştırma ve tecrübe yapmanız gerekecek.

    Not: Önerilen komutlar köşeli parantezler arasında yer alacaktır. Eğer komut hakkında daha fazla bilgi edinmek isterseniz man yazın. Eğer bir konu hakkında daha fazla bilgiye ihtiyacınız olursa
    www.altavista.com yada www.hotbox.com ile bir web araştırması yapın. Web aramalarınızda, arama kriterlerinde ısrarlı ve kararlı olun ve ihtiyacınız olan herşeyi bulabilirsiniz.


    Kurulum sonrası

    Net`e bağlanmadan önce yapmak isteyeceğiniz bir kaç şey olacak. Sırası önemli olmayacak şekilde onları sıralayayım:

    * 2 tane root olmayan kullanıcı ekleyin [adduser]. Bir kullanıcı sizin için olacak ve bu şekilde normal aktiviteler için root hesabını kullanmayacaksınız. Diğer hesap açıkları test etmek için kullanacağınız normal kullanıcı haklarına sahip bir hacker kullanıcı için olacak.
    * Root kullanıcı hesabı ve diğer hesaplar için zor şifreler seçin! Basit ingilizce (türkçe) kelimeler yada rakamın arkasına eklenen kelime seçmeyin. Bu şifreler kırılabilir. Rastgele numara harf ve işaretler kullanın.
    * İhtiyaç duyulmayan tüm ağ servislerini kaldırın. Linux pek çok güzel şey ile geliyor fakat çoğunu belkide hiç kullanmayacaksınız. Muhtemelen imap çalıştırmaya ihtiyacınız olmayacak. Belki finger`ı da kaldırmak da iyi bir fikir. Pek çok (hepsi değil) ağ servisleri /etc/inetd.conf (Xinetd.conf) dosyasında ayarlanır. Bu dosyayı bir editörle açın ve ihtiyaç duymadıklarınızın başına # işareti (comment out) koyun. Ben sadece ftpd ve telnetd yi bırakmayı tavsiye ederim. Eğer çok paranoyaksanız herşeyi kaldırın ve inetd yi hiç çalıştırmayın. Ben sadece sshd (şifrelenen güvenli shell oturumları) kurulu pek çok makina gördüm. Inetd yada diğer ağ servislerini açılıştan kaldırmak için /etc/rc.d (Not: redhat`de bu dosyaları /etc/rc.d/init.d altında bulabilirsiniz. Kullandığınız dağıtımın dokümantasyonundan açılış dosyalarının nerde olduğunu bulabilirsiniz) dizinine gidin. Burdaki bütün dosyalara bakmaya zaman harcamaya değer fakat eğer hangi dosyanın hangi (kaldıracağınız) servisleri içerdiğinden emin değilseniz, dizin içerisinde [grep *] işlemini yapın. Aşağıdaki gibi birşey görebilirsiniz:
    ${NET}/inetd
    Satırın başına bir # işareti ko¤¤¤¤¤ bu servisi kaldırabilirsiniz. Eğer bir web sunucusu çalıştırmak istemiyorsanız httpd ye bu işlemi uygulayın. Inetd.conf ve diğer açılış dosyalarınızdan istenmeyen servisleri kaldırdığınıza emin olduğunuzda reboot edebilir (tembel) veya çalışmasını istemediğiniz servisleri kill komutu ile kapatabilir [kill -TERM ] ve inetd`yi tekrar çalıştırabilirsiniz [kill -HUP ] . Şimdi istemediğiniz bir servisin çalışmadığına emin olmalısınız. Bunun iki yolu var: 1) strobe yada başka bir port tarayıcısı edinin ve makinanızı tarayın. Size hangi port`ların açık olduğunu listeleyecektir. 2) [netstat -a] komutunu çalıştırın. netstat manuelini okumanız faydalı olacaktır. Çok yararlı bir komuttur.
    * İhtiyaç duyulmayan diğer servisleri kaldırın. Pek çok ağ servisini kaldırdınız ama hala çalışmasını istemediğiniz ağla ilgili olmayan servisler çalışıyor olabilir. Örneğin fax sunucuları, print işlemleri (ihtiyacınız varmı?) vs. Çalışan bütün işlemleri [ps aux | more] ile iyice inceleyin. Bunlardan bazıları sistemin çalışması için gereklidir. O yüzden rastgele kill`lemeyin. Her çalışan işlemin ne yaptığını araştırmanız gerekir. Sonra ihtiyaç olup olmadığına karar verirsiniz. (ipucu: init, kswapd, kflushd, kerneld gibi şeylere ihtiyacınız olacak) İhtiyacınız olmayan işlemlere karar verdiğinizde onlari [kill -TERM ] ile kill`leyin. Ve eğer sisteminiz çökmediyse (yani init yada benzeri bir işlemi durdurmadıysanız) /etc/rc.d ye geri gidin ve istemediğiniz işlemlerin satırlarının başına # işareti koyun.

    OK, sisteminiz gereksiz güvenlik risklerinden kurtularak güzelleşmeye ve hafiflemeye başladı. Ana güvenlik açıklarından birini daha kapatmalıyız:
    * Kullanımına ihtiyaç görmediğiniz (ve root olarak kullanımına ihtiyaç görmediğiniz) tüm dosyalardan suid bit`lerini kaldırın. Setuid dosyaları normal bir kullanıcı tarafından çalıştırıldığında sahibi yada grubun kimliği ile çalışan programlardır. Genelde de sahip root`dur. Bir suid root programda güvenlik açığı bulunduğunda kullanıcılarınızdan biri bir script indirip sistemi ele geçirebilir. Bu yüzden sisteminizdeki tüm suid dosyaların bir listesini tutmalısınız:
    [ls -alF `find / -perm -4000` > /tmp/suidfiles]
    Şimdi elinizde /tmp dirinde sisteminizdeki tüm suid dosyaların bir listesi var. Suid dosyaları izinleri 4755 yada benzeri olarak ayırt edilirler ve aşağıdaki gibidirler:
    -rwsr-sr-x 1 root mail 59240 Apr 6 20:04 /usr/bin/procmail*
    Listeyi dikkatle inceleyin ve ihtiyacınız olmayanların izinlerini değiştirin. Ben [chmod 4700 ] kullanıyorum çünkü dosya tarama yapan bir script kiddie`ye hala bir suid program gibi gorunuyor ama gerçekte kullanıcı tarafından çalıştırılamaz. Bu şekilde her suid dosyayı incelemelisiniz.


    Kendinize Saldırın

    * Makinanızı test edin. Hacker kullanıcı hesabınızla tüm servislerin açıklarını deneyin. Webde arama yaparak ve güvenlik arşivlerine bakarak exploit`leri bulabilirsiniz (ör. remote ftpd exploit). Bunları çalıştırın ve etkilenip etkilenmediğinize bakın. Not: uzaktan gerçekleştirilebilen exploit`ler daha tehlikelidir çünkü makinada bir kullanıcı hesabı olmasını gerektirmeyebilir. O yüzden önce ağ servislerinizi kontrol edin. Kullanıcılarınız olana kadar (yada dışardan birisi root-olmadan sisteminize girmesi gerekir) yerel açıklar hakkında endişelenmenize gerek yok.
    * Ayrıca ticari yada ücretsiz güvenlik tarayıcıları kullanabilirsiniz.

    Ağ servislerinizin, suid dosyaların ve kernel`in güvenli olduğunu düşündüğünüzde daha gelişmiş korunma ve izleme tekniklerine geçebilirsiniz. Güvenlik konuları, en son çıkan güvenlik açıkları ve exploit`leri takip etmeyi unutmayın.


    Sistem değişiklikleri

    * Kritik dosyalarınızı koruyun. Düzenli yedeklemeler dışında kritik yada trojansız (login dosyaları, ps, ifconfig, netstat vs) sistem dosyalarının güvenli kopyalarını almalısınız. Neleri korumak istediğinizin listesi (kuran kişinin daha sonra kullanımı için sistem çalıştırılabilir dosyalarına backdoor`lar bırakmak için dizayn edilmiş olan) enson linux rootkit`ine bakılarak öğrenilebilir. İşte yapmanız gereken: trojan`lanma riski taşıyan tüm binary dosyalarınızı bir diskete kopyalayın. Disket çıkarın ve yazmaya karşı koruyun. Periyodik olarak [diff] ile floppy deki dosyalar ile sisteminizdeki dosyaları karşılaştırın. Tamamen aynı olmaları gerekli. Bu etkili bir anti-trojan stratejisidir.
    * Solar Designer`ınki gibi çalıştırılamayan bir stack yaması kurun. Bu açık bulunduran bir programın buffer overflow`dan etkilenmesi riskini azaltır.
    * Tripwire veya benzeri, sistem dosyalarınızın bütünlüğünü kontrol eden bir program kurun.
    * Log dosyalarınızı başka güvenli bir makineye periyodik olarak gönderin. Güvenlik izleme loglarını başka yere koymak saldırganın izlerini silmesini zorlaştırır.
    * Yaratıcı mount teknikleri uygulayın. Herkesin yazma izni olduğu /tmp gibi dizinleri kendi partitionlarına mount etmek ve nosuid yapmak gibi. Bunun anlamı, birisi herkesin yazabileceği alanda bir suid root shell yaratabilse bile sistem suid bit`ini gözardı edecek ve onlar da normal shell alacaklardır. Bunu isterseniz /home dizinine de uygulayabilirsiniz [mount].
    * Kendi sisteminizde ve mümkünse sizinle internet arasında firewall sistemleri kullanın. Şüpheli (mesela port taraması yapan) hostlardan size gelen paketleri [ipfwadm] ile durdurabilirsiniz. Hosts.allow ve hosts.deny dosyalarını dikkatlice ayarla¤¤¤¤¤ ağ servislerinizin hangi hostlardan bağlantılara izin vereceğini belirleyebilirsiniz.. (Tüm modern linux dağıtımlarının tcpwrappers ile geldiğini varsayıyorum).


    İzleme ve Loglama

    * Standart log dosyalarınıza (/var/adm/syslog ve /var/adm/messages - bazen bunlar /var/log altında yada başka yerdedirler) dikkat edin. Bunlara nelerin kaydedildiğini ve uygulamaların neler olduğu hakkında nasıl daha detaylı yada daha az bilgi verebileceğini araştırın. İsterseniz farklı log dosyaları kullanın.
    * Ek loglama çalştırın: Bütün TCP SYN`lerini, bütün icmp`leri vs gibi herşeyi loglayan araçlar var. Burda dikkat etmeniz gereken terabayt`lık bir log dosyası sahibi olmamak. Bu yüzden farklı loglama araçlarını inceleyin ve ne kadar bilgi yarattıklarını kontrol edin. Bir loglayıcıyı dosya yerine geniş scrollback buffer`ı olan bir terminal penceresine loglayacak şekilde çalıştırabilirsiniz. Böylece DOS saldırısında tonlarca şeyi dosyaya yazması gerekmez.
    * Sniffer`lar kullanın. [tcpdump] ile ağda nelerin olup bittiğini görebilirsiniz. Ayrıca istenilen portlardaki gelen ve giden bağlantıları izlemek için başka sniffer`lar kullanabilirsiniz. [sniffit] interaktif modu olan çok iyi ayarlanabilir bir sniffer. Sniffer`ı mümkünse farklı bir makinada çalıştırmak daha iyidir. Ayrıca burda kullanıcı mahremiyetine dikkat etmelisiniz. Bir sniffer ile email sifrelerini vs görebilirsiniz. İyi bir sniffer edinip ağınızda nelerin gezindiğini inceleyin.
    * linspy, ttysnoop ve benzeri programları kullanın. Dikkatli olun, bunlar tamamen kullanıcı mahremiyetini ihlal eder. Sadece hack edildiğinizden şühelendiğinizde bunları kullanın. Oturum görüntülemek çok güçlü bir olaydır.
    * Sık sık kendinizde port taraması yapın. Eğer birisi bir port`ta herhangi birşey çalıştırıyorsa bu şekilde farkına varabilirsiniz. Ayrıca netstat -a ve -e kullanarak hangi servislerin çalıştığına bakabilirsiniz.


    Eh, şimdilik benden bu kadar. Rahatınıza bakın ve hacker`ların kalenize girmek için boşuna tırmalamasını seyredin. Son olarak, en son çıkan güvenlik açıklarını takip etmeyi unutmayın. Bir adım önde olabilirsiniz

     
  2. EMRE

    EMRE seda kolik

    hackerlerde ölüyodu sizin bilgisayara giriyim diye:D