Bazı resmi kurumlara veya kurumsal firmalara zaman zaman usom veya mitre tarafından zafiyete bilgileri üst yazı ile bildirmektedir. Kısa, orta ve uzun vadede yapılması gerekenlere değinmektedir. Bu kapsam belirtilen zafiyet kodu (CVE) ve/veya USOM güvenlik bildirim kodu (TR-) kullanılarak cve.mitre.org veya usom.gov.tr ‘IP/URL/ALAN ADI’ Listesi’nde belirtilen varlıklarda ‘Olası Zafiyetli E-Posta Servisi’ çalışması kapsamında gerçekleştirilen taramalarda CVE-2024-42009 kodlu zafiyeti barındırabilecek Roundcube Webmail servisi tespit edilmiştir. Bu sistemlerin zafiyetli olması kritik olup risk teşkil etmektedir. Bu sebeple gerekli kontrol ve sıkılaştırmaların uygulanması gerekmekte olduğunu rapor etmiştir.
Bu rapor üzerine yapılması istenen şey Roundcube güncellenmesidir.
Raporda Roundcube’un 1.5.7 ve 1.6.x’ten 1.6.7’ye kadar olan sürümlerinde bulunan bir Cross-Site Scripting güvenlik açığı, uzaktaki bir saldırganın program/actions/mail/show.php’deki message_body()’deki bir Duyarsızlaştırma sorununu kötüye kullanan hazırlanmış bir e-posta mesajı aracılığıyla e-postalarını çalmasına ve göndermesine olanak tanıyor.
CWP ne yazıkki kendi içinde sh /scripts/mail_roundcube_update ile son versiyona çıkmıyor. Aslında CWP’deki roundcube versiyonu bu bahsedilen sürünler arasındada değil, 1.4.11 dahada eski bir sürüm olmasına rahmen rapor edilmesi can sıkıcı oluyor. Bu durumda zaafiyet kapatılması için otomatik bir işlem gerçekleştirmiyor. Bizde Roundcube manuel olarak update edilmesi için bir takım çalışmala yapacağız.
cd /usr/local/cwpsrv/var/services
cp -R roundcube roundcube_backup
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz
tar -xvzf roundcubemail-1.6.11-complete.tar.gz
cd roundcubemail-1.6.11
bin/installto.sh /usr/local/cwpsrv/var/services/roundcube
cd ..
chown -R cwpsvc:cwpsvc roundcube
rm -rf roundcubemail-1.6.11*
bu aşamaya kadar sorunsuz geldiyseniz ve roundcube güncellenmiş 1.6.11 versiyonu ile ile /webmail veya mail . domaininiz . com çalışıyorsa büyük ölçüde işlemleri tamamladınız ve güncellediniz demektir. CWP nin 9.x sürümünü kurulu ise sorunsuz çalışacaktır. Ancak CWP 8.x sürümü kurulu ise yapılacak çalışmayacaktır.
Unsupported PHP version. Required PHP >= 7.3. gibi mesaj alırsınız. işler biraz uzayacak ama korkmayın bunun içinde aşağıdaki çözümleri üretebiliriz. bu hatanın sebebi genelde CWP’nin kendisi ve roundcube php 7.2 versiyonunu (/usr/local/cwp/php71/bin/php) kullanıyor olmasındandır. Bu versiyonu manuel yükseltmeyi denemeyin, başka başka yerler patlaya bilir. Geniş bir vakit bulursa denerim. Durduk yere CWP’nin çalışmasınıda bozmamak için uğraşmıyoruz.
öncelikle bir subdomain kendimize belirliyoruz örneğin mail1.alanadiniz.com gibi. Bunu cwp üzerinden kuruyoruz ardından belirlediğim subdomain için php versiyonu seçmeyi unutmıyoruz 7.3 ve üzeri olmalı.
cd /home/alanadiniz/public_html/
cp -R /usr/local/cwpsrv/var/services/roundcube /home/alanadiniz/public_html
roundcube dizine subdomain bulunduğu yere kopyalayıyoruz ve ardından Fix Account Issues & Permissions dosya izinlerini düzenliyor ve SSL kurma işlemini unutmıyoruz.
Unutmayın en önemli şey konfigurasyon dosyasıdır.
config/config.inc.php dosyanın içini kaybetmeyin çünkü imap_host, smtp_host, mysql bağlantı bilgileri gibi ayarlar bu dosyada bunlar kaybolmaması gerekiyor. Herşey tamamsa artık subdomain çağırdığınızda roundcube çalışır halide gelecektir. geriye tüm domainlerin bu adrese gelmesinin sağlanması kaldı. bunun için bir kaç yöntem deneye bilirsiniz cname kaydı veya /webmail apache redirect yönlendirmesi gibi.
ama bunlara uğraşmadan nasıl olsa mevcut /usr/local/cwpsrv/var/services/roundcube php versiyonu yetersiz mesajı veriyor o mesajı göstermeden subdomainli alanadınıza yönlendirelim.
cd /usr/local/cwpsrv/var/services/roundcube
nano index.php
<?php
header('Location: https://postasistemi.com/');
exit;
// buradan sonrası eski Roundcube kodu, dokunma onlar sabit kalsın ileride belki cwp bunun için bir geliştirme yaparsa sh /scripts/mail_roundcube_update ile güncelleriz ardından eklediğimiz iki satırı kaldırır sistemin kendisindeki ile çalışmaya devam ederiz. Bizim buradaki derdimiz İstenilen PHP sürünümü ile çalışan Roundcubenin aktif olması.
Gelelim 2095 ve 2096 nolu portların kapatılmasına, bunlarında kapatılmasının hiç bir sakıncası yoktur. Bunları CWP kullanıyor. Ancak 465, 25, 587, 110, 995, 143, 993, 10024, 10025, 4190 gibi portlar açık kalsın. posta servisinin ihtiyacı olan portlardır. yine 80, 443 web servisleri ile 2030, 2031, 2086, 2087 CWP nin portlarıda açık kalmalı.
Güvenlik duvarından 2095 ve 2096 kaldırmanız yeterli olmayabilir. CWP arka tarafta kullanmaya ve dolayısı ile portu açmaya devam edecektir. Bunu sonlandırmak için webmail ayarlarını okuduğu dosyayı kapatabilirsiniz. /webmail ve mail.alanadınız.com gibi isteklerde duracaktır. bunun içinde bir ayar yapacağız.
Yöntem 1
nano /usr/local/cwpsrv/conf.d/webmail.conf
listen 2095; ve listen 2096 bul
127.0.0.1:2095 ve 127.0.0.1:2096 ssl olarak düzenle kaydet ve çık.
systemctl status cwpsrv.service
netstat -tulpn | grep 209 ile kontrol et 127.0.0.1 üzerinden dinliyordur. böylelikle dışarıya kapalı içeriye açık olur cwp stop etmez
Yöntem 2
mv /usr/local/cwpsrv/conf.d/webmail.conf /usr/local/cwpsrv/conf.d/webmail.conf.disabled
nano /usr/local/apache/conf.d/postasistemi-redirects.conf
ayar dosyası içine aşağıdaki kodları ekleyin.
# Tüm domainler için merkezi webmail yönlendirme kuralları
# postasistemi.com ve *.postasistemi.com HARİÇ
RewriteEngine On
# 1) /webmail -> x.postasistemi.com
RewriteCond %{REQUEST_URI} ^/webmail/?$ [NC]
RewriteCond %{HTTP_HOST} !(^|\.)postasistemi\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^./]+)\..+$ [NC]
RewriteRule ^ https://%1.postasistemi.com/ [R=301,L]
# 2) mail.musteridomain.tld -> x.postasistemi.com
RewriteCond %{HTTP_HOST} !(^|\.)postasistemi\.com$ [NC]
RewriteCond %{HTTP_HOST} ^mail\.([^./]+)\..+$ [NC]
RewriteRule ^/?$ https://%1.postasistemi.com/ [R=301,L]
# 3) webmail.domain.tld -> x.postasistemi.com
RewriteCond %{HTTP_HOST} !(^|\.)postasistemi\.com$ [NC]
RewriteCond %{HTTP_HOST} ^webmail\.([^./]+)\..+$ [NC]
RewriteRule ^/?$ https://%1.postasistemi.com/ [R=301,L]
Dosyanınız kaydedip servisleri yeniden başlatın.
service cwpsrv restart
/usr/local/apache/bin/apachectl -t
Test etmek için alanadiniz.com : 2095 ve 2095 portu ile istek gönderin cevap alıp almayacaksınızdır. sh üzerinden kontrol etmek isterseniz aşağıdaki komut ilede kontrol edebilirsiniz. listelenmeyecektir.
ss -tulpn | grep 209
nano /usr/local/apache/conf/httpd.conf içinde son satırda
Include /usr/local/apache/conf.d/*.conf dosyası varmı diye kontrol edelim. varsa