Linux Güvenlik Yapılandırması

Linux güvenliğinin derinlemesine gözden geçirilmesi gerçekten ve teknik bir konudur. Bunun bir nedeni Linux kurulumlarının çeşitliliği ve birçok noktanın bu sebepten dolayı farklılaşmasıdır. Kullanıcılar Debian, Red Hat, Ubuntu veya diğer Linux dağıtımlarını kullanıyor olabilir. Bazıları kabuktan, bazıları KDE veya GNOME gibi grafik kullanıcı arabirimlerinden çalışıyor olabilir. Neyse ki, Windows için geçerli olan güvenlik kavramlarının birçoğu Linux’a da uygulanabilir. 

Kullanıcı ve hesap politikaları, Linux’ta Windows Güvenlik Yapılandırmalarında olduğu gibi, yalnızca birkaç küçük farkla ayarlanmalıdır. Bu farklılıklar Linux’ta Windows yerine farklı adlar kullanmakla ilgilidir. Linux’un yönetici hesabı yoktur; tam yetkili bir kök hesabı bulunur ve root olarak adlandırılır.

  • Kullanılmayan tüm hizmetler kapatılmalıdır.
  • Tarayıcı güvenli bir şekilde yapılandırılmalıdır.
  • İşletim sistemini düzenli olarak güncellemelisiniz.

Windows ve Linux için ortak olan bazı güvenlik ayarlarına ek olarak, iki işletim sistemi için de birkaç yaklaşım farklı olabilir.

  • Kesinlikle gerekli olmadıkça hiçbir uygulama kök kullanıcı olarak çalıştırılmamalıdır. Kök kullanıcının (root) Windows’daki yönetici hesabına eşdeğer olduğunu unutmayın.
  • Root şifresi karmaşık olmalı ve sık sık değiştirilmelidir. 
  • Normal kullanıcılar için konsol erişimini devre dışı bırakın. Bu sunucunuzdaki normal kullanıcılar için kapatma, yeniden başlatma ve durdurma gibi kritik özelliklere erişimi engelleyecektir 
  • Sistem bilgilerinizi gizleyin. Bir Linux işletim sistemine giriş yaptığınızda, varsayılan olarak Linux dağıtım adı, sürümü, çekirdek sürümü ve sunucunun adı görüntülenir. Bu bilgiler davetsiz misafirlerin başlangıç ​​noktası olacaktır. Kullanıcılardan yalnızca “Oturum Aç” istemi göstermeniz yeterli olacaktır.

Linux Hizmetlerini Devre Dışı Bırakma

Çalışan her hizmet (arka planda) sunucuda belirli yetki ve düzeyde kod çalıştırmaktır. Bu kod içinde bir güvenlik açığı varsa, bir saldırgan tarafından kullanılabilecek potansiyel bir zayıflık anlamına gelir.

Birçok işletim sistemi, varsayılan olarak etkinleştirilmiş, birçoğunu kullanamayacağınız bir dizi hizmetle birlikte gelir. Sunucularınızdaki saldırı yüzeyini azaltmak için bu hizmetler devre dışı bırakılmalıdır. Ancak bir hizmeti devre dışı bırakmadan önce, tam olarak ne yaptığını tespit etmek ve gerekip gerekmediğini belirlemek akıllıca olacaktır. Aksi takdirde işlerliğinize ve iş sürekliliğine zarar verebilirsiniz.

UNIX sisteminde arka planda hangi hizmetlerin çalıştığını belirlemenin çeşitli yolları vardır. Bunların en kolayı çalışan hizmetleri istelemek için “ps” komutunu kullanmaktır.

Elbette ki “ps ax” sözdizimi çoğu sistemde çalışır ve çalışmakta olan tüm işlemleri listeler. İşletim sisteminizdeki sözdizimindeki küçük değişiklikler için, “man ps” komutunu kullanarak “ps” kullanım kılavuz sayfasını inceleyebilirsiniz.

