WHM Sunucu Güvenliği ve Sağlam Güvenlik Temelleri


Yazımız en son 7 Aralık 2017 tarihinde güncellenmiş ve 167 defa okunmuş.

Bu sayfa, CPanel / WHM Sunucu Güvenliği ile Linux sunucusunu nasıl güvenli hale getireceğini adım adım anlatan bir rehber. Apache kurulduktan sonra, varsayılan olarak, linux’un güvenliği sizin “tamamen güvenli sunucu / sistem” diye bir şey olmadığını anlamanıza yetecek kadar zayıftır. Bu yazının amacı, en azından sunucuların biraz daha güvenli olmasını sağlamak.

Başlayalım..

WHM Sunucu Güvenliği

Eğer CentOS yüklü bir sunucunuz ve WHM/CPanel kullanıyorsanız, yapmanız gerekenleri aşağıda adım adım anlatarak ilerleyeceğiz.

WHM/CPanel Konfigürasyonu

Öncelikle root bilgilerinizle WHM paneline erişin.

WHM > Server Setup > Tweak Security:

Aktif edin: open_basedir protection
Kapatın: Compilers for all accounts(except root)
Aktif edin: Shell Bomb/memory Protection
Aktif edin: cPHulk Brute Force Protection

WHM – Account Functions:

Kapatın: cPanel Demo Mode
Kapatın: Shell access for all accounts (except root/root hariç)

WHM – Service Configuration – FTP Configuration:

Kapatın: anonymous FTP access

WHM Sunucu Güvenliği ve Sağlam Güvenlik Temelleri: WHM – MySQL:

Bir MySQL şifresi belirleyin. Root şifresiyle aynı olmamasına özen gösterin. Aksi halde bu bilgilerle sunucunuza kolayca sızıp veritabanınızı eline geçirmek isteyen bir sürü kişi olacaktır, ki sadece bu kadarıyla yetinmeyecekleri de kesin.

WHM – Service Configuration – Apache Configuration – PHP and SuExec Configuration

Aktif edin: suEXEC – suEXEC = On

PHP bir Apache modülü olarak çalıştığında, işlemleri root veya nobody adı altında çalıştırır. İşte suEXEC bunu değiştirerek her scriptin (PHP) bir CGI olarak (bağımsız) çalışmasını sağlar. Böylelikle her kullanıcı hesabı kendi işlemini kendi çalıştıracak ve dosya/dizin izinlerini asla 777 yapıp başınızı derde sokamayacaktır.

Güncel Kalın

Kesinlikle güncellemelere özen gösterin. Normal şartlarda bu pek umusanmaz, fakat sunucular için hayati önem taşır. Bunu yapmak için iki yol izleyebilirsiniz.

 yum update 

veya;

 yum upgrade 

Şimdi PHP için her şeyin istediğimiz gibi olup olmadığına bakalım. Aşağıdaki kodu bir php dosyası olarak sitenize yükleyin ve tarayıcınızla bu sayfayı ziyaret edin;

 phpinfo(); ?> 

Eğer PHP bilgilerini görebiliyorsanız sorun yok. Devam edelim, bu bilgileri de gizlemekte fayda var.

PHP Modülleri

Şimdi suhosin ve Zend Optimizer’ı aktif etmemiz gerek. Bu, gelişmiş bir PHP koruma sistemi. Bunu WHM üzerinden EasyApache4 (halen 3 mü kullanıyorsunuz?) üzerinden aktif edebiliriz. Eğer mod_lsapi kullanıyorsanız (kesinlikle önerilir) zend’e gerek kalmayabilir.

WHM Sunucu Güvenliği ve Sağlam Güvenlik Temelleri: Bazı PHP işlemlerini kısıtlayalım.

 nano /usr/local/lib/php.ini 

girip şu ayarları yapalım;

 expose_php = Off Enable_dl= Off magic_quotes = On register_globals = off display errors = off disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, scapeshellarg, escapeshellcmd 

Bunu yine WHM üzerinden MultiPHP INI Editor ile yapabiliriz. Sonra apache’yi yeniden başlatalım;

 service httpd restart 

Eski sürümlerde bu WHM – Service Configuration – PHP Configuration Editor yoluyla bulunabilir.

Linux Kernel + Grsecurity Patch

