亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄 搜索
首頁 版本說明 從1.3升級(jí)到2.0 編譯時(shí)配置的改變 運(yùn)行時(shí)配置的改變 雜項(xiàng)變化 第三方模塊 從 2.0 升級(jí)到 2.2 編譯時(shí)配置的改變 運(yùn)行時(shí)配置的改變 雜項(xiàng)變化 第三方模塊 Apache 2.1/2.2 版本的新特性 核心增強(qiáng) 模塊增強(qiáng) 程序增強(qiáng) 針對(duì)模塊開發(fā)者的變化 Apache 2.0 版本的新特性 核心的增強(qiáng) 模塊的增強(qiáng) Apache許可證 參考手冊 編譯與安裝 針對(duì)心急者的概述 要求 下載 解壓 配置源代碼樹 編譯 安裝 配置 測試 升級(jí) 啟動(dòng) Apache是怎樣啟動(dòng)的 啟動(dòng)時(shí)發(fā)生錯(cuò)誤 隨系統(tǒng)啟動(dòng)時(shí)啟動(dòng) 額外信息 停止與重新啟動(dòng) 簡介 立即停止 優(yōu)雅重啟 立即重啟 優(yōu)雅停止 附錄:信號(hào)和競爭條件 運(yùn)行時(shí)配置指令 主配置文件 配置文件的語法 模塊 指令的作用域 .htaccess文件 配置段 配置段(容器)的類型 文件系統(tǒng)和網(wǎng)絡(luò)空間 虛擬主機(jī) 代理 允許使用哪些指令? 配置段的合并 內(nèi)容緩沖 簡介 緩沖概述 安全方面的考慮 文件句柄緩沖 內(nèi)存緩沖 磁盤緩沖 服務(wù)器全局配置 服務(wù)器標(biāo)識(shí) 文件定位 限制資源的使用 日志文件 安全警告 錯(cuò)誤日志 訪問日志 日志滾動(dòng) 管道日志 虛擬主機(jī) 其他日志文件 從URL到文件系統(tǒng)的映射 相關(guān)模塊和指令 DocumentRoot DocumentRoot以外的文件 用戶目錄 URL重定向 反向代理 重寫引擎 File Not Found 安全方面的提示 保持不斷更新和升級(jí) ServerRoot目錄的權(quán)限 服務(wù)器端包含 關(guān)于CGI 未指定為腳本的CGI 指定為腳本的CGI 其他動(dòng)態(tài)內(nèi)容的來源 系統(tǒng)設(shè)置的保護(hù) 默認(rèn)配置下服務(wù)器文件的保護(hù) 觀察日志文件 動(dòng)態(tài)共享對(duì)象(DSO) 實(shí)現(xiàn) 用法概要 背景知識(shí) 優(yōu)點(diǎn)和缺點(diǎn) 內(nèi)容協(xié)商 關(guān)于內(nèi)容協(xié)商 Apache中的內(nèi)容協(xié)商 協(xié)商的方法 打亂品質(zhì)值 透明內(nèi)容協(xié)商的擴(kuò)展 超鏈和名稱轉(zhuǎn)換說明 緩沖說明 更多信息 自定義錯(cuò)誤響應(yīng) 行為 配置 自定義錯(cuò)誤響應(yīng)與重定向 地址和端口綁定 概述 針對(duì)IPv6的特殊考慮 怎樣與虛擬主機(jī)協(xié)同工作 多路處理模塊(MPM) 簡介 選擇一個(gè)MPM 默認(rèn)的MPM 環(huán)境變量 設(shè)置環(huán)境變量 使用環(huán)境變量 用于特殊目的的環(huán)境變量 示例 處理器的使用 什么是處理器? 例子 程序員注意事項(xiàng) 過濾器 Apache2中的過濾器 智能過慮 使用過濾器 CGI腳本的Suexec執(zhí)行 開始之前 suEXEC的安全模型 配置和安裝suEXEC 啟用和禁用suEXEC 使用suEXEC 調(diào)試suEXEC 謹(jǐn)防Jabberwock:警告和舉例 性能調(diào)整 硬件和操作系統(tǒng) 運(yùn)行時(shí)的配置 編譯時(shí)的配置 附錄:蹤跡的詳細(xì)分析 URL重寫指南 mod_rewrite簡介 實(shí)踐方案 URL的規(guī)劃 內(nèi)容的處理 對(duì)訪問的限制 其他 虛擬主機(jī)文檔 總述 虛擬主機(jī)支持 配置指令 基于主機(jī)名的虛擬主機(jī) 基于域名的虛擬主機(jī)和基于IP的虛擬主機(jī)比較 使用基于域名的虛擬主機(jī) 與舊版瀏覽器的兼容性 基于IP地址的虛擬主機(jī) 系統(tǒng)需求 如何配置Apache 設(shè)置多個(gè)守護(hù)進(jìn)程 配置擁有多個(gè)虛擬主機(jī)的單一守護(hù)進(jìn)程 動(dòng)態(tài)配置大量虛擬主機(jī) 動(dòng)機(jī) 概述 簡單的動(dòng)態(tài)虛擬主機(jī) 一個(gè)實(shí)際的個(gè)人主頁系統(tǒng) 在同一個(gè)服務(wù)器上架設(shè)多個(gè)主機(jī)的虛擬系統(tǒng) 更為有效的基于IP地址的虛擬主機(jī) 使用老版本的Apache 使用mod_rewrite實(shí)現(xiàn)簡單的動(dòng)態(tài)虛擬主機(jī) 使用mod_rewrite的個(gè)人主頁系統(tǒng) 使用獨(dú)立的虛擬主機(jī)配置文件 虛擬主機(jī)的普通配置示例 在一個(gè)IP地址上運(yùn)行多個(gè)基于域名的web站點(diǎn) 在多于一個(gè)IP的情況下使用基于域名的虛擬主機(jī) 在不同的IP的地址(比如一個(gè)內(nèi)部和一個(gè)外部地址)上提供相同的內(nèi)容 在不同的端口上運(yùn)行不同的站點(diǎn) 建立基于IP的虛擬主機(jī) 混用基于端口和基于IP的虛擬主機(jī) 混用基于域名和基于IP的虛擬主機(jī) 將虛擬主機(jī)和代理模塊一起使用 使用默認(rèn)虛擬主機(jī) 將一個(gè)基于域名的虛擬主機(jī)移植為一個(gè)基于IP的虛擬主機(jī) 使用ServerPath指令 深入討論虛擬主機(jī)的匹配 解析配置文件 虛擬主機(jī)匹配 小技巧 文件描述符限制 關(guān)于DNS和Apache 一個(gè)簡單示例 拒絕服務(wù) "主服務(wù)器"地址 避免這些問題的小技巧 附錄:進(jìn)一步的提示 常見問題 概述 SSL/TLS 加密 概述 文檔 mod_ssl 緒論 密碼技術(shù) 證書 安全套接字層(SSL) 參考 兼容性 配置指令 環(huán)境變量 自定義日志功能 如何... 加密方案和強(qiáng)制性高等級(jí)安全 客戶認(rèn)證和訪問控制 常見問題解答 About The Module Installation Configuration Certificates The SSL Protocol mod_ssl Support 如何.../指南 概述 認(rèn)證 相關(guān)模塊和指令 簡介 先決條件 啟用認(rèn)證 允許多人訪問 可能存在的問題 其他認(rèn)證方法 更多信息 CGI動(dòng)態(tài)頁面 簡介 配置Apache以允許CGI 編寫CGI程序 程序還是不能運(yùn)行! 幕后是怎樣操作的? CGI模塊/庫 更多信息 服務(wù)器端包含 簡介 什么是SSI? 配置服務(wù)器以允許SSI 基本SSI指令 附加的例子 我還能設(shè)置其它什么? 執(zhí)行命令 高級(jí)SSI技術(shù) 總結(jié) .htaccess文件 .htaccess文件 工作原理和使用方法 (不)使用.htaccess文件的場合 指令的生效 認(rèn)證舉例 服務(wù)器端包含(SSI)舉例 CGI舉例 疑難解答 用戶網(wǎng)站目錄 用戶網(wǎng)站目錄 用UserDir設(shè)置文件路徑 限定哪些用戶可以使用此功能 啟用對(duì)每個(gè)用戶都有效的cgi目錄 允許用戶改變配置 對(duì)特定平臺(tái)的說明 概述 Microsoft Windows 其他平臺(tái) 在Microsoft Windows中使用Apache 對(duì)操作系統(tǒng)的要求 下載 Apache for Windows 安裝 Apache for Windows 配置 Apache for Windows 以服務(wù)方式運(yùn)行 Apache for Windows 作為控制臺(tái)程序運(yùn)行Apache 測試安裝 編譯Windows下的Apache 系統(tǒng)要求 命令行編譯 Developer Studio集成開發(fā)環(huán)境的工作區(qū)編譯 項(xiàng)目組件 在Novell NetWare平臺(tái)上使用Apache Requirements Downloading Apache for NetWare Installing Apache for NetWare Running Apache for NetWare Configuring Apache for NetWare Compiling Apache for NetWare 在HP-UX中運(yùn)行Apache The Apache EBCDIC Port Overview of the Apache EBCDIC Port Design Goals Technical Solution Porting Notes Document Storage Notes Apache Modules' Status Third Party Modules' Status 服務(wù)器與支持程序 概述 httpd 語法 選項(xiàng) ab 語法 選項(xiàng) Bugs apachectl 語法 選項(xiàng) apxs 語法 選項(xiàng) 舉例 configure 語法 選項(xiàng) 環(huán)境變量 dbmmanage 語法 選項(xiàng) Bugs htcacheclean 語法 選項(xiàng) 返回值 htdbm 語法 選項(xiàng) Bugs 返回值 舉例 安全方面的考慮 限制 htdigest 語法 選項(xiàng) htpasswd 語法 選項(xiàng) 返回值 舉例 安全方面的考慮 限制 logresolve 語法 選項(xiàng) rotatelogs 語法 選項(xiàng) Portability suexec 語法 選項(xiàng) 其他程序 log_server_status split-logfile 雜項(xiàng)文檔 概述 相關(guān)標(biāo)準(zhǔn) HTTP推薦標(biāo)準(zhǔn) HTML推薦標(biāo)準(zhǔn) 認(rèn)證 語言/國家代碼 Apache 模塊 描述模塊的術(shù)語 說明 狀態(tài) 源代碼文件 模塊標(biāo)識(shí)符 兼容性 描述指令的術(shù)語 說明 語法 默認(rèn)值(Default) 作用域(Context) 覆蓋項(xiàng)(Override) 狀態(tài) 模塊(Module) 兼容性(Compatibility) Apache核心(Core)特性 AcceptFilter AcceptPathInfo AccessFileName AddDefaultCharset AddOutputFilterByType AllowEncodedSlashes AllowOverride AuthName AuthType CGIMapExtension ContentDigest DefaultType <Directory> <DirectoryMatch> DocumentRoot EnableMMAP EnableSendfile ErrorDocument ErrorLog FileETag <Files> <FilesMatch> ForceType HostnameLookups <IfDefine> <IfModule> Include KeepAlive KeepAliveTimeout <Limit> <LimitExcept> LimitInternalRecursion LimitRequestBody LimitRequestFields LimitRequestFieldSize LimitRequestLine LimitXMLRequestBody <Location> <LocationMatch> LogLevel MaxKeepAliveRequests NameVirtualHost Options Require RLimitCPU RLimitMEM RLimitNPROC Satisfy ScriptInterpreterSource ServerAdmin ServerAlias ServerName ServerPath ServerRoot ServerSignature ServerTokens SetHandler SetInputFilter SetOutputFilter TimeOut TraceEnable UseCanonicalName UseCanonicalPhysicalPort <VirtualHost> Apache MPM 公共指令 AcceptMutex CoreDumpDirectory EnableExceptionHook GracefulShutdownTimeout Group Listen ListenBackLog LockFile MaxClients MaxMemFree MaxRequestsPerChild MaxSpareThreads MinSpareThreads PidFile ReceiveBufferSize ScoreBoardFile SendBufferSize ServerLimit StartServers StartThreads ThreadLimit ThreadsPerChild ThreadStackSize User Apache MPM beos MaxRequestsPerThread CoreDumpDirectory Group Listen ListenBacklog MaxClients MaxMemFree MaxSpareThreads MinSpareThreads PidFile ReceiveBufferSize ScoreBoardFile SendBufferSize StartThreads User Apache MPM event AcceptMutex CoreDumpDirectory EnableExceptionHook Group Listen ListenBacklog LockFile MaxClients MaxMemFree MaxRequestsPerChild MaxSpareThreads MinSpareThreads PidFile ScoreBoardFile SendBufferSize ServerLimit StartServers ThreadLimit ThreadsPerChild ThreadStackSize User Apache MPM netware MaxThreads Listen ListenBacklog MaxMemFree MaxRequestsPerChild MaxSpareThreads MinSpareThreads ReceiveBufferSize SendBufferSize StartThreads ThreadStackSize Apache MPM os2 Group Listen ListenBacklog MaxRequestsPerChild MaxSpareThreads MinSpareThreads PidFile ReceiveBufferSize SendBufferSize StartServers User Apache MPM prefork 工作方式 MaxSpareServers MinSpareServers AcceptMutex CoreDumpDirectory EnableExceptionHook Group Listen ListenBacklog LockFile MaxClients MaxMemFree MaxRequestsPerChild PidFile ReceiveBufferSize ScoreBoardFile SendBufferSize ServerLimit StartServers User Apache MPM winnt Win32DisableAcceptEx CoreDumpDirectory Listen ListenBacklog MaxMemFree MaxRequestsPerChild PidFile ReceiveBufferSize ScoreBoardFile SendBufferSize ThreadLimit ThreadsPerChild ThreadStackSize Apache MPM worker 工作方式 AcceptMutex CoreDumpDirectory EnableExceptionHook Group Listen ListenBacklog LockFile MaxClients MaxMemFree MaxRequestsPerChild MaxSpareThreads MinSpareThreads PidFile ReceiveBufferSize ScoreBoardFile SendBufferSize ServerLimit StartServers ThreadLimit ThreadsPerChild ThreadStackSize User Apache Module mod_actions Action指令 Script指令 Apache Module mod_alias 處理順序 Alias AliasMatch Redirect RedirectMatch RedirectPermanent RedirectTemp ScriptAlias ScriptAliasMatch Apache Module mod_asis 用法 Apache Module mod_auth_basic AuthBasicAuthoritative AuthBasicProvider Apache Module mod_auth_digest 使用摘要認(rèn)證 配合 MS Internet Explorer 6 工作 AuthDigestAlgorithm AuthDigestDomain AuthDigestNcCheck AuthDigestNonceFormat AuthDigestNonceLifetime AuthDigestProvider AuthDigestQop AuthDigestShmemSize Apache Module mod_authn_alias 示例 <AuthnProviderAlias> Apache Module mod_authn_anon 示例 Anonymous Anonymous_LogEmail Anonymous_MustGiveEmail Anonymous_NoUserID Anonymous_VerifyEmail Apache Module mod_authn_dbd 配置示例 AuthDBDUserPWQuery AuthDBDUserRealmQuery Apache Module mod_authn_dbm AuthDBMType AuthDBMUserFile Apache Module mod_authn_default AuthDefaultAuthoritative Apache Module mod_authn_file AuthUserFile Apache Module mod_authnz_ldap Contents Operation The require Directives 舉例 Using TLS Using SSL Using Microsoft FrontPage with mod_authnz_ldap AuthLDAPBindDN AuthLDAPBindPassword AuthLDAPCharsetConfig AuthLDAPCompareDNOnServer AuthLDAPDereferenceAliases AuthLDAPGroupAttribute AuthLDAPGroupAttributeIsDN AuthLDAPRemoteUserIsDN AuthLDAPUrl AuthzLDAPAuthoritative Apache Module mod_authz_dbm AuthDBMGroupFile AuthzDBMAuthoritative AuthzDBMType Apache Module mod_authz_default AuthzDefaultAuthoritative Apache Module mod_authz_groupfile AuthGroupFile AuthzGroupFileAuthoritative Apache Module mod_authz_host Allow Deny Order Apache Module mod_authz_owner 配置示例 AuthzOwnerAuthoritative Apache Module mod_authz_user AuthzUserAuthoritative Apache Module mod_autoindex Autoindex Request Query Arguments AddAlt AddAltByEncoding AddAltByType AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon HeaderName IndexIgnore IndexOptions IndexOrderDefault IndexStyleSheet ReadmeName Apache Module mod_cache Related Modules and Directives 配置示例 CacheDefaultExpire CacheDisable CacheEnable CacheIgnoreCacheControl CacheIgnoreHeaders CacheIgnoreNoLastMod CacheLastModifiedFactor CacheMaxExpire CacheStoreNoStore CacheStorePrivate Apache Module mod_cern_meta MetaDir MetaFiles MetaSuffix Apache Module mod_cgi CGI 環(huán)境變量 CGI 腳本的調(diào)試 ScriptLog ScriptLogBuffer ScriptLogLength Apache Module mod_cgid ScriptSock ScriptLog ScriptLogBuffer ScriptLogLength Apache Module mod_charset_lite Common Problems CharsetDefault CharsetOptions CharsetSourceEnc Apache Module mod_dav Enabling WebDAV Security Issues Complex Configurations Dav DavDepthInfinity DavMinTimeout Apache Module mod_dav_fs DavLockDB Apache Module mod_dav_lock DavGenericLockDB Apache Module mod_dbd Connection Pooling Apache DBD API SQL Prepared Statements DBDExptime DBDKeep DBDMax DBDMin DBDParams DBDPersist DBDPrepareSQL DBDriver Apache Module mod_deflate 配置舉例 啟用壓縮 代理服務(wù)器 DeflateBufferSize DeflateCompressionLevel DeflateFilterNote DeflateMemLevel DeflateWindowSize Apache Module mod_dir DirectoryIndex DirectorySlash Apache Module mod_disk_cache CacheDirLength CacheDirLevels CacheMaxFileSize CacheMinFileSize CacheRoot Apache Module mod_dumpio 啟用dumpio支持 DumpIOInput DumpIOOutput Apache Module mod_echo ProtocolEcho Apache Module mod_env PassEnv SetEnv UnsetEnv Apache Module mod_example Compiling the example module Using the mod_example Module Example Apache Module mod_expires 交替間隔語法 ExpiresActive ExpiresByType ExpiresDefault Apache Module mod_ext_filter 舉例 ExtFilterDefine ExtFilterOptions Apache Module mod_file_cache Using mod_file_cache CacheFile MMapFile Apache Module mod_filter Smart Filtering Filter Declarations Configuring the Chain Examples Protocol Handling FilterChain FilterDeclare FilterProtocol FilterProvider FilterTrace Apache Module mod_headers 處理順序 前處理和后處理 舉例 Header RequestHeader Apache Module mod_ident IdentityCheck IdentityCheckTimeout Apache Module mod_imagemap New Features Imagemap File Example Mapfile Referencing your mapfile ImapBase ImapDefault ImapMenu Apache Module mod_include Enabling Server-Side Includes PATH_INFO with Server Side Includes Basic Elements Include Variables Variable Substitution Flow Control Elements SSIEndTag SSIErrorMsg SSIStartTag SSITimeFormat SSIUndefinedEcho XBitHack Apache Module mod_info 安全問題 選擇哪些信息可以被顯示 已知的局限 AddModuleInfo Apache Module mod_isapi 用法 附加注釋 程序員注記 ISAPIAppendLogToErrors ISAPIAppendLogToQuery ISAPICacheFile ISAPIFakeAsync ISAPILogNotSupported ISAPIReadAheadBuffer Apache Module mod_ldap 示例配置 LDAP 連接池 LDAP 緩沖 使用SSL/TLS SSL/TLS 證書 LDAPCacheEntries LDAPCacheTTL LDAPConnectionTimeout LDAPOpCacheEntries LDAPOpCacheTTL LDAPSharedCacheFile LDAPSharedCacheSize LDAPTrustedClientCert LDAPTrustedGlobalCert LDAPTrustedMode LDAPVerifyServerCert Apache Module mod_log_config 定制日志文件格式 安全考慮 BufferedLogs CookieLog CustomLog LogFormat TransferLog Apache Module mod_log_forensic 定制日志文件格式 安全考慮 ForensicLog Apache Module mod_logio 定制日志文件格式 Apache Module mod_mem_cache MCacheMaxObjectCount MCacheMaxObjectSize MCacheMaxStreamingBuffer MCacheMinObjectSize MCacheRemovalAlgorithm MCacheSize Apache Module mod_mime 帶多擴(kuò)展名的文件 內(nèi)容編碼 字符集和語言 AddCharset AddEncoding AddHandler AddInputFilter AddLanguage AddOutputFilter AddType DefaultLanguage ModMimeUsePathInfo MultiviewsMatch RemoveCharset RemoveEncoding RemoveHandler RemoveInputFilter RemoveLanguage RemoveOutputFilter RemoveType TypesConfig Apache Module mod_mime_magic "Magic文件"的格式 性能問題 注意 MimeMagicFile Apache Module mod_negotiation 類型表 MultiViews CacheNegotiatedDocs ForceLanguagePriority LanguagePriority Apache Module mod_nw_ssl NWSSLTrustedCerts NWSSLUpgradeable SecureListen Apache Module mod_proxy 正向和反向代理 簡單示例 控制對(duì)代理服務(wù)器的訪問 緩慢啟動(dòng) 局域網(wǎng)代理 協(xié)議調(diào)整 請求體 AllowCONNECT NoProxy <Proxy> ProxyBadHeader ProxyBlock ProxyDomain ProxyErrorOverride ProxyIOBufferSize <ProxyMatch> ProxyMaxForwards ProxyPass ProxyPassReverse ProxyPassReverseCookieDomain ProxyPassReverseCookiePath ProxyPreserveHost ProxyReceiveBufferSize ProxyRemote ProxyRemoteMatch ProxyRequests ProxyTimeout ProxyVia Apache Module mod_proxy_ajp Overview of the protocol Basic Packet Structure Request Packet Structure Response Packet Structure Apache Module mod_proxy_balancer Load balancer scheduler algorithm Request Counting Algorithm Weighted Traffic Counting Algorithm Enabling Balancer Manager Support Apache Module mod_proxy_connect Apache Module mod_proxy_ftp 為什么xxx類型的文件不能從FTP下載? 如何強(qiáng)制文件xxx使用FTP的ASCII形式下載? 我如何使用FTP上傳? 我如何能訪問我自己home目錄以外的FTP文件? 我如何才能在瀏覽器的URL框中隱藏FTP的明文密碼? Apache Module mod_proxy_http Apache Module mod_rewrite 特殊字符的引用 環(huán)境變量 實(shí)用方案 RewriteBase RewriteCond RewriteEngine RewriteLock RewriteLog RewriteLogLevel RewriteMap RewriteOptions RewriteRule Apache Module mod_setenvif BrowserMatch BrowserMatchNoCase SetEnvIf SetEnvIfNoCase Apache Module mod_so 為Windows創(chuàng)建可加載模塊 LoadFile LoadModule Apache Module mod_speling CheckSpelling Apache Module mod_ssl 環(huán)境變量 Custom Log Formats SSLCACertificateFile SSLCACertificatePath SSLCADNRequestFile SSLCADNRequestPath SSLCARevocationFile SSLCARevocationPath SSLCertificateChainFile SSLCertificateFile SSLCertificateKeyFile SSLCipherSuite SSLCryptoDevice SSLEngine SSLHonorCipherOrder SSLMutex SSLOptions SSLPassPhraseDialog SSLProtocol SSLProxyCACertificateFile SSLProxyCACertificatePath SSLProxyCARevocationFile SSLProxyCARevocationPath SSLProxyCipherSuite SSLProxyEngine SSLProxyMachineCertificateFile SSLProxyMachineCertificatePath SSLProxyProtocol SSLProxyVerify SSLProxyVerifyDepth SSLRandomSeed SSLRequire SSLRequireSSL SSLSessionCache SSLSessionCacheTimeout SSLUserName SSLVerifyClient SSLVerifyDepth Apache Module mod_status Enabling Status Support 自動(dòng)更新 Machine Readable Status File ExtendedStatus Apache Module mod_suexec SuexecUserGroup Apache Module mod_unique_id Theory Apache Module mod_userdir UserDir Apache Module mod_usertrack Logging 2-digit or 4-digit dates for cookies? CookieDomain CookieExpires CookieName CookieStyle CookieTracking Apache Module mod_version <IfVersion> Apache Module mod_vhost_alias 目錄名稱的轉(zhuǎn)換 示例 VirtualDocumentRoot VirtualDocumentRootIP VirtualScriptAlias VirtualScriptAliasIP 開發(fā)者文檔 Overview Topics External Resources Apache API notes Basic concepts How handlers work Resource allocation and resource pools Configuration Debugging Memory Allocation in APR Available debugging options Allowable Combinations Activating Debugging Options Documenting Apache 2.0 Apache 2.0 Hook Functions Creating a hook function Hooking the hook Converting Modules from Apache 1.3 to Apache 2.0 The easier changes ... The messier changes... Request Processing in Apache 2.0 The Request Processing Cycle The Request Parsing Phase The Security Phase The Preparation Phase The Handler Phase How Filters Work in Apache 2.0 Filter Types How are filters inserted? Asis Explanations 詞匯和索引 詞匯表 模塊索引 指令索引 指令速查 譯者聲明
文字

