Merhaba,
Yazı uzun ama saldırı yapan kişinin nasıl yaklaştığı ve kendinizi level 1-2‘de nasıl koruyabileceğinizden bahsetmeye çalıştım.
Sistem tarafında Level 3’deki adımlardan bahsetmedim çünkü o işlemler için ek ücret tahsil edip ve vakit ayırıp yapılıyor, yapıyorum.
Standart blog yazısı oluşturmaya çalıştım.
1.) Öncelikle saldırı yapacak kişi bilgi toplamaya çalışacaktır. (Information Gathering)
Bilgi toplama aşamasında yapabilecekleri:
1.a.) Alan adının whois sorgusunda kayıtlı bilgilerden yola çıkarak Social Engineering işlemine kalkışabilir. Örneğin alan adının Whois bilgilerinde gözüken mail adresine fake mail atarak, sitenin tehlikede olduğunu belirten ve tıklamanızı bildiren bir link iletebilir veya telefon numarası üzerinden oltalama (phishing) işlemine kalkışabilir.
*Çözüm: Whois gizleme hizmetlerinden faydalanın. Domaini aldığınız firma bunu ek hizmet olarak sunuyordur.
1.b.) Sitenin çalıştığı ip adresini ve firmayı öncelikle bulmaya çalışacaktır. (Private sunucuda mı yoksa shared hosting sunucusunda mı çalıştığını belirleyecek ve ihtiyaç duyacağı saldırı kaynağını belirlemeye çalışacaktır.)
*Çözüm: Free ip maskeleme hizmeti sunan Cloudflare kullanın. Domainin ns kayıtlarını Cloudflare yönlendirin ve tüm dnsleri Cloudflare üzerinden yönlendirin. Cloudflare arayüzünde maskeleme işlemini DNSSEC ile yapabilirsiniz. (Üst menüde DNS tıkladığınızda altta göreceksiniz.)
Sonrasında DNS panelde gözüken kayıtların Status altındaki yönlendirmeyi aşağıdaki gibi aktif hale getirin.
*Mail dns kayıtlarınızda (webmail, smtp, pop, mail vs.) bu işlemi yapmayın. Mail hizmetinde problem yaşayabilirsiniz.
1.c.) Domainin çalıştığı ip adresini gizlediniz ve ping atıldığında sitenizin çalıştığı real ip yerine Cloudflare ip adresi gözüküyor.
Ancak mail hizmetinde aksaklık yaşamamak için o dns kayıtlarında ki ip adresini gizlemediniz ve nmap ile tarama yapınca subdomainler yüzünden real ip adresi ortaya çıktı.
*Çözüm:Mail servisleriniz, web servislerinizle aynı sunucuda olmasın. Örneğin Yandex Mail’i kullanabilirsiniz, ücretsizdir veya shared hosting alarak kullanabilirsiniz. (Radore bünyesinde çalıştığımdan, mail hizmeti konusunda yıl içinde bir veya max. iki blacklist sorunu haricinde oldukça stabil sistem yönetiriyoruz, düşünebilirsiniz.)
Bu adımlar özellikle DOS/DDoS saldırısı yapacak kişinin işini zorlaştıracaktır.
Cloudflare, hping3 ve black-nurse ddos ataklarını filtreleyebiliyor.
2. Alan adı ve sitenizin ip adresini gizlediniz. Mail hizmetini web sunucunuzda barındırmayarak web servisinin ip adresini gizlediniz.
Sıra geldi private sunucuda sitenizi çalıştırıyorsanız sunucudaki servislerin bilgilerini gizlemeye.
2.a.) Sunucunun Server-Signature gizlemek. Sunucuda cPanel kullanıyorsanız muhtemelen Apache kullanıyorsunuzdur. (Plesk ve diğer paneller Nginx Proxy defaultta sunuyorlar.) Eğer durum böyle Apache Versiyon (ServerSignature) Gizleme ve Apache Web Server Güvenliği Yapılandırması anlatımımı inceleyin. Nginx kullanıyorsanız şu an için sıkıntı yok, güzel karar.
Onun optimizasyonunu da ileride anlatacağım.
Bu işlemi yaptığınızda curl ile sorgu çekildiğinde server bilgileri gizlenmiş olacaktır.
Aynı şekilde Cloudflare kullandığınız için de Server aşağıdaki gibi gözükecektir.
(Slowloris.cf pentest işlemlerinde kullandığım domaindir, şu an pasif.)
3.) DOS veya DDoS saldırı alıyorsunuz ya da almaya başladınız.
*Çözüm: Cloudflare kullanıyorsanız Under Attack modunu aktifleştirin. Bütçeniz varsa özellikle Layer-7 koruma hizmeti sunan firmalardan sunucu alın. (%100 garanti veriyorlarsa baştan uzak durun.) Eğer bütçeniz yoksa ve Linux kullanıyorsanız iptables üzerinden rate-limit koyun. Bunun için de yandaki linki inceleyebilirsiniz: Mitigating Slow Http Dos Attack Resolve
Apache’nin modülleri (mod_evasie, mod_ limitipconn, mod_qos) üzerinden de limitleme yapabilirsiniz.
Bunun yapılandırılması detayına bilerek girmiyorum, çünkü ekstra ücret ödenerek yaptırılan bir konfigürasyondur.
Eğer Layer-4 saldırı alıyorsanız; ek firewall hizmetiniz yoksa, saldırı yurt dışından geliyorsa ip adresinizin anonsunu yurt dışına kapattırabilirsiniz.
**Her şeyden öte ihtiyacınıza göre web server konfigürasyonu oluşturun ve mevcut olanı gözden geçirin. Bilginiz yoksa ek hizmet dahilinde hizmet aldığınız firmaya yapılandırtın. Eğer Apache kullanıyorsanız ve web paneliniz varsa Nginx Reverse Proxy kurun ve Nginx kullanın. Örnek bir eklentinin kurulumundan bahsettim, linki aşağıdadır.
Üstteki anlatımda Nginxcp’den bahsettim ama Engintron, CpxStack vb. yapıları da inceleyin.
*Engintron ssl konusunda sorun yarattığı için vazgeçmiştim ancak bu sorunu çözümlemişler.
***MySQL ya da MariaDB ya da MSSQL ne kullanıyorsanız artık, güncel sürümü kullanın ve remote erişimi kapalı tutun.
Öneri olarak, veritabanı yapısını web sunucunuzla aynı yapıda tutmayın. Farklı sunucuda olsun ve aynı networke dahil edip, local haberleşmelerini sağlayın. Özellikle MySQL ve MariaDB’de ortalama bir konfigürasyonu ileride paylaşacağım için geçiyorum. Link olarak buraya eklerim. Ayrıca, gerekmedikçe veritabanı kullanıcısına super_privilages yetkisi vermekten kaçının.
WordPress Güvenliği İçin Yapılabilecekler
1.) Başta brute-force atakları önlemek için şifrenizi kısa tutmayın. Tahmini zor şifreler kullanın.
2.) Fazla plugin kullanmaktan çekinin. Hem admin arayüzünü yavaşlatır, hem pluginden kaynaklı bir açıktan hacklenirsiniz.
3.) Warez tema kullanmayın, kullanacaksanız da iyice inceleyin. Tema kaynaklı dış link veriyor olabilirsiniz. Bu seoda zarara uğratır.
*Çözüm:wmaraci sitesinin Araçlar bölümünde Site Analiz bölümünden dışarıya verdiğiniz linkleri görebilirsiniz.
4.) Her şeyin başı update. Güncellemeleri takip edip güncel pluginler kullanın. WordPress güncellemelerini ve tema güncellemelerini atlamayın.
5.) FTP alanında bulunan dosyalarınıza ve içeriklerinize 777 izni vermeyin.
6.) Eğer file upload gibi bölüm sitenizde varsa o alandan .php uzantılı dosyaların yüklenip yüklenmediğini kontrol edin. Shell yiyebilirsiniz.
7.) Kullandığınız temanın ismini değiştirin ve öyle kullanın. Bunun için temanın olduğu dizine gidip, style.css dosyasındaki açıklama kısmından temanın adını değiştirin ve temayı yüklemeden önce de ismini değiştirip öyle upload edin.
Eğer temayı aktif kullanmaya başlamışsanız aşağıdaki eklentiyi kullanın.
**Wordpress wp-admin/wp-login yolunu değiştirme ve tema/eklenti isimlerini gizleme: Wp-Hide Security Enhancer
8.) Günlük ve haftalık backup alın ve ftp alanı içerisinde bilgilerinizi tutmayın; dbyi ftp alanına yedeklemek gibi bir hata yapmayın.
9.) Cacheleme kullanın. WP-Super Cache veya Total Cache kullanıp, bunu CDN hizmetiyle bağdaştırıp performansı arttırabilirsiniz.
10.) WordPress kurduktan sonra Readme tarzı dosyaları ftpden silin ve alt dizinlerin tümüne index.html atın.
(Dizinlerin içindeki içeriklerin listelenmesini önlemek için.)
Level 3 diye belirttiğim işlemlerin birkaçının detayı: Kullanılan veritabanın tespiti, MySQL’de açık arama, sql injection, port tarama ve portların kapatılması, eth üzerinden rate-limit tanımı, sistemdeki kernel ve yapıların versiyon tespiti ve sistem tarafındaki açıklardan metasploit kullanarak satüre etmek vs. vs.
Umarım zamandan kazanmanızı sağlar.