Apache的認證、授權、訪問控制

原文鏈接: ? http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/howto/auth.html


Apache認證、授權、訪問控制

認證(Authentication)是指任何識別用戶身份的過程。授權(Authorization)是允許特定用戶訪問特定區域或信息的過程。

top

相關模塊和指令

認證和授權涉及到三組模塊。通常,你需要從每一組中選擇至少一個模塊。

  • 認證類型模塊(參見AuthType指令)
    • mod_auth_basic
    • mod_auth_digest
  • 認證支持模塊
    • mod_authn_alias
    • mod_authn_anon
    • mod_authn_dbd
    • mod_authn_dbm
    • mod_authn_default
    • mod_authn_file
    • mod_authnz_ldap
  • 授權支持模塊(參見Require指令)
    • mod_authnz_ldap
    • mod_authz_dbm
    • mod_authz_default
    • mod_authz_groupfile
    • mod_authz_owner
    • mod_authz_user

mod_authnz_ldap模塊既包含認證功能也包含授權功能。mod_authn_alias模塊自身并不實現認證功能,但是允許其它認證支持模塊以更靈活的方式進行配置。

mod_authz_host模塊提供基于主機名、IP地址、請求特征的訪問控制,但并不屬于認證支持系統。

top

簡介

如果網站上有些敏感信息或只希望為一個小群體所訪問,本文闡述的方法能確保用戶只能訪問被允許的資源。

本文涵蓋了保護站點資源的"標準"方法,大多數管理員將要用到這些方法。

top

先決條件

本文中討論的指令應該被放進主配置文件(通常在<Directory>段中)或者針對單個目錄的配置文件(.htaccess文件)中。

如果你打算使用.htaccess文件,則必須設置服務器以允許在這些文件中使用認證指令,即用AllowOverride指令指定哪些指令在針對單個目錄的配置文件中有效。

既然本文討論認證,就應該對AllowOverride這樣設置:

AllowOverride AuthConfig

如果你希望把這些指令直接寫入主配置文件,當然就需要具有對主配置文件的寫權限。

而且,你需要對服務器的目錄結構有所了解,以確定某些文件的位置。這個并不難,需要時我們會做適當的說明。

top

啟用認證

先介紹用密碼來保護服務器上的目錄。

首先需要建立一個密碼文件。這個文件應該放在不能被網絡訪問的位置,以避免被下載。例如,如果/usr/local/apache/htdocs以外的空間不能被網絡訪問,那么可以考慮把密碼文件放在/usr/local/apache/passwd目錄中。

Apache在其安裝目錄的bin子目錄中提供了htpasswd工具,用于建立密碼文件,可以這樣使用:

htpasswd -c /usr/local/apache/passwd/passwords rbowen

htpasswd會要你輸入密碼,并要求重新輸入以進行確認:

# htpasswd -c /usr/local/apache/passwd/passwords rbowen
New password: mypassword
Re-type new password: mypassword
Adding password for user rbowen

如果htpasswd不在搜索路徑中,則必須使用完整路徑,如:/usr/local/apache/bin/htpasswd

然后修改httpd.conf.htaccess文件,指示服務器允許哪些用戶訪問并向用戶索取密碼。若要保護/usr/local/apache/htdocs/secret目錄,則可以將下列指令寫入/usr/local/apache/htdocs/secret/.htaccess或者httpd.conf的<Directory /usr/local/apache/apache/htdocs/secret>段。

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/local/apache/passwd/passwords
Require user rbowen

讓我們逐個解釋這些指令。AuthType指令選擇對用戶實施認證的方法,最常用的是由mod_auth_basic提供的Basic 。必須認識到的很重要的一點是,Basic認證方法并不加密來自用戶瀏覽器的密碼,因此,不應該用于高度敏感的數據。Apache中還有另一種更安全的認證方法"AuthType Digest",即由mod_auth_digest供的摘要認證。目前,只有最新的瀏覽器版本才支持摘要認證。

AuthName指令設置了使用認證的域(Realm),它起兩個作用,首先,此域會出現在顯示給用戶的密碼提問對話框中,其次,也幫助客戶端程序確定應該發送哪個密碼。