suEXEC支持

suEXEC特性使得Apache可以使用與調(diào)用web服務(wù)器的用戶不同的用戶身份來運(yùn)行CGISSI程序。而通常情況下,CGI或者SSI程序執(zhí)行時(shí)使用和web服務(wù)器相同的用戶身份。

正確運(yùn)用該特性,可以減少很多因?yàn)樘峁┯脩魣?zhí)行私有CGI或者SSI程序所帶來的安全風(fēng)險(xiǎn)。但如果配置不當(dāng)?shù)脑?,則可能引起很多問題,使你的計(jì)算機(jī)產(chǎn)生更多的安全漏洞。如果你對(duì)管理 setuid root 程序以及可能導(dǎo)致的安全問題不熟悉的話,我們強(qiáng)烈建議你不要使用suEXEC。

開始之前

在我們開始切入正題之前,你必須明白Apache開發(fā)組以及本文檔所做的假設(shè)。

首先,我們假設(shè)你正在使用類UNIX操作系統(tǒng),只有這類操作系統(tǒng)才具有setuidsetgid命令。所有的其他命令行的例子也是如此。其他的操作系統(tǒng)平臺(tái),即使也支持suEXEC,但是它的配置可能和我們所講的并不相同。

第二,我們假設(shè)你熟悉計(jì)算機(jī)的安全和管理計(jì)算機(jī)的一些基本概念。這關(guān)系到如何正確理解setuid/setgid操作以及對(duì)你的系統(tǒng)可能帶來的各種影響和不同的安全等級(jí)。

