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.
/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.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.
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 datayı 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.
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.
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.
- “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.
“/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.
- “/etc/group” dosyası ise sistemdeki grupları ve bu gruplara üye olan kullanıcıları gösteren dosyasıdır.
Görev Zamanlayıcı
(Cron-Job Scheduling)
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.
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.
- “>” ,”>>”,”<”,”<<” 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.
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 servislerinin 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.
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.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.
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.
- 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.
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.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.
·
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.
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.
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.