精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

系統管理員必須知道的PHP安全實踐

譯文
系統 新聞
PHP是一種開源服務器端腳本語言,很多開發者都在使用PHP進行開發。PHP在使用的時候會通過HTTP或HTTPS協議,訪問文件和內容。所以,使用PHP時要小心。以下是25個PHP安全方面的最佳實踐,可供系統管理員們安全地配置PHP。

【51CTO 2011年11月30日外電頭條】PHP是一種開源服務器端腳本語言,應用很廣泛。Apache web服務器提供了這種便利:通過HTTP或HTTPS協議,訪問文件和內容。配置不當的服務器端腳本語言會帶來各種各樣的問題。所以,使用PHP時要小心。以下是25個PHP安全方面的最佳實踐,可供系統管理員們安全地配置PHP。

為PHP安全提示而提供的示例環境

文件根目錄(DocumentRoot):/var/www/html
默認的Web服務器:Apache(可以使用Lighttpd或Nginx來取代Apache)
默認的PHP配置文件:/etc/php.ini
默認的PHP加載模塊配置目錄:/etc/php.d/
我們的示例php安全配置文件:/etc/php.d/security.ini(需要使用文本編輯器來創建該文件)
操作系統:RHEL/CentOS/Fedora Linux(相關指令應該與Debian/Ubuntu等其他任何Linux發行版或者OpenBSD/FreeBSD/HP-UX等其他類似Unix的操作系統兼容)。
默認的php服務器TCP/UDP端口:無

為本文所列的大多數操作編寫代碼時,假定它們將由運行bash外殼程序或其他任何現代外殼程序的根用戶來執行:

$ php -v

示例輸出:

PHP 5.3.3 (cli) (built: Oct 24 2011 08:35:41)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

出于演示的用途,我會使用以下操作系統:

$ cat /etc/redhat-release

示例輸出:

Red Hat Enterprise Linux Server release 6.1 (Santiago)

第1個最佳實踐:了解你的對手

基于PHP的應用程序面臨不同類型的攻擊。我注意到了幾種不同類型的攻擊:

1. XSS:跨站腳本是Web PHP應用程序中的一種安全漏洞,攻擊者可以利用該漏洞來竊取用戶的信息。你可以配置Apache,編寫更安全的PHP腳本(驗證所有的用戶輸入),以避免XSS攻擊。

2. SQL注入攻擊:這是PHP應用程序的數據庫層中的安全漏洞。用戶輸入不正確地過濾時,應用程序就能執行任何SQL語句。你可以配置Apache,編寫安全代碼(驗證和轉換所有的用戶輸入),以避免SQL注入攻擊。PHP中的一個常見做法是,在發送SQL查詢之前,使用名為mysql_real_escape_string()的函數,轉換參數。

3. 文件上傳:它讓訪客可以將文件放在(將文件上傳到)你的服務器上。這會帶來眾多安全問題,比如刪除你的文件、刪除數據庫、獲取用戶詳細資料,不一而足。你可以使用php來禁用文件上傳,或編寫安全代碼(比如驗證用戶輸入,只允許PNG或GIF等圖像文件類型)。

4. 添加本地和遠程文件:攻擊者可以從遠程服務器打開文件,執行任何PHP代碼。這讓他們得以上傳文件、刪除文件和安裝后門。可以配置php以禁用遠程文件執行功能。

5. eval() :將字符串作為PHP代碼來進行評估。攻擊者常常利用該函數來隱藏其在服務器本身上面的代碼和工具。你可以配置PHP,禁用eval()。

6. sea-surf攻擊(跨站請求偽造,CSRF):這種攻擊迫使最終用戶針對目前已驗證其身份的Web應用程序執行有害的操作。如果是平常的用戶,得逞的CSRF攻擊會危及最終用戶的數據和操作。但如果被盯上的最終用戶使用管理員帳戶,這會危及整個Web應用程序。#p#

第2個最佳實踐:查找內置的PHP模塊

想查看一組編譯進去的PHP模塊,請輸入以下命令:

# php -m

示例輸出:

[PHP模塊]

apc
bcmath
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
imap
json
libxml
mbstring
memcache
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
suhosin
tokenizer
wddx
xml
xmlreader
xmlrpc
xmlwriter
xsl
zip
zlib

[Zend模塊]

Suhosin

我建議你使用模塊數量減少的PHP,以增強性能和安全。比如說,你可以通過刪除(移除)配置文件或者更名(或移動)一個名為/etc/php.d/sqlite3.ini的文件來禁用sqlite3模塊,操作如下:

# rm /etc/php.d/sqlite3.ini

或者

# mv /etc/php.d/sqlite3.ini /etc/php.d/sqlite3.disable

其他編譯進去的模塊只能通過重新安裝精簡配置的PHP來移除。可以從php.net下載php源代碼,然后按以下方法編譯它,支持GD、fastcgi和MySQL:

./configure --with-libdir=lib64 --with-gd --with-mysql --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --cache-file=../config.cache --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-fastcgi --enable-force-cgi-redirect