第三,我們假設(shè)你正在使用源代碼未經(jīng)修改的suEXEC版本。所有suEXEC的代碼都經(jīng)過開發(fā)者的仔細(xì)查驗(yàn)并做過大量測試。在這些代碼中,人們采取了各種預(yù)防措施,使之簡單、健壯、安全。修改這些代碼可能會(huì)導(dǎo)致預(yù)料之外的問題和安全隱患。所以我們強(qiáng)烈地建議你不要修改代碼,除非你精通安全編程,并愿意和Apache開發(fā)組共享成果。

第四,也是最后一點(diǎn),Apache開發(fā)組已經(jīng)決定默認(rèn)不安裝suEXEC。suEXEC的配置需要管理員細(xì)致關(guān)注各個(gè)細(xì)節(jié)。在仔細(xì)考察過關(guān)于suEXEC的各種設(shè)置方法后,管理員應(yīng)該使用標(biāo)準(zhǔn)的安裝方法來安裝suEXEC。設(shè)置的參數(shù)應(yīng)該經(jīng)過仔細(xì)推敲,以保證系統(tǒng)的安全運(yùn)行。Apache開發(fā)組希望通過限制suEXEC的安裝,僅使那些經(jīng)過細(xì)致理解,并有能力運(yùn)用它的管理員來使用。

