Siber Güvenlikte Linux Sertleştirme: Uygulamalı Öneriler ve Rehber
Merhabalar, ben Enes Ayhan Benli. Sizlerle bu yazımda Linux sistemlerde sertleştirme (hardening) nasıl yapılır, birlikte inceleyeceğiz. İyi okumalar dilerim.
Yazımızda yapacağımız işlemleri Debian tabanlı Linux dağıtımları olan Ubuntu (22.04 Sürümü) ve Kali Linux dağıtımları üzerinde yapacağım, ancak işlemlerimizin çoğunu Fedora ve Arch gibi farklı tabanlı diğer dağıtımlar ile de kullanabilirsiniz.
Biraz teknik bir anlatım olacağından uzun olacak, ancak güzel noktalara değinmeye çalışacağız.
10 adet konu üzerinden geçeceğiz. Öncelikle konu başlıklarımıza bir göz gezdirelim:
-
Disk Bölümleme
-
Disk Şifreleme
-
Linux Sistemini Güncelleme
-
Yüklenen Paketleri Kontrol Etme
-
Açık Portların Kontrolü
-
Güvenli SSH Bağlantısı
-
SELinux
-
Parola İlkelerini Yönetme
-
İzinler ve Doğrulama
-
AppArmor ve Diğer Güvenli Yazılımlar
1. Disk Bölümleme (Disk Partitioning)
Linux sistemlerde erişilebilirlik için bu aşama oldukça önemlidir. Kullanıcılar genelde kolaylık olsun diye tüm kritik Linux sistemlerini tek bir bölüm içinde bulundurur. Ancak /
, /boot
, /usr
, /home
, /tmp
, /var
, /opt
gibi dizinlerin diskteki farklı bölümlerde bulunması, diskin bir bölümünde çıkacak arıza, çökme ve benzeri durumlarda dosyaların ve sistemin daha rahat kurtarılmasına olanak tanır.
Ubuntu Disk Bölümleme:
Ubuntu’da disk bölümlendirme işlemini “manual installation” seçildikten sonra gelen bu ekranla istediğiniz konfigürasyonu yapabilirsiniz.
Kali Disk Bölümleme:
Kali’de ise bu ekrandaki “separate /home
/var
/tmp
” seçeneği ile veya bu ekrandan önce gelen yerdeki “manual partitioning” kısmıyla bölümlemelerinizi yapabilirsiniz(Kali disk şifreleme bölümünde manuel kısmı görünüyor o kısma bakabilirsiniz)
2. Disk Şifreleme (Disk Encryption)
Linux sistemlerin çoğunda kurulum esnasında disk üzerinde şifreleme yapılabilir. Bu şifreleme görünürde mantıksız dursa bile (çünkü bu şifrelemenin amacı bilgisayarı fiziksel olarak korumaktır) gayet etkili ve güvenli bir sistemdir.
Örnek verecek olursak, bilgisayarınız teknik servise gittiğinde veya dış bir ortamda kaldığında(örneğin taşınabilir bilgisayarlar) disk şifrelemesi yoksa diskinize 3. bir kişi kolayca erişip verilerinizi alabilir ancak diskiniz şifreliyse verileriniz güvende kalacak ve onlara sizin izniniz olmadan kimse erişemeyecektir. Windows Sistemlerde bunun karşılığı BitLocker sistemidir.
Ubuntu Disk Şifreleme:
Kurulum esnasında disk seçim ekranında gelen “Advanced Features” kısmını seçtiğimizde gelen bu ekranda LVM ve şifreleme veya ZFS ile şifreleme seçeneklerinden birini seçerek diskinizi kolayca şifreleyebiliriz.
Hem ZFS’te hem de LVM’de diskimizi şifrelemek için bir şifre seçiyoruz.
Önemli: Bu şifre bilgisayar her açıldığında bize sorulacak, bunu unutmamak önemli çünkü unutursak tüm verilerimizi kaybederiz.
LVM (Mantıksal Birim Yönetimi), kurulum sırasında kullanılması, kurulum sonrası bölümlerin oluşturulmasını ve yönetilmesini kolaylaştırır.
ZFS, kullanıcıların birden fazla sürücüye yayılan havuzlanmış depolama birimleri oluşturmasının yanı sıra snapshot ve veri onarım özellikleri de sunar. İyi seviyede Linux bilginiz var ise tercih edebilirsiniz.
Eğer TPM Bazlı Tam Disk Şifrelemesini seçerseniz kurulumdan sonra terminale
sudo snap recovery --show-keys
komutunu yazarak kurtarma anahtarınızı alabilirsiniz.
Kali Disk Şifreleme:
Kurulum esnasında gelen bu ekranda “encrypted LVM” seçeneğini seçtikten sonra Kali ilk önce diskte bir temizleme işlemi yapar, sonrasında ise bizden tekrar bir LVM şifresi sorar. Güçlü bir şifre koymazsak zayıf şifre uyarısı verecektir.
Not: Kali Linux üzerindeki temizleme işlemi diskinizin hızına ve boyutuna bağlı olarak saatler alabilir, riske atmak isterseniz bu işlemi atlayabilirsiniz.
3. Linux Sistemini Güncelleme
Linux’ta düzenli olarak güvenlik ve özellik güncellemelerini almak önemlidir, özellikle ilk açılıştan sonra güncellemeleri yapmak önemlidir. Debian özelinde(Ubuntu,Kali,Mint…) güncelleme komutları şunlardır:
sudo apt update # Mevcut güncellemelerin listesini getirir
sudo apt upgrade # Bazı güncellemeleri yükler; paketleri kaldırmaz
sudo apt full-upgrade # Güncellemeleri yükler; gerekirse bazı paketleri de kaldırabilir
sudo apt autoremove # Artık ihtiyaç duyulmayan eski paketleri kaldırır
4. Yüklenen Paketleri Kontrol Etme
Özellikle bir sunucu sistemi sertleştiriyorsanız bu konuda oldukça seçici olmalısınız. Atak yüzeyini azaltmak için bu oldukça önemlidir.
apt-cache pkgnames
Komutu ile sistemdeki tüm paketleri listeleyebilirsiniz.
Ayrıca Telnet, RSH, NIS, TFTP, TALK gibi paketleri sunucunuzda bulursanız silebilirsiniz.
5. Açık Portların Kontrolü
Açık bağlantıları görüp kontrol etmek oldukça önemlidir. Ubuntu’da iseniz net-tools isimli paketi yüklemek ve kullanmak için:
sudo apt install net-tools
sudo netstat -antp
Kali’de net-tools zaten yüklü olduğu için hemen 2. komutu yazarak portları görebilirsiniz.
Not: Bu komutlar ile açık portları görebilirsiniz. Zaafiyet olabileceğini düşündüğünüz açık portları da uygulamaları durdurarak kapatabilir veya güvenlik duvarı ayarı yaparak daha güvenli hale getirebilirsiniz.
6. Güvenli SSH Bağlantısı
SSH, özellikle uzak sunucularda önemli ve güvenlidir. Ancak varsayılan ayarlarda değil, kullanıma uygun şekilde konfigüre edilmesi gerekir. Kullanmayacaksanız devre dışı da bırakabilirsiniz. Biz ayarları nasıl daha güvenli hale getiririz ona bakacağız.
Ubuntu SSH Konfigürasyonu:
Ubuntu’da sadece istemci tarafı SSH yüklü geldiği için yalnızca ssh_config dosyamız var, onun konfigürasyonu için şu komudu kullanıyoruz:
sudo nano /etc/ssh/ssh_config
Bu ekranda #
simgelerini silerek istediğimiz ayarları yapabiliriz.
Kali SSH Konfigürasyonu:
Asıl önemli olan sunucu tarafı SSH ise Kali Linux’ta otomatik olarak yüklü geldiğinden dolayı (Kali’de client side SSH de bulunur, o yüzden Ubuntu’daki komutu kullanarak o kısma da erişebilirsiniz) aşağıdaki komut ile o ayarlara erişebiliriz:
sudo nano /etc/ssh/sshd_config
Buradaki ayarları yaptıktan sonra Ctrl+O
, Enter
ve Ctrl+X
yaparak kaydedip çıkabiliriz.
7. SELinux Aktifleştirme
Security Enhanced Linux (SELinux), erişim kontrolü güvenlik politikasını destekleyen bir Çekirdek güvenlik mekanizmasıdır. Çekirdeği korumak bizi güvende tutacak önemli faktörlerden biri olduğu için sertleştirme konusunda ciddi bir yere sahiptir.
SELinux’un üç yapılandırma modu vardır:
- Disabled: Kapalı
- Permissive: Uyarıları yazdırır
- Enforcing: Politika uygulanır
SELinux, AppArmor yazılımı devrede değilken SELinux’un kurulumunun yapılması gerekir ve kurulduktan sonra ise konfigürasyonu yapılıp bilgisayarın yeniden başlatılması gerekir.
Not: Detaylı ve uzun bir işlem olduğu için bu yazımızda böyle yüzeysel geçeceğiz.
8. Parola İlkelerini Yönetme
İnsanlar genellikle şifrelerini tekrar kullanırlar ki bu kötü bir güvenlik uygulamasıdır. Eski parolalar /etc/security/opasswd
dosyasında saklanır. Linux ana bilgisayarının güvenlik politikalarını yönetmek için PAM modülünü kullanacağız.
Bir Debian dağıtımı altında, bir metin düzenleyici kullanarak /etc/pam.d/common-password
dosyasını açıp aşağıdaki iki satırı ekliyoruz:
auth sufficient pam_unix.so likeauth nullok
password sufficient pam_unix.so remember=4
Bu iki satır kullanıcıların son dört parolayı tekrar kullanmasına izin vermeyecektir.
Not: PAM Modülü sayesinde daha güçlü parolalar istemek, 5 hatalı şifrede hesap kilitlemek gibi birçok güvenlik ayarlaması da yapılabilir.
9. İzinler ve Doğrulama
İzinler bir Linux ana bilgisayarında güvenlik hedefine ulaşmak için en önemli ve kritik görevlerden biridir. Bu yüzden karmaşık da olsa bir dizi işlem yaparak bu işlemi iyileştirebiliriz.
Aşağıdaki komutları çalıştırarak /etc/anacrontab
, /etc/crontab
ve /etc/cron.*
üzerinde Kullanıcı/Grup Sahibi ve İzinlerini ayarlıyoruz:
sudo su # root kullanıcıya geçtik
chown root:root /etc/anacrontab
chmod og-rwx /etc/anacrontab
chown root:root /etc/crontab
chmod og-rwx /etc/crontab
chown root:root /etc/cron.hourly
chmod og-rwx /etc/cron.hourly
chown root:root /etc/cron.daily
chmod og-rwx /etc/cron.daily
chown root:root /etc/cron.weekly
chmod og-rwx /etc/cron.weekly
chown root:root /etc/cron.monthly
chmod og-rwx /etc/cron.monthly
chown root:root /etc/cron.d
chmod og-rwx /etc/cron.d
“root crontab” için ‘/var/spool/cron’ üzerindeki doğru izinleri ayarlıyoruz:
chown root:root
chmod og-rwx
“passwd” dosyasında Kullanıcı/Grup Sahibini ve İznini Ayarlama:
chmod 644 /etc/passwd
chown root:root /etc/passwd
“group” dosyasında Kullanıcı/Grup Sahibini ve İznini Ayarlama:
chmod 644 /etc/group
chown root:root /etc/group
“shadow” dosyasında Kullanıcı/Grup Sahibini ve İznini Ayarlama:
chmod 600 /etc/shadow
chown root:root /etc/shadow
“gshadow” dosyasında Kullanıcı/Grup Sahibini ve İznini Ayarlama:
chmod 600 /etc/gshadow
chown root:root /etc/gshadow
10. FireJail, AppArmor ve Diğer Güvenli Yazılımlar
Linux kullanırken çok güvenemediğimiz uygulamaları bir sandbox ortamına alıp çalıştırmak genelde oldukça efektiftir. Linux uygulamalarında bunu FireJail gibi bir yazılımla sağlayabiliriz. FireJail uygulamaları kullanıcı alanında çalıştırırken bir nevi bir konteyner ortamı oluşturarak onu izole eder, bu sayede sistemden uzak tutmuş olur.
AppArmor ise çekirdeğe biraz daha yakındır (SELinux’a daha yakın bir tutum), ancak herhangi bir izolasyon sağlamamakla birlikte uygulamanın sistemdeki hangi kaynaklara erişebileceğini düzenler. Ayrıca AppArmor da bir çekirdek güvenlik modülüdür. Ancak AppArmor izolasyon sağlamadığı için aynı kaynağa erişen 2 uygulama birbiriyle etkileşime geçebilir.
Ek olarak, eğer Windows uygulamalarını Linux’ta çalıştıracaksanız, Bottles yazılımı da kullanıma uygundur çünkü Bottles de her uygulamaya özel sandbox ortamı hazırlamaktadır. Ancak unutmamamız gereken şey ise her ne kullanırsak kullanalım, güvensiz kodları ve uygulamaları kullanmaktan uzak durmalıyız çünkü hem Sanal Makinelerden hem de Sandbox ortamlarından kaçabilen zararlı yazılım türleri bulunmaktadır.
Kapanış
Özetle, Linux’unuzu sertleştirebileceğiniz, korumasını arttırabileceğiniz onlarca yöntem bulunmaktadır. Kullanım tarzınıza göre gerekli iyileştirmeleri yaparak güvenliğinizi olabildiğince yükseltebilirsiniz. Unutmayınız ki güvenlik sadece bir kez yapılan bir işlem değil, bir süreçtir. Yazımı buraya kadar okuduğunuz için teşekkür ederim. Umarım verdiğim bilgiler sizin için faydalı olmuştur. Güvende kalın, Linux’la kalın.
Kaynakça
- https://tuxcare.com/blog/linux-system-hardening-top-10-security-tips/
- https://github.com/trimstray/the-practical-linux-hardening-guide
- https://www.pluralsight.com/blog/it-ops/linux-hardening-secure-server-checklist
- https://ubuntu.com/core/docs/full-disk-encryption
- https://www.linode.com/docs/guides/how-to-install-selinux-on-ubuntu-22-04/
- https://www.netwrix.com/linux_hardening_security_best_practices.html
- https://ubuntu.com/server/docs/apparmor
- https://www.kali.org/docs/installation/hard-disk-install/
- https://ubuntu.com/tutorials/install-ubuntu-desktop
- https://security.stackexchange.com/questions/195346/comparison-between-firejail-and-apparmor
- https://apparmor.net/
- https://github.com/netblue30/firejail