Yazar Hakkında

1 Ağustos 2000

Yazan: Ömer Faruk Şen ofsen@enderunix.org
Versiyon: 0.1a -- 01 Ağustos 2000



1.1 Kitapçığın Geçmişi: Bu kitapçığın daha pek geçmişi yok.Sadece HOWTO-HOWTO ya uygun olması için vede ilerisini de düşünerek bu tarz bir düzenlemeye giriştim.Ayrıca bu kitap Redhat Linux baz alınarak yazılmıştır.Gerekli scriptler vede konfigürasyon dosyaları RedHat Linux (GPL)'ye özgüdür.

1.2 Geri Dönüşüm: Bu kitapçık hakkında her türlü yorumlarınızı ofsen@turx.com adresine mail atarak iletebilirsiniz.

1.3 Neden : Bu dökümanı yazmamın nedeni şu ana kadar Türkçe bu tarz bir dökümanın hiç yazılmamış olmasıdır.Oysaki her sistem yöneticisinin güvenlik hususunda kendine ait ajandası yada notları vardır.Bir amacım da bu notların ajandalardan çıkarak internete ve dolayısıyla Linux kullanıcılarına ulaşmasıdır.

1.4 Yazar : Yaklaşık 2 seneden beri Linux'le uğraşmaktayım.Kendi ilgi alanım GÜVENLİK olmasından dolayı Linux'e başladım.Zaten bilgisayar kullanmaya başlamam ile Linux kullanmaya başlamam arasında yaklaşık 3 ay fark var.Kendimi bu işin uzmanı saymıyorum.Ama hem benden daha az bilgisi olan kişilere bir rehber hem de güvenlik hususunda profesyonel olmuş şahısları belli bir noktada birleştirmek için bu dokumanı yazdim.Gerçeği söylemek gerekirse bu tarz bir dökümanın neden daha önce yazılmadığını da anlayabilmiş değilim.

Not: Bu dökumanı hiçbir karşılık beklemeden yazmış bulunmaktayım.Olabilecek hehangi bir aksaklıktan dolayı sorumlu tutulmam olası değildir.Bu dökumanı okuyan şahıs bunu kabul etmiş sayılır.
Sistemin Kurulmasi
2 Sistemin Kurulması : Şu an itibarı ile Redhat 6.2 sürümü mevcuttur.Kurulumdan önce sisteminizdeki donanımı berlirlemelisiniz.Eger yeni bir sistem alacaksanız www.suse.com dan sisteminiz için gerekli donanımı seçebilirsiniz.Düşünun sunucunuzu kuracağınız yere elinizde bir sürü donanımla geldiniz.Sonra sistemi boot ettiniz vede donanımınız linux tarafından tanınmadı.Paranıza yazık değilmi.Madde madde sıralarasak 


a)Kac harddiskiniz var.
b)Sisteminizdeki harddisk SCSI olacak yoksa IDE mi?
c)RAID controller kullanacakmisiniz markası modeli ne?
d)Ram miktarnız ne olacak?
e)Kullanacağınız mouse PS2mi yoksa COM mu?
f)Ekran kartınızın chipseti ne?
g)Monitörünüzün modeli ne?Hangi çözünürlükleri destekliyor.
h)Kullanacağınz ethernet kartının modeli ne üzerindeki chipset ne?
i) 1) Kullanacagınız makina adi ne olacak
2)Makinanızın IPsi ne olacak
3)Subnet Maskiniz ne olacak
4)Eğer varsa gatewayinizin IP'si ne?
5)DNS serverinizi IP si ne olacak?





Butun bunları belirledikten sonra sisteminiz için boot disk yaratmak gerekiyor.Bunlarin derinine inmeyeceğim ama yarattığınız boot disketi sisteminiz açmaz ise buyuk bir ihtimal boot disketteki çekirdek donanımlarınızdan birini desteklemiyordur.Bunun içim www.redhat.com/errata ya gidip sisteminiz için gerekli boot disketinin imajını indirebilirsiniz.



2.b Partitionlara Ayırma : Bunun için serveri kurma amacınızı tam olarak belirleyin.Eğer sisteminiz bir mail server olacaksa doğal olarak maillerinizin kullanıcıya gitmeden duracağı havuz olan /var/spool/mail dizinini kullanici sayısına oranlamanız mantıklı olacaktır.Yada sisteminiz bir ftp server olacaksa /incoming directorysini ayri bir dilim de yapmaniz yada ayri bir harddisk kullanmanız sisteminizin / partitionun dolmasından kaynaklanan dos( denial of service) a maruz kalmasını önlemiş olur.Genel olarak dilimlemenin (partition) şu yararları vardır.

