寫(xiě)給系統(tǒng)管理員的25個(gè)PHP安全實(shí)踐
PHP是廣泛使用的開(kāi)源服務(wù)端腳本語(yǔ)言。通過(guò)HTTP或HTTPS協(xié)議,Apache Web服務(wù)允許用戶訪問(wèn)文件或內(nèi)容。服務(wù)端腳本語(yǔ)言的錯(cuò)誤配置會(huì)導(dǎo)致各種問(wèn)題。因此,PHP應(yīng)該小心使用。以下是為系統(tǒng)管理員準(zhǔn)備的,安全配置PHP的25個(gè)實(shí)踐事例。
用于下文的PHP設(shè)置樣例
- DocumentRoot:/var/www/html
- 默認(rèn)Web服務(wù):Apache(可以使用Lighttpd或Nginx代替)
- 默認(rèn)PHP配置文件:/etc/php.ini
- 默認(rèn)PHP Extensions配置目錄:/etc/php.d/
- PHP安全配置樣例文件:/etc/php.d/security.ini(需要使用文本編輯器創(chuàng)建這個(gè)文件)
- 操作系統(tǒng):RHEL / CentOS / Fedora Linux(指令應(yīng)該可以在所有其他Linux發(fā)行版,如Debian / Ubuntu,或是Unix-like的操作系統(tǒng),如OpenBSD / FreeBSD / HP-UX下正常運(yùn)行)
- PHP服務(wù)的默認(rèn)TCP/UDP端口:none
下午列出的大部分操作,都是基于 root 用戶能在 bash 或其他現(xiàn)代 shell 上執(zhí)行操作的假設(shè)。
- $ 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
本文使用的操作系統(tǒng):
- $ cat /etc/redhat-release
樣例輸出:
- Red Hat Enterprise Linux Server release 6.1 (Santiago)
#1:知彼
基于PHP的應(yīng)用面臨著各種各樣的攻擊:
- XSS:對(duì)PHP的Web應(yīng)用而言,跨站腳本是一個(gè)易受攻擊的點(diǎn)。攻擊者可以利用它盜取用戶信息。你可以配置Apache,或是寫(xiě)更安全的PHP代碼(驗(yàn)證所有用戶輸入)來(lái)防范XSS攻擊
- SQL注入:這是PHP應(yīng)用中,數(shù)據(jù)庫(kù)層的易受攻擊點(diǎn)。防范方式同上。常用的方法是,使用mysql_real_escape_string()對(duì)參數(shù)進(jìn)行轉(zhuǎn)義,而后進(jìn)行SQL查詢。
- 文件上傳:它可以讓訪問(wèn)者在服務(wù)器上放置(即上傳)文件。這會(huì)造成例如,刪除服務(wù)器文件、數(shù)據(jù)庫(kù),獲取用戶信息等一系列問(wèn)題。你可以使用PHP來(lái)禁止文件上傳,或編寫(xiě)更安全的代碼(如檢驗(yàn)用戶輸入,只允許上傳png、gif這些圖片格式)
- 包含本地與遠(yuǎn)程文件:攻擊者可以使遠(yuǎn)程服務(wù)器打開(kāi)文件,運(yùn)行任何PHP代碼,然后上傳或刪除文件,安裝后門(mén)??梢酝ㄟ^(guò)取消遠(yuǎn)程文件執(zhí)行的設(shè)置來(lái)防范
- eval():這個(gè)函數(shù)可以使一段字符串如同PHP代碼一樣執(zhí)行。它通常被攻擊者用于在服務(wù)器上隱藏代碼和工具。通過(guò)配置PHP,取消eval()函數(shù)調(diào)用來(lái)實(shí)現(xiàn)
- Sea-surt Attack(Cross-site request forgery,CSRF。跨站請(qǐng)求偽造):這種攻擊會(huì)使終端用戶在當(dāng)前賬號(hào)下執(zhí)行非指定行為。這會(huì)危害終端用戶的數(shù)據(jù)與操作安全。如果目標(biāo)終端用戶的賬號(hào)用于管理員權(quán)限,整個(gè)Web應(yīng)用都會(huì)收到威脅。
#2:減少內(nèi)建的PHP模塊
執(zhí)行下面指令可以查看當(dāng)前PHP所編譯的模塊:
- $ php -m
樣例輸出:
- [PHP Modules]
- 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 Modules]
- Suhosin
從性能與安全性的角度考慮,我建議使用PHP時(shí)減少不必要的模塊。例如上面的sqlite3是不必要的。那么可以通過(guò)刪除或重命名/etc/php.d/sqlite3.ini文件來(lái)取消它:
- # rm /etc/php.d/sqlite3.ini
或
- # mv /etc/php.d/sqlite3.ini /etc/php.d/sqlite3.disable
有些模塊則只能通過(guò)使用重新編譯安裝PHP來(lái)移除。例如,從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
更多信息請(qǐng)查看:how to compile and reinstall php on Unix like operating system
#p#
#3:防止PHP信息泄漏
可以通過(guò)取消export_php,對(duì)PHP信息泄漏進(jìn)行限制。編輯/etc/php.d/security.ini如下:
- expose_php=Off
expose_php會(huì)在HTTP Header中添加服務(wù)器上,包括版本在內(nèi)的PHP信息(例如X-Powered-By: PHP/5.3.3)。同時(shí),PHP的全局統(tǒng)一標(biāo)識(shí)符也會(huì)暴露。如果export_php啟用的話,可以通過(guò)下面命令查看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
- ...
建議同時(shí)隱藏Apache版本等信息:ServerTokens and ServerSignature directives in httpd.conf to hide Apache version
#4:最小化可載入的PHP模塊(動(dòng)態(tài)Extension)
PHP支持“Dynamic Extensions”。默認(rèn)情況下,RHEL會(huì)載入/etc/php.d/目錄下的所有Extension模塊。如需啟用或取消某一模塊,只需把/etc/php.d/目錄下配置文件把該模塊注釋掉。也可以把文件刪除或重命名該模塊的配置文件。為了最優(yōu)化PHP的性能和安全性,應(yīng)只啟用Web應(yīng)用所需的Extension。例如,用下面命令取消GD模塊:
- # cd /etc/php.d/
- # mv gd.{ini,disable}
- # <span style="text-decoration: underline;">/sbin/service httpd restart</span>
啟用則是:
- # mv gd.{disable,ini}
- # <span style="text-decoration: underline;">/sbin/service httpd restart</span>
#5:記錄所有PHP錯(cuò)誤
不要把PHP錯(cuò)誤信息輸出給所用用戶。編輯/etc/php.d/security.ini,如下修改:
- display_errors=Off
確保把所有錯(cuò)誤信息記錄到日志文件:
- log_errors=On
- error_log=/var/log/httpd/php_scripts_error.log
#6:禁止文件上傳
為安全考慮,如下編輯/etc/php.d/security.ini取消文件上傳
- file_uploads=Off
如用戶的確需要上傳文件,那么把它啟用,而后限制PHP接受的最大文件大?。?/p>
- file_uploads=On
- # user can only upload upto 1MB via php
- upload_max_filesize=1M
#7:關(guān)閉遠(yuǎn)程代碼執(zhí)行
如果這個(gè)特性被啟動(dòng),PHP可以通過(guò)allow_url_fopen,在file_get_contents()、include、require中獲取諸如FTP或網(wǎng)頁(yè)內(nèi)容這些遠(yuǎn)程數(shù)據(jù)。程序員經(jīng)常忘記了對(duì)用戶輸入進(jìn)行過(guò)濾,而如果這些函數(shù)調(diào)用了這些數(shù)據(jù),則形成了注入漏洞。在基于PHP的Web應(yīng)用中,大量代碼中的注入漏洞都由此產(chǎn)生。可以通過(guò)編輯/etc/php.d/security.ini來(lái)關(guān)閉該特性:
- allow_url_fopen=Off
- 除此之外,建議把a(bǔ)llow_url_include也取消掉:
- allow_url_include=Off
#8:?jiǎn)⒂肧QL安全模式
如下修改/etc/php.d/security.ini:
- sql.safe_mode=On
當(dāng)此特性被啟用,mysql_connect()和mysql_pconnect()會(huì)忽略傳入的所有參數(shù)。與此同時(shí),你需要在代碼上做些相應(yīng)的修改。第三方以及開(kāi)源應(yīng)用,如Wordpress,在sql.safe_mode下可能無(wú)法正常工作。同時(shí)建議關(guān)閉5.3.x版本的PHP的magic_quotes_gpc過(guò)濾,因?yàn)樗?jiǎn)單粗暴又沒(méi)效率。使用mysql_escape_string()以及自定義的過(guò)濾函數(shù)會(huì)更好一些
- magic_quotes_gpc=Off
#9:控制POST的數(shù)據(jù)大小
HTTP POST通常作為請(qǐng)求的一部分,被客戶端用于向Apache Web服務(wù)器發(fā)送數(shù)據(jù),如上傳文件或提交表單。攻擊者會(huì)嘗試發(fā)送超大的POST請(qǐng)求去消耗服務(wù)器的資源。如下編輯/etc/php.d/security.ini限制POST的最大大?。?/p>
- ; 在這里設(shè)置一個(gè)靠譜的數(shù)值
- post_max_size=1K
這里設(shè)置了1K的最大大小。這個(gè)設(shè)置會(huì)影響到文件上傳。要上傳大文件,這個(gè)值需要比update_max_filesize大。
建議在Apache中限制可用的請(qǐng)求方法,編輯httpd.conf如下:
- <Directory /var/www/html>
- <LimitExcept GET POST>
- Order allow,deny
- </LimitExcept>
- ## Add rest of the config goes here... ##
- </Directory>
#10:資源控制(DoS控制)
設(shè)置每個(gè)PHP腳本的最大運(yùn)行時(shí)間。另外建議限制用于處理請(qǐng)求數(shù)據(jù)的最大時(shí)間,以及最大可用內(nèi)存數(shù)。
- # 單位:秒
- max_execution_time = 30
- max_input_time = 30
- memory_limit = 40M
#11:為PHP安裝Suhosin高級(jí)保護(hù)系統(tǒng)
具體參考Suhosin項(xiàng)目頁(yè):project page
#12:取消危險(xiǎn)的PHP函數(shù)
PHP有大量可用于入侵服務(wù)器的函數(shù),如使用不當(dāng)則會(huì)成為漏洞。如下取消這些函數(shù):
- disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
#13:PHP Fastcgi / CGI – cgi.force_redirect管理
PHP可與Fastcgi協(xié)同工作。Fastcgi可以減少Web服務(wù)器的內(nèi)存足跡(memory footprint),并改善PHP性能??梢詤⒖歼@個(gè)來(lái)配置Apache2+PHP+FastCGI。在這個(gè)配置中,cgi.force_redirect會(huì)阻止用戶通過(guò)訪問(wèn)URL來(lái)調(diào)用PHP。為安全考慮,啟用該特性:
- ; Enable cgi.force_redirect for security reasons in a typical *Apache+PHP-CGI/FastCGI* setup
- cgi.force_redirect=On
#14:PHP用戶與用戶組ID
mod_fastcgi是Apache Web服務(wù)的一個(gè)cgi模塊,可連接到外部的FASTCGI服務(wù)器。你需要確保PHP使用非root用戶運(yùn)行。若其使用root或是UID小于100的用戶權(quán)限,它就可以訪問(wèn),乃至操作系統(tǒng)文件。通過(guò)Apache’s suEXEC或mod_suPHP,可在非特權(quán)用戶下執(zhí)行PHP CGI。suEXEC可以是Apache調(diào)用CGI程序的user ID不同于運(yùn)行Apache的user ID。如下:
- # 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
可以通過(guò)spawn-fcgi來(lái)生成phpcgi用戶的遠(yuǎn)程或本地FastCGI進(jìn)程(前提是有這個(gè)用戶):
- # spawn-fcgi -a 127.0.0.1 -p 9000 -u phpcgi -g phpcgi -f /usr/bin/php-cgi
現(xiàn)在可以配置Apache、Lighthttpd或Nginx Web服務(wù)調(diào)用運(yùn)行在127.0.0.1:9000的FastCGI。
#p#
#15:限制PHP訪問(wèn)文件系統(tǒng)
open_basedir會(huì)限制PHP的運(yùn)行目錄,例如通過(guò)fopen()之類(lèi)的函數(shù)可訪問(wèn)的目錄。如果訪問(wèn)的目錄不在open_basedir之內(nèi),PHP會(huì)拒絕該訪問(wèn)。不要使用軟鏈接作為工作區(qū)。例如,只允許訪問(wèn)/var/www/html而非/var/www、/tmp或/etc目錄:
- ; 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:Session路徑
PHP Session用戶提供數(shù)據(jù)保存功能,以便后續(xù)訪問(wèn)。這可以使應(yīng)用可定制性更強(qiáng),提升吸引力。所有Session相關(guān)的數(shù)據(jù)會(huì)被保存在session.save_path中。RHEL/CentOS/Fedora Linux的默認(rèn)設(shè)置如下:
- session.save_path="/var/lib/php/session"
- ; Set the temporary directory used for storing files when doing file upload
- upload_tmp_dir="/var/lib/php/session"
確認(rèn)這個(gè)路徑在/var/www/html之外,且不可被其他系統(tǒng)用戶訪問(wèn):
- # ls -Z /var/lib/php/
樣例輸出:
- drwxrwx---. root apache system_u:object_r:httpd_var_run_t:s0 session
注:ls -Z會(huì)顯示SELinux的安全信息,如文件模式,user,group,安全信息,文件名等。
#17:保證PHP,軟件及操作系統(tǒng)更新到最新
維護(hù)Linux、Apache、PHP和MySQL服務(wù)器的一項(xiàng)重要工作是更新安全補(bǔ)丁。所有的PHP安全更新應(yīng)盡快進(jìn)行審查并更新??墒褂萌缦旅睿ㄈ绻ㄟ^(guò)包管理器來(lái)安裝PHP):
- # yum update
- 或
- # apt-get update && apt-get upgrade
可以配置Red Hat / CentOS / Fedora Linux通過(guò)Email發(fā)送yum的包更新提醒,或是Debian / Ubuntu Linux下的apticron發(fā)送提醒。又或通過(guò)cron計(jì)劃任務(wù)進(jìn)行更新。
注:查看php.net以獲取最新的PHP版本信息
#18:限制文件及目錄訪問(wèn)
確認(rèn)以Apache或www這種非root用戶運(yùn)行Apache。/var/www/html目錄下的owner也應(yīng)是非root用戶:
- # chown -R apache:apache /var/www/html/
DocumentRoot下的文件應(yīng)禁止運(yùn)行或創(chuàng)建。設(shè)置該目錄下的文件權(quán)限為0444(只讀):
- # chmod -R 0444 /var/www/html/
設(shè)置該目錄下的所有文件夾權(quán)限為0445:
- # find /var/www/html/ -type d -print0 | xargs -0 -I {} chmod 0445 {}
#19:Apache、PHP、MySQL配置文件的寫(xiě)入保護(hù)
使用chattr命令給這些配置文件加上寫(xiě)入保護(hù):
- # 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/
同樣可以為/var/www/html目錄加上寫(xiě)入保護(hù)
- # chattr +i /var/www/html/file1.php# chattr +i /var/www/html/
#20:使用Linux安全拓展(如SELinux)
Linux有各種安全方案來(lái)防止服務(wù)程序的錯(cuò)誤配置或漏洞。盡可能使用SELinux或其他Linux安全方案限制網(wǎng)絡(luò)和程序。例如,SELinux為L(zhǎng)inux內(nèi)核或Apache Web服務(wù)提供不同的安全策略。使用下面命令列出所有Apache保護(hù)信息:
- # 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
詳細(xì)參考:Red Hat SELinux guide
#p#
#21:安裝Mod_security
ModSecurity是一個(gè)開(kāi)源的入侵檢測(cè)和防范的Web應(yīng)用引擎。安裝mod_security可以保護(hù)Apache和PHP應(yīng)用免受XSS和其他攻擊:
- ## A few Examples ##
- # Do not allow to open files in /etc/
- SecFilter /etc/
- # Stop SQL injection
- SecFilter "delete[[:space:]]+from"
- SecFilter "select.+from"
#22:如有可能,在Chroot Jail下運(yùn)行Apache / PHP
在Chroot Jail下運(yùn)行Apache / PHP可以最小化可能受到的損失,使其局限于文件系統(tǒng)下的一小塊。可以使用一般的chroot來(lái)配置Apache:chroot kind of setup with Apache。不過(guò)我建議使用FreeBSD jails、XEN,KVM或OpenVZ虛擬化。
#23:使用防火墻限制傳出連接
攻擊者會(huì)使用wget之類(lèi)的工具從你的Web服務(wù)器下載文件。使用iptables來(lái)阻擋Apache用戶的傳出連接。ipt_owner模塊會(huì)為本地?cái)?shù)據(jù)包的生成者分配不同角色。它只對(duì)OUTPUT chain有效。下面指令允許vivek用戶通過(guò)80端口進(jìn)行外部訪問(wèn):
- /sbin/iptables -A OUTPUT -o eth0 -m owner --uid-owner vivek -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
下面的樣例則是阻擋所有Apache用戶的傳出連接,只允許smtp服務(wù)及spam識(shí)別API服務(wù)通過(guò):
- # ....
- /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
查看日志文件可以讓你知道服務(wù)器正在承受何種攻擊,并分析當(dāng)前安全級(jí)別是否足夠。啟用審查服務(wù)用于系統(tǒng)審查,可審查SELinux時(shí)間,驗(yàn)證事件,文件修改,賬號(hào)修改等。建議使用Linux System Monitoring Tools來(lái)監(jiān)控Web服務(wù)器。
#25:把服務(wù)分離到不同的服務(wù)器或虛擬機(jī)
對(duì)于比較龐大的安裝配置,建議把運(yùn)行、數(shù)據(jù)庫(kù)、靜態(tài)與動(dòng)態(tài)內(nèi)容分離到不同的服務(wù)器
- ///////////////
- / ISP/Router /
- //////////////
- \
- |
- Firewall
- \
- |
- +------------+
- | LB01 |
- +------------+ +--------------------------+
- | | static.lan.cyberciti.biz |
- +-----------------+--------------------------+
- | phpcgi1.lan.cyberciti.biz|
- +--------------------------+
- | phpcgi2.lan.cyberciti.biz|
- +--------------------------+
- | mysql1.lan.cyberciti.biz |
- +--------------------------+
- | mcache1.lan.cyberciti.biz|
- +--------------------------+
在不同的服務(wù)器或虛擬機(jī)下運(yùn)行不同的網(wǎng)絡(luò)服務(wù),這可以減少被入侵對(duì)其他服務(wù)的影響。例如,一個(gè)攻擊者入侵了Apache,那就可以訪問(wèn)同一服務(wù)器下的其他服務(wù)(如MySQL,email服務(wù)等)。但在上述例子中則不會(huì):
- static.lan.cybercity.biz – 使用lighttpd或nginx存放js/css/images等靜態(tài)資源
- phpcgi1.lan.cyberciti.biz和phpcgi2.lan.cyberciti.biz – Apache Web服務(wù)+PHP,用于生成動(dòng)態(tài)內(nèi)容
- mysql1.lan.cyberciti.biz – MySQL數(shù)據(jù)庫(kù)服務(wù)
- mcache1.lan.cyberciti.biz – Memcached服務(wù)(MySQL的高速緩存系統(tǒng))。它使用libevent或epoll來(lái)適應(yīng)任意連接數(shù)。而且它使用的是非阻塞網(wǎng)絡(luò)IO。
- LB01 – 一個(gè)Nginx服務(wù)器,用于Web及Apache前端的反向代理。所有的訪問(wèn)連接會(huì)通過(guò)nginx代理服務(wù),被直接處理或分發(fā)到相應(yīng)的Web服務(wù)器。LB01提供簡(jiǎn)單的負(fù)載均衡。