Unix Denitim Dokümanımız aşağıdaki konu başlıklarını içermektedir:
Unix Temelleri
-Shell
-Dosya Sistemi
-Dosya-Dizin Yapıları ve Yetkiler
-Dosya ve Klasör Yönetimi
-Process
-Ağ Servisleri
-Kullanıcı Yönetimi
-Görev Zamanlayıcı (Cron)
-Loglama
-Manual Sayfaları
Unix Sistem Güvenliği Kontrolleri
-Network Servisleri
-Uzak Erişim kontrolleri
-Kritik Dosya ve Komut Erişimleri
-Süreç Takibi
-Sistem Kullanıcılıarı
-Kimlik Doğrulama
-Kapasite ve Sistem Performans Takibi
-Güvenlik Kontrolleri ile İlgili İpuçları
2. blog.btrisk.com @btrisk /btrisktv /btrisk
1
Unix Temelleri
• Shell
• Dosya Sistemi (File system organization)
• Process
• AĞ Servisleri (Network services)
• Kullanıcı Yönetimi (User management)
• Görev Zamanlayıcı (Job scheduling)
• Loglama (Logging)
Shell
Shell (Kabuk),bir işletim sistemi yönetim arayüzüdür.Sıradan kullanıcılar ve Sistem
Yöneticileri için geliştirilmiştir.Üzerinde çalıştırılabilen komutlar ve yazılan Script’ler
sayesinde Unix ve benzeri sistemlerin yönetimi sağlanmaktadır.mkdir,touch,fdisk,rm,chmod
shell üzerinde çalışan bazı komutlardır.
Dosya Sistemi
Unix sistemlerde dosya sistemi farklılık gösterse de,temel olarak Windows ve Linux işletim
sistemlerindeki dosya sistemlerine benzer.Unix denetimi yapılırken,denetçinin dosya erişim
hakları ve diğer unsurlara dikkat etmesi gereklidir.Unix sistem üzerinde bulunan dosya
yapılarını biraz daha yakından inceleyelim;
/ (root) : Kök dizin anlamına gelmektedir.Diğer tüm dizinler bu dizin altında yer
almaktadırlar.
/bin : İşletim sistemini kontrol etmek için kullanılan komutlar bu dizin altında
tanımlıdır.cat,mkdir,ls,rm temel komutlar burada bulunurlar.Sistem boot edildiğin ilk olarak
bu dizin aktif hale gelecektir.
/boot : Boot işlemi sırasında gerekli olan bileşenleri içeren dizindir.
/dev : Sisteminizde bulunan donanımlar bu dizin altında tutulurlar.
3. blog.btrisk.com @btrisk /btrisktv /btrisk
2
/etc : Sisteminiz için gerekli olan tüm yapılandırma dosyaları bu dizin ve içerisindeki alt
dizinlerde tutulmaktadır.Yapılandırma dosyasına örnek olarak /etc/resolv.conf dosyasını
verebiliriz.Bu dosya içerisinde sisteminizin DNS ayarları tutulmaktadır.
/home : Bu dizin altında sistemdeki her bir kullanıcı için tanımlanan alt klasörler
bulunmaktadır.Örneğin;”test ” isimli bir kullanıcı tanımlanırsa,/home/test adında kendine ait
bir klasörü olacaktır.Fakat bu kullanıcının yetkileri /home klasörü ile sınırlı olacaktır.
/lib : Kernel ile ilgili bazı modülleri ve paylaşılan kütüphane dosyalarını içeren dizindir.
Bahsedilen kütüphane dosyalarıysa, sistemi başlatmak ve /bin ile /sbin içerisindeki komutları
çalıştırmak için gereklidir.
/mnt : Dosya sistemi ve donanım aygıtlarını sisteme mount etmek için kullanılan dizindir.
/proc : Sistem durumunu kontrol etmek için kullanılan bazı sanal dosyalar içeren dizindir.
/root : Root kullanıcısı sisteme tanımlandığında diğer kullanıcılar gibi kendi klasörü /home
dizini altından tutulmaz.Direk olarak kendine ait olan /root dizini altında tutulur.
/sbin : Root kullanıcısının sistemi yönetmesini sağlayan komutları içeren dizindir.
/var : Log dosyaları, e-mail ve printer kuyrukları gibi değişken sistem bilgileri içeren dizindir.
/tmp : Geçici dosyalar için kullanılan bir dizindir.Bu dizin programlar tarafından geçici
depolama alanı olarak kullanılır.İşletim sistemi yeniden başlatıldığında bu dizin içerisindeki
bilgiler silinecektir.
/usr : Paylaşılabilir dosyaların bulunduğu dizindir. Bu dizin içersinde çalışabilir dosyaların
bulunduğu dizinlerin yanısıra , dokümanlar ve programların kullandığı dosyalar
bulunmaktadır.
Dosya-Dizin Yapıları ve Yetkiler
Yukarıdaki resmi referans alarak Unix üzerindeki dosya izinlerini ve diğer parametreleri
inceleyelim;
Sol tarafta kalan 10 bitlik blok dosya türünü ve bu dosya türünün izinlerini içermektedir.
4. blog.btrisk.com @btrisk /btrisktv /btrisk
3
Bu 10 bitlik bloğun ilk biti dosya türünü içermektedir.Diğer alanlar sırasıyla dosya
linklerini,dosya sahibini,dosya sahibinin bulunduğu grubu,dosyanın boyutunu,son
değiştirilme tarihini ve ismini gösterir.Unix sistemlerde kullanılan dosya türlerini şöyle
açılayabiliriz.
“d” directory anlamına gelen parametredir.Bir klasör olduğunu belirtir.
“l” link anlamına gelen parametredir.Burada bir link (kısayol) olduğunu belirtir.
“-“ sıradan dosyaları belirtmektedir.Örnek resimdeki gibi bir .txt dosyası bu
parametre ile belirtilir.
“b” block anlamına gelen parametredir.Sistemdeki disklerinizi belirtir.
“c” character file anlamına gelen parametredir.Yazıcı gibi çevresel aygıtları belirtilir.
Dosya türünü belirten bitden sonra gelen 9 bitlik blok dosya üzerindeki izinleri
göstermektedir.Bu izinler 3 bitlik bloklar halinde ayrılırlar.İlk 3 bit dosya sahibinin bu dosya
üzerindeki yetkilerini.ikinci 3 bit dosya sahibi ile aynı grup içerisindeki kullanıcıların
yetkilerini.Son 3 bit ise diğer kullanıcıların dosya üzerindeki yetkilerini göstermektedir.
Dosya üzerindeki yetkiler;“r (read)” okuma yetkisi ,“w (write)” yazma yetkisi,“x (execute)”
çalıştırma yetkisidir.Örneğin , unix2 klasörünün yetkilerini incelersek;
Dosyanın sahibi olan kullanıcı “r”,”w”,”x” yani okuma,yazma ve çalıştırma yetkilerinin
tamamına sahiptir.
Dosyanın sahibi ile aynı grupta olan kullanıcılar “r”,”x” yani okuma ve çalıştırma yetkilerine
sahiptir.
Diğer kullanıcılar tarafını kontrol edersek “r”,”x” yani Grup kullanıcıları gibi okuma ve
çalıştırma yetkilerine sahiptir.
Dosyalar üzerinde yetkileri belirlemek için “chmod” komutu kullanılmaktadır.Komutun
kullanımı şu şekildedir:
Komut kullanımı sırasında kullanıcılar u (User),g (Group),o (Owner) olarak
tanımlanmaktadır.
“chmod u+x,g+x,o+x dosya_ismi” bu komut ile tüm kullanıcı türllerine dosyayı
çalıştırma yetkisi verilmiştir.Eğer burada olduğu gibi tüm kullanıcılara aynı yetkiyi
verecekseniz “chmod +x dosya_ismi “ komutu da kullanılabilir.
Eğer yetki kısıtlamasına yapılamak isteniyorsa komut “chmod u-x,g-x,o-x
dosya_ismi” şeklinde değiştirlebilir.
5. blog.btrisk.com @btrisk /btrisktv /btrisk
4
Dosya ve Klasör Yönetimi
Bu bölümde shell üzerinde tanımlanmış dosya ve klasörlerin yönetimi ile ilgili komutları
kısaca değineceğiz.
“pwd” komutu çalıştığınız mevcut dizini gösterir
“ls” komutu ile bulunduğunuz dizindeki tüm dosya ve klasörleri
görüntüleyebilirsiniz.”-l” parametresi ile daha detaylı listeleme yapılabilir.”-F”
parametresi ile dosya tipini görüntüleyebilirsiniz.”ls –l” komutu kullanıldığında gizli
dosyalar görüntülenmeyecektir.
”ls –al” komutu ile gizli dosyları da görüntüleyebilirsiniz.(“.” ile başlayan dosyalar ve
klasörler gizli olanları ifade etmektedir. )
“cd” komutu ile bulunduğunuz dizini değiştirebilirsiniz.Örneğin;”cd ..” komutu bir sizi
bir üst dizine götürecektir.”cd /sbin/” komutu ile /sbin dizinine gidebilirsiniz.
“mkdir” komutu ile klasör-dizin oluşturulur.”mkdir klasör_ismi”
“touch” komutu ile dosya oluşturulur.”touch dosya_ismi”
“cp” komutu ile kopyalamai,”mv” komutu ile taşıma işlemleri yapılabilir.
“rm” komutu ile dosya silinebilir.Klasörleri silmek için ise “rmdir” komutunun
kullanılması gereklidir.Klasörün silinmesi için içerisinin boş olması gerekir .Hem
klasörü hem içerisindeki tüm veriyi silmek istiyorsanız “rm -r” komutunu kullanmanız
gerekmektedir.
Process
Unix sistemlerde arka planda çalışan her bir göreve verilen isimdir.Unix Sistemlerde process
yönetimine Windows Sistemlere göre daha çok ihtiyaç vardır.Unix sistem üzerinde çalışan
processleri “ps ” komutu ile görebilirsiniz.PID 1 olan “init” processi tüm sistemden sorumlu
olan processtir.Bazı Unix sistemlerde (FreeBSD) sistemde çalışan tüm processleri görmek için
bazı parametreler eklemek gerekebilir.Örneğin; “ps xu” komutu çalıştırıldığında sistemde
çalışan processlerle ilgili aşağıdaki gibi detaylı bir çıktı alınabilir.
Bir process sonlandırabilmek için “kill” komutu kullanılır.Bir process iki şekilde
sonlandırılabilir;
“kill syslogd” yazılarak process ismi ile sonlandırılabilir.
“kill 590” yazılarak process ID(PID) ile sonlandırılabilir.
6. blog.btrisk.com @btrisk /btrisktv /btrisk
5
Ağ Servisleri
Unix denetimleri sırasında, denetçi ,Ağ servislerinin konfigürasyonunu iyi anlamış
olmalıdır.Ağ servislerinin yanlış yapılandırılması Unix sistemler üzerindeki en büyük
tehditlerden biri olarak kabul edilebilir.
Temel olarak IP konfigürasyonunuzu “ifconfig ” komutu ile görebilirsiniz.Aynı zamanda
“/etc/rc.conf” dosyası altında da görüntüleyebilirsiniz. DNS kayıtlarınızı ise “/etc/resolv.conf”
dosyası içerisinde görüntüleyebilirsiniz.Bahsettiğimiz iki dosyayı da herhangi bir text editör
ile açıp içerisindeki bilgileri kendi network bilgilerimize uygun biçimde yapılandırabiliriz.
“ifconfig em0 192.168.2.10 netmask 255.255.255.0” komutu ile sisteminize IP adresini
statik olarak verebilirsiniz.
7. blog.btrisk.com @btrisk /btrisktv /btrisk
6
Burada birkaç temel network servisinden bahsetmek gerekir,bunlar “getty” ve “inetd”
servisleridir.
“getty” yapılandırma dosyaları içerisinde tanımlanan her bir terminal bağlantısı
için“init” processi ile birlikte başlatılan servistir.Fiziksel ve sanal terminallerin
kontrolünden sorumludur.”getty” bir bağlantı algıladığında,kullanıcı giriş bilgilerini
kontrol eder ve kimlik doğrulamanın tamamlanması için “login” programını çalıştırır.
8. blog.btrisk.com @btrisk /btrisktv /btrisk
7
“inetd” (internet daemon) sistem boot edilirken aktif olan bir servistir.”inetd”
network servisi tarafından belirlenen portları dinler.TCP veya UDP protokolü
üzerinden portlara bir paket geldiğinde “inetd” servisi çalışarak bu paketin
kontrolünü sağlar.”inetd” servisinin hangi programları ve portları dinlemesini
istiyorsanız “/etc/inetd.conf” dosyası üzerine bu bilgilerin eklenmesi gereklidir.
Kullanıcı Yönetimi
Bir çok işletim sistemi gibi,Unix işletim sistemleri üzerinde de kullanıcı hesaplarının ve
kimliklerinin kendi yönetim yolu vardır.Erişim kontrollerinin denetim altında tutulması
gereken önemli konulardandır.Bu nedenle Unix üzerinde kullanıcı yönetimini anlamak işinizi
kolaylaştıracaktır.Unix sistem üzererinde kullanıcı yönetimi için kullanılan temel komutlar
şunlardır:
“adduser” sisteme bir kullanıcı eklemek için kullanılır.
“rmuser” , “deluser” sistemde bulunan kullanıcıyı silmek için kullanılır.
“passwd” komutu kullanıcının şifre atamak için kullanılır.
“pw groupadd grup_adı” komutu ile sistem üzerinde istediğiniz grupları
oluşturabilirsiniz.Bu grupları “/etc/group” dizininde görüntüleyebilirsiniz.
“pw groupdel grup_adı” komutu ile ihtiyacınız olmayan grupları sistemden
kaldırabilirsiniz.
Burada Unix üzerinde 2 önemli dosya bulunmaktadır.Bunlar ”/etc/master.passwd” (BSD için
geçerli olan klasördür.Diğer Unix sistemlerde değişiklik gösterecektir.) ve “/etc/group”.
“/etc/master.passwd” dosyası ;kullanıcı ismi,hashlenmiş şifresi,bulunduğu grubun
bilgisini(GID),kullnıcı ID bilgisini (UID),kullanıcının /home dizini gibi bilgileri
içermektedir.
“/etc/group” dosyası ise sistemdeki grupları ve bu gruplara üye olan kullanıcıları
gösteren dosyasıdır.
9. blog.btrisk.com @btrisk /btrisktv /btrisk
8
Görev Zamanlayıcı (Cron)
Zamanlanmış görevler çoğunlukla rutin olarak yapılması gereken sistem yönetimi ve IT
operasyon görevlerinin belirli periyotlarla otomatik olarak gerçekleştiren
işlemlerdir.Görevlerin sağlıklı tanımlanması ve izlenmesi Unix üzerinde otomatik olarak
çalıştırılan işlemlerin takibi açısından önemlidir.Otomatik bir görev tanımlamak için
“/etc/crontab” dosyası içerisine görevleri tanımlamak gerekir.
“0 3 * * * root /usr/bin/netstat “ dosyaya eklenecek bu satırla netstat komutunun her 3
saate çalıştırılması sağlanmaktadır.Satırdaki alanları tek tek açıklayacak olursak sırasıyla;
Dakika (0 - 59)
Saat (0 - 23)
Ayın hangi günü (1 - 31)
Ay (1 - 12)
Haftanın Günleri (0 - 7) (Pazar=0 veya 7)
Görevi çalıştıracak kullanıcı
Çalıştırılacak komut veya scriptin yolu ve adı
Loglama
Sistemleri monitör etme,güvenlik takibi ve uyarıları için loglama önem teşkil
etmektedir.Sistem üzerindeki hareketlerin takibini log dosyaları üzerinden yapabilirsiniz.
Bu dosyalar “/var/log” dizini altında tutulmaktadırlar.Örneğin;sisteme giriş yapan kullanıcı
bilgilerini ve giriş loglarını “/var/log/auth.log” dosyası içerisinde görüntüleyebiliriz.Syslog
mesajları içerisinde detaylı zaman bilgisi,hostname bilgisi ve mesaj alanları olduğu için kritik
bir durumda kayıtlar kontrol edilerek önemli bilgiler edinilebilir.Birden fazla sisteminiz varsa
bunların loglarını merkezi bir sistemde toplamak izleme açısından daha kolay olabilir.Bu
işlem için “syslog-ng” veya “rsyslog” servisleri kullanılabilir.
10. blog.btrisk.com @btrisk /btrisktv /btrisk
9
Manual Sayfaları
Unix;“man” (manual) komutu,shell üzerinde çalıştırılan komutların,konfigürasyon dosyaları
vb. kullanımı ile ilgili yardım kılavuzlarına ulaşmanızı sağlar.Örneğin; “man pkg” komutu ile
pkg komutunun parametreleri ve kullanımı ile ilgili yardım dosyasına ulaşabilirsiniz.
Diğer Bilinmesi Yararlı Olabilecek Bilgiler
tar: Bu komut sistem üzerindeki dosyalarınızın yedeklerini almak ve geri döndürmek için
kullanılır.Yedeklerinizi bir backup ünitesine veya bir optik diske alabilirsiniz.
dd: “dd” komutu teknik olarak bir yedekleme için kullanılmaz.Fakat denetleme işlemleri için
diskin tam bir kopyasını (image) almak için kullanılabilir.
/etc/fstab/: Unix sistemlerde sisteme eklenen cihazlar sistem açılışında otomatik olarak
mount edilmeyecektir.Bu nedenle örneğin sisteme yedekleme için eklediğimiz ikincil bir diski
manual olarak /etc/fstab dosyası altına eklememiz gerekmektedir.
11. blog.btrisk.com @btrisk /btrisktv /btrisk
10
Unix üzerinde girdil ve çıktı işlemleri için aşağıdaki komutlar kullanılabilir;
“>” ,”>>”,”<”,”<<” komutları girdi ve çıktıların yönlendirilmesi için kullanılırlar.”>”
komutu dosya içerisine bir girdi yollandığında diğerlerini ezecektir.Fakat “>>” komutu
ile ikinci bir girdi olarak eklenebilir.
“Pipe” işareti bu işaretten önce girilen komutun desteklenmesini sağlar.Örneğin;”ls –l
| more” komutu girildiğinde sıralanan parametreler sayfa sayfa gösterilecektir.
“grep” komutu ile bir çıktı içerisindeki spesifik bir bilgiyi elde
edebiliriz.Örneğin;birden fazla prosesin çalıştığı bir sistemde ftp servisini görmek
istiyorsak “ps –xu | grep ftp” komutu ile bunu sağlayabiliriz.
12. blog.btrisk.com @btrisk /btrisktv /btrisk
11
Unix Sistem Güvenliği Kontrolleri
Network Servisleri
Network servisleri üzerinde güvenliği sağlamanın en önemli yolu sistem üzerinde mümkün
olduğunca az servis çalıştırmak ve kullanıcılar tarafından erişilen servislerin yetkilerinin iyi
optimize edilmesidir.
Daha öncede bahsettiğimiz gibi sistem üzerindeki çalışan network serfvislerinin bir çoğunu
“inetd” kontrol etmektedir.Fakat burada çalışan tüm servisler gerekli olmayabilir.Ayrıca Unix
sistemler üzerinde “/etc/inetd.conf” ve “/etc/services” dosyaları altında servis tanımlayarak
“inetd” içerisinde başlatılmalarını sağlayabiliriz.
Sistem üzerinde çalışan dışarıya bilgi sızdırabilecek olan finger ve rusers gibi servisler
mutlaka kapatılmalıdır.
Finger: 79.port üzerinde çalışan sistem üzerinde çalışan kullanıcılar hakkında bilgi veren bir
servistir.Lokal veya uzak makinede çalışan kullanıcılar hakkında bilgi toplanabilir.
Rusers: Finger ile benzer görevde çalışmaktadır.Lokal sistemler üzerinden login olan
kullanıcıları göstermektedir.
Eğer kurum için gerekli değilse şifresiz kanallardan iletişimden kaçınmak gereklidir.Telnet
,FTP gibi güvensiz protokoller yerine güvenli protokoller kullanılmalıdır (SSH,SFTP).
Uzaktan komut çalıştırılmasını sağlayan rlogin,rexec,rsh gibi servislerin mutlaka kapatılması
gerekir.
Rlogin: TCP 513 portunda çalışan bir komuttur.Network üzerindeki sistemlere uzaktan
bağlanmayı sağlamaktadır.Fakat Telnette olduğu gibi iletilen bilgileri şifrelemediği için
tehlikeli bir servistir.
Rsh: TCP 514 portunu kullanan bir komuttur.Network üzerindeki bir sistemde farklı bir
kullanıcı ile komut çalıştırarak yönetim yapmayı sağlar.Fakat rlogin gibi iletilen bilgiler
şifrelenmediği için tehlikeli bir servistir.Hatta bazı durumlarda giriş esnasında parololar dahi
şifrelenmeden iletilmektedir.
Rexec: Rsh ile aynı özelliiklere sahip olan servistir.TCP 512 portu üzerinde çalışmaktadır.Bu
servis üzerinde de parola gibi kritik bilgiler şifrelenmeden gönderilmektedir.
13. blog.btrisk.com @btrisk /btrisktv /btrisk
12
NFS: Network File System sistem üzerindeki dosya ve klasörlerin aynı network içerisindeki
diğer kullanıcılar ile paylaşılmasını sağlayan servistir.NFS üzerinden paylaşılan dosyaların
erişim yetkileri kullanıcılara göre belirlenmeli ve yetksiz erişimlere dikkat edilmelidir.
NIS: Network Information System kullanıcı ve host adları gibi sistem konfigürasyonu
bilgilerinin dağıtımını yapan sunucu-istemci rehberi hizmeti protokolüdür.Yeni sistemlerde
yerini LDAP gibi protokoller almıştır.
Uzak Erişim kontrolleri
Uzak Erişim Unix sistemlere farklı bir Unix sistem üzerinden “r” servisleri ile bağlanmayı
sağlar.Mümkün olduğunca bu servislerin kullanımından kaçınmak gereklidir.Uzak erişimleri
kontrol etmek için Unix sistem üzerinde iki kritik dosya bulunmaktadır.Bunlar
“/etc/hosts.equiv” ve kullanıcı home dizininde bulunan “.rhosts”dosyasıdır.Bu iki dosya
sistem kaynaklarını uzaktan erişebilecek güvenilir kullanıcıları ve hostları belirtmektedir.Bu
nedenle bu dosyalara erişim sağlayan biri sistemin tümüne erişim sağlayabilir.Daha önce
bahsettiğimiz rsh,rlogin gibi servisler bu açıklıkara örnek gösterilebilir.Ayrıca dosya içerisinde
“+ +” karakterlerine dikkat etmek gereklidir.Bu karakterler herhangi bir host üzerinden
herhangi bir kullanıcı adı ile sisteminize girişi mümkün kılmaktadır.
Kritik Dosya ve Komut Erişimleri
Sistem üzerindeki kritik dosyaların ve program komutlarının erişiminlerinin yetkisiz
değişikliklere karşı kontrol altına alınması gerekmektedir.
Kritik konfigürasyon dosyaları üzerindeki okuma yetkisi dahi olsa sadece belirlenen gerekli
kullanıcılar için verilmelidir.Özellikle “/etc/” dizini altında bulunan konfigürasyon dosyaları
kritik dosyalardır ve erişim izinleri konusunda dikkat etmek gerekir.Ayrıca
“/bin,/sbin,/dev,/user,/var” dizinleri altındaki dosyalara verilen yazma izinlerine dikkat
etmek gereklidir.
Unix sistem üzerinde kullanılan SUID (switch user id) dosya özelliği sayesinde sıradan bir
kullanıcının kendisine ait olmayan programları kendisine atanmış haklardan fazla bir yetki ile
çalıştırabilmesine imkan sağlamaktadır.Bu nedenle herkesin erişebildiği SUID dosyaları
büyük bir risk oluşturmaktadırlar.Bu tür dosyalara örnek olarak “/usr/sbin/passwd” örnek
olarak verilebilir.Sistem üzerindeki bir kullanıcı kendi şifresini “passwd ” komutu ile
“root”yetkisine ihtiyacı olmadan değiştirebilmektedir.
14. blog.btrisk.com @btrisk /btrisktv /btrisk
13
Burada yaptığımız değişiklik “root” kullanıcısının erişebildiği “/etc/master.passwd” dosyası
üzerindede uygulanmaktadır.Bu “/etc/master.passwd” altındaki değişimi yapabilmemizi
SUID özelliği sağlamaktadır.Bu özelliğin gruplar üzerinde etkinleştirmesine ise SGID olarak
gösterilmektedir.
SUID yetkisi için dosya izinlerindeki SUID bitinin ektinleştirilmiş olması gereklidir.”passwd”
komutunun izinleride “x” yerine bulunan “s” biti SUID bitini ifade etmektedir.Eğer bazı dosya
üzerinde bu izinler sizin için gereksiz görünüyorsa “chmod u-s” komutunu kullanarak SUID
yetkisi etkisiz hale getirebilirsiniz.
Kritik dosyalara erişim kısıtlaması veya izinleri için ACL (Access Control List)
tanımlanabilmektedir.Bu özellik sayesinde istediğimiz kullanıcıya özel erişim izinleri
atayabiliriz.ACL tanımlamak için aşağıdaki komut kullanılmalıdır;
“setfacl –m u:kullanıcı_adı:rwx dosya_adı”
Komutta görülen “u” parametesi yetki atamak istediğimiz kullanıcıyı ifade
etmektedir.Kullanıcı adı girildikten sonra “:” koyulur ve yetki bitleri yazılır.Son olarak ise ACL
tanımlamak istediğimiz dosya adı yazılır.Bu işlemi tanımlı gruplar için yapmak isterseniz “u”
parametresi yerine “g” , kullanıcı adı yerine GID kullanmanız gereklidir.ACL tanımlanan bir
dosyayının ayırt edilmesi için dosya yetki bitlerinin sonunda “+” işareti bulunur.
Süreç Takibi
Süreç takibi,sistem yöneticilerinin olayların takibini sağlaması açısından önemli bir güvenlik
metodudur.
Bu metod sayesinde sistem kaynaklarının kullanıcılar üzerindeki dağılımı ve minimal düzeyde
kullanıcıların komutlarını takip etme şansı yaratılabilir.Bu metodun kullanımında pozitif ve
negatif durumlar ortaya çıkabilir.Örneğin;Sistem sürekli takip altında olacağından saldırı
tespiti kolaylaşacaktır.Bu durum bize pozitif bir etki yaratacaktır.Fakat sürekli log kaydı
üreten bir sistem için fazlaca disk alanına ihtiyaç olması negatif bir durum olarak
nitelendirilebilir.
15. blog.btrisk.com @btrisk /btrisktv /btrisk
14
Metodun aktif edilmesi için aşağıdaki komutlar takip edilmelidir;
touch /var/account/acct ; komutu ile acct adından bir dosya oluşturulur
chmod +rw /var/account/acct ; komutu ile oluşturulan dosyaya okuma ve yazma
yetkisi verilir.
accton /var /account/acct ;komutu ile servis aktif hale getirilir.
Son olarak “/etc/rc.conf” dosyasını bir text editör yarıdmıyla açaraka
“accounting_enabled=”YES”” satırını ekleyip kaydediyoruz.
Komutlar girilip,takip başladıktan sonra CPU ve komut istatistikleri takip altına alınmaya
başlayacaktır.Fakat tüm loglar okunabilir durumda değildir.Bu durumda logları okuyabilmek
için “sa” komutu kullanılarak loglar okunabilir.Spesifik bir kaç komuta örnek vermek
gerekirse;
ac komutu kullanılarak sistem login olan kullanıcıların bağlı kalma sürelerini
görebiliriz.Bu komuta “-d” parametresi eklenirse kayıtları günlük,”-p” parametresi
eklenirse kayıtları herbir kullanıcı için ayrı ayrı gösterecektir.
16. blog.btrisk.com @btrisk /btrisktv /btrisk
15
sa komutu sisteme login olan kullanıcıların hangi komutları çalıştırdıklarını ve bu
komutların sistem üzerinde ne kadar kaynak kullandığı hakkında bilgi verecektir.
lastcomm sistem üzerinde önceden çalıştırılmış olan komutları görüntülememizi
sağlan komuttur.Bu komut ile kullanıcı adı veya görüntülenmek istenen komut
kullanılarak arama yapılabilmektedir.
Sistem Kullanıcılıarı
Her bir Unix sistem üzerinde ön tanımlı olarak gelen kullanıcı isimleri mevcuttur.Daha
öncede bahsettiğimiz gibi her kullanıcı için kendisine ait bir UID (User ID)
tanımlanmaktadır.Bu UID dosya erişim izinlerini kontrol altında tutmak için
kullanılmaktadır.”root” kullanıcısına ait ID 0’dır ve tüm yetkilere sahiptir.Unix sistemin
kendisi tarafından tanımlanan kullanıcıların ID’leri 100 rakamından küçüktürler.Bu
kulanıcıllar “/etc/master.passwd” dizini altında görüntülenebilirler.
Buradaki önemli nokta sistem tarafından tanımlanan kullanıcıların tespit edilip pasif hale
getirilmeleridir.Bunun için “/etc/master.passwd” dosyası altında o kullanıcıya ait olan şifre
alanına “*” karateri girilmelidir.
17. blog.btrisk.com @btrisk /btrisktv /btrisk
16
Kimlik Doğrulama
Unix sistemler üzerinde sistemin belirlediği kimlik doğrulama kriterleri her zaman istediğimiz
seviyede güvenlik sağlamayabilir.Her Unix sistemi için bu kriterler değişkenlik
gösterir.Örneğin HP-UX üzerinden şifre politikası minimum 8 karakter olarak uygulanırken
FreeBSD üzerinde varsayılan olarak bir sınırlama yoktur.Bu durum sistem üzerinde ciddi
güvenlik açıkları yaratabilir.
Sistem üzerinde bu tür güvenlik açıklarına engel olmak için uygun kimlik doğrulama
politikaları tanımlamak gereklidir.FreeBSD sistemler için bu tür ayarlar “/etc/login.conf”
dosyası içerisinde yapılmaktadır.Default olarak tanımlanan politikalar aşağıdaki gibidir;
Burada görüldüğü gibi tanımlanan herhangi bir varsayılan kullanıcı için tüm alanlar
“unlimited” olarak tanımlanmıştır.Bu dosya içerisine bir çok farklı tanımlama yapılabilir.
18. blog.btrisk.com @btrisk /btrisktv /btrisk
17
root kullanıcısının politikasında bulunan “tc:” alanı default kısımda tanımlanan politikaların
root kullanıcısı içinde geçerli olacağını gösterir.Kimlik doğrulama ve kullanıcılarla ilgili
yapılabilecek birkaç politikaysa aşağıdaki gibi sıralanabilir;
minimumpasswordlen:Şifrenizin minimum kaç karakter olacağını belirten
alandır.Belirlediğiniz uzunluğu sayı olarak tanımlamanız gereklidir.
mixpasswordcase:Şifrenizi küçük büyük harf duyarlı olmasını sağlayan alandır.”True”
olarak tanımlanmalıdır.
idletime:Kullanıcının login olduktan sonra bekleme süresini belirten alandır.Kullanıcı
30 dakika boyunca işlem yapmadığında sistemden düşmesini istiyorsak bu alana “30”
yazılmalıdır.
passwordtime:Kullanıcıların şifrelerini ne kadar sürede yenilemeleri gerektiğini
belirten alandır.Kullanıcıların şifrelerini ayda bir kere değiştirmesini sağlamak için bu
alana “30d” yazılmalıdır.
Kapasite ve Sistem Performans Takibi
Her Unix sistem üzerinde Sistem performans takibini sağlamak için komutlar
bulunmaktadır.Belirli periyotlarla bu komutlar kullanılarak sistem kontrol edilmeli gereksiz
ve zararlı olabilecek bileşenler incelenmedir.Genel amaçlı kullanılan komutlara örnek olarak;
Top: Sistem üzerindeki tüm işlemlerini özetini veren komuttur.İşlemci,Memory ve
çalışan Processler hakkında bilgi edinilebilir.
19. blog.btrisk.com @btrisk /btrisktv /btrisk
18
du: Disk Usage komutu sistem üzerindeki disk kullanımını gösteren komuttur.”-h “
parametresini komuta eklersek daha anlaşılır bir çıktı elde edebiliriz.
df: Df komutu sistem üzerindeki diskin ne kadar boş alanı kaldığını gösteren
komuttur. “-h “ parametresini komuta eklersek daha anlaşılır bir çıktı elde edebiliriz.
ps: Daha öncede bahsettiğimiz gibi Ps komutu ile sistem üzerinde çalışan Process
durumları kontrol edilebilir.
iostat: Bu komut ile NFS ve diskler üzerindeki Giriş-Çıkış ve İşlemci istatistiklerine
ulaşabilirsiniz.
Güvenlik Kontrolleri ile İlgili İpuçları
Sistem üzerinden dinlenen portların kontrolü için netstat ve sockstat komutları kullanılabilir.
“netstat –a” komutu ile sistemde çalışan aktif portları görüntüleyebilirsiniz.Komuta eklenen
“-a” parametresi sayesinde tüm aktif bağlantıları ve bilgisayarın
dinlediği TCP ve UDP portlarını görüntüleyebilirsiniz.
“sockstat” komutu ile aktif portların hangi programlar tarafından kullanıldığını
görüntüleyebilirsiniz.”sockstat -4” IPv4 protokolü üzerinde çalışan “sockstat -6” ise IPv6
protokolü kullanan programları gösterecektir.
Sisteminizi DoS ataklarından korumak için ICMP Redirect paketlerini engelleyebilirsiniz.Bu
yöntem için “/etc/rc.conf” dosyası altına şu satırlar eklenmelidir;
icmp_drop_redirect=”YES”
icmp_log_redirect=”YES”
Kullanıcı parolarınızın farklı bir hash metoduyla saklamak isterseniz daha önce bahsettiğimiz
“/etc/login.conf” dosyası içerisindeki “passwd_format” satırında değişiklik yapmanız
gerekecektir.Varsayılan olarak “passwd_format:sha512” gelen hash yöntemini
“passwd_format:blf” olarak değiştirirseniz Blowfish metodunu etkin hale getirirsiniz.Farklı
hash metodları ile sistem üzerindeki kullanıcı şifrelerinize daha iyi bir koruma
sağlayabilirsiniz.Bu işlemi tamamladıktan sonra mevcut veritabanını değişiklikleri uygulamak
için “cap_mkdb /etc/login.conf” komutunu çalıştırınız.
20. blog.btrisk.com @btrisk /btrisktv /btrisk
19
Sisteminiz üzerinde NFS sistemini kullanmıyorsanız Portmap pasif hale getirilmelidir.Bu
işlem için “/etc/rc.conf” dosyası altına portmap_enable=”NO” satırını eklemeniz gerekir.
“/etc/rc.conf” dosyası altına log_in_vais=”YES” satırını eklerseniz kapalı portlara gelen
saldırıların loglarını da takip edebilirsiniz.
Sisteminize terminal üzerinden herhangi bir erişim yapılmasını istemiyorsanız kontrol
etmeniz gereken yer “/etc/ttys” dosyasıdır.Burada tanımlanan ttvy0 ve ttvy8 aralığındaki
tüm terminallerin secure başlığı insecure olarak değiştirilmelidir.
Sisteminize uzaktan bağlanmak istiyorsanız SSH servisini kullanabilirsiniz.Fakat SSH servisini
varsayılan ayarları ile aktif etmemeniz gerekir.Öncelikle sisteme erişilirken root yetkili bir
kullanıcı erişmemelidir.Bunun yerine sisteme erişebilecek bir grup oluşturulabilir.Varsayılan
port yerine (22) farklı bir port kullanmanız daha faydalı olabilir.Ayrıca sistem üzerinde SSHv2
kullanmanız gereklidir.Bu konfigürasyonlar için “/etc/ssh/sshd_config” dosyası altına örnek
olarak şu satırlar eklenebilir;
PermitRootLogin=no
AllowGroups admin admin
RhostsAuthentication no
PasswordAuthentication yes
PermitEmptyPasswords no
Port 222
Protocol 2
Sisteminizde yüklü olan Unix paketlerinin açıklarını takip etmek için portaudit programı
kullanılabilir.Portaudit programını kurulumu için şu komutlar izlenmeli;
cd /usr/ports/ports-mgmt/port-audit
make clean install
Komutlar çalıştırıldıktan sonra portaduit günlük çalışması için
/usr/local/etc/periodic/security/ dizini altına bir cronjob oluşturulur.Bu şekilde program
günlük olarak çalışır ve bir veritabanı oluşturulur.
Portaudit programı ile denetim için “portaudit –Fda” komutu kullanılabilir. –F parametresi
güncel veritabanını indirmek için,-d parametresi veritabanı oluşturma tarihini görüntülemek
için,-a parametresi kurulu tüm paketleri kontrol için kullanılmaktadır.Tek bir paketi kontrol
etmek isterseniz “portaudit paket_ismi” komutunu kullanabilirsiniz.
21. blog.btrisk.com @btrisk /btrisktv /btrisk
20
BTRİSK Hakkında
2009 yılında kurulmuş ve sadece bilgi güvenliği hizmetlerine
odaklanmış olan BTRisk Bilgi Güvenliği ve BT Yönetişim Hizmetleri
bilgi güvenliği problemine yönetim kurulu seviyesinden sistem odası
uygulamasına kadar uzanan alanda çözüm üretmektedir.
BTRisk bilgi güvenliği problemini görünür hale getirerek
algılanmasını, anlaşılmasını ve dolayısıyla ele alınmasını mümkün
hale getirmektedir.
BTRisk bilgi güvenliği problemine karşı geliştirdiği yaklaşımları gerçek
hayat koşullarında test etmiş ve uygulanabilir hale getirmiştir.
Bilgi güvenliği ve BT yönetişim hizmet alanlarımız aşağıdaki gibidir:
Pentest Hizmetleri
Bilgi Güvenliği ve BT Yönetişim Hizmetleri
Bilgi Güvenliği Operasyon Hizmetleri
Bilgi Güvenliği Eğitimleri
Özgün ürünlerimiz aşağıdaki gibidir:
BTRWATCH Bilgi Güvenliği Risk Analizi ve Denetim Uygulaması
BTRMON 5651 Uyumlu Wi-Fi ve Kablolu Ağ Hotspot Çözümü
BTROTP Tek Kullanımlık Parola Çözümü
Pentest & BT
Denetimi
ISO27001
Danışmanlık
Hizmetleri
BG Operasyon
Hizmetleri