X) Denial Of Service saldırılarına karşı korunmuş olursunuz.
X) SUID programlarına karşı sisteminizi korursunuz.
X) Belirli bir dizini readonly baglayarak sisteminize yapila olası saldırılara karsı önlem almış olursunuz.Boylece sistemize gizlice giren birinin sitemize rootkit(mesela login programı hackerin kendi hazirlamış olduğu ve sisteme belirli bir user name ile bağlanınca log dosyalarına log atmasını önlediği bir sistemi önlemiş olursunuz) yerleştirmesi son derece zor olacaktır
X)Sisteminizin backup ve restore olaylarını son derece kolay yaparsınız.
X)Sisteminiz daha hizli boot eder.

TAVSIYE: Sisteminizi kurarken swap partitionlarınızı mumkun olduğunca sda1 (hda1) e kurmayi deneyin.İlk dilime erişim her zaman daha hızlı olacaktır.Arzu edenler IDE sistemlerde hdparm komutunu çalıştırarak farkı görebilir.

Dilimlemede su dilimler kullanılabilir.
/
/boot
/var
/usr
/tmp
/home

2c) Sistem Paketleri : Kurulacak sistem server olduğu için redhatin kendi SERVER konfigurasyonu kurulabilir.Fakat sistem kurulduktan sonra şu paketler MUTLAKA kaldırılmalıdır( Bu kısım Securing-Optimazing-Redhat-Linux-V_1.3 ten alınmıştır)İsteyetnler bu adresten bu dökümana ulaşabilir.Bu paketler Redhat 6.2 için geçerlidir.




pump 

mt-st

eject

mailcap

apmd

kernel-pcmcia-cs

linuxconf

getty_ps

isapnptools

setserial

kudzu

raidtools (Sisteminizde software raid silinmemelidir) 

gnupg

redhat-logos

redhat-release

gd

pciutils

rmt
Manuel Ayarlar
3) Bundan sonra sisteminizde manuel yapılacak güvenlik onlemleriden bahsedeceğim.Bunlar benim uyguladığım önlemler.Daha önceden dediğim gibi eksiklikler olabilir.Ama her türlü yoruma da açık olduğumu söylemeliyim.Aslında bundan sonrası daha çok yeni bir şey öğretmekten ziyade varolan şeyleri biraraya getirip sysadm lere yardımcı olmayı amaclıyor.




1)Redhat.com adresinden en son packet updatelerini indir ve kur.

2)Sistemine en son kerneli indir.

3)Kernel kurarken secure_linux patchini indir ve kerneli patchle.(Secure_linux sisteminize bir çok güvenlik özellikleri katacaktır)

4)Sisteme login olacak başka bir user aç vede UID ve GID'ini 0,0 yap.Vede sisteme asla root olarak girme( Eğer sisteme birisi girerse root kullanicisi olmaya çalışacaktir.Bu da sistem loglarında gozukecektir.Sistem logları taranarak root un login olup olmadığı belirlenebilir.)

5)/etc/login.defs ile oynayarak kullanıcı şifrelerinin en az 8 karekterli olacak şekilde ayarla.

6)Sistemdeki SUID programlarının modunu değiştir.Bu tarz programlar sistemdeki kullanıcıların root yetkisini kullanarak program çalıştırmasını sağlar. Daha fazla bilgi için tıklayınız.

7)Sendmail'de relay ayarları ile oynayarak spami önle

8)Sadece wheel grubuna uye olanlarin su olmasınu sağla.Bunu sağlamak için.

auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_wheel.so group=wheel
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so shadow use_authtok nullok
session required /lib/security/pam_pwdb.so 

satırlarını /etc/pam.d/su ya ekle.Vede su olabilmesini istediğin userı /etc/groups dosyasında wheel grubuna ekle ( wheel root,user ).

9)/etc/hosts {allow|deny} dosyalarıyla oynayarak sisteme girecek IP'leri vede hangi servisleri kullanabileceklerini ayarla,

10)Kernel patchi olarak Lids (linux intrusion detection system)'de kurabilirsin ama hala stable değil).

11)Sisteme mutlaka LOGCHECK kur.Bu program saat başı sana sistem loglarından senin sectiğin kısımları mailleyerek sistemdeki hakimiyetini arttırır.(Bu mailin gunluk atilmasını da saglayabilirsin cron.hourly deki logcheck'i cron.daily' e taşıyarak).

