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


Yazımız en son 7 Aralık 2017 tarihinde güncellenmiş ve 283 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