Sunucu PHP Versiyon Bilgisi Gizleme

php-versiyon-surum-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.

[root@sunucu]~$ php -i | grep "Loaded Configuration File" 
 Loaded Configuration File => /opt/plesk/php/7.2/etc/php.ini
[root@sunucu]~$ 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.

[root@sunucu]~$ 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.

[root@sunucu]~$ 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.

[root@sunucu]~$ vi /etc/httpd/conf/httpd.conf
ServerTokens ProductOnly 
ServerSignature Off

Bundan sonra  apache/nginx servisini yeniden başlatıyoruz. (Sunucunuzu yeniden de başlatabilirsiniz)

[root@sunucu]~$ systemctl restart httpd
[root@sunucu]~$ service nginx restart
[root@sunucu]~$ systemctl restart apache2
[root@sunucu]~$ service httpd restart
[root@sunucu]~$ 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.

[root@sunucu]~$ lynx -head -mime_header http://localhost
[root@sunucu]~$ lynx -head -mime_header http://sunucu-adresi

Hakkında Ahmet Bolu

İlginizi çekebilir

firewalld-linux-guvenlik-duvari

FirewallD Nedir ve Nasıl Kurulur? [ CentOS 8 ]

Bu yazımızda CentOS 8 üzerine Firewalld kurulumu anlatılmaktadır. Firewalld(Dynamic Firewall) Nedir? Sunucumuza gelen trafik ve …