你還想使用suEXEC嗎?還想?很好!那我們開始吧!

suEXEC的安全模型

在我們開始配置和安裝suEXEC之前,我們需要先討論一下它的安全模型。這樣,你才能更好的理解suEXEC內(nèi)部究竟做了些什么事情,以及哪些確保系統(tǒng)安全的預(yù)防措施。

suEXEC是基于一個(gè)setuid的"封裝"程序,該程序由"主"Apache web服務(wù)器調(diào)用。當(dāng)一個(gè)HTTP請求的是管理員指定的、以不同于"主"服務(wù)器用戶身份運(yùn)行的CGI或SSI程序時(shí),該封裝程序?qū)⒈徽{(diào)用。處理這樣的請求時(shí),Apache將被請求的程序名及其UID和GID提供給suEXEC封裝器。

封裝器(wrapper)通過處理下面所描述的步驟,來決定封裝的成功或失敗:如果有任意一個(gè)條件為假,程序?qū)彦e(cuò)誤情況記錄到日志中,退出并返回錯(cuò)誤信息。否則繼續(xù)執(zhí)行。(以下所說的"程序"均指"CGI/SSI程序")

  1. 用戶使用了合法的系統(tǒng)賬號(hào)來執(zhí)行封裝程序了嗎?

    確保運(yùn)行封裝器的是一個(gè)系統(tǒng)中確實(shí)存在的用戶。

  2. 封裝器被調(diào)用時(shí),使用的參數(shù)個(gè)數(shù)正確嗎?

    封裝器僅在使用了正確數(shù)量的參數(shù)調(diào)用時(shí)才會(huì)執(zhí)行。Apache web服務(wù)器知道正確的參數(shù)格式是什么。如果封裝器沒有收到正確數(shù)量的參數(shù),則說明要么被黑客攻擊,要么Apache二進(jìn)制代碼中suEXEC的部分出了問題。

  3. 這個(gè)合法的用戶被允許運(yùn)行封裝器嗎?

    這個(gè)用戶是可以運(yùn)行封裝器的用戶嗎?僅有一個(gè)用戶(Apache用戶)被允許運(yùn)行封裝器。

  4. 目標(biāo)CGI/SSI程序有不安全的分級(jí)路徑索引嗎?

    目標(biāo)CGI/SSI程序包含了"/"開頭或者有".."后向路徑索引嗎?這些都是不允許的;并且目標(biāo)程序必須位于suEXEC的文檔根目錄下。(參見下面的:--with-suexec-docroot=DIR)

  5. 目標(biāo)程序的所屬用戶名合法嗎?

    目標(biāo)程序的所屬用戶名存在嗎?

  6. 目標(biāo)程序的所屬用戶組合法嗎?

    目標(biāo)程序的所屬用戶組存在嗎?

  7. 目標(biāo)程序的所屬用戶名不是超級(jí)用戶嗎?

    目前,suEXEC不允許root執(zhí)行CGI/SSI程序。

  8. 目標(biāo)程序所屬用戶的UID高于最小UID值嗎?

    最小UID值是在配置中指定的。你可以指定允許執(zhí)行CGI/SSI程序的最小UID值,這樣可以保證不會(huì)和系統(tǒng)賬號(hào)沖突。

  9. 目標(biāo)程序的所屬用戶組不是超級(jí)用戶組嗎?

    目前,suEXEC不允許root組用戶執(zhí)行CGI/SSI程序。

  10. 目標(biāo)程序所屬用戶組的GID高于最小GID值嗎?

    最小GID值是在配置中指定的。你可以指定允許執(zhí)行CGI/SSI程序的最小GID值,這樣可以保證不會(huì)和系統(tǒng)賬號(hào)沖突。

  11. 封裝器能夠成功地變?yōu)槟繕?biāo)用戶和組嗎?

    這里就是程序變?yōu)槟繕?biāo)用戶和組的關(guān)鍵步驟了。我們是通過調(diào)用setuid和setgid來實(shí)現(xiàn)的。在組訪問列表中,和該用戶相關(guān)的所有組信息都將被初始化。

  12. 能夠切換到程序所在的目錄嗎?

    如果不存在,將無法包含程序文件。如果不能切換一般也表示目錄不存在。

  13. 這個(gè)目錄在Apache的網(wǎng)絡(luò)空間中嗎?

    如果是對(duì)于服務(wù)器的一般請求,那么請求的目錄是在suEXEC的根文檔目錄下嗎?如果請求的是一個(gè)用戶目錄,那么該目錄是在suEXEC配置的該用戶的根目錄下嗎?(參見:suEXEC配置選項(xiàng))

  14. 該目錄不具有其他用戶可寫的權(quán)限嗎?

    我們不想把目錄開放給其他人;只有屬主才可以改變該目錄中的內(nèi)容。

  15. 目標(biāo)CGI/SSI程序存在嗎?

    如果不存在,當(dāng)然無法繼續(xù)運(yùn)行。

  16. 目標(biāo)CGI/SSI程序不可以被其他用戶改寫嗎?

    我們不想給其他人有修改程序的權(quán)限。

  17. 目標(biāo)程序尚未被setuid或者setgid ?

    我們不想要執(zhí)行的程序被再次改變UID/GID。

  18. 目標(biāo)用戶和組與程序的用戶和組相同嗎?

    用戶是這個(gè)文件的屬主嗎?

  19. 我們可以成功清除進(jìn)程的環(huán)境變量并保證操作的安全性嗎?

    suEXEC通過建立一個(gè)安全的可執(zhí)行路徑(在配置中定義)來清除該進(jìn)程的環(huán)境變量,同時(shí)只傳送在安全環(huán)境變量列表(配置中定義)中所列出的環(huán)境變量。

  20. 可以成功的變?yōu)槟繕?biāo)程序并執(zhí)行嗎?

    這里就是suEXEC結(jié)束,并開始運(yùn)行目標(biāo)程序的地方了。