12)Elinden geldiğince BIND (name server )kurmamaya çalış.En büyük güvenlik riski budur.Eğer illa kurulması gerekiyorsa chroot yaparak kur.Daha fazla bilgi için Chrooted-Bind-HOWTO yu oku.

13)/etc/passwd ile oynayarak nobody nin shellini / den /var/lib/tmp yada uygun bir yer yap.Bazı Linux versiyonlarinda http://server/~nobody/etc/passwd yapılarak passwd dosyası elde edilebilir.

14)/etc/hosts.conf a nospoof satırını ekle

15)Kernel'a tcpsyncookies desteğini vererek Spoofing'i önle daha sonra su düzeltmeyi yap (echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter )

16) Apache manuel lindeki SECURITY kismindaki direktifleri uygula)

17)/etc/securetty ile oynayarak root un ancak belli tty lerden login olmasini sagla mesela tty6 dışındakı herşeyin başına HASH işareti getir.

18)Kernel i install ettikten sonra sistemindeki gcc rpm ini sildikten sonra gerekli software leri kurmak için www.immunix.org tan gcc nin değiştirilmiş versiyonunu install et( Bu buffer overflow u onlemek için kullanılır.)

19)Butun önemli daemonlari immunix gcc sini kullanarak kur.(apache bind mysql php...... )

20)/etc/skel ile oynayarak sistemdeki kullanıcılari açmadan her kullanıcı için istediğin değişikliği yapabilrsin.Mesela /etc/skel/public_html yaratılabilir. 755 modunda)

21)Mysql'i asla root olarak çalıştırma bunun için mysql için shelli /dev/null olan bir kullanici aç sonra grubunuda mysql yap.Sonra chown mysql:mysql /usr/local/mysql yap.Sonra ./safe_mysqld --with-user=mysql diyerek mysqli çalıştır.

22)/etc/fstab ta /home ve /tmp partitionuna default yerine nosuid yaz.Böylece bu dilimlerde suid shelleri çalıştırılmaz ve sisteme gizlice giren kişi suid programları kullanarak root olamaz.En azından bir önlem....

23)Sisteme www.psionic.com da bulunan portsentry kur.Vede /etc/rc.d/rc.local'e gerekli satırları ekleyerek sistemize port scan yapan sahislari tespit et vede bu IP'lerin otamatik olarak /etc/hosts.deny yazdirilmasını sağla.Bunun için başlangiç betiklerine rc.locale portsentry ile gelen ignore.csh'ı da ekle.

24)Sistemde TELNET portunu kapa vede SSHı kur.Ayrıntılı bilgi www.ssh.com yada www.openssh.org adresinde.Ssh her turlu gönderilen bilginin şifrelenmesini sağlayarak sistemizi sniff eden sahısların sistemdeki kullanıcı şifreleri elde etmesini onler.PKI infrastructure.

25)SADECE ihtiyaç duyulan servisleri aç.Diğerlerin kapa /etc/inetd.conf ta onlerine hash getir vede killall -HUP inetd diyerek inetd yi yenidne başlat.Daha iyisi Xinetd (extended inetd kur www.xinetd.org ).

26)Sistemini internetten real time izleyebilmek icin netsaint yada bigbrother ı kur.

27)Ipchains kullanarak 6000:60003 arası portları yani X portlarına route i dışarıdan kapat.
ipchains -A input -i eth0 -p tcp -y --destination-port 6000:6003 -j DENY

28) /etc/security/console.apps altındaki herseyi sil.Bunlar herhangi bir kullanıcının bu dizin altındakı komutu çalıştırmasını sağlar.

29)/etc/rc.d/init.d deki herseyi mod 700 yap.(Aslında o kadar da gerekli değil)

30)Ping requestlere cevabi kes.

31)Sisteme www.bastille-linux.org daki bastille-linux paketini kur.KESINLIKLE

32) www.psionic.com dan Hostsentry programını indir ve kur.Bu paket sisteme değişik koşullarda login olan userlari yada sistemde bulunan değişik dir lari sistem loglarına bildirir.Mesela bir hacker kurbani ile alakali dosyalari ~/... dizininde tutabilir.Buraya bir sniffer koyarak sisteme login olan kullanıcıların şifresini sniff edebilir.

33)Eğer /bin /lib /usr/bin /usr/sbin gibi dizinler farklı bir partitiona kurulursa /etc/fstab dosyasında defaults değerler yerine readonly mount edilebilir.Boylece sisteme giren kişi bu partitionlardaki programları kendi yarattığı rootkitlerle değiştiremez ( Mesela login komutu değiştirilerek sadece belli bir user ile sisteme giren kullanıcıyı hiç şifre sormadan root yapabilecek bir komut konulabilir.)