所以,如果一個用戶已經在"Restricted Files"域通過了認證,則客戶端就可以嘗試使用同樣的密碼來訪問同一個服務器上任何名為"Restricted Files"域的其他部分,從而使多個受限區域使用同一個密碼,以避免用戶重復輸入。當然,出于安全考慮,如果服務器變了,客戶端始終會要求重新輸入密碼。

AuthUserFile指令設置了密碼文件的位置,也就是剛才我們用htpasswd建立的文件。如果用戶很多則認證速度會很慢,因為對每個請求都必須搜索這個純文本文件,對此,Apache還支持把用戶信息存入快速的數據庫文件,mod_authn_dbm模塊提供了AuthDBMUserFile指令,并可以用dbmmanage程序建立和操作這些數據庫。Apache模塊數據庫中還提供了許多其他第三方模塊提供的認證選項。

最后,Require指令設置了允許訪問受保護區域的用戶,下一節將對Require指令作詳細說明。

top

允許多人訪問

上述指令只允許一個人(一個叫rbowen的用戶)訪問這個目錄,但是多數情況下,都需要允許多人訪問,所以就要用到AuthGroupFile指令。

如果想允許多人訪問,那么就必須建立一個組文件以確定組中的用戶。其格式很簡單,可以用你喜歡的編輯器建立,例如:

GroupName: rbowen dpitts sungo rshersey

它只是每組一行的一個用空格分隔的組成員列表。

向已有的密碼文件中增加一個用戶,可以輸入:

htpasswd /usr/local/apache/passwd/passwords dpitts

程序的提示和上面的一樣,但是它會追加到已有的文件中,而不是建一個新文件(參數 -c 可以強制建立新的密碼文件)。

現在,需要將.htaccess文件修改成這樣:

AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require group GroupName

現在,GroupName組中的成員都在password文件中有一個相應的記錄,從而允許他們輸入正確的密碼進行訪問。

除了建立組文件,還有另一種途徑允許多人訪問,就是使用如下指令:

Require valid-user

使用上述指令,而不是 Require user rbowen ,可以允許密碼文件中的所有用戶使用正確的密碼進行訪問。通過為每個組建立一個密碼文件,這里甚至允許列舉各個組,其優點是Apache只需要檢查一個文件(而不是兩個),其缺點是,必須維護眾多密碼文件,而且要確保AuthUserFile指定了一個正確的密碼文件。

top

可能存在的問題

由于采用了Basic認證的方法,每次向服務器請求甚至刷新一個受保護的頁面或圖片時都必須校驗用戶名和密碼,為此,必須打開密碼文件并逐行搜索用戶名,因此,服務器響應速度會受一些影響,受影響的程度與密碼文件的大小成正比。

所以,對密碼文件中的用戶總數存在一個實際上的上限,此上限取決于特定的服務器機器的性能,但是一般有幾百個用戶就會對響應速度有非常明顯的影響,在這種情況下,可以考慮用其他認證方法。

top

其他認證方法

基于用戶名和密碼的認證只是方法之一,時常會有不需要知道來訪者是誰,只需要知道來自哪里的情況。

AllowDeny指令可以允許或拒絕來自特定主機名或主機地址的訪問,同時,Order指令告訴Apache處理這兩個指令的順序,以改變過濾器。

這些指令的用法:

Allow from address

address可以是一個IP地址(或者IP地址的一部分),也可以是一個完整的域名(或者域名的一部分),還可以同時指定多個IP地址和域名。

比如,要拒絕不受歡迎的兜售垃圾的站點:

Deny from 205.252.46.165

這樣,這個指令所管轄的區域將拒絕所有來自該地址的訪問。除了指定IP地址,也可以指定域名,如:

Deny from host.example.com

另外,還可以指定地址或域名的一部分來阻止一個群體:

Deny from 192.101.205
Deny from cyberthugs.com moreidiots.com
Deny from ke

Order可以組合DenyAllow指令,以保證在允許一個群體訪問的同時,對其中的一些又加以限制:

Order deny,allow
Deny from all
Allow from dev.example.com

只列出Allow指令不會得到你想要的結果,因為它在允許指定對象訪問的同時并不禁止其他未列出的對象的訪問。所以上例使用的方法是:首先拒絕任何人,然后允許來自特定主機的訪問。

