Bilginin Adresi Ana Sayfa
Forum Anasayfası Forum Anasayfası > Bilgisayar Güvenliği / Computer Security > Güvenlik / Security Makaleleri
  Aktif Konular Aktif Konular RSS - Masa üstü Linux umu nasıl güvenli hale getiririm?
  SSS SSS  Forumu Ara   Events   Kayıt Ol Kayıt Ol  GiriÅŸ GiriÅŸ

Masa üstü Linux umu nasıl güvenli hale getiririm?

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
megabros Açılır Kutu Gör
Security Professional
Security Professional
Simge

Kayıt Tarihi: 08-06-2009
Konum: Turkey
Status: Aktif DeÄŸil
Points: 752
Mesaj Seçenekleri Mesaj Seçenekleri   Thanks (0) Thanks(0)   Alıntı megabros Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Masa üstü Linux umu nasıl güvenli hale getiririm?
    Gönderim Zamanı: 23-08-2009 Saat 13:05

Gerek sunucu sistemi gerekse masa-üstü kişisel bilgisayarımız olarak linux , her geçen gün kullanıcı sayısını artırmaktadır. Buna paralel olarak linux çalışan sistemler, kötü niyetli kişilerin daha belirgin bir hedefi haline gelmektedir.


Şu anda mutlu şekilde çalışmamıza izin veren linux`umuz, eğer gerekli önlemleri almazsak farkında bile olmadan başımızı ciddi belaya sokabilir. Bu belgede linux`a yeni başlayanlar ve orta derecede linux bilenler için birtakım güvenlik önlemlerinin nasıl alınacağını anlatmaya çalıştık. Bu önlemlerin bir kısmı tek aşamada ve basit bir şekilde yapılabileceği gibi bir kısmı da periyodik olarak ve özen gösterilerek yapılmalıdır.

Belgemizin kronolojik bir sıra takip etmesi açısından konuya ilk olarak kurulum aşamasından başlamak istiyoruz.
Temelde bilgisayarımızın (bilgisayar kelimesini aslında kişisel bilgisayar
yerine kullanıyoruz. Sunucu sistemlerde güvenlik konusu çok daha boyutlu ve biraz daha karmaşık yapıdadır) güvenliğini 3 değişik aşamada gerçekleştirebiliriz:

- Kurulum aşamasında

- Kurulumdan hemen sonra

- Ve kullanırken

Temiz Kurulum:


Eğer linux kuracağınız bilgisayarınızda daha önce kurulu olan herhangi bir linux sürümü varsa, sizin açınızdan tavsiye edilen edilen en güvenli kurulum , “disk” e “format” atarak yapacağınız bir kurulumdur. Bu şekilde “disk” inizi sıfırlamış olup temiz bir kuruluma başlayabilirsiniz.

Güvenlik Seviyesi:


Bazı Linux sürümleri (örn: Mandrake 8.1) kurulum aşamasında bilgisayarımızı hangi güvenlik seviyesinde kuracağımızı sorar. Eğer kuracağımız sistem kritik bir iş yapacaksa veya önemli bilgiler barındıracaksa yüksek güvenlikte kurmamızda fayda vardır. Bu şekilde kurulum seçtiğimizde bazı güvenlik araçları kurulum aşamasında seçili hale gelecek ve bazı güvenlik ayarlarını kurulum programı otomatik olarak
yapacaktir. Fakat, en yüksek seviyede kurulan bir sistem, herhangi bir saldırıda yapılan fakat normalde de oluşabilen bazı işlemlerde uyarı mesajı vereceğinden sizi gereksiz yere üzebilir. Bu nedenle kişisel kullanım için orta seviyede bir güvenlik ayarı yeterli olacaktir.

Disk Bölme:

