Linux Admin Güvenliği
Root kullanıcı sistemde herşeye yetkisi olan kullanıcıdır.Diğer bir deyimle superuserdır. Ayrı bir parola ile korunabildiği gibi kurulum sırasında vermiş oldugunuz kullanıcı şifresiyle de korunabilir bu tamamen sizin konfigürasyonunuza bağlıdır.Linux’da default çoğu ayar root kullanıcısının iznine verilmiştir.Yani bizim normal kullanıcılarımız çoğu işlemi yapamazlar aslında.Örnek vermek gerekirse
Yukarıda ki komutumuz python-setuptools kurmak içindir ve sudo ( superuser do ) superuser yap beni bebeğim ve şu programı kur demektir.
Evet çoğu ayar linux sistemlerde default olarak gelsede hardening kısmında bu ayarlar etkisiz kalabiliyor.
Örnek bir senaryo vermek gerekirse :
Sistemimize ulaşan bir hacker sudo ile bir işlem yapmak istediği zaman yetki yükseltme buglarından yararlanarak root olabilir ve
Kod:
rm -rf /
Yapabileceklerimiz
1-) Root kulllancısının shell kullanımını engellemek
Not:Bu işlem DdoS saldırılarında sunucunun fişini çekmekle aynı muameleyi görebilir.
Bunun için ( debian sistemlerde )
( ironik olarak bu değişim için root kullanıcısına ihtiyacımız var )
yazıp root kullanıcısının veya istediğiniz kullanıcının
son kısmında ki örnek bin/bash olan kısmı
yaparsanız ulaşamayacaktır.
RedHat de ise
şeklinde olacak bir konfigürasyondur.
Bunun için ( debian sistemlerde )
Kod:
nano /etc/passwd
( ironik olarak bu değişim için root kullanıcısına ihtiyacımız var )
yazıp root kullanıcısının veya istediğiniz kullanıcının
son kısmında ki örnek bin/bash olan kısmı
Kod:
/bin/false
yaparsanız ulaşamayacaktır.
RedHat de ise
Kod:
/sbin/nologin
2-)SSH ile root kullanıcısına erişimi engellemek
Bunun için yine
şeklinde dosyamızı açıyoruz ve CTRL+W şeklinde arayabilirsiniz isterseniz PermitRootLogin değerini No yapıyoruz.
Kod:
nano /etc/ssh/sshd_config
şeklinde dosyamızı açıyoruz ve CTRL+W şeklinde arayabilirsiniz isterseniz PermitRootLogin değerini No yapıyoruz.
3-) Sudoers dosyası düzenlemek
Sudoers kullanıcılara komut bazlı filtreleme yapabileceğimiz bir alandır.Visudo harici düzenleme yapmaya kalkarsanız büyük ihtimal hatalara boğulacaksınızdır.O yüzden düzenleme yaparken visudo ile düzenleme yapınız.
Aslında en önemli kısımdır.
Örnek vermek gerekirse mesela bir kullanıcı grubuna bazı komutları engelleyelim.
Kod:
%admin ( usergroup ) ALL(veya hostname yazabilirsiniz)=(root)NOPASSWD:/usr/bin/apt-get *
Yukarıda ki komutta admin grubunda ki herkese bu komutu kullanması için izin verdik.Bu sayede bu grup harici bu komutları kullanamayacaktır.
Eğer sadece 1 kullanıcıya izin vereceksek
Kod:
%admin kısmını örnek olarak : 0x656e şeklinde değiştiriyoruz.
Peki ya bir kullanıcının bir programı kullanmasını engelleyeceğiz nasıl yapacağız ?
Mesela wget i engelleyelim.
Kod:
%admin ( grubumuzun adı ) ALL=ALL NOEXEC: /usr/bin/wget
4-)Bazı komutlarda root kullanıcısı istemek
Mesela bazı komutlar vardır her zaman çalıştırabiliriz ( istisnai lokasyonlar hariç ) örnek olarak rm komutu.Nedir bu komut ? Argüman olarak verdiğimiz klasörü ( -rf ) veya dosyayı siler.
Örnek bir senaryo üzerinden gidersek : web sitesini yapan yazılımcı arkadaş henüz geliştirirken rahat etmek amacıyla /var/www/html klasörünün chmod’unu 777 yapmıştır.Biz öyle birşey yapmalıyız ki bu klasörü root parolası olmadan silemesin ?
Yapmamız gereken şey terminale:
yazıp rm executable dosyasının konumunu bulmak.
Bende böyle bir çıktı verdi.
Bu executable dosyanın chmod’unu 700 yapmamız gerekiyor.
Nurtopu gibi bir hacker savarımız oldu.
Kaynaklarım : Enes Ergün
Örnek bir senaryo üzerinden gidersek : web sitesini yapan yazılımcı arkadaş henüz geliştirirken rahat etmek amacıyla /var/www/html klasörünün chmod’unu 777 yapmıştır.Biz öyle birşey yapmalıyız ki bu klasörü root parolası olmadan silemesin ?
Yapmamız gereken şey terminale:
Kod:
whereis rm
yazıp rm executable dosyasının konumunu bulmak.
Kod:
rm: /bin/rm /usr/share/man/man1/rm.1.gz
Bende böyle bir çıktı verdi.
Bu executable dosyanın chmod’unu 700 yapmamız gerekiyor.
Kod:
sudo chmod 700 /bin/rm
Nurtopu gibi bir hacker savarımız oldu.
Kaynaklarım : Enes Ergün