top

更多信息

mod_auth_basicmod_authz_host文檔中有更多的有關資料。mod_authn_alias同樣有助于簡化認證配置。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276654.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276654.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276654.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

黑馬C++設計模式2

簡單工廠模式 //一般來說&#xff0c;自己創建一個對象的方法是在自己寫的業務函數中直接new一個對象出來//但是現實需求&#xff0c;我不想創建對象&#xff0c;我只想拿來用。&#xff08;創建類的步驟比較復雜&#xff09; //好處&#xff0c;1、客戶端和具體實現類解耦。2…

[轉]Struts 2.1發布

作者 Ian Roughley譯者 崔康 發布于 2009年2月4日 上午8時13分 Struts2框架剛剛發布最新2.1版。該版本做了重大升級&#xff0c;包括重構更多代碼到插件框架、通過增加convention插件減少XML配置和改進REST支持。 我采訪了Musachy Barroso——該版本的一位開發人員&#xff0c…

dim private public static_PHP中const,static,public,private,protected的區別

const: 定義常量&#xff0c;一般定義后不可改變static: 靜態&#xff0c;類名可以訪問public: 表示全局&#xff0c;類內部外部子類都可以訪問&#xff1b;private: 表示私有的&#xff0c;只有本類內部可以使用&#xff1b;protected: 表示受保護的&#xff0c;只有本類或子類…

C#圖解教程 第六章 深入理解類

深入理解類 類成員 前兩章闡述了9種類成員中的兩種&#xff1a;字段和方法。本章將會介紹除事件(第14章)和運算符外的其他類成員&#xff0c;并討論其特征。 成員修飾符的順序 字段和方法的聲明可以包括許多如public、private這樣的修飾符。本章還會討論許多其他修飾符。多個修…

Apache用戶身份驗證

原文鏈接&#xff1a;http://www.yylog.org/?p4830 Apache用戶身份驗證 在apache應用過程中&#xff0c;管理員經常需要對apache下的目錄做一些限制&#xff0c;不希望所有用戶都能訪問該目錄下的文件&#xff0c;只對指定用戶訪問&#xff0c;此時我們就要用到apache用戶身…

攜程elong相繼牽手支付寶轉“危”為“機”

新華網浙江頻道1月16日電 自電子機票全面普及以來&#xff0c;航空公司機票直銷的力度不斷加強正給傳統的機票代理甚至在線旅游平臺帶來了極大的生存壓力。 而面對危機&#xff0c;在進一步豐富自身產品服務之外&#xff0c;大的在線旅行平臺也終于找到對策。繼eLong此前與支付…

c# 獲取word表格中的內容_Java 獲取、刪除Word文本框中的表格

本文介紹如何來獲取Word文本框中包含的表格&#xff0c;以及刪除表格。程序測試環境包括&#xff1a;IDEAJDK 1.8.0Spire.Doc.jar注&#xff1a;jar導入&#xff0c;可通過創建Maven程序項目&#xff0c;并在pom.xml中配置Maven倉庫路徑&#xff0c;并指定Free Spire.Doc for J…

Array.prototype.reduce 的理解與實現

Array.prototype.reduce 是 JavaScript 中比較實用的一個函數&#xff0c;但是很多人都沒有使用過它&#xff0c;因為 reduce 能做的事情其實 forEach 或者 map 函數也能做&#xff0c;而且比 reduce 好理解。但是 reduce 函數還是值得去了解的。 reduce 函數可以對一個數組進行…

PS摳圖方法[photoshop中文教程]

PS摳圖方法 一、魔術棒法——最直觀的方法   適用范圍&#xff1a;圖像和背景色色差明顯&#xff0c;背景色單一&#xff0c;圖像邊界清晰。   方法意圖&#xff1a;通過刪除背景色來獲取圖像。   方法缺陷&#xff1a;對散亂的毛發沒有用。   使用方法&#xff1a…

我的核心技術都是從哪里學到的?如何提高成長的?分享給大家。