34)Gerçek bir serverda derleyiciye asla gerek yoktur. egcs ve egc++ paketleri sistem tam manasıyla kurulduktan sonra kaldırılmalıdır.İhtiyaç duyulduğunda bu paket tekrar sisteme kurulabilir.

35)Sisteminizin tam manasıyla kurduktan sonra sisteminize TRIPWIRE kurulabilir.Bu yazılım binary olarak gelir.2 versiyonu vardır.Biri ASR( v 1.3) denilen kodu açık olan Academic Software Releasedir .Diğeri ise v 2.1'dir.Kurulması cok kolaydır.Bu yazılım soyle çalışır.Sisteminizde bulunan tum dosyaları imzalarını tespit eder.Sonra bunlar hakkında rapor üretir.Bu üretilen rapor El Gamos asimetrik şifreleme(1024 bit imza) ile şifrelenir.Normalde default olarak /usr/TSS dir.Fakat tavsiyem bu programın /root dizini altına kurulmasıdır.Sistemde herhangi bir değişiklil olduğunu hdüşünürseniz kontrol programı çalıştırılırak sistemde değişmiş dosyların hepsini size gösterir.Oldukça kullanışlı bir sistem.Sisteminize giren kişilerin tam olarak ne yaptıklarını size gösterir.

36)Sisteminizin kurulumunu bitirdiğiniz inanıyorsanız sisteminizi vulnerability assesment tool lar (hassasiyet ölçme araçları ) ile test edebilirsiniz .Örnek olarak SATAN yada SAINT verilebilir.SAINT SATAN in uzerine bina edildiği için ek özelliklere sahiptir.Örnek vermek gerekirse kendi sistemimi ölçtüğümde pop3 daemonumun şifreleri şifrelemeden aldığını gördüm.Eğer pop3 aracılığıyla mail almaya çalışan bir user'in sistemde shelli varsa kötü niyetli kişiler sistemime çok rahat girebilir.

37)Sisteminizdeki gerekli dizinler mutlaka yedek alınmalıdır.Bu ikinci bir harddisk yada tape drive olabilir.Tavsiyem ağ içi yedekleme olanağı sunan AMANDA'dır.

38)Sisteminize herhangi bir IDS ( Intrusion detection system ) kurmalısınız.Size tavsiyem SNORT olacaktır.Tek başına sniffer vazifesi de görür.Sisteminiz yapılan herhangi bir saldırı karşısında size mail atabilir , sistem loglarınıza uyarılarını yazabilir yada sisteminizde samba ve bir clientta winpopup kurularak çalıştığınız windows makinasına popup penceresi çıkartabilir.Snort daha önceden tespit edilmiş loglar yardımıyla çalışır.Bu logları kendiniz yaratabileceğiniz gibi www.whitehats.com da bulunan aracnidsin günlük güncellemesi çıkan vision.conf'u da kullanabilirsiniz 



Not: Buradaki önlem listeleri zamanla arttırılacaktır.
Sistem Yöneticilerinin yaptikğı en büyük hatalar
1) Sistem üzerinde gerekli önlemleri almadan ( kernel patchlerini uygulamak,gereksiz servisleri kapatmak.....) sistemi internete bağlamak.

2) Sisteminizdeki kurulmuş olan programların kolay kurulum için oluşturdukları default şifrelerle/user hesapları ile internete bağlamak. Örnek olarak Webmin kuracaksanız yönetici kullanıcı adını webminin default olarak atadığı admin kullanıcı adı ile kurmak.

3)Gerekli güncellemeler ve yamalar çıktığı halde bunları sisteme kurmamak. Ör: Yeni kernel patchleri çıktığı halde eskisini kullanmak.Yada apachenin eski versiyonlarını kullanmak.

4)Sisteminizi yönetmek için sisteminize telnet yada başka şifreleme kullanmayan programlarla bağlanmak.

5)Kullanıcı şifrelerini karşıdaki kişinin kim olduğuna emin olmadan telefonla vermek....

6)Sistemde gerekli backupları yapmamak.

7)Ftp telnetd , finger , rpc gibi sisteminizde gereksiz servisleri çalıştırmak.

8)Firewall kurarken zararlı paketlerin ağınıza girmesine izin vermek.Firewall ne yapacağını bilmediği bir paketi mutlaka reddetmelidir.

9)Ağınıza virus saptama yazılımlarını kurmamak

10)Sisteminizde bulunan kullanıcılarınızı tehlikeli birşey ile karşılaştığı zaman ne yapması gerektiği hususunda eğitmemek.