GrSecurity, çoklu katman tespiti ve önlemesi konusunda yenilikçi bir güvenlik utilizatörü. GPL lisansı altında ve saymakla bitiremeyecek olsak da bazı özellikleri şöyle;

– An intelligent and robust Role-Based Access Control (RBAC) system that can generate least privilege policies for your entire system with no configuration
– Change root (chroot) hardening
– /tmp race prevention
– Extensive auditing
– Prevention of arbitrary code execution, regardless of the technique used (stack smashing, heap corruption, etc)
– Prevention of arbitrary code execution in the kernel
– Randomization of the stack, library, and heap bases
– Kernel stack base randomization
-Protection against exploitable null-pointer dereference bugs in the kernel
– Reduction of the risk of sensitive information being leaked by arbitrary-read kernel bugs
– A restriction that allows a user to only view his/her processes
– Security alerts and audits that contain the IP address of the person causing the alert

Yükleme ve yama işlemi:

 cd /root wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.5.tar.gz wget http://www.grsecurity.com/test/grsecurity-2.1.12-2.6.26.5-200809141715.patch tar -xzvf linux-2.6.26.5.tar.gz patch -p0 < grsecurity-2.1.12-2.6.26.5-200809141715.patch mv linux-2.6.26.5 linux-2.6.26.5-grsec ln -s linux-2.6.26.5-grsec/ linux cd linux cp /boot/config-`uname -r` .config make oldconfig Compile the Kernel: make bzImage make modules make modules_install make install 

Şimdi grub loader konfigürasyonunu denetleyip 0 (sıfır) olduğundan emin olalım.

 nano /boot/grub/grub.conf 

Ardından sunucumuzu yeniden başlatalım.

 reboot 

SSH Güvenliği

Önce port değişimi.

 nano /etc/sshd/sshd_config 

Protokol kısmını 2,1 yerine 2 yapalım.

#Port 22 kısmını da (# olmadan) Port 3939 yapalım (3939 örnektir, kendinize bir port uydurun.)

CTRL+X+Y ve çıkın. Sonra SSHD yeniden başlasın;

 service sshd restart 

Bu portu değiştirip öylece bırakmak yok. Tabii ki bloke olmayalım diye IPTables izinleri gerek.

 iptables -A INPUT -p tcp --dport 3939 -j ACCEPT iptables -A INPUT -p udp --dport 3939 -j ACCEPT 

Emin olmak için başka bir SSH istemcisi (Putty vb.) açın ve yeni porttan bağlanmayı deneyin. Hata alırsanız veya giremezseniz tüm işlemleri geriye alıp (SSH ile ilgili olanları) SSH servisini yeniden başlatın. Acil durumlar için cPanel bizi bildiğinden bir kod yayınlamış, bir defaya mahsus portu 22 olarak ayarlayan satırımız var. Bunu tarayıcı adres çubuğumuza yapıştırıp enter diyoruz.

 http://11.22.33.44:2086/scripts2/doautofixer?autofix=safesshrestart 

Eğer SSL kullanıyorsanız http yerine https ve 2086 yerine 2087 yazın. Port 22 açılacaktır.

Güvenlik, DDoS koruması.

Bunu en iyi CSF ile yaparız. ConfigServer Firewall, kastettiğim bu.

 wget http://www.configserver.com/free/csf.tgz tar -xzf csf.tgz cd csf 

Kurulum için CSF bazı modüller ister. Bunların mevcut olup olmadığını anlamak adına;

 ./csftest.pl 

komutunu uygulayın. Görecekleriniz şöyle olmalı;

 Testing ip_tables/iptable_filter...OK Testing ipt_LOG...OK Testing ipt_multiport/xt_multiport...OK Testing ipt_REJECT...OK Testing ipt_state/xt_state...OK Testing ipt_limit/xt_limit...OK Testing ipt_recent...OK Testing ipt_owner...OK Testing iptable_nat/ipt_REDIRECT...OK 

Bunlardan biri hatalıysa telaş etmeyin, zaten CSF gerekli şeyleri bulamazsa kritik (fatal) hata verip kurulumu durduracaktır. Aksi halde devam eder. Kuruluma geçelim..

 ./install.sh 

Şimdi konfigürasyonu düzenlememiz gerek.

 nano /etc/csf/csf.conf 