Hizmetler (başlangıç komutu devre dışı bırakılmalıdır “rc” veya “init” sistemleri kullanır. Linux’ta komutlar tipik olarak “rc-update” , “update-rc.d” veya “service” şeklinde olabilir. BSD tabanlı sistemlerde ise genellikle /etc/rc.conf dosyasını düzenleyebilirsiniz. 

Örnek olarak, Linux’un çeşitli sürümlerinde sshd hizmetini durdurmak için service komutu kullanılabilir.

service sshd stop

SSHD servisini yeniden başlatmanın ardından tekrardan başlamasını engellemek için: update-rc.d -f sshd remove kullanabilirsiniz.

Bazı Linux dağıtımları, hizmetleri yönetmek için SysV başlangıç ​​komut dosyalarının aksine “systemd” kullanmaya yönelmiştir . “Systemd” , yeniden yapılandırma ve bağımlılık bilgilerinin görüntülenmesi gibi hizmetlerle ilgili birçok yönetim işlevlerini gerçekleştirmek için kullanılabilir. 

systemctl disable sshd

Bu komut sayesinde systemctl kullanarak ssh servisini işletim sistemi yeniden başladığında çalışmayacak / devre dışı bırakılacak şekilde ayarlamış oluyoruz.

Eski Unix / Linux işletim sistemleri, rc veya init komut dosyaları yerine hizmetleri yönetmek için inetd veya xinetd kullanıyordu. Bu durumda, genellikle / etc / dizininde bulunan inetd.conf veya xinetd.conf dosyaları düzenlenerek hizmetler devre dışı bırakılabilir.

Linux Dosya İzinleri

Çoğu Unix / Linux dosya sistemi bir izin kavramına sahiptir. Yani kullanıcıların ve grupların okuyabileceği, yazabileceği veya çalıştırabileceği şekilde dosyalar ayarlanabilir. 

Genellikle, bir işletim sistemi yükleme sırasında sistem dosyalarında yeterli dosya izinlerini ayarlar. Ancak, dosya ve dizin oluştururken, izinler umask ayarlarınıza göre oluşturulur. Genel bir kural olarak, bir sistemdeki umask yalnızca varsayılandan daha kısıtlayıcı hale getirilmelidir. Daha az kısıtlayıcı bir umaskın gerekli olduğu durumlar, sorunu çözmek için chmod’un kullanılabileceği kadar sık ​​olmamalıdır. Umask ayarlarınız, umask komutu kullanılarak görüntülenebilir ve düzenlenebilir. Bu konu hakkında daha fazla bilgi için “umask man” sayfalarını inceleyebilirsiniz.

Hatalı dosya izinleri, dosyaları amaçlananlar dışındaki kullanıcılar tarafından okunabilir olmasını sağlar. Birçok kişi, bir kullanıcının bir ana bilgisayarda oturum açmak için kimlik doğrulaması gerektiğinden, herkes veya gruplar için okunabilir halde bırakabiliyor.

Apache, nginx veya lighttpd gibi bir web sunucusu çalıştıran bir sistemi ele alalım. Bu web sunucuları genellikle “www-data” gibi kendi kullanıcı kimlikleri altında çalışır. Oluşturduğunuz dosyalar için “www-data” izni verirseniz, web sunucusunun bu dosyayı okuma hakkı olacaktır ve bir tarayıcı kullanılarak bu dosyaların içeriği görüntülenebilir.

Linux Dosya Bütünlüğü

Dosya Bütünlüğü Yönetimi araçları, dosya sistemindeki anahtar dosyaları izler ve değişmeleri durumunda yöneticiyi bilgilendirir. Bu araçlar, bir kök setinde olduğu gibi, anahtar sistem dosyalarının kurcalanmamasını veya dosyaların yöneticinin izni olmadan değişiklik yapılmasını engellemeye yöneliktir.

Tercih ettiğiniz paket yönetim aracıyla hem ticari araçlar hem de ücretsiz / açık kaynak araçlar kullanabilirsiniz. Dosya bütünlüğü izlemesi gerçekleştiren açık kaynak araçlarına örnek olarak Samhain ve OSSEC verilebilir. 

Alternatif olarak, herhangi bir nedenle dosya bütünlüğü izleme araçlarını yükleyemiyorsanız, birçok yapılandırma yönetimi aracı, normal işlemlerinin bir parçası olarak dosya sistemindeki değiştirilmiş yapılandırma dosyaları hakkında rapor verecek şekilde yapılandırılabilir. Bu onların birincil işlevi değildir ve aynı düzeyde kapsam sunmaz.

Ayrılmış Disk Bölümleri

Unix / Linux içindeki disk bölümleri sadece dosya sistemini çeşitli fiziksel veya mantıksal bölümlere dağıtmak için değil, aynı zamanda hangi bölümde yer aldıklarına bağlı olarak belirli eylem türlerini kısıtlamak için kullanılabilir. Seçenekler / etc / fstab içindeki her bağlama noktasına yerleştirilebilir.

Unix / Linux’un farklı sürümleri arasında küçük farklılıklar vardır ve bu nedenle seçenekleri kullanmadan önce sistem klavuzuna başvurmanız önerilir. Güvenlik açısından en kullanışlı ve yaygın bağlama noktası seçeneklerinden bazıları şunlardır.

nodev

Herhangi bir özel geliştirme cihazını yorumlayabilirsiniz. Özel bir aygıt beklenmiyorsa, bu seçenek kullanılmalıdır. Tipik olarak yalnızca / dev / mount noktasındaki özel dev aygıtları içerir.

nosuid

Su ve sudo gibi bazı temel sistem işlevler için setuid yürütmeyi kullanabilirsiniz. Dikkatli olmanızı tavsiye ederiz. Saldırganlar, standart bir kullanıcı hesabından kök ayrıcalıklarını hızlı bir şekilde elde etmek için setuid ikili dosyalarını bir sistemin arka kapılarını kullanma yöntemi olarak deneyebilirler. Setuid yürütmesi muhtemelen sistemde kurulu bin ve sbin dizinlerinin dışında gerekli değildir. Aşağıdaki komutu kullanarak setuid ikili dosyalarının konumunu kontrol edebilirsiniz:

$ sudo find / -perm -4000

ro

Dosya sistemini salt okunur olarak bağlayın. Verilerin yazılması veya güncellenmesi gerekmiyorsa, bu seçenek değişikliği önlemek için kullanılabilir. Bu, bir saldırganın bu konumda saklanan yapılandırma dosyaları ve statik web sitesi içeriği gibi dosyaları değiştirme yeteneğini elbette ki engelleyecektir.  

noexec

Herhangi bir türde, söz konusu bağlama noktasının yürütülmesini önler. Bu komut yalnızca veri ve belge depolama için kullanılan bağlama noktalarında ayarlanabilir. Bir saldırganın bunu bir sisteme yükleyebileceği araçları yürütmek için bir giriş noktası olarak kullanmasını engeller.

Chroot

chroot, çalışan bir işlemin ve alt süreçlerin görünen kök dizinini değiştirir. Bunun en önemli yanı, chroot içindeki işlemin yeni görünen kök dizininin dışındaki dosyalara erişmesini engeller. Bu komut özellikle kötü yapılandırılmış veya sömürülebilen bir hizmetin gerekenden daha fazla yetkiye erişememesini sağlar.

Bununla birlikte, chroot’un basitçe sunmadığı bazı güvenlik özellikleri sunduğuna dair yaygın bir yanlış anlama olduğu unutulmamalıdır. Özellikle chroot içerisinde işlem kök ayrıcalıklarıyla çalışıyorsa, kök hapsinin kırılması imkansız değildir. Genellikle, chroot kullanmak için özel olarak tasarlanmış işlemler, bu riski en aza indirgemek için kök ayrıcalıklarını mümkün olan en kısa sürede bırakacaktır. Unutmayın chroot, aynı sistemde chroot dışındaki ayrıcalıklı kullanıcılara karşı herhangi bir koruma sağlamaz.