最近裝了一台 VestaCP 給系上用,感謝學長 peter279k 指導 PHP 的相關安全設定~!!
禁用 PHP 危險函式
PHP 有很多函式是可以看到作業系統層面的東西,甚至執行 Shell Script ,如果這臺機器只有自己一個人使用的話到倒是沒關係,公用主機的話勢必要關閉這些函式。
這次我難得強迫自己使用自己不熟的 RedHat 系 CentOS 7 XD(之前都用 Debian 整天 apt-get),學校的課程有學過 RHEL 是還滿 OK 的(希望能考個 RHCEXDDD)。
CentOS 7 的 PHP 設定檔位於 /etc/php.ini
,這次要編輯的是 disable_functions
。
用熟悉的編輯器打開 /etc/php.ini
(首推VIM),找到 disable_functions
,沒意外的話是空的,加點東西進去吧~。
存檔後 systemctl restart httpd
就可以了~
Ref Dangerous PHP Functions Must be Disabled
修正 phpMyAdmin 設定
禁用完函式後,會發現 phpMyAdmin 噴錯給你看,原因是 php_uname()
在剛剛被禁用了,好像是因為 VestaCP 安裝的 phpMyAdmin 雖然是新版的,但是卻保留舊設定才導致此現象發生,後來是在 phpMyAdmin 的 Github 找到修正的內容,再手動修改,如果沒有這個錯誤的話可以直接略過。
編輯一下 /usr/share/php/gettext/gettext.inc
,找到 function _bindtextdomain
,把裡面 if 判斷式的 substr(php_uname(), 0, 7) == "Windows"
改為 PATH_SEPARATOR == '\\'
就可以存檔了,詳情請參考 phpMyAdmin 的 Github 。
一樣 systemctl restart httpd
完就可以收工了。
將 FTP 設定為 FTPS
可以參考這篇 How To Configure vsftpd to Use SSL/TLS on a CentOS VPS
將 vsftpd 設定為 FTPS,避免被竄改內容。
其他內容,之後有遇到再紀錄吧~