İlk defa bir işletim sistemi kuracak birisi, “disk” üstünde tek bir bölmenin yeterli olacağını düşünerek tüm sistemini bu bölmeye kurar. Linux”umuzun çalışması açısından fazla bir problem teşkil etmiyecek olan bu kurulum, hiç beklemediğimiz bir anda veri kaybımıza neden olabilir. Yoğun istekte bulunarak herhangi bir sunucu programımızın planladığımızdan daha fazla “log” almasına ve tek olan “disk” bölmesini doldurmasına neden olabilecek kötü niyetli bir arkadaşımız, böylelikle o esnada başka bir program tarafından “disk” e yazılması gereken ve bize çok gerekli olan herhangi bir bilginin disk dolu olduğu için kaybolmasına neden olabilir. Bu nedenledir ki “disk” bölme aşamasında

a)
Sistem dosyalarını koyacağımız kök bölmesi (/)

b) Çeşitli programların “log” larının yazıldığı, “mail” sunucusu çalışıyorsa, gelen mesajların yazıldığı, ve yazıcı dosyalarının gönderildiği bir bölme (/var)

c) Eğer sistemimizde bizden başka kullanıcıların da çalışmasını
istiyorsak, onların programlarının çıktılarının yazıldığı bir bölme (/home)

d) Eğer önemli belgelerimiz varsa ve sistemi tekrar kurmak gerektiğinde bu belgeleri başka bir yere taşımak istemiyorsak bunları koyacağımız başka bir bölme (/backup) şeklinde “disk” bölmeleri açmamız, hiç beklemediğimiz bir anda hayatımızı çok kolay bir hale getirebilir.

Az Paket Seçimi:

Kurulum aşamasında bizim işimizi halledecek ve yakın bir zamanda kullanmayı planladığımız paketleri seçmek güvenlik açısından önemlidir . Çünkü her geçen gün bir programın açığı bulunmakta ve yükleyeceğimiz her bir paket o anda sağlam olsa dahi potansiyel olarak güvenlik tehlikesi oluşturmaktadır.

Yamaların Atılması:

Daha önce bahsedildiği gibi kuracağınız sürümün bazi paketlerinin güvenlik açığı bulunabilir. Sürümünüzü öğrenen kötü niyetli arkadaşımız kullandığınız delik programın açığını kullanarak başınıza dertler açabilir . Bu nedenle kurulum yaptıktan sonra sürümünüze göre linux`unuza yamaları atmakta her zaman fayda vardır.

Bunu yapmak için Mandrake ve RedHat`lerde “rpm” komutunu, bu işi otomatik olarak yapmak istiyorsanız Mandrake”de “MandrakeUpdate”, RedHat`te “autorpm” komutunu kullanabilirsiniz.

Gereksiz Servislerin Kapatılması:

Linux`umuzu kurup, yamalarını atıp tekrar sistemimizi başlattığımızda artık

bilgisayarımızın açık kapılarını kapatma zamanı gelmiştir. Yabancı insanların bilgisayarımıza ulaşabileceği en temel yollardan birisi çalışan sunucu programlar üzerindendir. Bu nedenle sizin işinize yaramayan sunucu programların sisteminizde çalışmasına izin vermeyin. Kişisel bir masa-üstü
linux`da sadece “sshd” sunucu programının çalışması yeterlidir. Sunucu
programları genelde 3 değişik şekilde çalıştırılır:

1- Sunucu programın ismini yazarak çaliştirma:

Bu tip çalıştırma tamamen insiyatifinizde olan bir çalıştırma şeklidir. Genelde linux`unuza daha sonra kurduğunuz ve belirli zamanlarda ihtiyaç duyduğunüz sunucu programlarını çalıştırırken bu yolu izlersiniz. Eğer bu şekilde çalıştırdığınız sunucu programına ihtiyacınız yoksa

“ps -ef | grep sunucu_program_ismi” komutu ile “process id” sini öğrenip, “kill process_id” komutu ile bu sunucu proğramı öldürebilirsiniz. Eğer hala size direniyorsa “kill -9 process_id” komutunu en son çare olarak düşünebilirsiniz.

2- Açılırken

Otomatik Olarak Çalıştırılan Sunucu Programları:

