日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

配置Apache Basic和Digest认证

發布時間:2024/1/23 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 配置Apache Basic和Digest认证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載:http://blog.jobbole.com/41519/

在伯樂在線看到一篇《在Nginx下對網站進行密碼保護》文章, 正好和自己這兩天研究的問題有些相同點。我側重研究的是如何破解。雖然在那篇文章中注明密碼是加密存儲的, 但是他忽略了一點就是密碼在網絡中傳輸是明文傳輸的,所以那種加密方式不可取。

下面就是我對Apache用戶認證的一些理解。

Apache常見的用戶認證可以分為下面三種:

  • 基于IP,子網的訪問控制(ACL)
  • 基本用戶驗證(Basic Authentication)
  • 消息摘要式身份驗證(Digest Authentication)

訪問控制

訪問控制不屬于這篇文章討論的范圍.

基本身份驗證

原理:
一個頁面訪問請求

GET /auth/basic/ HTTP/1.1

Host: target

Web服務器要求用書輸入用戶憑據(服務器返回401響應頭和’realm’)

HTTP/1.1 401 Authorization Required

Date: Sat, 08 Jun 2013 12:52:40 GMT

WWW-Authenticate: Basic realm="Basic auth Dir"??????????

Content-Length: 401

Keep-Alive: timeout=15, max=100

Connection: Keep-Alive

Content-Type: text/html; charset=iso-8859-1

瀏覽器彈出登錄窗口(包含’realm’),要求用提供用戶名/密碼

GET /auth/basic/ HTTP/1.1

Host: target

Authorization: Basic TGVuZ1dhOjEyMzQ1Ng==?????? //Basic后面就是LengWa:123456經過Base64編碼后的字符串

服務器將用戶輸入的憑據和服務器端的憑據進行比較。如果一直則返回所請求頁面的響應。

配置: – 以保護/data/www/auth/basic為例

Step 1: 創建密碼文件,并添加第一個用戶。

/usr/local/apache/bin> ./htpasswd -c /data/www/auth/basic/user.txt LengWa

New password:??

Re-type new password:??

Adding password for user LengWa

-c = create file

常規添加不要使用-c選項,因為它會覆蓋現有的文件。

設置文件所有權和權限(root可以進行讀寫,Apache Group只可以讀取)

/data/www/auth/basic > ls -l

-rw-r-----?? 1 root???? httpd????...?? user.txt

注意: 在密碼文件中,密碼是加密存貯的(eg: LengWa:$apr1$MBvROZKM$wP.pdlMonB0P4xGZwl.8G0)。但是在網絡中是明文傳輸的。

Step 2: 配置httpd.conf

<Directory "/data/www/auth/basic">
? ? Options Indexes FollowSymLinks
? ? allowoverride authconfig
? ? order allow,deny
? ? allow from all
</Directory>

Step3: 編輯/data/www/auth/basic/.htaccess

AuthName "Basic Auth Dir"
AuthType Basic
AuthUserFile /data/www/auth/basic/user.txt
require valid-user

重新啟動Apache服務器,訪問 http://127.0.0.1/auth/basic/ 驗證加密。

我前面說過這種加密在網絡中傳輸時是明文傳輸 Base64 編碼,我不認為這是一種加密算法)的。如果你感興趣,可以抓包看看。

消息摘要式身份驗證(Digest Authentication)

原理:

Digest Authentication在基本身份驗證上面擴展了安全性. 服務器為每一連接生成一個唯一的隨機數, 客戶端對用這個隨機數對密碼進行MD5加密. 然后發送到服務器. 服務器端也用此隨機數對密碼加密, 然后和客戶端傳送過來的加密數據進行比較.

一個頁面訪問請求

GET /auth/basic/??HTTP/1.1

Host: target

Web服務器要求用書輸入用戶憑據(服務器返回401響應頭和’realm’)

HTTP/1.1 401 Unauthorized

WWW-Authenticate: Digest realm="Digest Encrypt",

nonce="nmeEHKLeBAA=aa6ac7ab3cae8f1b73b04e1e3048179777a174b3",

opaque="0000000000000000", \

stale=false,

algorithm=MD5,

qop="auth"
?

瀏覽器彈出登錄窗口(包含’realm’), 要求用提供用戶名/密碼

GET /auth/digest/ HTTP/1.1

????Accept: */*

????Authorization:??Digest username="LengWa",

????realm="Digest Encrypt",

????qop="auth",

????algorithm="MD5",

????uri="/auth/digest/",

????nonce="nmeEHKLeBAA=aa6ac7ab3cae8f1b73b04e1e3048179777a174b3",

????nc=00000001,

????cnonce="6092d3a53e37bb44b3a6e0159974108b",

????opaque="0000000000000000",

????response="652b2f336aeb085d8dd9d887848c3314"

服務器將用戶輸入加密后的憑據和服務器端加密后的的憑據進行比較.如果一致則返回所請求頁面的響應.

配置:

Step 1: 創建密碼文件

語法:

htdiget [-c] passwordfile realm username

?

/usr/local/apache/bin> ./htdigest -c /data/www/auth/digest/ "Digest Encrypt" LengWa

Adding password for LengWa in realm "Digest Encrypt" .

New password:

Re-type new password:

-c = create file

常規添加不要使用-c選項, 因為它會覆蓋現有的文件.

設置文件所有權和權限(root可以進行讀寫, Apache Group只可以讀取)

/data/www/auth/digest/ > ls -l

-rw-r-----?? 1 root???? httpd????...?? user.txt

user.txt格式: LengWa:Digest Encrypt:d95ea4412b0fb517b25c4c46f32e5a2b

Step2: 配置httpd.conf

<Directory "/data/www/auth/digest">

????Options Indexes FollowSymLinks

????AuthType Digest

????AuthName "Digest Encrypt"?????????? //注意這里的AuthName和上面的realm必須一致(而Basic驗證則可以不同). 否則你輸入正確的用戶密碼也無法通過認證

????AuthDigestProvider file

????AuthUserFile /data/www/auth/digest/user.txt

????require valid-user

</Directory>

現在基于Digest的驗證環境就搭建好了.

注: 在Basic驗證中. 我使用了.htaccess 而在Digest驗證中我沒有使用. 只是為了個人的需要. 你可以根據自己需要進行配置.

疑惑: 對于在配置Digest httpd.conf時, AuthName 必須和上面的realm還是不是很明白. 為什么必須一致. 如果有哪位大神知道. 望不吝賜教。

總結:

Basic驗證方式配置相對簡單,但是安全性太低,不適合一些加密要求比較高的站點。

Digest則相反,加密性是很高,但是配置起來還是有一點難度的,所以大家根據自己需要,選擇不同的加密方式。

?

參考文章:

  • Apache Basic and Digest Authentication(注: 此文配置Digest的httpd.conf有一處錯誤, AuthDigestFile 改為 AuthUserFile)
  • Testing for Brute Force
  • The WWW-Authenticate Response Header
  • ?

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的配置Apache Basic和Digest认证的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。