php.ini 增強安全性

  1. disablefunctions =exec,passthru,shellexec,system,procopen,popen,curlexec,curlmultiexec,parseinifile,show_source

  2. allowurlfopen=Off

  3. allowurlinclude=Off

  4. expose_php=Off
    http header (X-Powered-By) 不帶php info

  5. load less modules
    php -m 可看 module 列表
    rename 副檔名 ini 成 disable
    mv /etc/php.d/sqlite3.ini /etc/php.d/sqlite3.disable

  6. display_errors=Off
    lod error 但不讓 end user 看到

  7. file_uploads=Off
    關閉上傳檔案,如果必要,限制檔案大小

file_uploads=On  
upload_max_filesize=1M  
  1. sql.safe_mode=On

  2. magicquotesgpc=Off

  3. 避免執行過久,耗用資源,避免阻斷攻擊 DoS

max_execution_time =  30  
max_input_time = 30  
memory_limit = 40M  
  1. cgi.force_redirect=On

  2. openbasedir="/var/www/html/"
    限制 open
    basedir,只開放必要的folder

apache 增強安全性

  1. 避免 root 身份執行 apache server
    chown -R apache:apache /var/www/html/ /var/www/html/ 下的檔案權限 0444 /var/www/html/ 下的目錄權限 0445

  2. Jails
    應用虛擬化技術,Freebsd Jail, XEN, KVM or openVZ. 將伺服器跑在一個虛擬環境中

  3. 伺服器依照用途分類

    1. static asset
    2. php (cgi), 動態內容產生
    3. mysql,資料庫
    4. memcache,快取層,架在資料庫前面
    5. proxy and reverse proxy server,擋在所有機器前面,做 load balance。
  4. http://httpd.apache.org/docs/current/misc/security_tips.html
    apache 的 security tips