Başlangıçta çalışacak programlar “.rc” betikleri (script) ile
belirlenir. Linux`unuz açıldıktan sonra KDE ya da GNOME gibi grafiksel arabirim otomatik olarak çalıştırılıyorsa çalışma-düzeyiniz 5 demektir ve başlangıç betikleriniz /etc /rc.d/rc5.d dizini altında bulunur. Başlangıçta çalıştırılan betiklerin başlarında “S” vardır. Eğer bu betiğin çalışmasını istemiyorsanız isminin baş harfini “S” yerine “s” yapın. “K” ile başlayan betikler çalışan servisleri öldürmek için kullanılır. İlk harften sonra gelen numaralar ise bu betiklerin çalıştırılma sıralarını belirler (küçükler daha önce çalıştırılır). Aşağıda bu betiklerin bir kısmını ve açıklamalarını göreceksiniz:

 

S05apmd (Buna sadece dizüstü bilgisayarlarda ihtiyaç duyarsınız)

S10xntpd (Network time protocol)

S11portmap (eğer NIS veya NFS gibi RPC servisleri çalıştırıyorsanız gerekli)

S15sound (Ses kartının ayarlarını kaydeder)

S15netfs (Bu nfs istemcisidir, bir nfs sunucusundan dosy-sistemlerini mount etmede kullanılır)

S20rstatd (”r” ile başlayan servisleri çalıştırırken dikkatli olun, uzaktaki
kullanıcılara çok fazla bilgi sağlarlar)

S20rusersd

S20rwhod

S20rwalld

S20bootparamd (Diskleri olmayan istemciler içindir, genelde bu zayıflık içeren servise ihtiyaç duymazsınız)

S25squid (Proxy sunucusu)

S34yppasswdd (Eğer bir NIS sunucusu iseniz gerekli, bu servis pek çok
zayıflık içeebiliyor)
S35ypserv (Eğer bir NIS sunucusu iseniz gerekli, bu
servis pek çok zayıflık içeebiliyor)
S35dhcpd (Dhcp sunucusu servisini
çalıştırır)
S40atd (cron`a benzer olan at servisi içindir, her sistem
ihtiyaç duymaz)
S45pcmcia (Buna sadece dizüstü bilgisayarlarda ihtiyaç
duyarsınız)
S50snmpd (SNMP daemon, uzaktaki kullanıcılara sisteminiz
hakkında detaylı bilgiler verebilir)
S55named (DNS sunucusu. Eğer DNS
kuruyorsanız BIND`ın en son sürümüne güncelleyin, http://www.isc.org/bind.html)

S55routed (RIP, buna GERÇEKTEN ihtiyacınız yoksa çalıştırmayın)
S60lpd
(Yazıcı servisleri)
S60mars-nwe (Netware dosya ve yazıcı sunucusu)

S60nfs (NFS sunucusu için kullanılıyor, ihtiyacınız yoksa çalıştırmayın)

S72amd (AutoMount daemon, uzaktaki dosya sistemlerini mount etmede
kullanılıyor)
S75gated (OSPF gibi diğer yönlendirme protokollerini
çalıştırmak için kullanılır)
S80sendmail (Bu script`i kapatsanız da hala
posta gönderebilirsiniz fakat alamazsınız veya relay yapamazsınız)
S85httpd
(Apache web sunucusu, en son srümüne güncelleyin, http://www.apache.org)

S87ypbind (Eğer bir NIS istemcisi iseniz gerekli)
S90xfs (X font
sunucusu)
S95innd (Haber (News) sunucusu)
S99linuxconf (Bir browser ile
Linux sistemleri uzaktan konfigür etmede kullanılıyor, her siyahşapkalının
rüyası :) )

Eğer başlangıç programlarını yukarda açıklanan şekilde
değiştirmek zorunuza gidiyorsa bunun başka yolları da vardır. Çoğu dağıtımlarda
bulabileceğiniz “chkconfig”, Mandrake`de “/usr/sbin/setuptool”, RedHad`ta
“/usr/bin/setup” yapılandırma programları ile istediğiniz başlangıç betiklerini
açıp ya da kapatabilirsiniz. Bilgisayarınız açıldıktan sonra hangi sunucu
programların çalıştığınız öğrenmek için

