DirectAdminde SSH ile php.ini disable_function Ayarlama

DirectAdminde SSH ile php.ini disable_function Ayarlama

DirectAdminde SSH ile php.ini disable_function Ayarlama

Siz de el ile tek tek disable_function ayarlamaktan bıktıysanız SSH üzerinden bu ayarları aşağıdaki şekilde kolayca yapabilirsiniz: Web sunucularında güvenliği artırmak için çeşitli önlemler alınır. PHP’nin sağladığı bazı fonksiyonlar, kötü amaçlı kullanıcılar tarafından istismar edilebilir. Bu nedenle, DirectAdmin kullanan sunucularda, belirli PHP fonksiyonlarının disable_functions ile devre dışı bırakılması önerilir. Bu makalede, SSH kullanarak farklı PHP sürümlerine ait php.ini dosyalarındaki disable_functions ayarlarının nasıl düzenleneceğini adım adım öğreneceksiniz.

disable_functions Nedir?

PHP’nin disable_functions direktifi, belirli PHP fonksiyonlarının sunucuda çalıştırılmasını engeller. Bu fonksiyonlar arasında exec, system, shell_exec gibi işletim sistemi seviyesinde komut çalıştıran fonksiyonlar bulunur. Bu tür fonksiyonların devre dışı bırakılması, özellikle kötü amaçlı kodların sunucuyu istismar etmesini önler.

Hedefimiz

Bu çalışmada, aşağıdaki fonksiyonları tüm PHP sürümleri için devre dışı bırakacağız:

exec, system, passthru, shell_exec, proc_close, proc_open, dl, popen, show_source,

posix_kill, posix_mkfifo, posix_getpwuid, posix_setpgid, posix_setsid,

posix_setuid, posix_setgid, posix_seteuid, posix_setegid, posix_uname, mail

Gerekli Adımlar

1. SSH ile Sunucuya Bağlanma

SSH istemcisi kullanarak sunucunuza bağlanın. Örneğin:

ssh root@sunucu_ip_adresi

root şifrenizi girdikten sonra sunucunuza giriş yapmış olacaksınız.

2. PHP.ini Dosyalarının Konumlarını Bulma

DirectAdmin’de, her PHP sürümü için ayrı bir php.ini dosyası bulunur. Bu dosyalar genellikle şu dizinlerde yer alır:

/usr/local/php72/lib/php.ini

/usr/local/php73/lib/php.ini

/usr/local/php74/lib/php.ini

/usr/local/php81/lib/php.ini

/usr/local/php82/lib/php.ini

/usr/local/php83/lib/php.ini

Her dosya, ilgili PHP sürümünün yapılandırma ayarlarını içerir.

3. disable_functions Ayarını Güncelleyen Script

Manuel olarak her dosyayı düzenlemek zaman alabilir ve hataya açık bir süreçtir. Bunun yerine, aşağıdaki Bash scriptini kullanarak tüm dosyaları otomatik olarak düzenleyebilirsiniz.

Script:

#!/bin/bash

# PHP ini dosyalarının listesi
PHP_INI_FILES=(
    "/usr/local/php72/lib/php.ini"
    "/usr/local/php73/lib/php.ini"
    "/usr/local/php74/lib/php.ini"
    "/usr/local/php81/lib/php.ini"
    "/usr/local/php82/lib/php.ini"
    "/usr/local/php83/lib/php.ini"
)

# Yeni disable_functions değeri
DISABLE_FUNCTIONS="disable_functions = exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname,mail"

# Her ini dosyasını düzenle
for INI_FILE in "${PHP_INI_FILES[@]}"; do
    if [ -f "$INI_FILE" ]; then
        # disable_functions satırını düzenle veya ekle
        sed -i "/^disable_functions\s*=/c\\$DISABLE_FUNCTIONS" "$INI_FILE"
        echo "Updated: $INI_FILE"
    else
        echo "File not found: $INI_FILE"
    fi
done

# PHP hizmetlerini yeniden başlat
echo "Restarting PHP services..."
for VERSION in 72 73 74 81 82 83; do
    service php-fpm$VERSION restart
    echo "Restarted PHP-FPM $VERSION"
done

echo "All operations completed."  

4. Scripti Kaydetme ve Çalıştırma

1. Scripti bir dosyaya kaydedin. Örneğin:

nano update_php_ini.sh

2. Yukarıdaki kodu yapıştırın ve kaydedin (CTRL + O ve ardından CTRL + X ile).

3. Scripti çalıştırılabilir hale getirin:

chmod +x update_php_ini.sh

4. Scripti çalıştırın:

./update_php_ini.sh

Script çalıştırıldığında:

• php.ini dosyalarındaki disable_functions direktifi güncellenecek.

• İlgili PHP-FPM hizmetleri yeniden başlatılacak.

5. Değişiklikleri Doğrulama

Değişikliklerin başarılı bir şekilde uygulandığını doğrulamak için herhangi bir php.ini dosyasını kontrol edebilirsiniz:

cat /usr/local/php72/lib/php.ini | grep disable_functions

Bu komut, disable_functions satırını gösterecektir.

6. PHP-FPM Yeniden Başlatma

Scriptin başarısız olması durumunda PHP-FPM hizmetlerini manuel olarak yeniden başlatabilirsiniz:

service php-fpm72 restart

service php-fpm73 restart

service php-fpm74 restart

service php-fpm81 restart

service php-fpm82 restart

service php-fpm83 restart

7. Olmuş mu kontrol edelim

grep "disable_functions" /usr/local/php72/lib/php.ini

Olası Hatalar ve Çözümleri

1. Dosya Bulunamıyor Hatası:

Eğer bir php.ini dosyası bulunamazsa, belirtilen PHP sürümü sunucuda yüklü olmayabilir. Yüklemek için DirectAdmin panelinizden ilgili PHP sürümünü ekleyin.

2. Hizmet Başlatılamıyor:

• Yeniden başlatma sırasında hata alıyorsanız, aşağıdaki komutla hata günlüklerini kontrol edin:

journalctl -xe

3. Değişikliklerin Uygulanmaması:

• disable_functions ayarının çalışmadığını düşünüyorsanız, PHP’nin çalıştırdığı konfigürasyon dosyasını kontrol edin:

php -i | grep "Loaded Configuration File"
DirectAdmin’de SSH ile php.ini disable_function Ayarlama
DirectAdmin’de SSH ile php.ini disable_function Ayarlama

Özet

DirectAdmin kullanan sunucularınızda güvenliği artırmak için disable_functions direktifini ayarlamak oldukça önemlidir. Yukarıdaki adımları takip ederek, PHP’nin kritik fonksiyonlarını kolayca devre dışı bırakabilirsiniz. Bu süreç, manuel işlemleri minimize eder ve sunucunuzu olası güvenlik tehditlerine karşı daha dayanıklı hale getirir.

© 2024 Tüm Hakları Saklıdır. Aior.com Tarafından yapılmıştır.

Tüm soru, öneri ve görüşleriniz için İletişim linkini kullanabilirsiniz.

05.12.2024
35
Ziyaretçi Yorumları

Henüz yorum yapılmamış. İlk yorumu aşağıdaki form aracılığıyla siz yapabilirsiniz.