這是suEXEC封裝器標(biāo)準(zhǔn)操作方式的安全模型。它有些嚴(yán)格,并強(qiáng)加了CGI/SSI設(shè)計(jì)上的限制。但它是仔細(xì)考慮過安全之后一步步發(fā)展起來的模型。

更多關(guān)于該安全模型如何根據(jù)服務(wù)器的配置來限制使用者的權(quán)限,以及恰當(dāng)?shù)膕uEXEC安裝步驟能夠避免的安全隱患,請參見警告和舉例部分。

配置和安裝suEXEC

繼續(xù)我們的探險(xiǎn) ...

suEXEC配置選項(xiàng)

--enable-suexec
該選項(xiàng)啟用默認(rèn)禁止的suEXEC功能。并同時(shí)至少提供一個(gè) --with-suexec-xxxxx 選項(xiàng),以使APACI使用suEXEC功能來處理請求。
--with-suexec-bin=PATH
出于安全考慮,suexec二進(jìn)制程序的路徑必須用這個(gè)選項(xiàng)指定并硬編碼在服務(wù)器里。比如:--with-suexec-bin=/usr/sbin/suexec
--with-suexec-caller=UID
Apache運(yùn)行時(shí)所用的UID。這是唯一允許執(zhí)行程序的用戶。
--with-suexec-userdir=DIR
定義suEXEC允許訪問的用戶宿主目錄下的子目錄。suEXEC將以用戶身份執(zhí)行這個(gè)目錄下的所有可執(zhí)行程序,所以這些程序必須是"安全程序"。如果使用"簡單的"UserDir指令(即不帶"*"),則此處應(yīng)該被設(shè)置為相同的值。當(dāng)UserDir指令所指向的目錄與"passwd"文件所指定的用戶宿主目錄不同時(shí),suEXEC將不會(huì)正常工作,其默認(rèn)值是"public_html"。如果所支持的虛擬主機(jī)對(duì)每個(gè)用戶有不同的UserDir ,則應(yīng)該把他們集中在同一個(gè)父目錄下,而用這個(gè)參數(shù)指向這個(gè)父目錄。如果配置不當(dāng),"~userdir"下的cgi請求將無效!
--with-suexec-docroot=DIR
定義Apache的DocumentRoot。它是除UserDir外suEXEC唯一可以使用的目錄。其默認(rèn)目錄是 --datadir 值所指定的帶有"/htdocs"的后綴的目錄,比如:如果配置了"--datadir=/home/apache",那么"/home/apache/htdocs"目錄將作為suEXEC處理器的文檔根目錄。
--with-suexec-uidmin=UID
定義了suEXEC目標(biāo)用戶的最低UID。對(duì)大多數(shù)系統(tǒng),一般是500或100。默認(rèn)值是100
--with-suexec-gidmin=GID
定義了suEXEC目標(biāo)組的最低GID。對(duì)大多數(shù)系統(tǒng),是100,默認(rèn)值也是100。
--with-suexec-logfile=FILE
它定義了suEXEC用于記錄所做的事情以及發(fā)生的錯(cuò)誤的日志文件名(對(duì)審核和排錯(cuò)很有用),默認(rèn)文件名是"suexec_log",并位于標(biāo)準(zhǔn)的日志文件目錄中(--logfiledir)。
--with-suexec-safepath=PATH
定義傳給CGI程序的一個(gè)安全的PATH環(huán)境變量的值。默認(rèn)值是"/usr/local/bin:/usr/bin:/bin"