“netstat -an | grep -i listen”

komutundan faydalanabilirsiniz.

3- Süper Sunucu (inetd/xinetd)
Yardımı ile:


Bilgisayarınızda birden fazla sunucunun aynı anda çalışarak
istek gelmesini beklemesi, hiç kimse o anda servis almıyorsa dahi sistem
kaynağımızı tüketen bir olaydır. Bu yüzden birçok sunucu yerine bir sunucu
çalışır (inetd) ve gelen isteği bazı güvenlik kontrollerinden geçmesi için
“tcpd” sunucusuna devreder. Bu şekilde birçok sunucu program merkezi bir
yapılandırma dosyasından (/etc/inetd.conf) kontrol
edilebildiği gibi aynı
zamanda bilgisayarımız daha az kaynak tüketerek çalışmış olur. Tipik bir
“/etc/inetd.conf” dosyasının içeriğine bakalım:

ftp stream tcp nowait
root /usr/sbin/tcpd in.ftpd -l -L -i -o
telnet stream tcp nowait root
/usr/sbin/tcpd in.telnetd
#smtp stream tcp nowait root /usr/bin/smtpd smtpd

#nntp stream tcp nowait root /usr/sbin/tcpd in.nntpd

Eğer “inetd”
nin bir sunucuya istek geldiğinde ilgili sunucu programını çalıştırmasını
istemiyorsanız, sunucu programın olduğu satırın başına “#” koymanız yeterli
olacaktır.
“Inetd” nin, gelen istekleri bazı kontrollerden geçirdiğini
belirt-
miştik. “Inetd.conf” dosyasının 6. sütununda görülen
“/usr/sbin/tcpd” programı bu kontrolleri yapan bir sunucudur. “Ftpd” sunucusuna
gelen isteği ilk önce “inetd” sunucusu alır ve yapılandırma dosyasındaki “ftp”
satırının başında “#” yoksa bu isteği “tcpd” ye yönlendirir. Ger-
ekli
kontrolleri yapan “tcpd” bu kontrollerden geçen isteği, “in.ftpd” programını
yukarıda gösterilen parametrelerle çalıştırarak devreder.
“Tcpd” sunucusu bu
kontrolleri 2 yapılandırma dosyasına bakarak yapar.
“hosts.allow” ve
“hosts.deny”. İçeriklerine bakacak olursak:

/etc/hosts.deny:
ALL:
ALL : spawn (/usr/sbin/safe_finger -l @%h > /var/log/denied) &

/etc/hosts.allow:
in.telnetd: 192.168.1.0/255.255.255.0 : banners
/etc/bannerfile :ALLOW
in.ftpd: 192.168.1.30 :ALLOW

Linux ilk
kurulduğunda bu yapılandırma dosyaları boş gelir. Yapılandırma yaparken:
1-
Alan adları yerine IP adresleri kullanın
2- İlk önce bütün istekleri
“hosts.deny” dosyasında reddedin.
Daha sonra izin vereceklerinizi
“hosts.allow” dosyasının
içerisine yazın.

Güvenli Parola
Seçimi:


Linux`unuzda herhangi bir kullanıcı açarken şifresini
sözlüklerde
bulunmayan kelimeler yapın. Hatta şifrenin içindeki bazı
karakterleri rakam (1,5,2 gibi) bazılarını da rakam ve harf dışıkdaki
karakterlerden (@ , /, -) yapın ki, kötü niyetli arkadaş sizin “encrypted”
şifrenizi eline geçirdiğinde herhangi bir şifre-kıran program ile kolayca
kıramasın. Ayrıca seçtiğiniz
şifreleri periyodik aralıklarla değiştirin.

Root Hakları ile Çalışan Programların Tespiti ve Kontrolü:
Unix ve
Linux sistemlerde bazı programlar vardır ki bunların root hakları ile çalışması
gerekir (örn: ping, mount gibi). Ama sisteminize sizden habersiz giren kişi
kendi istediği herhangi bir programı da root hakları ile çalıştırmak
isteyebilir. Bunu yapabilmek için “setuid” ve “setgid” programlarından
faydalanabilir. Bu tür programlar çalıştırıldıklarında program
sahibinin
haklarıyla çalışır. Bu nedenle, Linux`unuzda hangi “setuid” programların root
hakları ile çalıştığını tespit edin ve süphelendiğiniz programlardan bu hakkı
kaldırın. Bunun için
find / -perm +4000 -exec ls -l `{}` `;`
komutunu


