Home Map Index News Archives Links About LF
[Top Bar]
[Bottom Bar]

[Photo of the Author]
Michael Jastremski
Yazar Hakkında: Michael Jastremski yaklaşık dört yıldır Unix hack etmektedir. Sayfası genellikle http://westphila.net/mike adresinde bulunmaktadır. Andrew'a İngilizcesine yardım ettiği için teşekkür eder.

:


İçindekiler:
Giriş
Güvenliğe dogru adımlar

Yaygın Linux Sürümlerine Güvenlik Eklenimi

Çeviri: Aret Özdemirci (Gözden geçirilmekte)

[Illustration]

Özet: Bu makale, sistem yöneticilerinin sistemlerini hackerlara karşı güvenli hale getirmeye yardım edebilecek ve Linux sistemlerinin güvenliğini geliştirecek çeşitli yolları tartışmaktadır.




Giriş

Internetdeki bilgisayarların güvenliğini tehlikeye sokacak geniş ölçekli saldırı teşebbüsleri olağan hale gelmiştir. Her geçen gün daha fazla Linux ve FreeBSD sunucuları imapd ve BIND kaynakları içindeki arabellek taşmasının da karıştığı, son zamanlardaki saldırıların hedefi oldular. Hergün, BUGTRAQ posta listesinin 20000'e yakın üyesi, her şekildeki ve boyuttaki açıkları ortaya dökmektedirler. (Eğer yalnızca bir güvenlik posta listesine üye olacaksanız, bu o listedir.).

Bu 19305 üyeden birinin bir for() döngüsü yazabileceğini ve kes yapıştır mantığı içerisinde, mümkün olan en fazla sayıda bilgisayara girmeye teşebbüs edebileceğini varsaymak temkinli bir davranış olacaktır.

Er geç bu döngü sizin bilgisayarınızın adresini oluşturacaktır. Hazırlanmak için bugünden başka zaman yoktur.

Bazı uzmanların sizi inandırdıkları şeylere rağmen, güvenli bir bilgisayar kurmak ve bakımını sağlamak çok zor bir şey değildir. Emin sistem yönetimi alışkanlıkları, genel ağ tehditlerinden korunma olarak hizmet ederler. Bu makale, benim genel olarak ağa bağlı bir RedHat Linux sistemini biçimlendirirken aldığım tedbirleri açıklar. Bu makale bilgisayarınızı, başkalarının tehdit teşkil eden niyetlerinden korumak için anahatlar sunarken, bir eksiksiz başvuru kaynağı olması niyetlenilmemiştir.

Aşağıda sunulanlar kurulumunuzun, ağ yazılımındaki bilinen bir açığın bir sonraki kurbanı olmasını önleyecek adımlardır. UYARI: Eğer ne yaptığınızdan emin değilseniz, yapmayın!Bazı adımlar sizin açınızdan belli bir derecede bilgiye sahip olduğunuzu varsayar. Alaska,Hawaii & Puerto Rico 'da garanti yoktur. En sonda okunması önerilen bazı kaynaklar belirtilmiştir.

Güvenliğe Doğru Adımlar

1. Sisteminizden gereksiz bütün ağ servislerini kaldırın. Bilgisayarınıza bağlanılacak yol ne kadar azsa, bir hacker'ın bilgisayarınıza girmek için o kadar az yolu vardır. /etc/inetd.conf dosyasından ihtiyacınız olmayan herşeyi, satırın başına # işareti koyarak etkisiz hale getirin. Sisteminize telnet ile ulaşmaya ihtiyaç yok mu? O halde onu kaldırın. Aynı şey ftpd, rshd, rexecd, gopher, chargen, echo, pop3d ve friends için de geçerlidir. inetd.conf dosyasını düzenledikten sonra "killall -HUP inetd" komutunu çalıştırmayı unutmayın. Ayrıca, /etc/rc.d/init.d dizinini ihmal etmeyin. Bazı ağ servisleri (BIND, yazıcı iblisi) bu dizindeki dosyalardan başlatılan bağımsız programlardır.

2. SSH kurun. SSH, artık antika olan Berkeley r komutlarını iptal ederek, onların yerine yerleşir. http://www.cs.hut.fi/ssh adresindeki anasayfasında SSH için şöyle yazılmıştır:


Ssh (Secure Shell)(Güvenli Kabuk) ağ üzerinden başka 
bir bilgisayara giriş yapan, uzak bir bilgisayarda 
komutlar çalıştıran ve bir bilgisayardan diğerine 
dosya taşıyan bir programdır. Güvensiz kanallar üze-
rinden güvenli haberleşme sağlar. 