11)Sisteminizi eğitilmemiş elamanlara emanet etmek.

NOT: Bu 11 madde www.sans.org 'tan alınmıştır.



İNTERNETTEKİ İLK ON GÜVENLİK BOŞLUKLARI
1)Bind yazılımının zayıflıkları : NXT ,QINV , IN.NAMED sisteminizin ilk zayıflığıdır.Önlem olarak BIND paketi belli bir dizine hapsedilmiş olarak (chroot )kurulaibir.

2)Web sunucunuzda kurulan zararlı cgi betikleri ya da uygulama uzantıları (Ör :ColdFusion). Zararlı cgi scriptleri CGICHK programı ile tespit edilebilir.Ek olarak sadece belli dizinlerde cgi çalışma izni verilmelidir.

3) RPC.TTDSERVERD (ToolTalk) ,RPC.CMSD (Calender Manager) ,RPC.STATD gibi RPC (remote procedure call)'ler sisteminizde tehlike yaratır.

4)Microsoft IIS de bulunan RDS güvenlik boşluğu

5)Sendmail buffer overflow zayıflığı , Pipe Attack ve MIMEBo zayıflığı

6)Sadmind ve mountd 

7)NetBios yada WinNT aracılığı ile (port 135-139 windows 2000 de port 445) yada UNIX NFS de port 2049 veya Macintoshta (port 80 427 548) web paylaşımı veya AppleShare/IP yapılan Global Dosya paylaşımları

8) Şifresiz yada zayıf şifrelerle kurulan sistemler

9)IMAP yada POP3 buffer overflowları yada yanlış konfigurasyon dosyaları

10)Varsayılan Publci ya da PRIVATE SNMP community stringleri.

Not: Yukarıdaki bilgi www.sans.org tan alınmıştır.Eğer bunlara karşı önlem almak istiyorsaniz info@sans.org 'a TopTenFixes başılklı bir mail atın.Eğer bu gruba üye değilseniz mailinize isminizi , görevinizi , çalıştığınız organizasyonu ve mektup adresinizi içeren bir mail atın.
Güvenlik Siteleri

.www.securityfocus.com :Çok geniş bir içeriğe sahip bir site kesinlikle her gün ziyaret edilmeli.İlgilendiğiniz konularla alakalı mutlaka bir forum bulacaksiniz.Bu forumlara da üye olmakta fayda var.

www.linuxsecurity.com : Adında da belli sanırım.Bu site çok şey söyliyemiyeceğim. Ama günlük verilen tip leri her zaman ajandama yazarım 

www.securityportal.com : Çok yararlı bir site daha.Her türlü bilgileye burdan ulaşabilirsiniz.Cisco yada piyasada bulunan appliance larla alakalı yazılar var.Ayrica sisteminizde deneyebileceğiniz exploitler var :)

www.linuxtoday.com :Kesinlikle hergün ziyaret edilmesi gereken bir site.Haber haber haber..

www.apachetoday.com , www.apacheweek.com : Apache hakkında güvenlik yazılarını burda bulabilirsiniz.

www.cert.org

www.iss.org : Internet Security System.org

www.cert.org

www.ciac.org

www.rootshell.com : Expoitler tartışma listesi ve uyarılar için

www.whitehats.com : IDS hakkında çok hoş bir site.Online IDS tarama sistemi var.

www.opensec.org :Başkalarının opsec'i varda bizim opensec imiz olmazmı

www.trinux.org :Komple bir sistemi kuracak tek bir yazılımları var.Denemedim birsey diyemem.

www.intrusion.com : Ticari appliance üreten bir şirket.

www.checkpoint.com : En ünlü firewall yazan firma.( Firewall-1) VPN çözümleri de var.Aylar öncesinden Linux versiyonlarını çıkartacaklarını söylemişlerdi.Sanırım çıkmış ve Solaris versiyonundan kat kat performanslı çıktığını okumuştum.CheckPoint 2000 cdsi içinde geliyormuş.Ama tam bir bilgim yok.

www.watchguard.com: Appliance üreten bir firma.Opsec üyesi sanırım

www.stonebeat.com : High-Availabilty hususunda son derece gelişmiş ürünleri var.WebCluster , Cache cluster yada Firewallar için HA çözümleri mevcut.Linux versiyonuda var.

www.axent.com

www.clicknet.com

www.surfcontrol.com

www.esecuriytinc.com

www.hiverworld.com

www.netsecuresoftware.com

www.network-1.com

www.pgp.com

EnderUnIX Software Developer Team