TR | Linux Kullanıcı Güvenliği
Parola Güvenliği
Parola güvenliği, kullanıcı güvenliğinin en önemli unsurlarındandır. Bilgisayar sistemlerinde ilk karşımıza çıkan güvenlik önlemi parola sistemidir. Hem bizim hem de kullanıcılarımız için parola güvenliği çok büyük önem taşımaktadır. Yakın zamanda çıkan linux işletim sistemlerinde, passwd uygulama sistemi parola güvenliğini en üst seviyeye çıkarmayı amaçlamıştır. Bu yüzden işletim sistemlerimizin güncel olmasına önem göstermeliyiz. Parola belirlerken kaba kuvvet gibi saldırı yollarıyla kırılması zor parolalar seçmeliyiz. Nasıl parola seçmemiz gerektiği TR | Parola Güvenliği başlığında anlatılmıştır.
Parola Yenileme
Kullanıcıların belirli aralıklarla parolalarını değiştirmelerini sağlamalıyız. Bu sayede kullanıcı güvenliğini artırmış oluruz. Parola değiştirecekleri tarihleri ve ne kadar süre kullanacakları gibi ayarları belirlerken chage komutu kullanılmaktadır. chage –l username komutu ile kullanıcımızın parolasına ait bilgileri görmekteyiz.
Parametreleri inceleyelim;
-m : Kullanıcının parola değiştirdikten sonra tekrar değiştirebilmesi için, en az geçmesi gereken süreyi belirtmemizi sağlar.
-M parametresi: Belirleyeceğimiz gün geçtikten sonra kullanıcının parolayı tekrar değiştirmesini sağlar.
-E parametresi: Kullanıcının hesabı son kullanma tarihini belirlememize olanak sağlar. Verilen tarihte hesap kapatılır. Kullanımı “YYYY-AA-GG” şeklindedir.
-I parametresi: Kullanıcı oturuma belirttiğimiz süre içerisinde giriş yapmazsa, oturum otomatik olarak kilitlenecektir.
-W parametresi: Kullanıcıya parolasının zamanının dolması ne kadar süre kaldığı hakkında uyaracaktır.
Örnek kullanımı; sudo chage -E 2016-12-29 -M 100 -m 10 -I 5 -W 5 user şeklindedir.
Yanlış Parola Giriş
Kullanıcının yanlış parola giriş sayısını sınırlandırmalıyız. Kullanıcılar 3 defadan fazla yanlış deneme yaptığında hesabı geçici olarak kapatılmalıdır. Bu sayede saldırganların, kaba kuvvet gibi saldırılarını önlemiş oluruz. Bu sınırlandırma faillog komutu ile yapılmaktadır.
Yukarıda ki komutta user kullanıcısının, yanlış parola giriş sayısını 3 deneme ile sınırlamış olduk.
sudo faillog –all komutu ile bütün kullanıcıların faillog kayıtlarını görebiliriz.
Burada Failures sütununda kullanıcının yanlış girdiği parola sayısı gözükmektedir. Buradan çok fazla yanlış deneme yapan kullanıcı, passwd –l username komutu ile hesabı kapatılabilir.
Parolası Olmayan Hesapların Tespiti
Kullanıcıların parolalarını boş bırakmamaları gerekmektedir. Güncel linux sistemleri parolaların boş bırakılmamasına izin vermemektedir.
awk -F: ‘($2== “”) {print}’ /etc/shadow komutu ile parolası olmayan kullanıcıların tespiti yapılmaktadır.
passwd –l username komutu ile parolası olmayan kullanıcılar kitlenir.
Kullanıcı UID Değeri 0 olan Kullanıcıların Tespiti
UID sadece root hesabının 0 olması gerekmektedir. UID değeri 0 olan kullanıcıları tespit etmeli ve hesaplarını silmeliyiz veya bu izni bizim verdiğimizden emin olmalıyız. Güncel linux dağıtımlarında, sistem root harici kullanıcıların UID değerinin 0 olmasına izin vermemektedir
awk -F: ‘($3 == “0”) {print}’ /etc/passwd komutu ile UID si 0 olan kullanıcıları görürüz.
Burada root hariç UID’si 0 olan kullanıcı var ise, passwd –l username komutu ile hesabı kapatılmalıdır.
Kullanıcıların CPU VE RAM Kullanımlarının Sınırlandırılması
Kullanıcılar herhangi bir kaynak limiti belirlenmediği zaman, sistemi kırmak için sistemi meşgul eden programlar kullanabilirler. Bu sebeple kullanıcıların çalıştıracağı maximum, process sayısını ve kullanacakları RAM boyutunu ayarlamalıyız.
- En fazla RAM kullanan kullanıcıların tespiti
ps axo %mem,comm,pid,euser | sort -nr | head -n 10
- En fazla CPU kullanan kullanıcıların tespiti
ps axo pcpu,comm,pid,user | sort -nr | head -n 10
- Detaylı bilgi
ps -eo pcpu,pid,user,args,pmem | sort -k 1 -r | head -10
/etc/security/limits.conf dosyasına aşağıdaki satırları ekleyerek, kullanıcının maximum açabileceği process’i ve kullanacığı bellek boyutunu belirleyebiliriz.
hard core 0 hard rss 4000 hard nproc 10
Kullanıcı maximum 10 tane process açabilecek ve 4MB bellek kullanabilecektir.
Bu özellikleri aktif hale getirmek için, /etc/pam.d/login dosyası aşağıdaki gibi olmalıdır.
#%PAM-1.0 auth required /lib/security/pam_securetty.so auth required /lib/security/pam_pwdb.so shadow auth required /lib/security/pam_nologin.so account required /lib/security/pam_pwdb.so password required /lib/security/pam_cracklib.so password required /lib/security/pam_pwdb.so nullok session required /lib/security/pam_pwdb.so session required /lib/security/pam_limits.so
Kullanıcıların ne zaman sisteme giriş yaptıklarına dikkat etmeliyiz.
Oturum açma girişlerini kaydetmek için /var/log/wtmp dosyası olmalıdır, yoksa oluşturulmalıdır.
last -a en son giriş ve çıkış yapmış olan kullanıcıların terminal ismi, tarih, saat, tam istemci adı gibi bilgileri gösterir. Bu komut /var/log/wtmp dosyasının içini okur.
Kullanıcıların sisteme yanlış giriş denemelerini kaydetmeliyiz.
Yanlış giriş denemeleri kaydetmek için /var/log/btmp dosyası olmalıdır, yoksa oluşturulmalıdır.
lastb başarısız oturum açma girişimlerini gösterir. Bu komut /var/log/btmp dosyasının içerisindeki kayıtları okur ve bize çıktı sunar.
Kullanılmayan Hesapların Kapatılması
UID değeri 500’ün altında olan hesaplar kontrol edilmeli, kullanılmayan hesaplar kapatılmalıdır. Çünkü bu hesaplar saldırganların girmesi için birer kapıdır. Hesabı silmek için userdel UserName komutunu kullanmalıyız.
Bilgisayarımız herkesin kullandığı bir yerde ise;
/etc/lilo.conf dosyasını açıyoruz ve aşağıdaki satırı yazıyoruz.
timeout=00 restricted password="belirlediğimiz parola " timeout
Bu satır makine açılırken, LILO’nun beklememesini sağlar, bu sayede LILO’ya parametre verilmesini engellenir. Restricted satırı makinanın single modda açılması gerektiğini belirtir. Kullanıcı girerken belirttiğimiz parola ile giriş yapar.
Yetkiler gruplara verilmeli, kullanıcılar gruplara dahil edilmelidir.
Yeni hesap açan kullanıcıların asgari ihtiyaçlarını karşılayacak minimum yetkinin verildiğinden emin olmalıyız.
Grup hesaplarının oluşturulması için groupadd komutu kullanılır.
Gruba kullanıcı eklemek için;
usermod –g <grupAdı> -G <diğerGrupAdı> <kullanıcıAdı>
Grup Ön Yükleyicisinin Şifreli Hale Getirilmesi
Yetkisiz erişimlerin önlenmesi amacıyla, ön yükleyicinin şifreli hale getirilmesi sağlanmalıdır.
Bu amaçla, iki dosya üzerinde düzenlemeler yapacağız. Önce bu iki dosyanın her ihtimale karşı yedeklemesini yapmalıyız.
Daha sonra gedit editörü ile /etc/grub.d/10_linux dosyasını açıyoruz ve en alt satıra ,
cat <<EOF set superusers="root" password root [email protected]* EOF
komutlarını ekliyoruz.
Parolayı belirledikten sonra yeni grub.cfg dosyasını oluşturmak için, grub-mkconfig–output=/boot/ grub/grub.cfg komutunu kullanıyoruz. Daha sonra sunucumuzu yeniden başlatıyoruz.
İşletim sistemi açılırken, kullanıcı adı ve parola soran bir ekranla karşılaşırız. Buradan grub ön yükleyici ekranına giriş olanağı sağlanır.
Şimdi sıra parola güvenliğimizi artırmak için parolamızı şifrelemeye geldi. Parolamızı şifrelemek için grub-mkpasswd-pbkdf2 komutunu kullanıyoruz.
Daha sonra şifrelenmiş kısmı daha öncede kullanmış olduğumuz aşağıdaki kodda password kısmına yapıştırıyoruz.
cat <<EOF set superusers="root" password_pbkdf2 root grub.pbkdf2.sha512.10000.****** EOF
Parola şifrelendikten sonra tekrar yeni grub.cfg dosyasını oluşturuyoruz. Bunun için, grub-mkconfig–output=/boot/ grub/grub.cfg komutunu kullanıyoruz. Daha sonra sunucumuzu yeniden başlatıyoruz.
- Fiziksel / GRUB Güvenliği
- Disk Güvenliği
- Dosya Güvenliği
- Kullanıcı Güvenliği
- Root Güvenliği
- Gereksiz Servislerin Kapatılması
- PAM Modülü
- IP Tables
- TCP Wrappers
- ssh Sıkılaştırması
- History Formatının Düzenlenmesi
- BASH Aktivitelerinin Loglanması
- Varnish
- Mod Evasive
- Apache Sıkılaştırması
- PHP Sıkılaştırması