1997年&#xff0c;我在讀黑龍江大學讀大二時&#xff0c;我認識了一個內蒙古大學計算機專業畢業的一個高材生&#xff0c;那時我那朋友引導了我很多&#xff0c;他那時候在我們家那邊開一個IT公司&#xff0c;他知道如何靠IT技術賺錢&#xff0c;如何靠程序等賺錢&#xff0c;…

python線性回歸算法簡介_Python實現的簡單線性回歸算法實例分析

本文實例講述了Python實現的簡單線性回歸算法。分享給大家供大家參考&#xff0c;具體如下&#xff1a; 用python實現R的線性模型(lm)中一元線性回歸的簡單方法&#xff0c;使用R的women示例數據&#xff0c;R的運行結果&#xff1a; > summary(fit) Call: lm(formula weig…

Object/Relation Mapping 對象關系映射

對象-關系映射&#xff08;Object/Relation Mapping&#xff0c;簡稱ORM&#xff09;&#xff0c;是隨著面向對象的軟件開發方法發展而產生的。面向對象的開發方法是當今企業級應用開發環境中的主流開發方法&#xff0c;關系數據庫是企業級應用環境中永久存放數據的主流數據存儲…

FastReport使用方法(C/S版)

前言 這兩天群里一直有群友問一些關于FastReport的問題&#xff0c;結合他們的問題&#xff0c;在這里做一個整理&#xff0c;有不明白的可以加 FastReport 交流群 群 號&#xff1a;554714044 工具 VS2017 FastReport 開始 1.新建項目&#xff0c;添加三個按鈕。預覽、設計、…

如何設置Linux時區為東八區

當我們購買美國VPS或服務器的時候&#xff0c;默認情況下是美國時間。對于我們定時執行某些任務會帶來麻煩&#xff0c;所以需要設置時區為東八區。登錄SSH后&#xff0c;執行tzselect命令。我們這里選擇亞洲5.這里選擇china 9。一般選東八區&#xff08;北京&#xff0c;廣東&…

python刪除兩個excel表中的相同元素_python篩選出兩個文件中重復行的方法

查找A文件中&#xff0c;與B文件中內容不重復的內容#!usr/bin/python import sys import os字符串查找函數&#xff0c;使用二分查找法在列表中進行查詢def binarySearch(value, lines): right len(lines) - 1 left 0 a value.strip() while left < right: middle int((…

求解:nhibernate2.0操作oralce提交事務時報錯

代碼如下: Configuration config new Configuration(); config.AddAssembly("TestCleanSnow"); ISessionFactory factory config.BuildSessionFactory(); ISession session f…

python畫楓葉_python-文件的操作

一、異常 程序在運行的過程中&#xff0c;不可避免出現一些錯誤&#xff0c;這些錯誤成為異常 異常以后的代碼都不會被執行 try 語句 代碼塊&#xff08;可能出現錯誤的語句&#xff09; except 異常類型 as 異常名: 代碼塊(出錯以后執行的語句&#xff09; except 異常類型 as…

記2018年技術人一次短暫的創業

背景 2018年8月底&#xff0c;我全職加入了一家創業公司&#xff0c;具體做什么我暫時先不說吧&#xff0c;我是產品和技術負責人&#xff0c;自己出資了50w&#xff0c;大股東&#xff08;下面簡稱T)也就是ceo是早期阿里出身的中供銷售&#xff0c;從2017年11月開始成立此公司…

如何在Apache環境下配置Rewrite規則

原文鏈接&#xff1a;http://faq.comsenz.com/viewnews-12 URL 靜態化是一個利于搜索引擎的設置&#xff0c;通過 URL 靜態化&#xff0c;達到原來是動態的 PHP 頁面轉換為靜態化的 HTML 頁面&#xff0c;當然&#xff0c;這里的靜態化是一種假靜態&#xff0c;目的只是提高搜…

情 人 節 快 樂

我不善于用詞匯修飾我的句子&#xff0c; 我不善于用表情表達我的心情&#xff0c; 我不善于解讀你那黯然的情緒&#xff0c; 我不善于去響應你小小的呼應&#xff0c; 雖然&#xff0c;你了解我&#xff0c; 你寬容于我&#xff0c; 你聽我訴說&#xff0c; 你陪伴著我…