kullanabilirsiniz.

Uzaktan Erişimin Yapılandırılması:

Linux`unuza erişimi iki dosya yardımıyla yapılandırabilirsiniz.

“/etc/securetty”, dosyasında root kullanıcısının sisteminize hangi
terminallerden bağlanabileceğini belirtirsiniz. Eğer bu dosyaya sadece “ttyX”
şeklinde terminaller yazarsanız, root kullanıcısı bilgisayarınıza uzaktan
erişemez.
Sadece fiziksel olarak makinanızın önünden bağlanabilir. (Tabi
uzaktan başka kullanıcı ile bağlanıp, root kullanıcısına “su” yapabilir).
“/etc/login.access” (Mandrake`de /etc/security/access.conf) dosyası yardımı ile
daha esnek bir yapılandırma yapabilirsiniz. Bu dosyadaki kurallar yardımıyla
hangi kullanıcının nerden bağlanabileceğini yapılandırabilirsiniz. Her kural,
tek bir satırda 3
bölmeden oluşur
hak : kullanıcı(lar) :
bağlantı_noktası

“hak” kısmının + veya – oluşuna göre “kullanıcıya”
“bağlantı_noktası”
ndan giriş izni verilir. “kullanıcı(lar)” kısmı bu
kuralın hangi kullanıcı(lar)
veya gruba uygulanacağını gösterir. Üçüncü
kısım ise bağlantının kaynağını
gösterir (”tty” isimleri, IP adresleri
gibi). Örnek verecek olursak:

#
# /etc/login.access – restrict
logins
#
-:ALL EXCEPT wheel : console
#
-:wheel : ALL EXCEPT
LOCAL
#
-:httpd ftpd : ALL
#
# all other accounts are allowed to
login
#

Bu dosyaya göre ilk kural, sadece “wheel” grubundaki
kullanıcıların “console” dan bilgisayara erişebileceğini belirtiyor. İkinci
kural “wheel” grubundaki kullanıcıların “local” olmayan bilgisayarlardan
bağlantı yapamıyacağını söylüyor. Üçüncü kural ise “httpd” ve “ftpd”
kullanıcıların hiçbir şekilde bağlantı yapamıyacağını belirtiyor.


Eğer
herhangi bir kullanıcı herhangi bir yerden bağlanmaya çalışırken bu dosyadaki
herhangi bir kurala uymazsa, otomatik olarak bağlantı hakkı verilir.

Sistem Kaynaklarının Paylaştırılması ve Sınırlandırılması:
Bilindiği
üzre “harddisk” gibi “memory” gibi bilgisayarımızın sınırlı
kaynakları
vardır. Eğer bu kaynakları kullanıcılara sınırsız açarsak, kötü niyetli
arkadaşımız istediği bir anda (ki bu genelde çok kritik bir an olur) kaynakların
hepsini tüketerek sistemimizi çalışamaz durumda bırakabilir.
Hangi
kullanıcının kaynaklar üzerinde ne kadar hakkı olduğunu “ulimit” komutu ile
görebilirsiniz.

LILO Parolası:


