Merhaba
Web uygulamalarının güvenliği, uygulamanın hizmet verdiği sunucunun güvenliği ile doğru orantılıdır. Bu yazıda sunucu güvenliği açısından yapılması gerekenlere değinilecektir.
1 – Domain ve DNS Güvenliği
Web sunucunuz ve web uygulamanız her ne kadar güvenli olsada, domain yönetiminiz saldırganların yönetimine geçtiğinde yapılabilecekler çok fazla değildir. Bu nedenle domain firmanızın güvenli olması çok önemlidir.
Bir diğer husus ise domain sorgularında, domaini kayıt eden mail adresi, telefon ve adres bilgilerinin gizlenmesidir. Bu konuda yine domain hizmeti satın alınan firmanın vereceği hizmetler kullanılmalıdır. Kendi web sitenizi aşağıdaki şekilde kontrol edebilirsiniz.
whois.domaintools.com/mehmetince.net
2 – Her şey için 2 Aşamalı Oturum
WordPress yönetim paneline giriş işlemin için 2 aşamalı oturumun nasıl gerçekleştirildiğine buradaki yazıdan ulaşabilirsiniz. Aynı işlem SSH erişimi içinde gerçekleştirilebilir. SSH servisi için Google Authenticator kurulumu Çağrı Ersen tarafından yazılmış bu dökümanda bulabilirsiniz.
3 – Shared Hosting OUT, VPS IN
Shared Hosting, birden fazla web sitesinin virtual host tanımaları ile aynı sunucuda barındırılması anlamına gelmektedir. Özellikle 2005 ve 2007 yılları arasında web sitelerine yapılan saldırılar bu mantığı temel almaktadır. Saldırganın hedefi www.ali.com ise bu web sitesi üzerinde bir güvenlik açığı bulamamışsa, bu sefer www.ali.com ile aynı sunucuda bulunan diğer web sitelerini hedef alacaktır. Bu web sitelerinin tespiti aşağıdaki iki adım ile gerçekleşir;
- nslookup www.linux.org ( Address: 209.92.24.80)
- www.bing.com adresine girip ip:192.168.10.12 yazılır.
Yukarıdaki resimde görüldüğü üzere www.linux.org ile ftp.linux.org adresleri aynı ip adresine aittir. Saldırgan bing servisinin bu özelliğini kullanarak tespit ettiği aynı sunucuda bulunan farklı web sitelerindeki web uygulamalarına saldırarak sunucuya sızmaya çalışır.
Özetle; web sitelerinizi shared hosting’de barındırmak bir potansiyel güvenlik açığı demektir. Siz uygulamanızda güvenliği %99 sağlamış olsanız bile sizinle aynı sunucuda bulunan bir başka web siteside sizin güvenliğiniz için, en az sizin kadar güvenli olmalıdır.
4 – DigitalOcean ve Cloud Hosting
Maliyet ve Güvenlik arasında ters orantının ortaya çıktığı ilk yer burasıdır. Bir önceki maddede anlatılanlara göre shared hosting malesef özellikle türk firmalarından hizmet alındığında ciddi bir güvenlik açığı oluşturabilmekte. Bu tehdite karşı alınabilecek önlemler kısımdan oluşmakta. İlki bu maddede anlatılacak olan VPS.
DigitalOcean’da Aylık 5/10 dolar gibi cûzi miktarlara sadece size ait olan ve üzerinde istediğinizi yapabileceğiniz Linux sunucu hizmetleri bulunmakta. Sunucunuzun snapshot’ını alabilmek gibi güzel özellikleri bulunan DigitalOcean’ın en önemli özelliklerinden bir diğeri ise 2 aşamalı oturum hizmeti vermesidir. Google Authenticator uygulaması sayesinde, digitalocean hesabınızın şifresi bilinse bile hesap yönetimi ele geçirilememektedir.
5 – CloudFlare ve DDoS
Günümüzde DDoS gerçekleştirmek kolay ve çok maliyeti olmayan bir yöntemdir.Medyamızın Hacking ile DDoS arasında ki ciddi farkı anlayamıyor olsada, DDoS bir çok web sitesi için hala potansiyel bir tehlike durumundadır.
Layer 4 üzerinden yapılan Syn Flood saldırılarının önüne geçmek için Linux üzerinde syn cookie korumasını aktif hale getirebilirsiniz. Bu sisteme maliyeti arttıran bir işlem olduğu için sadece Syn Flood saldırısı geldiği anlarda aktifleştirebilirsiniz.
cat /proc/sys/net/ipv4/tcp_syncookies 1
Syn Flood saldırıları direk sunucunun ip adresine gönderilen Syn Paketleri ile gerçekleştirilir. Bu saldırı için ip adresinin bilinmesi şarttır. CloudFlare firmasını hizmetinden yararlanarak hem ip adresinizi Syn Flood saldırıların yapılamaması için gizleyebilir, hemde sitenize gelen trafiğin içeriğini analiz ettirerek 10. maddede bahsedilen WAF hizmetini kullanabilirsiniz. Her ne kadar HTTPS trafik ve daha farklı servisleri için ücret ödemek zorunda olsanızda, ip adresinin gizlenmesi ve DDoS saldırılarından kendinizi korumak için ücretsiz hizmetlerinden yararlanabilirsiniz.
6 – Sadece gerekli olanlar
Sunucu kurulumlarında minimal iso’ların tercih edilmesi önemlidir. Sadece sistemin çalışması için gerekli olan yazılımlar yüklenerek karşınıza gelen bir CentOS sunucuda, ihtiyaçlarınıza göre sadece gerekli olan paketlerin kurulumu yapılmalıdır.
Örnek olarak WordPress’in çalışabilmesi için gerekli olan PHP paketleri aşağıdadır.
[root@host~]# rpm -aq |grep 'php' php-gd-5.3.3-27.el6_5.x86_64 php-cli-5.3.3-27.el6_5.x86_64 php-mysql-5.3.3-27.el6_5.x86_64 php-common-5.3.3-27.el6_5.x86_64 php-pdo-5.3.3-27.el6_5.x86_64 php-5.3.3-27.el6_5.x86_64
7 – Dizin İzinleri , Theme(Shell) Upload, PHP Safe Mode
Öncelikle wordpress’in kurulu olduğu dizinin sahibi kim olmalıdır ? sorusuna cevap verilmesi gerekir. Bu konuda ben deniz tüm domainler için yerel dizindeki uygulama dosyalarını root sahipliğinde kullanıyorum. Bu şekilde root grubu yada kullanıcı haricinde ki tüm gruplar/user’lar için dosyalar sadece Read izinlerine sahip olmakta. Daha doğru yöntem ise her domain için linux üzerinde bir kullanıcı oluşturularak, tüm dosyalar aşağıdaki komut ile bu kullanıcıya atanmalıdır.
chown -R mehmetince.net:mehmetince.net /home/mehmetince.net
Bir diğer nokta ise WordPress Theme’leri. Bilindiği üzere WordPress yönetim panelinden Theme yüklemesi yapılabilmektedir. Yönetim paneline erişim sağlayan saldırganın ilk deneyeceği işlem; içerisinde zararlı PHP kodları(shell) bulunan bir theme’i sunucuya yüklemektir. Ardından PHP Backdoor dosyasına internet tarayıcısı üzerinden erişecebilecektir. Bir sonraki adım ise sunucudan reverse-shell bağlantısının sağlanmasıdır. Bu işlem için php’nin system, exec vb işletim sistemi terminaline erişip komut çalıştıran fonksiyonları kullanılmak zorundadır. Bunu engellemek için /etc/php.ini dosyasından safe_mode’u aktifleştirebilir yada disabled_functions tanımlaması yaparak bu fonksiyonlara erişim engellenebilir.
WordPress arayüzünden tema yüklemesini iptal etmek için wp-content/theme klasörünün yazma izinlerinin kaldırılması gerekmektedir. Sistem yöneticisi olarak siz tema değiştireceğiniz zaman, yeni temayı SCP ile ssh üzerinde aşağıdaki komut ile sunucuya yükleyebilirsiniz.
scp theme.zip root@mehmetince.net:/home/mehmetince.net/wp-content/theme #Sunucuya SSH ile oturum açılarak aşağıda ki komut çalıştırılır. cd /home/mehmetince.net/wp-content/theme unzip -x theme.zip
8- WordPress Plug-in’leri
WordPress bildiğiniz üzere güvenliğe son derece önem veren bir özgür yazılım. WordPress’in kendisinde yapısında bilinen bir güvenlik açığı olmadığı için saldırganlar plug-in’lere yönelecektir. Hedef wordpress sisteminde kurulan olan plug-in’leri tespit etmek için wpscan isimli araç kullanılmaktadır. Eğer tarama yapılan wordpress üzerinde bulunan plug-in’lerden herhangi birinde bilinen bir güvenlik açığı varsa bu araç tarama sonuçlarında göstermektedir. Wpscan aracı Kali işletim sisteminde kurulu olarak gelmektedir.
root@kali:~# wpscan --url www.mehmetince.net --enumerate p _______________________________________________________________ __ _______ _____ \ \ / / __ \ / ____| \ \ /\ / /| |__) | (___ ___ __ _ _ __ \ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \ \ /\ / | | ____) | (__| (_| | | | | \/ \/ |_| |_____/ \___|\__,_|_| |_| WordPress Security Scanner by the WPScan Team Version v2.2 Sponsored by the RandomStorm Open Source Initiative @_WPScan_, @ethicalhack3r, @erwan_lr, @gbrindisi, @_FireFart_ _______________________________________________________________ | URL: https://www.mehmetince.net/ | Started: Sun Feb 16 16:10:32 2014 [+] robots.txt available under: 'https://www.mehmetince.net/robots.txt' [!] The WordPress 'https://www.mehmetince.net/readme.html' file exists [+] Interesting header: CF-RAY: fdd313c4c58075b-AMS [+] Interesting header: SERVER: cloudflare-nginx [+] Interesting header: X-POWERED-BY: PHP/5.3.3 [+] XML-RPC Interface available under: https://www.mehmetince.net/xmlrpc.php [+] WordPress version 3.8.1 identified from meta generator [+] WordPress theme in use: spaces | Name: spaces | Location: https://www.mehmetince.net/wp-content/themes/spaces/ | Readme: https://www.mehmetince.net/wp-content/themes/spaces/readme.txt [+] Enumerating installed plugins ... 0:01:15 <= > (170 / 2615) 6.50% ETA: 00:17:59
9 – WordPress Temaları ve DOM XSS
XSS zafiyetlerinin DOM Based XSS türü tespiti ve önüne geçilmesi zor olan zafiyetlerden bir tanesidir. Çünkü DOM XSS zafiyetleri client-side’ı ilgilendirmektedir ve çoğu zaman atak vektörü herhangi bir parametre üzerinden sunucuya gelmeden direk kullanıcının internet tarayıcısında kalmaktadır. Bu bilgiden anlaşıldığı üzere daha çok javascript ile ilgili olan Dom XSS zafiyetleri, wordpress’te kullanılan temalarda bulunabilir. Açıkcası mehmetince.net’te için themeforest sitesinde tema araştırması yapılırken 3 adet farklı temada Dom XSS zafiyeti tespit edilmiştir.
- ModSecurity
- PHPIDS
ModSecurity apache’ye modül olarak gelen ve internet sitesine gelen tüm HTTP taleplerinin içeriğini black list mantığı ile kontrol edip zararlı olabilecek talepleri durduran bir WAF sistemidir. Malesef ilk kurulum ile gelen ayarları kullanırsanız bir çok arama motoru ve normal kullanıcıların talepleri ModSecurity tarafından engellenecektir. Bu nedenle eğer bu konuda tecrübeli değilseniz ModSecurity yerine PHPIDS kullanabilirsiniz.
PHPIDS aynı ModSecurity mantığı ile çalışan PHP yazılımıdır. Bu yazılımın WordPress için entegrasyonları mevcuttur.WordPress ile çalışan sitenizde birden fazla plug-in kullanmaktaysanız ve SQLi gibi tehlikeli güvenlik açıklıklarının var olup olmadığından emin değilseniz kullanmanız gerekn plugin Multi-Screamer.
11 – Update, update, update…
Özellikle son kullanıcı davranışı olan “güncelleştirmeleri erteleme” algısını bir webmaster olarak uygulamayınız. WordPress, plug-in, Linux vb herhangi bir birim için gelen güncelleştirmeleri uygulayınız. Özellikle WordPress için gelen güncelleştirmeleri uygulamadan önce test ortamında denemenizi önermekteyim. Test ortamınızı VirtualBox’a kuracağınız bir centos üzerine wordpress’inizi kopyalarak kolayca oluşturabilirsiniz.
12 – cPanel ve PhpMyAdmin!
Bu madde ben denizin şahsi görüşü olan bir durumu içermektedir. cPanel web serverının yönetimini grafiksel olarak yapabileceğiniz bir yazılım. Üstelik lisans ücretli bir yazılım. Aynı zamanda da yapısında bulundurduğu güvenlik açıkları ile ciddi tehlikeler barındırmakta. Bu nedenle web sunucunuzun yönetimini terminal üzerinden yapmayı tercih etmenizi öneririm.
PhpMyAdmin ise veri tabanı yönetimi için PHP ile geliştirilmiş bir web uygulaması. Eğer sunucunuzun veri tabanına bu yazılım ile erişmek istiyorsanız -ki mysql workbench çok daha güvenli- phpmyadmin’in kurulu olduğu dizine htaccess şifre koruması koyunuz. Bu şekilde herkes tarafından erişilebilir olan phpmyadmin ikinci bir şifre korumasına sahip olacaktır. Pek çok insan “Zaten root şifresini biliyorsa dışarıdan bağlanır ?” diye düşünsede aslında normal kurulumda mysql’in root kullanıcısı için sadece localhost adresinden gelen bağlantılar kabul edilir. Ayrıca tüm güvenlik camiasını heyecana düşüren phpmyadmin backdoor’u hakındaki bu yazıyı okumanızı öneririm.
13 – Yedekleme
Güvenlik her zaman hacker’ların sisteme sızmasına karşı alınan tedbirleri ifade etmemektedir. Eğer web sitenizin hizmet verirken kullandığı veri tabanında bir veri kaybı yaşanırsa, bu da bir hizmet kesintisine neden olacaktır. Bu nedenle MySQL veri tabanının yedeklemesini yapmak önemlidir.
14 – Sistem Takibi
Hacker’lar her zaman sinsi davranırlar. Günümüzde bir çok firma hacklendiğini aylar, yıllar sonra fark edebilmektedir. Bu nedenle sistem takibi önemli bir süreçtir. Pek çok alternatifi bulunan Ücretsizce kullanabileceğiniz PyDash uygulamasının kurulumuna ve sunduğu bilgilere buradan ulaşabilirsiniz.