參閱如何編譯php,并重新安裝到類似Unix的操作系統上(http://www.php.net/manual/en/install.unix.php),以了解更多信息。#p#

第3個最佳實踐:限制PHP信息泄露

要限制PHP信息泄露,就要禁用expose_php。編輯/etc/php.d/secutity.ini,執行以下指令:

expose_php=Off

啟用后,expose_php向外界報告PHP安裝在服務器上,這包括HTTP頭里面的PHP版本(如X-Powered-By: PHP/5.3.3)。PHP標識的全局唯一標識符(GUID,見示例http://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42)也顯示出來,因而將它們添加到支持PHP的網站的URL后面,就會顯示相應標識。expose_php啟用后,你可以使用以下命令,查看PHP版本:

$ curl -I http://www.cyberciti.biz/index.php

示例輸出:

HTTP/1.1 200 OK
X-Powered-By: PHP/5.3.3
Content-type: text/html; charset=UTF-8
Vary: Accept-Encoding, Cookie
X-Vary-Options: Accept-Encoding;list-contains=gzip,Cookie;string-contains=wikiToken;string-contains=wikiLoggedOut;string-contains=wiki_session
Last-Modified: Thu, 03 Nov 2011 22:32:55 GMT
...

我還建議,你應在httpd.conf中執行ServerTokens和ServerSignature命令,隱藏Apache版本及其他信息(http://www.cyberciti.biz/faq/rhel-centos-hide-httpd-version/)。

第4個最佳實踐:盡量減少可裝入的PHP模塊(動態加載模塊)

PHP支持“動態加載模塊”(Dynamic Extensions)。默認情況下,RHEL裝入/etc/php.d/目錄里面的所有加載模塊。要啟用或禁用某一個模塊,只要在/etc/php.d/目錄中找到配置文件、為模塊名稱添加注釋。你還可以更名或刪除模塊配置文件。想獲得最佳的PHP性能和安全,你應該只啟用Web應用程序需要的加載模塊。比如說,要禁用gd加載模塊,輸入以下命令:

# cd /etc/php.d/
# mv gd.{ini,disable}
# /sbin/service httpd restart

要啟用名為gd的php模塊,請輸入:

# mv gd.{disable,ini}
# /sbin/service httpd restart

#p#

第5個最佳實踐:將所有PHP錯誤記入日志

別讓PHP錯誤信息暴露在網站的所有訪客面前。編輯/etc/php.d/security.ini,執行以下指令:

display_errors=Off

確保你將所有PHP錯誤記入到日志文件中(http://www.cyberciti.biz/tips/php-howto-turn-on-error-log-file.html):

log_errors=On
error_log=/var/log/httpd/php_scripts_error.log

第6個最佳實踐:不允許上傳文件

出于安全原因,編輯/etc/php.d/security.ini,執行以下命令:

file_uploads=Off

如果使用你應用程序的用戶需要上傳文件,只要設置upload_max_filesize(http://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/),即可啟用該功能,該設置限制了PHP允許通過上傳的文件的最大值:

file_uploads=On

# 用戶通過PHP上傳的文件最大1MB

upload_max_filesize=1M

第7個最佳實踐:關閉遠程代碼執行

如果啟用,allow_url_fopen允許PHP的文件函數——如file_get_contents()、include語句和require語句——可以從遠程地方(如FTP或網站)獲取數據。

allow_url_fopen選項允許PHP的文件函數——如file_get_contents()、include語句和require語句——可以使用FTP或HTTP協議,從遠程地方獲取數據。編程員們常常忘了這一點,將用戶提供的數據傳送給這些函數時,沒有進行適當的輸入過濾,因而給代碼注入安全漏洞留下了隱患。基于PHP的Web應用程序中存在的眾多代碼注入安全漏洞是由啟用allow_url_fopen和糟糕的輸入過濾共同引起的。編輯/etc/php.d/security.ini,執行以下指令:

allow_url_fopen=Off

出于安全原因,我還建議禁用allow_url_include:

allow_url_include=Off

#p#

第8個最佳實踐:啟用SQL安全模式

編輯/etc/php.d/security.ini,執行以下指令:

sql.safe_mode=On

如果啟用,mysql_connect()和mysql_pconnect()就忽視傳送給它們的任何變量。請注意:你可能得對自己的代碼作一些更改。sql.safe_mode啟用后,第三方開源應用程序(如WorkdPress)及其他應用程序可能根本運行不了。我還建議你針對所有安裝的php 5.3.x關閉magic_quotes_gpc(http://php.net/manual/en/security.magicquotes.php),因為它的過濾并不有效、不是很可靠。mysql_escape_string()和自定義過濾函數能起到更好的作用(向Eric Hansen致謝,https://www.facebook.com/EricHansen.SFU):

magic_quotes_gpc=Off

第9個最佳實踐:控制POST請求的大小

作為請求的一部分,客戶機(瀏覽器或用戶)需要將數據發送到Apache Web服務器時,比如上傳文件或提交填好的表單時,就要用到HTTP POST請求方法。攻擊者可能會企圖發送過大的POST請求,大量消耗你的系統資源。你可以限制PHP將處理的POST請求的最大大小。編輯/etc/php.d/security.ini,執行以下命令:

; 在此設置實際可行的值

post_max_size=1K

1K設置了php應用程序允許的POST請求數據的最大大小。該設置還影響文件上傳。要上傳大容量文件,這個值必須大于upload_max_filesize。我還建議你限制使用Apache Web服務器的可用方法。編輯httpd.conf,執行針對文件根目錄/var/www/html的以下指令:

<Directory /var/www/html>
       <LimitExcept GET POST>
               Order allow,deny
    </LimitExcept>

## 可在此添加配置的其余部分... ##

</Directory>

第10個最佳實踐:資源控制(拒絕服務控制)

你可以設置每個php腳本的最長執行時間,以秒為單位。另一個建議的選項是設置每個腳本可能用于解析請求數據的最長時間,以及腳本可能耗用的最大內存數量。編輯/etc/php.d/security.ini,執行以下命令:

# 設置,以秒為單位

max_execution_time = 30
max_input_time = 30
memory_limit = 40M

第11個最佳實踐:為PHP安裝Suhosin高級保護系統

來自Suhosin項目網頁(http://www.hardened-php.net/suhosin/):

Suhosin是一款高級的保護系統,面向安裝的PHP。它旨在保護服務器和用戶,遠離PHP應用程序和PHP核心中的已知缺陷和未知缺陷。Suhosin分兩個獨立部分,可以單獨使用,也可以組合使用。第一個部分是針對PHP核心的小補丁,實施了幾個低級防護措施,以防范緩沖器溢出或格式字符串安全漏洞;第二個部分是功能強大的PHP加載模塊,實施了其他所有的保護措施。

看看如何在Linux操作系統下安裝和配置suhosin(http://www.cyberciti.biz/faq/rhel-linux-install-suhosin-php-protection/)。

第12個最佳實踐:禁用危險的PHP函數

PHP有許多函數,如果使用不當,它們可以用來闖入你的服務器。你可以使用disable_functions命令,在/etc/php.d/security.ini中禁用一系列函數:

disable_functions=exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

#p#

第13個最佳實踐:PHP Fastcgi/CGI - cgi.force_redirect命令

PHP可與FastCGI協同工作。 Fascgi減少了Web服務器占用的內存資源,但是仍為你提供了整個PHP語言具有的速度和功能。你可以配置Apache2+PHP+FastCGI或cgi,如這里描述的那樣。配置命令cgi.force_redirect可以防止任何人使用http://www.cyberciti.biz/cgi-bin/php/hackerdir/backdoor.php這樣的地址,直接調用PHP。出于安全原因,應啟用cgi.force_redirect。編輯/etc/php.d/security.ini,執行以下命令:

; 出于安全原因,在典型的*Apache+PHP-CGI/FastCGI*環境中,啟用cgi.force_redirect

cgi.force_redirect=On

第14個最佳實踐:PHP用戶和用戶組ID

mod_fastcgi是面向Apache Web服務器的cgi模塊。它可以連接至外部的FASTCGI服務器。你要確保PHP以非根目錄用戶的身份來運行。如果PHP以根目錄或100以下UID的身份來運行,它可以訪問及/或處理系統文件。你必須使用Apache的suEXEC或mod_suPHP,以非特權用戶的身份來執行PHP CGI。suEXEC功能讓Apache用戶們能夠以有別于調用Web服務器的用戶ID的用戶ID來運行CGI程序。在該示例中,我的php-cgi以phpcgi用戶的身份來運行,Apache以apache用戶的身份來運行:

# ps aux | grep php-cgi

示例輸出:

phpcgi      6012 0.0 0.4 225036 60140 ?        S    Nov22   0:12 /usr/bin/php-cgi
phpcgi      6054 0.0 0.5 229928 62820 ?        S    Nov22   0:11 /usr/bin/php-cgi
phpcgi      6055 0.1 0.4 224944 53260 ?        S    Nov22   0:18 /usr/bin/php-cgi
phpcgi      6085 0.0 0.4 224680 56948 ?        S    Nov22   0:11 /usr/bin/php-cgi
phpcgi      6103 0.0 0.4 224564 57956 ?        S    Nov22   0:11 /usr/bin/php-cgi
phpcgi      6815 0.4 0.5 228556 61220 ?        S    00:52   0:19 /usr/bin/php-cgi
phpcgi      6821 0.3 0.5 228008 61252 ?        S    00:55   0:12 /usr/bin/php-cgi
phpcgi      6823 0.3 0.4 225536 58536 ?        S    00:57   0:13 /usr/bin/php-cgi

你可以使用spawn-fcgi等工具,以phpcgi用戶的身份(先要為系統添加phpcgi用戶)來創建遠程和本地FastCGI進程:

# spawn-fcgi -a 127.0.0.1 -p 9000 -u phpcgi -g phpcgi -f /usr/bin/php-cgi

現在,你可以配置Apache、Lighttpd和Nginx web服務器了,使用在127.0.0.1 IP地址處端口9000上運行的php FastCGI。

第15個最佳實踐:限制PHP對文件系統的訪問

open_basedir命令設置了允許PHP使用fopen()和其他函數來訪問哪些目錄的文件。如果文件在open_basdir定義的路徑外面,PHP就拒絕打開該文件。你無法使用符號鏈接作為變通辦法。比如說,只允許訪問/var/www/html目錄、不允許訪問/var/www、/tmp或/etc目錄:

限制PHP進程訪問/var/www/html/等專門指定的目錄外面的文件

; Limits the PHP process from accessing files outside
; of specifically designated directories such as /var/www/html/
open_basedir="/var/www/html/"
; ------------------------------------
; Multiple dirs example
; open_basedir="/home/httpd/vhost/cyberciti.biz/html/:/home/httpd/vhost/nixcraft.com/html/:/home/httpd/vhost/theos.in/html/"
; ------------------------------------

第16個最佳實踐:會話路徑

PHP中的會話支持包括在隨后的訪問中保留某些數據的一種方法。這讓你能夠開發更加定制的應用程序,并加大網站的吸引力。該路徑在/etc/php.ini文件中定義,與某一個會話有關的所有數據都將存放在session.save_path選項指定的目錄下的文件中。在RHEL/CentOS/Fedora Linux下,默認路徑如下:

session.save_path="/var/lib/php/session"

;設置用于上傳文件時存儲文件的臨時目錄

upload_tmp_dir="/var/lib/php/session"

確保路徑是outside /var/www/html,而且無法被其他任何系統用戶讀取或寫入

# ls -Z /var/lib/php/

示例輸出:

drwxrwx---. root apache system_u:object_r:httpd_var_run_t:s0 session

注意:ls命令的-Z選項顯示了SELinux 安全上下文,比如文件模塊、用戶、用戶組、安全上下文和文件名稱。#p#

第17個最佳實踐:保持PHP、軟件和操作系統版本最新

打安全補丁是維護Linux、Apache、PHP和MySQL服務器的一個重要環節。應該使用以下其中任何一個工具(如果你通過軟件包管理器來安裝PHP),盡快檢查所有的PHP安全更新版本,并盡快打上:

# yum update

# apt-get update && apt-get upgrade

你可以配置紅帽/CentOS/Fedora Linux,以便通過電子郵件發送yum軟件包更新通知。另一個選項是通過cron job(計劃任務)打上所有的安全更新版。在Debian/Ubuntu Linux下,可以使用apticron來發送安全通知。

注意:經常訪問php.net(http://php.net/),尋找源代碼安裝的最新版本。

第18個最佳實踐:限制文件和目錄訪問

確保你以Apache或www等非根用戶的身份來運行Apache。所有文件和目錄都應該歸非根用戶(或apache用戶)所有,放在/var/www/html下:

# chown -R apache:apache /var/www/html/

/var/www/html/是個子目錄,這是其他用戶可以修改的文件根目錄,因為根目錄從來不在那里執行任何文件,也不會在那里創建文件。

確保在/var/www/html/下,文件權限設成了0444(只讀):

# chmod -R 0444 /var/www/html/

確保在/var/www/html/下,所有目錄權限設成了0445:

# find /var/www/html/ -type d -print0 | xargs -0 -I {} chmod 0445 {}

關于設置合適文件權限的補充

chown和chmod命令確保:不管在什么情況下,文件根目錄或文件根目錄里面的文件都可以被Web服務器用戶apache寫入。請注意:你需要設置對你網站的開發模型最合理的權限,所以可以根據自身需要,隨意調整chown和chmod命令。在這個示例中,Apache服務器以apache用戶的身份來運行。這可以在你的httpd.conf文件中用User和Group命令來配置。apache用戶需要對文件根目錄下的所有內容享有讀取訪問權,但是不應該享有寫入訪問權。

確保httpd.conf有以下命令,實現限制性配置:

<Directory / >
    Options None
    AllowOverride None
    Order allow,deny
</Directory>

你只要在需要時才應該授予寫入訪問權。WordPress等一些Web應用程序及其他應用程序可能需要緩存目錄。你可以使用以下命令,授予寫入到緩沖目錄的訪問權:

# chmod a+w /var/www/html/blog/wp-content/cache
### block access to all ###
# echo 'deny from all' > /var/www/html/blog/wp-content/cache/.htaccess

第19個最佳實踐:寫保護Apache、PHP和MySQL配置文件

使用chattr命令來寫保護配置文件:

# chattr +i /etc/php.ini
# chattr +i /etc/php.d/*
# chattr +i /etc/my.ini
# chattr +i /etc/httpd/conf/httpd.conf
# chattr +i /etc/

chattr命令還可以寫保護/var/www/html目錄中的一個php文件或多個文件:

# chattr +i /var/www/html/file1.php
# chattr +i /var/www/html/

第20個最佳實踐:使用Linux安全加載模塊(如SELinux

Linux自帶各種安全補丁,可以用來防護配置不當或受到危及的服務器程序。可能的話,使用SELinux及其他Linux安全加載模塊,對網絡及其他程序實行限制。比如說,SELinux為Linux內核和Apache Web服務器提供了眾多安全策略。要列出所有的Apache SELinux保護變量,請輸入:

# getsebool -a | grep httpd

示例輸出:

allow_httpd_anon_write --> off
allow_httpd_mod_auth_ntlm_winbind --> off
allow_httpd_mod_auth_pam --> off
allow_httpd_sys_script_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> on
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_read_user_content --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_tmp_exec --> off
httpd_tty_comm --> on
httpd_unified --> on
httpd_use_cifs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off

要禁用Apache cgi支持,請輸入:

# setsebool -P httpd_enable_cgi off

參閱紅帽SELinux指南(http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/index.html),即可了解更多信息。

第21個最佳實踐:安裝Mod_security

ModSecurity是一個保護Web應用程序的開源入侵檢測和預防引擎。你在Linux下很容易安裝mod_security,安裝后就能保護基于Apache和PHP的應用程序,遠離XSS及其他各種攻擊:

##幾個實例##
#不允許打開/etc/中的文件

SecFilter /etc/

#阻止SQL注入攻擊

SecFilter "delete[[:space:]]+from"
SecFilter "select.+from"

第22個最佳實踐:盡可能在chroot jail環境中運行Apache / PHP

將PHP及/或Apache放在chroot jail環境中可以盡量減小潛在的入侵事件造成的破壞,因為它將Web服務器隔離到文件系統的一小部分。你可以使用Apache自帶的那種傳統的chroot jail環境。不過建議使用FreeBSD jail、運用容器概念的XEN虛擬化、KVM虛擬化或OpenVZ虛擬化。#p#

第23個最佳實踐:使用防火墻限制出站連接

攻擊者會使用wget之類的工具,將文件本地下載到你的Web服務器上。你可以使用iptables阻止apache用戶的出站連接。ipt_owner模塊會試圖比對本地創建的數據包與數據包創建者的各個特點。它只有在OUTPUT鏈中才有效。在這個示例中,允許vivek用戶使用端口80連接外界(這適用于RHN或centos repo訪問)。

      /sbin/iptables -A OUTPUT -o eth0 -m owner --uid-owner vivek -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

下面是另一個示例,阻止apache用戶的所有出站連接(通向我們自己的smtp服務器的出站連接除外),以及垃圾郵件驗證API服務:

# ....
/sbin/iptables --new-chain apache_user
/sbin/iptables --append OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables --append OUTPUT -m owner --uid-owner apache -j apache_user
# allow apache user to connec to our smtp server
/sbin/iptables --append apache_user -p tcp --syn -d 192.168.1.100 --dport 25 -j RETURN
# Allow apache user to connec to api server for spam validation
/sbin/iptables --append apache_user -p tcp --syn -d 66.135.58.62 --dport 80 -j RETURN
/sbin/iptables --append apache_user -p tcp --syn -d 66.135.58.61 --dport 80 -j RETURN
/sbin/iptables --append apache_user -p tcp --syn -d 72.233.69.89 --dport 80 -j RETURN
/sbin/iptables --append apache_user -p tcp --syn -d 72.233.69.88 --dport 80 -j RETURN
#########################
## Add more rules here ##
#########################
# No editing below
# Drop everything for apache outgoing connection
/sbin/iptables --append apache_user -j REJECT

第24個最佳實踐:關注日志和審查

檢查apache日志文件:

# tail -f /var/log/httpd/error_log
# grep 'login.php' /var/log/httpd/error_log
# egrep -i "denied|error|warn" /var/log/httpd/error_log

檢查php日志文件:

# tail -f /var/log/httpd/php_scripts_error.log
# grep "...etc/passwd" /var/log/httpd/php_scripts_error.log

日志文件讓你對于服務器遭到什么攻擊有所了解,并讓你可以檢查必要的安全級別有沒有落實到位。提供了用于系統審查的auditd服務。啟用該服務,就可以審查SELinux事件、驗證事件、文件修改和帳戶修改等。我還建議使用標準的Linux系統監測工具(http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html),用于監測你的Web服務器。

第25個最佳實踐:按照系統或虛擬機實例來運行服務

對于安裝的大型系統來說,建議你借助不同的服務器運行數據庫、靜態內容和動態內容。

(圖1:在不同的服務器上運行服務)

在不同的服務器或虛擬機實例上運行不同的網絡服務。這限制了可能受到危及的其他服務的數量。比如說,如果攻擊者成功地利用了Apache flow等軟件的漏洞,就能訪問整個服務器,包括在同一臺服務器上運行的其他服務(比如MySQL和電子郵件服務等)。但是在上述例子中,按以下方式提供不同內容:

1. static.lan.cyberciti.biz:使用lighttpd或nginx服務器,用于提供js/css/images等靜態資產。

2. phpcgi1.lan.cyberciti.bizphpcgi2.lan.cyberciti.biz:Apache web服務器,php用于生成動態內容。

3. mysql1.lan.cyberciti.biz:MySQL數據庫服務器。

4. mcache1.lan.cyberciti.biz:Memcached服務器是用于MySQL的速度非常快的緩存系統。它使用libevent或epoll(Linux運行時環境),可以擴展至任何數量的打開的連接,并使用非阻塞的網絡輸入/輸出。

5. LB01:放在Apache Web服務器前面的nginx Web服務器和反向代理服務器。 從互聯網進入到其中一臺Web服務器的所有連接均通過nginx代理服務器來傳送,該代理服務器可以本身處理請求,也可以將請求全部或部分傳送到主Web服務器。LB01提供了簡單的負載均衡機制。#p#

第26個最佳實踐:其他工具

來自PHPIDS項目網頁(https://phpids.org/):

PHPIDS(PHP入侵檢測系統)是面向基于PHP的web應用程序的安全層,具有使用簡單、結構良好、運行快捷、技術先進等優點。IDS無法清除、凈化或過濾任何惡意輸入內容,僅僅識別攻擊者何時企圖闖入你的網站,安全按照你希望它采取的措施來采取相應措施。

你可以使用PHPIDS來檢測惡意用戶,并記錄檢測出來的任何攻擊,方便以后分析。請注意:我個人沒有用過這款工具。

來自PhpSecInfo項目網頁(http://phpsec.org/projects/phpsecinfo/index.html):

PhpSecInfo提供了與phpinfo()函數相對應的機制,可報告關于PHP環境的安全信息,并提供改進的建議。它無法取代安全開發技巧,也不進行任何一種代碼或應用程序審查,卻是多層次安全方案中的一個實用工具。

圖2:關于PHP應用程序的安全信息

參閱Linux安全加固要點(http://www.cyberciti.biz/tips/linux-security.html),減少系統面臨的攻擊途徑數量。

關于PHP后門的補充

你可能碰到過PHP腳本或所謂的常見后門,比如c99、c99madshell和r57等。后門php腳本其實就是一段隱藏的腳本,用于繞開所有的驗證機制,根據需要訪問你的服務器。攻擊者安裝它的目的是,訪問你的服務器,同時又企圖不被發現。誤用的PHP腳本(或其他任何CGI腳本)通常允許添加鉆Web瀏覽器中安全漏洞空子的代碼。攻擊者可以使用這種被鉆空子的安全漏洞,上傳后門外殼程序,從而讓攻擊者能夠獲得許多功能,比如:

下載文件
上傳文件
安裝rootkit
設置垃圾郵件服務器/中繼服務器
設置代理服務器,隱匿行蹤
控制服務器
控制數據庫服務器
竊取所有信息
刪除所有信息和數據庫
打開TCP/UDP端口及更多端口

要點:該如何找出PHP后門?

可以使用Unix/Linux grep命令,搜索c99或r57外殼:

# grep -iR 'c99' /var/www/html/
# grep -iR 'r57' /var/www/html/
# find /var/www/html/ -name \*.php -type f -print0 | xargs -0 grep c99
# grep -RPn "(passthru|shell_exec|system|base64_decode|fopen|fclose|eval)" /var/www/html/

結束語

你基于PHP的服務器現在經過了適當的加固,可以準備顯示動態網頁了。不過,安全漏洞主要是因沒有遵守堪稱最佳實踐的編程規則而引起的。為了滿足在web應用程序安全方面的要求,你應該查閱更多資源,特別是PHP編程知識,盡管這超出了系統管理員的工作范疇。

原文地址:http://www.cyberciti.biz/tips/php-security-best-practices-tutorial.html

 

【編輯推薦】

  1. PHP集成開發工具PHPStorm 3.0發布
  2. Nginx使用的php-fpm的兩種進程管理方式及優化
  3. PHP開發組首位中國成員及他的Yaf
  4. Ubuntu10.10下PHP上傳配置的方法
  5. 手把手教你在Ubuntu上安裝Apache、MySql和PHP
責任編輯:張浩 來源: 51CTO.com
相關推薦

2013-12-26 10:47:58

2009-10-22 16:53:08

2010-06-10 14:23:01

2010-11-23 09:24:11

2013-03-30 21:59:13

系統管理員必備工具iftop

2018-08-01 08:12:34

Linux管理員網絡管理

2013-09-29 09:50:21

系統管理員Ubuntu JujuJuju

2018-08-15 14:00:18

LinuxBash系統管理員

2013-06-26 09:29:30

系統管理員

2010-04-12 09:33:58

系統管理員

2010-11-25 09:04:38

系統管理員

2010-12-06 13:59:00

FreeBSD系統管理員技巧

2010-08-11 17:11:15

2010-05-06 18:07:33

Unix命令

2010-08-10 09:13:52

Unix系統管理員Ubuntu

2019-09-09 14:45:29

系統管理員SRE

2010-05-07 16:35:44

2011-06-16 09:35:28

系統管理員iPad應用

2019-08-13 19:34:45

容器鏡像DockerLinux

2013-08-20 10:11:20

Go系統管理員
點贊
收藏

51CTO技術棧公眾號

少妇一区视频| 天堂在线观看视频| 亚洲香蕉av| 亚洲激情在线视频| 免费看a级黄色片| 国产在线高清视频| 99久久99久久久精品齐齐| 国产精品无码专区在线观看| 久艹视频在线观看| 精品国产99| 精品少妇一区二区三区在线播放| 久久黄色免费看| 俄罗斯一级**毛片在线播放| 国产色一区二区| 99re在线国产| 中文字幕在线播放日韩| 国产精品丝袜xxxxxxx| 久热国产精品视频| 欧美大波大乳巨大乳| 国产精品17p| 欧美精品电影在线播放| 国产精品-区区久久久狼 | 亚洲人a成www在线影院| 精产国品一二三区| 日韩在线你懂得| 精品国产999| 日本香蕉视频在线观看| sese在线视频| 久久亚洲私人国产精品va媚药| 5566av亚洲| 一级黄色免费看| 日韩和的一区二区| 欧美一级片免费在线| 精品无码m3u8在线观看| 亚洲精品网址| 久久久电影免费观看完整版| 日本高清黄色片| 日韩av中文字幕一区| 日韩欧美中文字幕制服| 欧美一级小视频| av成人免费看| 欧美亚洲禁片免费| 久久久久久久少妇| 日本欧美日韩| 色综合久久中文字幕| 国产精品一区二区免费在线观看| 免费电影视频在线看| 亚洲精品第1页| 黑人巨茎大战欧美白妇| a视频在线观看| 亚洲图片激情小说| 中文字幕日韩一区二区三区不卡| 北条麻妃在线| 国产精品第一页第二页第三页| 亚洲一区二区三区精品在线观看| √天堂资源地址在线官网| 欧美—级在线免费片| 色播亚洲婷婷| 在线播放麻豆| 日韩美女视频一区| 女人床在线观看| 男插女视频久久久| 午夜激情一区二区三区| 欧美一级片免费播放| 日本不卡网站| 在线免费视频一区二区| 色国产在线视频| 999色成人| 欧美成人官网二区| 久久人人爽人人人人片| 亚洲素人在线| 北条麻妃久久精品| 国产波霸爆乳一区二区| 亚洲第一区色| 日韩av电影中文字幕| 日本丰满少妇做爰爽爽| 精品一区二区三区视频在线观看| 91免费人成网站在线观看18| 高清毛片aaaaaaaaa片| 成人精品免费视频| 日产精品一线二线三线芒果| 尤物网址在线观看| 亚洲电影一区二区| 日韩在线第三页| 国产精品麻豆| 亚洲精品第一国产综合精品| 91激情视频在线观看| 一个色综合网| 欧美一级淫片videoshd| 一区二区三区www污污污网站| 国产精品911| 欧美日韩国产综合视频在线| 久久久久久国产精品免费无遮挡| 亚洲一区二区三区四区的| 亚洲熟妇av一区二区三区| 深夜福利亚洲| 日韩av在线高清| a一级免费视频| 国产视频一区在线观看一区免费| 国产欧美精品一区二区| 蜜臀av免费在线观看| 国产嫩草影院久久久久| 蜜臀av无码一区二区三区| 国产精品久久久久久久久免费高清| 日韩视频不卡中文| 卡一卡二卡三在线观看| 一区二区视频欧美| 国产在线观看不卡| 清纯唯美亚洲色图| 亚洲一区二区视频| 最新国产黄色网址| 中文有码一区| 午夜精品久久久久久久白皮肤| 91成人国产综合久久精品| 97se亚洲国产综合自在线| 四虎影院一区二区| 蜜桃成人精品| 日韩www在线| 免费一级片在线观看| 久久成人免费日本黄色| 看欧美日韩国产| 国产第一页在线视频| 777a∨成人精品桃花网| 粉嫩av蜜桃av蜜臀av| 激情久久一区| 91黄在线观看| 免费黄色网页在线观看| 欧美探花视频资源| 四虎国产精品成人免费入口| 99精品国产99久久久久久福利| 亚洲最大成人网色| 米奇精品一区二区三区| 欧美日韩免费在线视频| 久久久久无码精品国产sm果冻| 国产亚洲精品久久久久婷婷瑜伽| 国产精品视频免费一区二区三区| 好吊日视频在线观看| 欧美剧在线免费观看网站| 国产黄色录像视频| 日韩中文字幕1| 清纯唯美一区二区三区| 欧美极度另类| 亚洲欧洲国产伦综合| av资源免费观看| 9i在线看片成人免费| 国产精品第157页| 超碰在线成人| 97婷婷涩涩精品一区| 视频一区二区免费| 欧美性高跟鞋xxxxhd| 中文字幕丰满孑伦无码专区| 久久精品人人| 亚欧洲精品在线视频免费观看| 精品国产免费人成网站| 亚洲色图美腿丝袜| japanese国产在线观看| 欧美国产成人精品| 少妇一级淫免费播放| 亚洲精品99| 国产精品久久一区二区三区| 亚洲天堂手机| 最新中文字幕亚洲| 国产视频手机在线观看| 亚洲一区免费观看| av直播在线观看| 日本不卡高清视频| 三年中文高清在线观看第6集| 宅男噜噜噜66国产精品免费| 欧美裸体男粗大视频在线观看| 性一交一乱一乱一视频| 欧美日韩另类视频| 久久久视频6r| 国内精品视频一区二区三区八戒 | 日本在线看片免费人成视1000| 91精品在线一区二区| 欧美人妻精品一区二区三区| 972aa.com艺术欧美| aⅴ在线免费观看| 99久久影视| 含羞草久久爱69一区| 123成人网| 久久99国产精品自在自在app| 午夜福利视频一区二区| 欧美色网站导航| 久久久久久久久久91| 久久综合狠狠综合久久综合88 | 人妻久久久一区二区三区| 亚洲日本三级| 114国产精品久久免费观看| 欧美巨大丰满猛性社交| 日韩亚洲精品电影| 日韩一区免费视频| 欧美日韩三级一区二区| 国产在线拍揄自揄拍| 亚洲国产精品黑人久久久| 国产香蕉精品视频| 麻豆免费精品视频| 黄色一级在线视频| 91精品成人| 日本视频一区二区不卡| 97成人在线| 国产有码在线一区二区视频| av漫画网站在线观看| 精品国模在线视频| 欧美91精品久久久久国产性生爱| 日韩欧美高清在线| 中文字幕在线网站| 欧美性xxxxx| 精品一区二区三区四| 国产精品女主播在线观看| 精品国产一区在线| 国产一区二区三区精品视频| 茄子视频成人免费观看| 精品96久久久久久中文字幕无| 亚洲欧洲日韩精品| 色综合中文网| 精品视频一区二区| 日韩欧洲国产| 91免费国产网站| 黄色成人小视频| 青青久久av北条麻妃黑人| heyzo一区| 欧美日本亚洲视频| 福利视频在线| 日韩专区中文字幕| www 日韩| 自拍偷拍亚洲区| 成年人在线观看| 亚洲片在线资源| 婷婷伊人综合中文字幕| 精品国精品国产尤物美女| 国产sm主人调教女m视频| 欧美日韩一级二级| 欧美另类高清videos的特点| 91国产免费观看| 久久久黄色大片| 日韩欧美一区二区三区久久| 国产福利拍拍拍| 五月婷婷激情综合网| 麻豆成人在线视频| 亚洲综合在线五月| 久久精品一区二区三| 亚洲制服欧美中文字幕中文字幕| 成年人二级毛片| 亚洲黄一区二区三区| 精品国产视频在线观看| 亚洲色图都市小说| 极品久久久久久| 一区二区三区免费观看| 久草视频手机在线观看| 亚洲国产精品久久不卡毛片 | xvideos国产在线视频| 久久精品国产清自在天天线| 国产美女福利在线| 欧美成人免费全部| 欧美韩日亚洲| 欧美亚洲一区在线| 欧美第一视频| 国产裸体写真av一区二区 | 日韩精品不卡| 日韩久久综合| 51xx午夜影福利| 亚洲精选一区| 欧美精品一区二区三区免费播放| 日韩中文字幕区一区有砖一区| 韩国视频一区二区三区| 韩国三级在线一区| 国产污在线观看| 久久精品亚洲麻豆av一区二区| www..com.cn蕾丝视频在线观看免费版| 国产午夜久久久久| 无码黑人精品一区二区| 午夜欧美大尺度福利影院在线看| 五月天激情国产综合婷婷婷| 欧美三级在线看| 性生活黄色大片| 亚洲欧美中文另类| 欧美精品hd| 久久全球大尺度高清视频| 欧美极品影院| 亚洲综合大片69999| 视频小说一区二区| 亚洲一区二区三区精品视频 | 欧美激情xxxxx| 澳门成人av网| 91香蕉亚洲精品| 夜夜春成人影院| 992tv成人免费观看| 国产欧美一级| 亚洲一区二区福利视频| 26uuu精品一区二区三区四区在线| 亚洲天堂精品一区| 精品久久久久国产| 亚洲专区第一页| 精品一区二区亚洲| 在线不卡日本v二区707| 欧洲亚洲免费在线| 亚洲综合网狠久久| 视频一区三区| 99视频精品| 中文字幕第六页| 国产日产欧美精品一区二区三区| 欧美激情国产精品免费| 欧美偷拍一区二区| 欧洲综合视频| 久久久久久国产精品美女| 欧美大陆国产| 日本视频一区在线观看| 国产欧美激情| 国产精品嫩草69影院| 国产精品福利一区| 懂色av蜜臀av粉嫩av分享吧最新章节| 日韩欧美成人一区二区| 思思99re6国产在线播放| 国产91精品黑色丝袜高跟鞋 | 欧美日韩国产精品一卡| 国内成人在线| 久久精品视频在线观看免费| 久久久国际精品| 日韩欧美a级片| 精品久久久久久久久久久院品网| 成人免费高清| 国产综合久久久久久| 欧美色图激情小说| 国产精品wwwww| 91视视频在线观看入口直接观看www | 久久视频在线直播| 性欧美video另类hd尤物| 日韩精品久久一区二区三区| 国产视频欧美| 三级黄色片网站| 黄色一区二区三区| 欧洲精品久久一区二区| 欧美富婆性猛交| 日韩精品一区国产| 色婷婷777777仙踪林| 国产一区二区在线观看视频| 国产精品免费在线视频| 欧美日韩亚洲另类| 五月香视频在线观看| 国产精品久久久久999| 日韩夫妻性生活xx| 国产日韩欧美久久| 国产精品成人一区二区艾草| 在线观看av大片| 精品国模在线视频| 欧美高清hd| 成品人视频ww入口| 99久久精品免费精品国产| 国内免费精品视频| 国产视频精品xxxx| 希岛爱理一区二区三区av高清| 欧美在线一二三区| 青草国产精品久久久久久| 色偷偷男人天堂| 91精品国产综合久久精品app| gogo在线观看| 国产精品乱子乱xxxx| 一区二区三区四区五区在线| 超碰97人人干| 欧美日韩夫妻久久| 污污视频在线| 鲁片一区二区三区| 免费观看在线色综合| 91 在线视频| 亚洲精品一区二区三区精华液| 乡村艳史在线观看| 少妇精品久久久久久久久久| 久久精品国产一区二区三区免费看| 91高清免费观看| 亚洲第一页自拍| 亚洲成人激情社区| 亚洲第一精品区| 成人国产在线观看| 怡红院av久久久久久久| 久久综合久久88| 奇米777国产一区国产二区| 久久久精品三级| 亚洲精品一二三| 神马久久久久| 91精品久久久久久综合乱菊 | 免费成年人高清视频| 亚洲男人天堂av| 欧洲毛片在线| 成人欧美一区二区三区黑人| 亚洲国产精品第一区二区| 久久丫精品忘忧草西安产品| 日韩午夜在线播放| 羞羞影院欧美| 日本男女交配视频| 国产日韩欧美精品在线| www.久久精品.com| 国产成人一区二区在线| 午夜日韩在线| 能直接看的av| 日韩成人在线电影网| 欧美专区视频| 亚洲成人福利在线观看| 亚洲国产成人va在线观看天堂 | 久久久久国产一区二区三区|