İnsanlar bazen evi için tüm
güvenlik önlemlerini alırlar. Değerli
eşyalarını kilitli yerlerde saklarlar,
tüm pencerelerini kapalı tutarlar, evde bekçi köpeği beslerler fakat evin ön
kapısını bazen açık unutabilirler.
Bilgisayar güvenliği dediğimizde de tüm
önlemleri alırız fakat biz farkında olmadan bilgisayarımıza fiziksel olarak
erişecek kişiyi bazen hiç düşünmeyiz.
Bu nedenle bilgisayarımızın açılması
için bazı parolalar koymamız şarttır.
Bunlardan bir tanesi BIOS parolasıdır.
Bilgisayar üzerinde çalışan işletim sisteminden bağımsız, anakart üzerindeki

yongalarda tutulan BIOS parolası,
“jumper” ayarları ve anakart pili ile
oynanarak sistem üzerinden silinebilir.
BIOS parolasını bir şekilde atlatan
arkadaşımızı (eğer bilgisayarımıza fiziksel olarak erişip bunu yapabilmişse
artık arkadaşımız değildir kendisi) durdurmak istiyorsak, işletim sistemimizin
yüklenebilmesi için de parola koyabiliriz.
Eğer sisteminiz LILO ile
açılıyorsa, LILO`nun başlatacağı herhangi bir işletim sistemi için parola k****k
mümkündür. Bunun için “/etc/lilo.conf” dosyasının başına
password=
your_password
optional

satırlarını ekleyiniz ve parola SORULMAYACAK
işletim sistemi bloğunun altına
restricted

satırı ekleyeniz. Bundan
sonra LILO, “/etc/lilo.conf” dosyası içindeki bloğunun içinde restricted
yazmayan her işletim sistemi için parola soracaktir.

“Log”
ların Kontrol Edilmesi:


Linux “log” larını “/var/log” dizini altına
depolar. Sisteminizde kontrolünüz dışında birşeylerin gittiğini anlamak için
burdaki dosyalar periyodik olarak bakmanızda fayda vardır. Mümkünse loglar
üzerinde çalışan bir analiz programı yardımıyla bu işi otomatik hale getirmeniz
de mümkün.

Bilgisayarınıza Uzaktan Güvenli Bağlantı:


Uzaktan
bağlantı dediğimizde çoğumuzun aklına “telnet” ve “ftp” gelir.
Bu programlar
internetle tanıştığımızdan beri yardımımıza koşmakta ve her işimizi görmektedir.
Peki bu programların güvenli olduğunu hiç düşündük mü?
Sunucu sistemle
istemci arasındaki tüm veri aktarımını (kullanıcı ismi ve parola da dahil)
şifrelenmemiş düz metin halinde yapan programlara ne kadar güvenebilirsiniz?
Evet “telnet” ve “ftp” den bahsediyoruz. Ağ üzerinde iyi bir yere konuşlanmış
kötü niyetli arkadaşımız, internetten kolayca bulacağı bir ağ dinleyen program
ile şifrelerinizi toplayabilir. Bu nedenle bu iki programın
yerine “ssh”
kullanmanızı tavsiye ediyoruz. “Sshd” çalışan herhangi bir sunucu sisteme “ssh”
ve “sftp” sayesinde güvenli şekilde bağlanabilir (parolanız şifrelenmiş şekilde
iletilir), “telnet” ve “ftp” ile yaptığınız tüm işleri rahatlıkla
yapabilirsiniz.

Sunucu Programların ve Diğer Programların
Çalıştırılması:


Eğer herhangi bir sunucu program çalıştıracaksanız,
mümkünse bu programı root olarak çalıştırmayın. Root, sistem üzerinde en geniş
yetkiye sahip olan (sistemi tamamen yoketmek de buna dahil) kullanıcı
olduğundan, root haklarıyla çalışan bir sunucu program kötü amaçlı
yönlendirilerek sisteminizde onarılmaz
hatalara yol açabilir. Bu nedenle, bu
tür programları mümkünse hakları en az kullanıcı ile çalıştırınız.
 
Saygılar..


Düzenleyen megabros - 23-08-2009 Saat 14:00
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu Gör



Bu Sayfa 0.172 Saniyede Yüklendi.