Sunucu PHP Versiyon Bilgisi Gizleme
PHP (açılımı PHP: Hypertext Preprocessor) web dünyasında geniş kitleler tarafından kullanılan en populer betik (script) dillerindendir. Sunucunuzda yüklü, kullandığınız PHP versiyonu için bilinen cidd bir güvenlik zaafiyeti varsa, bu durum saldırganların işine yarayacaktır. İyi niyetli olmayan kişi ya da kişilerin işlerini en azından kolaylaştırmamalıyız aksine zorlaştırmalıyız. En güncel php sürümünü kullanıyor olsak da güvenlik söz konusu olunca işi riske atamayız ve alınması gerekli tedbirleri almalı zaafiyet oluşturacak kapıları kapatmalıyız. Güvenlik sebebiyle, saldırılardan kendinizi korumanız için sunucunuzun zayıflıklarını öğrenmek isteyen saldırganlardan bazen PHP versiyonunuzu gizlemeniz gerekebilir. Burada php versiyon (sürüm) gizleme işlemini bu amaç ile yapıyoruz.
Güvenlik, performans ve verimlilik adına web sunucunuzdaki php sürümünü (en güncel php) güncellemenizi tavsiye ederiz.
Web sunucumuzda ilgili php.ini dosyasını bulup içindeki expose_php değerini off şeklinde değiştirip bunu sisteme bildirmemiz gerekiyor.
Sunucu işletim sistemi ve kullanılan yazılımlara bağlı olarak php ayar dosyamız (php.ini) farklı konumlarda olabilmektedir:
- Freebsd işletim sistemlerinde php.ini konumu: /usr/local/etc/
- Plesk kontrol paneli php.ini konumu: /etc/php.ini şeklindedir.
Eğer multiphp (php selector) kullanıyorsanız /opt/plesk/php/7.x/etc/php.ini - Cpanel kontrol paneli php.ini konumu: /usr/local/lib/php.ini şeklindedir.
Eğer multiphp kullanıyorsanız /opt/cpanel/ea-php7x/root/etc/php.ini
Eğer php.ini dosyanızın tam olarak nerde olduğunu bilmiyorsanız komut istemcinize aşağıdaki komutları uygulayarak konumunu öğrenebilirsiniz.
[[email protected]]~$ php -i | grep "Loaded Configuration File"
Loaded Configuration File => /opt/plesk/php/7.2/etc/php.ini
[[email protected]]~$ find / -type f -name php.ini
/var/www/vhosts/system/sizinwebsiteniz.com/etc/php.ini
/etc/php.ini
/usr/local/psa/admin/conf/php.ini
/opt/plesk/php/7.4/etc/php.ini
/opt/plesk/php/7.3/etc/php.ini
/opt/plesk/php/7.2/etc/php.ini
/opt/plesk/php/7.1/etc/php.ini
/opt/plesk/php/5.6/etc/php.ini
Php ayar (php.ini) dosyamızın konumunu öğrendiğimize göre artık düzenleme işlemine geçebiliriz. Favori editörünüzü kullanarak ilgili php.ini dosyasını açınız ve expose_php değerini bulup karşısındaki on değerini off yaptıktan sonra dosyayı kayıt edip ve çıkınız.
[[email protected]]~$ vi /opt/plesk/php/7.x/etc/php.ini
expose_php = Off
Apache versiyonunu gizlemek için de httpd.conf dosyanızı favori editörünüzle açın ve aşağıdaki değişiklikleri yapınız. Dosyanın konumunu öğrenmek için aşağıdaki komutu kullanabilirsiniz.
[[email protected]]~$ find / -type f -name httpd.conf
Aşağıdaki satırları bulun ve aşağıdaki gibi tanımlama yapın. Eğer satır ekli değilse ekleyin.
[[email protected]]~$ vi /etc/httpd/conf/httpd.conf
ServerTokens ProductOnly
ServerSignature Off
Bundan sonra apache/nginx servisini yeniden başlatıyoruz. (Sunucunuzu yeniden de başlatabilirsiniz)
[[email protected]]~$ systemctl restart httpd
[[email protected]]~$ service nginx restart
[[email protected]]~$ systemctl restart apache2
[[email protected]]~$ service httpd restart
[[email protected]]~$ service apache2 restart
Şimdi son olarak aşağıdaki komutları uygulayarak, sunucunuzun hala PHP sürüm numaranızı gösterip göstermediğini kontrol edin.
[[email protected]]~$ lynx -head -mime_header http://localhost
[[email protected]]~$ lynx -head -mime_header http://sunucu-adresi