編譯和安裝suEXEC處理器
若用 --enable-suexec 打開了suEXEC功能,那么執(zhí)行make命令時(shí)(Apache自帶的)suexec二進(jìn)制文件就會(huì)被自動(dòng)建立。所有組件編譯完畢后執(zhí)行 make install 命令進(jìn)行安裝時(shí),suexec文件將被安裝在 --sbindir 選項(xiàng)指定的目錄中,默認(rèn)為"/usr/local/apache2/sbin/suexec"。
注意,安裝過程需要root權(quán)限。為了使suEXEC處理器可以設(shè)置UID,其所有者必須為root ,并且文件模式中的執(zhí)行位必須設(shè)置為1(允許執(zhí)行)。

設(shè)置許可權(quán)限
雖然suEXEC包裝會(huì)檢查以確保它的調(diào)用者就是配置選項(xiàng) --with-suexec-caller 所指定的用戶。但是總是存在這樣的可能性:一個(gè)系統(tǒng)或者庫在suEXEC執(zhí)行用戶身份檢查之前調(diào)用它,這樣就存在一個(gè)可利用的漏洞。通常,避免這種問題的最佳辦法是,使用文件系的統(tǒng)權(quán)限來確保只有Apache組用戶運(yùn)行的程序才能執(zhí)行suEXEC。