Düzenlememiz gereken:

Testing = “0”

Sonra açık portları girmemiz gerek. Mesela az evvel değiştirdiğimiz SSH portunu. Aksi halde giriş vermeyecektir.

 # Allow incoming TCP ports TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2077,2078,2082,2083,2086,2087,2095,2096" # Allow outgoing TCP ports TCP_OUT = "20,21,22,25,37,43,53,80,110,113,443,587,873,2087,2089,2703" 

Portlardan sonra, bağlantı limitlerine gelelim.

 CT_LIMIT = "200" #Her 200 bağlantı peş peşe yapan IP banlanacak demek oluyor. CT_PERMANENT = "1" #Tamamen banlanacak demek. CT_BLOCK_TIME = "1800" #IP adresi 1800 saniye banlı kalır demek (1800 saniye = 30 dakika) Tercih sizin, ya kalıcı ya geçici. CT_INTERVAL = "60" #Bağlantı izlemesi kaç saniyede bir yapılacak? Biz 60 dedik. 

Kaydedip çıkalım ve CSF yeniden başlasın;

 service csf restart 

WHM Sunucu Güvenliği ve Sağlam Güvenlik Temelleri: SYN Cookies

Burada /etc/sysctl.conf dosyasını düzenleyeceğiz, korumamız gerekenler var.

 # Enable TCP SYN Cookie Protection net.ipv4.tcp_syncookies = 1 

Sonra network servisini yeniden başlatalım.

 service network restart 

Güvenlik test aracı olarak CSF

CSF, bir güvenlik test uygulamasına da sahip. WHM > Plugins > ConfigServer Firewall yolunu izleyin ve Server Security kısmından bir genel değerlendirme yapmasını isteyin. Size önerecekleri faydalı olacak.

WHM Sunucu Güvenliği ve Sağlam Güvenlik Temelleri: Mod_Evasive

DDos için bir güzel çözüm daha.

 cd /root/ wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz tar zxf mode_evasive-1.10.1.tar.gz cd mod_evasive 

sonra şunu yazın;

 /usr/sbin/apxs -cia mod_evasive20.c 

Aktif ettiğiniz zaman, httpd.conf dosyanıza şu satırları ekleyin;

 DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 

Mod_Security

Önemli bir güvenlik modülü, hayat kurtaran türden. WHM > Security Center > ModSecurity Vendors kısmına gelin.

OWASP ModSecurity Core Rule Set V3.0 adında hazır bulunan kural setini sağdaki “Install” bağlantısıyla kurun. Daha sonra alttaki seçenekleri yine ON/ON  (ikisi de ON olsun) yapın.

WHM Sunucu Güvenliği ve Sağlam Güvenlik Temelleri

Sonra WHM > Security Center > ModSecurity Configuration kısmına gelin ve aşağıdaki gibi ayarlamalar yapın;

WHM Sunucu Güvenliği ve Sağlam Güvenlik Temelleri

ve kaydedin. Sonrasında WHM > Manage Plugins kısmına ilerleyin ve ClamAV antivirüs modülüne sağdan “Install” diyerek kurun. Eğer bulamazsanız, SSH üzerinden;

 yum install clamav #ve sonra freshclam 

şeklinde kurun ve güncelleyin. Paneldeki yerini de alır böylece. Taramaları zaten cPanel ile yapabilirsiniz.

Rootkit

Zararlı yazılımları bulabilen bir sistem neyseki var, hem de %99,9 başarı oranıyla. En azından iddiası bu. Tarayabildiği alanlar;

 -MD5 hash compare -Look for default files used by rootkits -Wrong file permissions for binaries -Look for suspected strings in LKM and KLD modules -Look for hidden files -Optional scan within plaintext and binary files 

Kurulum için SSH üzerinden;

 cd /root/ wget https://netix.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz tar -zxvf rkhunter-1.4.4.tar.gz cd rkhunter-1.4.4 ./installer.sh --install 

Kullanım:

 rkhunter -c 

Birkaç dakika sürer, temiz iş.

Sorularınız mı var? Bana yazın.

Orijinal Kaynak: http://www.whmsecurity.com/whm/how-to-whm-server-hardening-and-security-basics

Düzenleme & Çeviri & Güncelleme: Fatih M. BAŞARAN