Sistem yöneticilerinin güvenlik konusunda ilk adımı atmaları gerektiğine inanmışımdır. Bir konfigürasyon yaparken amaç sadece çalıştırmak değil güvenli bir şekilde çalıştırmak olmalı. Örneklerle açıklamaya çalışacağım.
Mesela ağ üzerinden hizmet verecek bir servis konfigürasyonu yapıyorsam bu servisin hangi portlardan nerelere hizmet vereceğini bilmeliyim. Sistem üzerindeki güvenlik duvarını ona göre yapılandırabilirim. Sadece bu servise bağlanması gereken yerlere ilgili portları açarak erişime izin verip diğer adresleri güvenlik duvarından engelleyebilirim. Ağ üzerinde güvenlik duvarı olabilir ama sunucu üzerinde de olması kademeli bir şekilde tedbir alınmasını sağlattırır. Çoğu zaman güvenlik duvarından port açılırken her yere açılıyor. Eğer kullanacak kişiler sınırlı ise her yere açmamak en iyisi. Bu basit tedbirin hiç ummadığım zamanlarda faydasını gördüm.
Programlar dosya sisteminde çeşitli yerleri okumak veya bazı yerlere yazmak isteyebilir. Yetkiler tanımlanırken sadece gerektiği kadar tanımlamak isterim. Fazla yetki ileride problem olabilir. Bu konuda SELinux da çok yardımcı oluyor. RHEL ve Oracle Linux sistemlerinde SELinux enforcing modda geliyor. Yani konfigürasyonları SELinux ile uyumlu yapmak gerekiyor. Genelde işleri zorlaştırdığı için insanlar SELinux’u kapatmayı tercih edebiliyor. Bu konuda RHEL tabanlı sistemlerde gelen setroubleshoot programının ben çok faydasını gördüm. SELinux bir probleme yol açtıysa, setroubleshoot çözüm için yapmanız gereken işleme kadar size söyleyebiliyor. SELinux sayesinde yine iki aşamalı bir tedbir almış oluyoruz. Normal dosya yetkilerini gerektiği kadar tanımlıyoruz ayrıca SELinux ile sadece gerektiği kadar yetki veriyoruz.
Her aşamada minimum yetki prensibini düşünebiliriz. Mesela NFS ile bir paylaşım yapmak istiyorum. Paylaşımı kullanacak sistemin bağlanması, diğer sistemlerin erişememesi için paylaşımı sınırlayabilirim. Yazma yetkisine ihtiyaç yoksa paylaşımı sadece okuma yetkisi ile yaparım. Gerekmedikçe paylaşım sırasında root yetkisi kesinlikle vermem.
Bir servisi daha güvenli olarak çalıştırma imkanı varsa onu tercih ederim. Örneğin RHEL uyumlu dağıtımlarda DNS sunucu çalıştırmak için bind veya bind-chroot paketleri kullanılabilir. bind-chroot daha güvenli bir çözümdür. Onu tercih ederim.
Daha önce yazdığım LDAP ve Kopyala Yapıştır Konfigürasyon yazılarımda da örnek vermiştim. LDAP üzerinde başka kullanıcıların şifrelerinin kriptolu haline bile ulaşılmaması için ayar yapmak bir örnek. Internet üzerinden arama yapılarak bulunan örnek konfigürasyonlar çoğu zaman sadece çalıştırma amaçlı oluyor. Güvenlik ikinci planda kalıyor. Sadece onlara güvenerek konfigürasyon yapmaktan kaçınırım.
Bir çok güvenlik açığını kapatmak için sistemi güncel tutmak da önemlidir. Uzun süre güncelleme yapabileceğim işletim sistemi veya uygulamaları tercih etmeye çalışırım. Güncelleme süresi dolduysa en kısa sürede yenilemek gerekir.
Özetle, sistemi en iyi tanıyan kişi sistemin yöneticisidir. Güvenlik onunla başlar. Sistem yöneticisi yaptığı işlemleri güvenli olarak yaparsa hem ilerisi için kendi işini hem de güvenlikten sorumlu diğer kişilerin işini kolaylaştırmış olur. Kendi işini kolaylaştırır çünkü hiç beklenmedik zamanda ortaya çıkan güvenlik problemi diğer zararları bir yana her şeyi baştan kurmayı gerektirebilir.