如果你的web-server是按照如下所示進(jìn)行配置的:

User www
Group webgroup

并且suexec被安裝在"/usr/local/apache2/sbin/suexec"目錄,你應(yīng)當(dāng)運(yùn)行以下命令:

chgrp webgroup /usr/local/apache2/bin/suexec
chmod 4750 /usr/local/apache2/bin/suexec

這將確保只有Apache組用戶運(yùn)行的程序才能執(zhí)行suEXEC。

啟用和禁用suEXEC

Apache在啟動(dòng)過程中,會(huì)在 --sbindir 選項(xiàng)指定的目錄(默認(rèn)為:"/usr/local/apache/sbin/suexec")中尋找suexec。如果Apache找到了一個(gè)正確配置的suEXEC處理器,會(huì)在錯(cuò)誤日志中記錄以下信息:

[notice] suEXEC mechanism enabled (wrapper: /path/to/suexec)

如果服務(wù)器啟動(dòng)后沒有這個(gè)信息,那么很可能是服務(wù)器沒找到適當(dāng)?shù)奶幚砥?,或者是這個(gè)執(zhí)行程序沒有安裝setuid root。

如果要在Apache服務(wù)器運(yùn)行過程中打開suEXEC功能,則必須停止并重新啟動(dòng)Apache。用一個(gè)簡單的HUP或USR1信號(hào)來重新啟動(dòng)是不夠的。