Hackerların ilginç bulacağı daha birçok işlevi vardır. SSH'yı http://ftp.rge.com/pub/ssh adresinden indirebilirsiniz.

3. Giriş yapılmayan hesapları kapatmak için vipw(1) kullanın. Şunu söylemek gerekir ki, RedHat Linux altında boş giriş kabuğuna sahip olan hesapların kabuk isimlerinin varsayılan değeri /bin/sh 'dır ki bu istemeyeceğiniz birşeydir. Ayrıca, hiçbir hesabınızın boş bir şifre alanına sahip olmamasına dikkat etmelisiniz. Aşağıdakiler, sağlıklı bir şifre dosyasının sistem kısmının nasıl olması gerektiğine örnektir. 

  daemon:*:2:2:daemon:/sbin:/bin/sync
  adm:*:3:4:adm:/var/adm:/bin/sync
  lp:*:4:7:lp:/var/spool/lpd:/bin/sync
  sync:*:5:0:sync:/sbin:/bin/sync
  shutdown:*:6:0:shutdown:/bin:/sync
  halt:*:7:0:halt:/sbin:/bin:/sync
  mail:*:8:12:mail:/var/spool/mail:/bin/sync
  news:*:9:13:news:/var/spool/news:/bin/sync
  uucp:*:10:14:uucp:/var/spool/uucp:/bin/sync
  operator:*:11:0:operator:/root:/bin/sync
  games:*:12:100:games:/usr/games:/bin/sync
  gopher:*:13:30:gopher:/usr/lib/gopher-data:/bin/sync
  ftp:*:14:50:FTP User:/home/ftp:/bin/sync
  nobody:*:99:99:Nobody:/:/bin/sync                    

4. su ayrıcalığına ihtiyaç duymayacak, root tarafından sahiplenilmiş programlardan 's' bitini kaldırın. Bu, argümanları ilgili dosyaların ismi olacak şekilde, 'chmod a-s' komutunu kullanarak yapılabilir.

Böyle su programları aşağıdakileri içerir ama sadece aşağıdakilerle sınırlı değildir.

  1. Hiç kullanmadığınız programlar.
  2. root olmayan kullanıcıların çalıştırmasını istemediğiniz programlar.
  3. Seyrek kullandığınız ve çalıştırmak su root'u kullanabileceğiniz programlar.

Kişisel olarak etkisiz hale getirmek isteyeceğim  her program isminin önüne bir * (asteriks) koydum. Unutmayın ki sisteminizin sağlıklı çalışabilmesi için bazı suid root programlarına ihtiyaç vardır. Bu nedenle dikkatli olmak gerekir.

     
# find / -user root -perm "-u+s"    
*/bin/ping              
*/bin/mount              -- yanlız root dosya sistemlerini 
                            mount etmeli.
*/bin/umount             -- aynısı    
/bin/su                  -- Buna dokunmayın!
/bin/login
/sbin/pwdb_chkpwd
*/sbin/cardctl           -- PCMCIA kartı kontrol araçları
*/usr/bin/rcp            -- Ssh kullanın
*/usr/bin/rlogin         --  "
*/usr/bin/rsh            --  "
*/usr/bin/at             -- cron kullanın ya da tamamiyle kapatın
*/usr/bin/lpq            -- LPRNG kurun
*/usr/bin/lpr            -- "
*/usr/bin/lprm           -- "
*/usr/bin/mh/inc
*/usr/bin/mh/msgchk
/usr/bin/passwd          -- Dokunmayın! 
*/usr/bin/suidperl       -- Her yeni suidperl versiyonunda
                         arabellek taşması var gibi gözüküyor.
*/usr/bin/sperl5.003     -- Gerçekten gerekliyse kullanın
/usr/bin/procmail        -- 
*/usr/bin/chfn
*/usr/bin/chsh
*/usr/bin/newgrp
*/usr/bin/crontab               
*/usr/X11R6/bin/dga      -- X11'de de birçok arabellek
                            taşması var.
*/usr/X11R6/bin/xterm    -- "
*/usr/X11R6/bin/XF86_SVGA   -- "    
*/usr/sbin/usernetctl           
/usr/sbin/sendmail
*/usr/sbin/traceroute    -- Bunu kullanmak için root şifresini
                         girmeye dayanabilirsiniz.

