進一步部署 Google Authenticator:Apache 模組

來源:互聯網
上載者:User

Google Authenticator 是個好東西。它不僅可以增強 Google 賬戶登入的安全性,更因為它開源的特性,被部署到別的地方使用。比如 Linux PAM、WordPress 等,使使用者可以藉助 Google 的這套 OTP 方案,增強自己的伺服器、網站和個人電腦的安全性。筆者之前就寫過一篇詳細的教程《用 Google Authenticator 加強 VPS 及 WordPress 甚至案頭電腦的安全性》,介紹如何把 Google Authenticator 部署到伺服器、WordPress 和個人電腦上。如果你覺得這還不夠安全的話,本文將會教會你如何把它部署到 Apache 裡。

一、Google Authenticator 的 Apache 模組的優勢

如何增強伺服器的安全性?這個問題向來都是站長們的討論焦點。從 SSH 登入方面來說,可以限制 IP 位址登入,可以禁用密碼登入(僅用公開金鑰登入),可以用 Fail2ban 來對付它們,甚至可以把嘗試暴力破解的 IP 加到 iptables 黑名單中等。但是,Web 前端怎麼辦?總不能限制 IP 位址訪問吧?比如 WordPress 的管理後台和 phpMyAdmin 的登入頁面,就是很容易遭到攻擊的地方。為了防禦這種人肉攻擊,簡單點地做法是用mod_auth_basic 或 mod_auth_digest 來進行驗證,高檔一點的話,可以用 mod_ssl 中的雙向 TLS 認證。但是前者太簡單,如果頁面是 http:// 的話,密碼是明文傳輸的,對攻擊者來說十分方便的,而後者相對來說比較複雜,要自己建立並維護一個 CA,或者需要花錢去請第三方 CA 簽署憑證。而 Google Authenticator 的 Apache 模組 mod_authn_google 則提供一種經濟、方便、簡潔、有效認證方式:動態密碼認證。

相對 mod_auth_basic 來說,mod_authn_google 的密碼是動態,更不易被猜解;相對 mod_ssl 的雙向 TLS 認證來說,mod_authn_google 免去了額外請第三方 CA 簽名的資金和複雜的配置 CA 憑證的過程的痛苦。

二、安裝 mod_authn_google

由於這不是官方模組,所以必然是要我們自己來下載安裝的。這個項目的首頁在這裡,但是它的下載列表中提供的模組是有 Bug 的,如果不想自己修複 Bug 的話,可以在這裡下載到 Bug 修複後的 mod_authn_google。

注意,這個模組是在 64 位元 Linux 下編譯的,如果你用的是 32 位的系統,請下載源碼後自行編譯。

下載得到的是一個 .so 的庫檔案,可以使用 apxs2 指令碼來安裝,以 Ubuntu 等基於 APT 和 dpkg 的發行版為例,這個指令碼可以通過安裝 apache2-prefork-dev 包得到。

  1. sudo apt-get install apache2-prefork-dev

接下來便可使用 apxs2 來安裝模組:

  1. sudo apxs2 -i -a -n authn_google mod_authn_google.so

各參數含義:

-i
安裝
-a
自動添加 LoadModule 語句,方便載入
-n authn_google
安裝後模組的名字
mod_authn_google.so
剛才下載得到的模組的檔案名稱

由於這是一個已經編譯好的模組了,所以除了用指令碼來自動安裝,也可以手工安裝:

  1. sudo cp mod_authn_google.so /usr/lib/apache2/modules/
  2. echo "LoadModule authn_google_module /usr/lib/apache2/modules/mod_authn_google.so"| sudo tee /etc/apache2/mods-available/authn_google.load
三、配置 mod_authn_google

首先要建一個供它存放認證資訊的地方,比如 /etc/apache2/ga_auth,接下來編輯 /etc/apache2/mods-available/authn_google.conf 檔案,以下是範例:

  1. <Directory/secret># 要加上驗證的目錄
  2. Options FollowSymLinks Indexes ExecCGI
  3. AllowOverride All# 允許每個目錄下通過 .htaccess 覆蓋這裡的全域設定
  4. Order deny,allow
  5. Allow from all
  6. AuthType Basic
  7. AuthName "Secret"# 快顯視窗的提示資訊
  8. AuthBasicProvider "google_authenticator"
  9. Require valid-user
  10. GoogleAuthUserPath ga_auth# 儲存認證資訊的目錄
  11. GoogleAuthCookieLife 3600# Cookies 有效時間,這段時間內不用再輸密碼,單位為秒
  12. GoogleAuthEntryWindow 2# 當時間不同步時,允許有這樣的正負誤差。以 30s 為單位
  13. </Directory>

儲存退出之後,再

  1. sudo a2enmod authn_google && sudo service apache2 restart

即可,如果沒有報錯的話,現在現在 mod_authn_google 應該已經在工作了,訪問 /secret 的話會提示輸入使用者名稱密碼,但是我們沒有添加使用者,所以輸啥都是錯的。

四、添加認證使用者

認證使用者是通過 Google Authenticator 提供的工具來產生認證檔案的,將產生的認證檔案複製到 GoogleAuthUserPath 所對應的目錄即可,比如/etc/apache2/ga_auth。

如何使用 Google Authenticator 產生新使用者的說明,在這篇文章中已經很清楚了,這裡再提一下:

  1. 使用包管理器安裝 libpam-google-authenticator 這個包。以 Ubuntu Server 為例:
    1. sudo apt-get install libpam-google-authenticator
  2. 如果之前用過 Google Authenticator,請先將 ~/.google_authenticator 檔案改名備份一下。
  3. 運行
    1. google-authenticator

    命令,把螢幕上的 QR 代碼掃描到裝有 Google Authenticator 的手機中,並按照提示回答幾個問題,產生新的 ~/.google_authenticator 檔案。

這樣便產生了一個有效使用者。將家目錄中新產生的 .google_authenticator 檔案複製到 /etc/apache2/ga_auth 目錄下,檔案名稱為使用者名稱,並使用

  1. sudo chmod 640 wzyboy && sudo chown root:www-data wzyboy

(把 wzyboy 更換為相應的使用者名稱)變更檔許可權,以確保 Apache 能讀取它,便完成了一個使用者的添加。如需更多使用者訪問,重複這些步驟即可。最後記得把家目錄裡的 .google_authenticator 檔案改回來。

五、調試與偵錯

建議在瀏覽器的隱藏視窗中進行調試以排除 Cookies 的幹擾。如果出錯,可從 /var/log/apache2/error.log 中找答案。

補充:該模組在 Google Code 上的先行編譯檔案有 Bug,不讀取 Cookies,導致提示找不到 /etc/apache2/ga_auth/(null) 檔案。這時一個比較搞笑的 wordaround 就是把你的使用者認證資訊檔重新命名為 (null),然後就可以配合這個 Bug 繼續工作了。此時使用者名稱輸什麼都可以,密碼則是要保持正確的。這倒也別有一番風味…… via @jimmy_xu_wrk。

via : http://wzyboy.im/post/869.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.