將Ubuntu系統更新到最新狀態,在做任何操作之前都要做這一步,以確保系統的穩定,同時也不會有一些莫名其妙的現象出現。
$sudo apt-get update
$sudo apt-get dist-upgrade
安裝PHP支持
$sudo apt-get install libapache2-mod-php5
$sudo apt-get install php5
如果想支持圖形就加php5-gd,如果想支持Mysql就加php5-mysql,這裡之所以要單獨列出libapache2-mod-php5,主要是由於php5的依賴關系沒有做好,有可能會安裝上libapache-mod-php4的包,所以為了避免不必要的麻煩,干脆還是單獨指定比較好。如果有朋友還是會出現問題,請在新立得中查找libapache-mod-php4包,如果安裝的話請將其刪除。
修改PHP配置文件,以限制內存和文件最大上傳尺寸
我們編輯/etc/php5/apache2/php.ini文件,先做一般配置,在改動之前,請先將該配置文件做個備份。以便在出錯的時候可以恢復。
...
memory_limit == 8M ==>修改成你所需的內存大小
upload_max_filesize == 2M ==>修改文件最大上傳尺寸
...
extension=mysql.so 支持Mysql服務
extension=gd.so 支持gd函數
...
其實在Ubuntu下,如果你安裝了php5-mysql和php5-gd之後,會自動修改以上二行的,我們做的只不過是確認一下它們前面的注釋符是否去掉。
a. 目前大多數php的open source都是用php4寫的,為了兼容以前的php版本,有時需要將register_long_arrays打開,否則$HTTP_GET_VARS和$HTTP_POST_VARS等變量將無法使用,會出現一些莫名其妙的問題。 a. 另外,在裝完php5後最好確認一下/etc/apache2/mods-enabled/下是否有鏈接:
php5.load -> /etc/apache2/mods-available/php5.load
加固PHP,以增強安全性。注意,下面的安全性要因情況而定,所以我已經把它們的功能寫清楚了,如果有問題的話,看看是否由於下面哪種限制條件所造成,可相應將其注釋掉。那麼讓我們開始吧,我們將再次編輯/etc/php5/apache2/php.ini文件,之所以沒有一次改完,主要是為了給大家一個清晰的思路。
#打開安全模式,打開他的好處就是PHP文件只能訪問所有者和PHP文件所有著一樣的文件,即使在chroot環境下也無法訪問jail 中屬主不一樣的文件,類似於php shell這樣的後門就沒用武之地了哦,phpshell是很流行的php後門,他可以執行系統命令,就象他的名字一樣,和shell很接近。
safe_mode = On
#清注意,安全模式打開一個會導致judge online一類有調用外部程序的php無法工作。
#下面的設置就限制了fopen(), file()等函數可以操作的目錄范圍,避免了入侵者非法讀取文件,一定要在/var/www後面加"/",否則/var/wwww下的文件也能被訪問。該選項會禁止任何不在/var/www/目錄下的PHP文件運行,包括任何以軟鏈接方式鏈到/var/www/目錄下的程序,如PhpMyAdmin 包,就在該選項設定後無法正常運行。
open_basedir = /var/www/
#禁止使用phpinfo和get_cfg_var函數,這樣可以避免洩露服務信息,一般在在確認PHP能正常工作之後再使之關閉
disable_functions = phpinfo,get_cfg_var
#設置php程序錯誤日志
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_err.log
#如果php程序沒有指明需要register_globals的話,最好把register_globals設置為Off,這樣可以避免很多安全問題的。注意,如果你的程序是需要register_globals的話,可千萬別關。Ubuntu默認是關閉的。
register_globals = Off
#禁止打開遠程地址,記得最近出的php include的那個漏洞嗎?就是在一個php程序中include了變量,那麼入侵者就可以利用這個控制服務器在本地執行遠程的一個php程序,例如phpshell,所以我們關閉這個。
allow_url_fopen = Off
OK,打完收功!