5. Sendmail'i güncelleyin. Kaynağını ftp://ftp.sendmail.org/pub/sendma il adresinden indirin. Kaynak paketini açın ve kurulum talimatlarını okuyun. Fazladan birkaç dakikanız varsa Smrsh programını da kurun (sendmail ile paketlenmiştir). Bu program birçok kişinin keyfı programlara e-posta gondermek gibi, sendmail ile olan endişelerini adresler. sendmail.cf dosyasınına girin ve 'PrivacyOptions' seçeneğini  'goaway' olarak girin:

        O PrivacyOptions=goaway

Eğer internet e-postası almayı planlamıyorsanız, SENDMAIL'I ALIŞ MODUNDA ÇALIŞTIRMAYIN (sendmail -bd)!. Bu durumda, /etc/rc.d/init.d/sendmail.init 'i etkisiz hale getirin ve   'killall -TERM sendmail' komutunu çalıştırın. Hala dışarıya e-posta gönderebilirsiniz.

6. BIND kullanıyorsanız güncelleyin. En son BIND sürümü http://www.isc.org adresinden bulunabilir. Aksi taktirde hepsini etkisiz hale getirin.

7. Çekirdeği tekrar derleyin. Ben genellikle, benimsenmiş çekirdeğin boyutunu küçültmek için yaparım. IPUCU:Bilgisayarınız bir firewall değilse bile tüm firewalling seçeneklerini açın .

       
        CONFIG_FIREWALL=y
        CONFIG_NET_ALIAS=y
        CONFIG_INET=y
        # CONFIG_IP_FORWARD seçili değildir
        # CONFIG_IP_MULTICAST seçili değildir
        CONFIG_SYN_COOKIES=y
        CONFIG_RST_COOKIES=y
        CONFIG_IP_FIREWALL=y
        CONFIG_IP_FIREWALL_VERBOSE=y
        # CONFIG_IP_MASQUERADE seçili değildir
        # CONFIG_IP_TRANSPARENT_PROXY seçili değildir
        CONFIG_IP_ALWAYS_DEFRAG=y
        CONFIG_IP_ACCT=y
        # CONFIG_IP_ROUTER seçili değildir
        # CONFIG_NET_IPIP seçili değildir
        CONFIG_IP_ALIAS=m

8. Yamalar uygulayın. RedHat'in yazılımlarıyla ilgili bilinen tüm sorunlar, Redhat'deki Errata sayfalarında bulunabilir. (sizin kullandığınız sürüme hangi yamaların uygulanması gerektiğini görmek için  http://www.redhat.com/support/docs/errata.html adresine bakın.) RedHat, bu sayfaları güncel tutarak çok iyi bir iş yapmaktadır. Bu sayfalarda kurulum talimatlarıyla birlikte, ihtiyacınız olan RPM dosyalarının bağlantıları da bulunmaktadır.

9. tcp_wrappers 'ı biçimlendirin: Tcp_wrappers ağ üzerindeki hangi bilgisayarların sizin bilgisayarınızla haberleşebileceğini kontrol eden bir yöntemdir. Güvenlik bilgesi Wieste Venema tarafından yazılan bu paket, inetd 'den çalıştırılan (veya kütüphanesi içinden bağlanmış) programların önünde oturup, biçimlendirme dosyalarına başvurarak bir ağın ağ hareketini reddeder veya izin verir. Örneğin, evinizden bir ISS (Internet Servis Sağlayıcısı) vasıtasıyla ftp ve telnet bağlantılarına izin verirken geriye kalan herşeyi reddetmek için, aşağıdakiler /etc/hosts.allow dosyasına konur.

        in.ftpd : .dialup.sizin-iss.com : allow
        all : all : deny 

SSH, sendmail ve diğer paketleri tcp_wrappers desteğiyle yapılandırabilirsiniz.Daha ayrıntılı bilgi için tcpd(1) elyordam sayfasını okuyun.

Solar Designer tarafından Güvenli Linux yamaları :
http://www.false.com/security/linux/

replay.com RedHat crypto sayfaları:
http://www.replay.com/redhat/

Yörenizi kırararak güvenliğini geliştirin:
http://www.alw.nih.gov/Security/Docs/admin-guide-to-cracking.101.html

Slashdot bu-dakikaya-kadar haberleri için iyi bir kaynaktır:
http://www.slashdot.org

Yazılım güncellemelerinde güncel kalın,FreshMeat'i düzenli olarak ziyaret edin.
http://www.freshmeat.net

Smashing the stack:
http://reality.sgi.com/nate/machines/security/P49-14-Aleph-One


Bu sanal yöreninin bakımı Miguel Angel Sepulveda tarafından yapılmaktadır.
© Michael Jastremski
LinuxFocus 1998