如果要關(guān)閉suEXEC功能,應(yīng)該刪除suexec文件,并停止和重新啟動(dòng)Apache。

使用suEXEC

對(duì)CGI程序的請求僅在下述兩種情況下才會(huì)調(diào)用suEXEC包裝:對(duì)一個(gè)含SuexecUserGroup指令的虛擬主機(jī)發(fā)起請求,或者該請求由mod_userdir模塊處理。

虛擬主機(jī):
使用suEXEC處理器的方法之一是在VirtualHost定義中使用SuexecUserGroup指令。通過設(shè)置這個(gè)指令來確定不同于主服務(wù)器的UID,所有對(duì)CGI資源的請求將以<VirtualHost>所定義的UserGroup身份執(zhí)行。如果<VirtualHost>中沒有這個(gè)指令,則將以主服務(wù)器的UID身份執(zhí)行。

用戶目錄:
mod_userdir處理的請求會(huì)調(diào)用suEXEC處理器以被請求的用戶目錄所屬的UID執(zhí)行CGI程序。此功能的唯一要求是,此用戶必須有CGI執(zhí)行權(quán)限,并且其腳本符合上述安全檢查的要求。參見 --with-suexec-userdir 編譯選項(xiàng)。

調(diào)試suEXEC

如上所述,suEXEC處理器會(huì)在 --with-suexec-logfile 選項(xiàng)所指定的日志文件中記錄信息。如果你感覺配置和安裝不正常,可以查看這個(gè)日志以及服務(wù)器的錯(cuò)誤日志。

謹(jǐn)防Jabberwock:警告和舉例

注意!這部分文檔可能還沒有完成。查看最新的修訂版本,請到Apache開發(fā)組的在線文檔。

以下是有關(guān)限制和服務(wù)器安裝的幾個(gè)注意事項(xiàng),在提交任何關(guān)于suEXEC的"bugs"以前,請仔細(xì)閱讀。

  • suEXEC注意事項(xiàng)
  • 層次限制

    出于安全和效率考慮,所有suEXEC請求必須被限制在虛擬主機(jī)或者用戶目錄的頂層。舉例來說,如果你配置了4個(gè)虛擬主機(jī),你必須把所有虛擬主機(jī)的文檔根目錄都安置在同一個(gè)主Apache目錄中,這樣才能為虛擬主機(jī)啟用suEXEC。(例子以后會(huì)有的)

  • suEXEC的PATH環(huán)境變量

    改變這個(gè)變量的值是危險(xiǎn)的,必須確保其中每個(gè)路徑都是可以信任的目錄。你不會(huì)希望誰都可以在你的服務(wù)器上安裝特洛伊木馬。

  • 改變suEXEC的代碼

    重申,如果你不清楚你在干什么就盡量避免,否則會(huì)帶來大麻煩的。

上一篇: 下一篇: