cPanel Güvenlik Ayarları Yapılması Gerekenler
SELinux Yönetimi
Linux sunucularda güvenlik denildiğinde akla gelen en kritik katmanlardan biri SELinux (Security-Enhanced Linux)’tur. Çekirdek (kernel) seviyesinde çalışan bu modül, süreçlerin ve kullanıcıların sistem kaynaklarına erişimini “en az yetki” prensibiyle kısıtlar. Ancak bazen yapılandırma hatalarını çözmek veya belirli yazılımları çalıştırmak için SELinux modunu değiştirmemiz gerekebilir.
SELinux Mevcut Durumunu Kontrol Etme
İşlemlere başlamadan önce sunucunuzda SELinux’un aktif olup olmadığını kontrol etmelisiniz. Bunun için şu komutu kullanın:
sestatus
Eğer daha kısa ve öz bir yanıt isterseniz şu komutu da kullanabilirsiniz:
getenforce
SELinux Çalışma Modları Nelerdir?
Enforcing: Varsayılan moddur. Güvenlik politikaları sıkı bir şekilde uygulanır ve ihlaller engellenir.
Permissive: Güvenlik politikaları engelleme yapmaz ancak kural ihlalleri sisteme raporlanır. Hata ayıklama (debug) için idealdir.
Disabled: SELinux tamamen kapalıdır; hiçbir politika yüklenmez ve uygulanmaz.
1. Geçici Olarak Mod Değiştirme (Anlık Çözüm)
Sunucuyu yeniden başlatmadan, o anlık sorunu çözmek veya test yapmak için modu değiştirebilirsiniz. Bu ayar sunucu yeniden başlatıldığında eski haline döner.
Permissive Moda Geçiş (Kısıtlamaları Esnetir):
setenforce 0Enforcing Moda Geçiş (Kısıtlamaları Tekrar Açar):
setenforce 1
2. Kalıcı Olarak SELinux’u Kapatma veya Açma
Yapılan ayarın sunucu kapansa da değişmemesi için konfigürasyon dosyasını düzenlemeniz gerekir. Unutmayın: disabled moduna geçiş yaptıktan sonra değişikliğin aktif olması için sunucuyu mutlaka yeniden başlatmalısınız.
Adım Adım Kalıcı Yapılandırma:
Yapılandırma dosyasını metin editörüyle açın:
nano /etc/selinux/configDosya içerisinde şu satırı bulun:
SELINUX=enforcingİhtiyacınıza göre bu satırı güncelleyin:
Tamamen kapatmak için:
SELINUX=disabledSadece raporlama yapması için:
SELINUX=permissive
Dosyayı kaydedip çıkın (CTRL+X, Y, ENTER).
Sistemi yeniden başlatarak ayarları aktif edin:
reboot
Önemli Not: Güvenlik uzmanları, SELinux’u tamamen kapatmak yerine genellikle
permissivemodda tutmayı veya soruna neden olan servise özel izinler (policy) tanımlamayı önerir. Sunucunuzu tamamen savunmasız bırakmamaya özen gösterin.
Saldırganın sistemden temizlenmesi kadar, tekrar sızmasını engelleyecek önlemlerin alınması da hayati önem taşır. Aşağıdaki adımlar, sunucunuzdaki potansiyel arka kapıları (backdoor) kapatmanıza yardımcı olacaktır.
SSH Portunu Tek Komutta Değiştirme
SSH portunu manuel düzenlemek yerine, sed komutuyla doğrudan terminalden saniyeler içinde değiştirebilirsiniz.
Uyarı: Port değiştirmeden önce yeni portu firewall (CSF/iptables) üzerinden açtığınızdan emin olun, aksi takdirde sunucu dışında kalabilirsiniz!
Tek Komutla Port Değişimi (Örn: 22’den 22940’a):
sed -i 's/#Port 22/Port 22940/g' /etc/ssh/sshd_config && sed -i 's/Port 22/Port 22940/g' /etc/ssh/sshd_config && systemctl restart sshd
Bu komut ne yapar?
sshd_configdosyasındaki hem yorum satırı halindeki#Port 22‘yi hem de aktifPort 22ifadesini bulur ve22940(veya belirlediğiniz port) ile değiştirir.Hemen ardından SSH servisini yeniden başlatarak değişikliği aktif eder.
Symlink Protection (Sembolik Bağlantı Koruması)
Symlink saldırıları, bir kullanıcının kendi dizinine oluşturduğu bir kısa yol (link) vasıtasıyla sunucudaki diğer kullanıcıların (örneğin /etc/passwd veya başka bir sitenin wp-config.php dosyası) dosyalarını okumasına neden olur.
1. WHM Üzerinden Aktif Etme/Kapatma (GUI)
Görsel arayüzü tercih edenler için en güvenli yol budur:
Yol: WHM > Service Configuration > Apache Configuration > Global Configuration
Ayar:
Symlink Protectionseçeneğini bulun.Açmak İçin:
Ondurumuna getirin ve sayfanın en altından kaydedip Apache’yi yeniden derleyin.
2. Komut Satırı ile Kontrol (CLI)
Eğer Apache konfigürasyonuna müdahale ederek manuel yönetmek isterseniz, ilgili dizindeki .htaccess veya VirtualHost dosyasına şu kuralları ekleyebilirsiniz:
Korumayı Aktif Etmek İçin (Önerilen):
Options +FollowSymLinks -SymLinksIfOwnerMatchBu komut, linkin sahibi ile hedef dosyanın sahibi aynı değilse erişimi engeller.
Korumayı Kapatmak İçin (Riskli):
Options +FollowSymLinks
3. Kernel Seviyesinde Koruma (En Sağlamı)
Eğer sunucunuzda CloudLinux veya KernelCare yüklüyse, bu işlemi kernel seviyesinde yaparak performans kaybı yaşamadan tam koruma sağlayabilirsiniz.
Kalıcı olarak aktif etmek için:
sysctl -w fs.enforce_symlinksifowner=1
(Eğer kapatmak isterseniz değeri 0 yapmanız yeterlidir.)
1. Kritik PHP Fonksiyonlarının Devre Dışı Bırakılması
Web tabanlı saldırıların (shell scriptleri) büyük çoğunluğu, PHP’nin sistem komutlarını çalıştırma yeteneğini kullanır. Bu riski her PHP sürümü için ayrı ayrı “Multi-PHP INI Editor” üzerinden kapatmalısınız.
İşlem Adımları:
cPanel’e giriş yapın ve “Multi-PHP INI Editor” (Çoklu PHP INI Düzenleyicisi) kısmına gidin.
Düzenlemek istediğiniz PHP sürümünü seçin.
disable_functionssatırını bulun ve aşağıdaki fonksiyon listesini aralarına virgül koyarak ekleyin:
disable_functions = "posix_getpwuid,mail,shell_exec,exec,system,cat,dl,openbasedir,popen,proc_close,proc_get_status,proc_nice,proc_open,show_source,posix_mkfifo,mysql_list_dbs,get_current_user,pconnect,link,symlink,pcntl_exec,expect_popen,ini_alter,leak,apache_child_terminate,posix_kill,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname,proc_terminate,syslog,passthru,socket_select,socket_create,socket_create_listen,socket_create_pair,socket_listen,socket_accept,socket_bind,socket_strerror,pcntl_fork,pcntl_signal,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,openlog,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,virtual,name"
Bu kısıtlama, bir saldırgan sunucuya dosya yüklese bile o dosyanın işletim sistemi üzerinde komut çalıştırmasını engeller.
2. Apache CGI İşleyicilerinin Kapatılması
Saldırganlar genellikle .cgi veya .pl (Perl) uzantılı dosyalar üzerinden yetki yükseltmeye çalışır. Apache konfigürasyonunda bu işleyicileri pasif hale getirmek güvenliğinizi artıracaktır.
Yöntem A: Terminal (Nano) ile Düzenleme SSH üzerinden root olarak şu komutu çalıştırın: nano /usr/local/apache/conf/httpd.conf
CTRL + W tuşlarına basarak şu satırı aratın:
AddHandler cgi-scriptVarsayılan olarak şu şekilde görünecektir:
AddHandler cgi-script .cgi .pl .plx .ppl .perlBu satırın başına
#işareti koyarak pasif hale getirin:#AddHandler cgi-script .cgi .pl .plx .ppl .perlCTRL + X ardından Y ve ENTER ile kaydedip çıkın.
Yöntem B: SFTP (FileZilla) ile Düzenleme Eğer terminal kullanmak istemiyorsanız, FileZilla ile root kullanıcısı olarak bağlanıp /usr/local/apache/conf/ dizinine gidin. httpd.conf dosyasını bilgisayarınıza indirip bir metin editörüyle aynı değişikliği yapabilir ve tekrar sunucuya yükleyebilirsiniz.
3. Kritik İkili Dosya (Binary) ve Yetki Ayarları
Sunucu üzerindeki bazı yorumlayıcıların yetkilerini kısıtlamak, saldırganın hareket alanını daraltır. Özellikle Perl yorumlayıcısının sadece root tarafından kullanılabilir olması kritik bir önlemdir.
Perl Yetki Kilitleme: Aşağıdaki komut dizisi, Perl dosyasının üzerindeki korumayı kaldırır, yetkilerini sadece root’a özel (700) yapar ve ardından dosyayı tekrar “değiştirilemez” (immutable) moduna alarak güvenliğe alır:
chattr -i /usr/bin/perl && chmod 700 /usr/bin/perl && chattr +i /usr/bin/perl
Önemli Not: Bazı kaynaklarda
/bin/ln(sembolik link oluşturma) komutunun da yetkilerinin değiştirilmesi önerilse de, bu durum profesyonel bir saldırgan için engel değildir. Saldırgan kendi binary dosyasını sunucuya yükleyip çalıştırabilir. Bu nedenle odaklanmanız gereken nokta, saldırganın shell (kabuk) erişimini tamamen kesmektir.