İclal Sarıtaş
Team Member
- Katılım
- 24 Ocak 2024
- Mesajlar
- 4
- Tepkime puanı
- 5
- Puanları
- 3
İclal Sarıtaş tarafından yazılmıştır.
Herkese merhaba. Siber Güvenlikte Linux İşletim Sistemi başlığı altında Linux güvenliği ve sıkılaştırması ile ilgileneceğiz. Linux güvenliğine temel atmaya karar verdiysen doğru yerdesin. Ubuntu üzerinden anlatımımı gerçekleştireceğim. Halihazırda Linux komutlarını bildiğinizi varsayarak anlatımımı yapacağım. İlerlememiz şu başlıklar altında olacaktır:
1) Kullanıcı Hesap Yönetimi
– Komut kullanımı
– Parola yönetimi
– Hesap açma
– Hesap süresi yönetimi
– Kilitli hesapların yönetimi
2) Dosya Yönetimi
– Dosya sahiplikleri
– Önemli kavramlar
3) Şifreleme İşlemleri
– Ecryptfs kullanımı
– GPG uygulamaları
4) Erişim Denetimi
– IPTables kullanımı
– SSH servis kurulumu
– SSH parolasız erişim yönetimi
1) Kullanıcı Hesap Yönetimi
– Komut Kullanımı :
sudo komutu, komutları yönetici yetkisiyle çalıştırmamıza olanak sağlayan komuttur. Peki neden böyle bir komuta ihtiyaç duyarız? Bütün komutları root olarak yönetmek aslında tehlikelidir. Çünkü farkında olmadan çok güçlü bir komutu çalıştırıp sisteme zarar verebiliriz ya da daha da önemlisi farkında olmadan zararlı bir dosyayı çalıştırıp sistemin saldırgan tarafından ele geçirilmesine sebep olabiliriz. whoami komutunu yazdığımızda defne11 olduğumu söyledi :
id komutunu yazdığımda :
groups komutunu yazdığımda :
yerlerinin üyesi olduğumu söyledi. Sudo üyesi olmak ne anlama geliyor mesela? Bunu öğrenmek için sudo -l komutunu yazalım. Şifreyi girelim. Bu komut hem belli bir süreliğine tekrardan şifre istemeyecek hem de tüm yetkilere sahip olduğumuzu gösterecek. sudo -k dersem sudo -l özelliğini iptal etmiş olurum. Tekrar sudo -l yazmaya kalkışsam bu sefer şifre girmemi isteyecektir :
sudo -i beni root yapacak :
exit komutu ile normal kullanıcı olmaya devam edebilirsin :
Peki kullanıcı eklemek istersem ? Bunu yapmak için sudo useradd komutunu kullanırız ve eklemek istediğimiz kişinin adını yazarız :
Bu kişiye parola oluşturmak istersek sudo passwd komutunu kullanırız :
Artık yeni bir kullanıcımız var. Bu kişiye gerekli yetkinlikleri ve izinleri verebiliriz ama dikkat et her şeye erişim yetkisi olmasın
su ahmet komutunu yazalım. Parolasını girelim ve sudo -i komutunu yazalım. Ahmet için parola isteyecek, parolasını girdiğimizde bir uyarıyla karşılaşıyoruz :
Linux ortamlarında genelde sıradan bir kullanıcı cat /etc/passwd dosyasını görür. Kullanıcı izinleri, id değerleri, yetkilendirilmeleri ve aynı zamanda ev dizinleri gibi bilgilendirmeler yer alır ama bu kullanıcı cat /etc/shadow komutunu çalıştıramaz. Burada şifreler, hash özet değerleri vs. yer alır. Root olmak gerekir. sudo usermod -aG sudo ahmet yazdığımızda ahmet’i sudo grubuna almış oluruz :
sudo grubuna kabul edilen Ahmet’in cat /etc/shadow dosyasını nasıl okuyabildiğini görelim :
sudo ile ilgili şimdi özel bir dosyayı tanıyalım. sudo cat /etc/sudoers komutuyla sudoers isimli bir dosyayı açmış oldum ve ben bu sudo yetkisini kimler hangi niteliklerle kullanabiliyor bunu hem okuyabiliyorum hem de düzenleyebiliyorum. elbette nano diyip düzenleyebiliriz lakin bu geçici bir çözümdür. Daha verimli bir yoldan bunu gerçekleştirelim, sudo visudo komutunu kullanalım ve bu düzenlemeye hadi yeni kullanıcımız olan Ahmet üzerinden gerçekleştirelim :
Birkaç değişiklik yapacağız :
Ahmet ALL = (ALL) ALL yazıp kaydedelim ve çıkalım. Bunu yaptıktan sonra su ahmet yazıp parolasını girip ardından sudo -i dediğimizde artık önümüze engeller çıkmayacak ve root olarak devam edebileceğiz.
Bazı durumlarda, bir kullanıcının belli başlı komutları çalıştırmasını istiyor olabilirim. Burada kendi ubuntumuzda bir senaryo gerçekleştiriyor olsak da, iş hayatında büyük bir sistemi yönetiyor olabiliriz. Bizim yardımcımız olabilir ve onun sadece mesela disklere ulaşmasını istiyor olabilirim. Senaryomuzda Ahmet benim yardımcm olsun ve onun nelere yetkisinin olduğunu düzenlemek için tekrar sudo visudo yazalım ve en alta gidelim :
Kaydedip çıkalım. su ahmet diyelim ve parolasını girelim. sudo -l dediğimde bana Ahmet’in nelere yetkisinin olduğunu gösteriyor. sudo komutunuzla bu yetkileri test edebilirsiniz.
Peki, siber güvenlik anlamında bu konuyu irdeleyecek olursak sizce ahmet ALL = (ALL) /bin/bash doğru bir hareket mi olurdu? Hayır. Çünkü kabuğu root yetkisiyle açtıktan sonra zaten istediğim komutu çalıştırabilirim. Bu konuyla alakalı yeri gelmişken 2 tane hak yükseltme saldırısı deneyelim mi ?
ahmet ALL = (ALL) /home/ahmet/callme.sh iznini verelim ve ardından nano callme.sh diyelim ve şunları yazıp çıkalım :
chmod +x callme.sh diyerek yazma yetkisini de verelim. ./callme.sh :
Gördüğünüz üzere hak yükseltme saldırısı başarılı oldu. Ahmet üzerinden komutu çalıştırabildim. Bir başka senaryoyu inceleyelim :
gibi kısıtlı bir yetki verelim. su ahmet yazıp parolayı girelim. sudo more /etc/ssh/ssh_config diyelim. Burada özellikle dikkat edin. En alta !bash yazalım. Bakın root olduk :
Bu da shell escape ya da bash escape denilen bir saldırı yöntemidir. more gibi editörler kendi içlerinde bash komutlarını çalıştırmaya müsade etmekteler. Bu da hak saldırısı örneklerindendi.
– Güçlü Parola Yönetimi :
Sıra geldi güçlü parola yönetim politikasına. Bu konuya başlamadan önce bize yardımcı olacak bir paketi indireceğiz. Terminalinize sudo apt install libpam-pwdqudity yazın. Siber güvenlikte almamız gereken en önemli güvenlik önlemi güçlü parola politikasıdır. Bir hacker ya da bir pentester bize saldırmak istediğinde kullanacağı şey sözlük saldırısıdır. Paket indiğine göre :
sudo gedit /etc/security/pwquality.conf komutunu yazalım. Açıldığında göreceksiniz ki aslında bütün değerler gördüğünüz gibi kapalı durumda. Biz bunları açtıkça etkinleşmiş hale gelecek. Değerleri değiştirip çıkalım.
minlen = 12, minclass = 3 olarak değiştirdim. Uygulamalı olarak görmek için bir kullanıcı üzerinden deneme gerçekleştirelim ama bu sefer yeni bir kullanıcı ekleyelim ve onun üzerinden deneyelim :
Ayşe için oluşturmuş olduğum 123ayşe şifresini kabul etmedi çünkü 12 haneli şartı koymuştum. Şimdi sağlam bir şifre girelim :
Koşulları sağlayan bir parola hazırladığımda bunu kabul etti gördüğümüz gibi. Dolayısıyla herhangi bir sistemi ayağa kaldırmadan önce gerçekten sistemi yönetiyorsak güçlü parola politikası uygulamaktan erinmemeli ve kurumsal bir yaklaşımla uygulama yapmalıyız. Mümkünse kurumumuza ait güvenlik yapılandırma dosyasında bütün bunlar tanımlanmış olmalı. Daha derin güçlendirmeler için gedit /etc/security/pwquality.conf komutuyla dosyayı açıp orada farklı farklı değişiklikler yapmaya devam edebilirsiniz.
– Yeni Hesap Açma :
Bu bölümde user@ komutuyla yeni bir kullanıcı yaratma, o kullanıcı için bir ev dizini oluşturma ve varsayılan kabuk tanımlama gibi özellikleri inceleyeceğiz. sudo useradd ali -m -d /home/ayşe -s /bin/bash komutunu yazıyoruzç Ardından sudo passwd ali diyoruz ve Ali’ye yeni bir şifre tanımlayabiliyoruz. su ali yazıp şifresini girelim. cd /home yazıp ls -l dediğimde klasörlere girip dolaşabilme yetkilerini görüyorum. Diğer kullanıcıların dosyalarının içerisinde gezinebiliyorum. cd defne11 yazıp ls dediğimde mesela defne11’in dosyalarına ulaştım. Bunu önlemek lazım :
cd.. yapıp iki kere exit yapalım. sudo chmod 700* komutunu yazalım ve bu sefer ls -l dediğimizde klasör yetkilendirmeleri daha kontrollü oldu. Önceki işlemleri tekrarladığında kafana göre başkasının dosyalarında gezemediğini göreceksin. Bu ayarlamaları konfigurasyon dosyası üzerinden yapmak mümkündür. sudo nano /etc/login.defs dediğimiz bir dosya var. Onu açıyoruz. En altta UMASK denen bir değer değer var. O değeri 077 yapıp çıkıyoruz. Bu sayede artık yeni bir kullanıcı oluşturduğumuzda otomatik olarak kilitlenmiş olacaktır.
– Hesap Geçerlilik Sürelerinin Yönetimi :
Bu kısmı yeni bir kullanıcı üzerinden irdeleyelim . sudo useradd mehmet – m -d /home/mehmet -s /bin/bash -e 2023-06-30 koumutunu yazıyoruz:
Kullanıcının hesabı kullanma süresi bu tarihte bitecek. Ama belki de bu adam işten daha erken ayrılacak ve ben bunun süresini kısayım biraz dersek eğer, sudo usermod mehmet -e 2023-04-28 diyerek tarihi değiştirmiş oluyorum. Mehmet’e parola da ayarlayalım. sudo passwd mehmet. sudo passwd -e mehmet komutunu yazdığımızda ise Mehmet’in parolasının son kullanma tarihini değiştirmiş oluyoruz:
su mehmet dediğimizde ve parolayı girdiğimizde, parolanızı en kısa sürede değiştirmeniz gerekiyor! uyarısı gelecektir :
Geçerli paroladan sonra yeni parolamızı oluşturunca kullanıcımıza yeni hesabını güven içerisinde teslim etmiş oluyoruz.
– Kilitli Hesapların Yönetilmesi :
Bu bölümde kullanıcı hesaplarını kilitleme özelliğini inceleyeceğiz. Eğer kullanıcı hesabına oturum açma anlamında bizim belirlediğimiz bir sayı üzerinde deneme gerçekleşiyorsa hesabın otomatik olarak kitlenmesini sağlayabiliriz. sudo gedit /etc/pam.d/common-auth isimli dosyayı açıyorum :