通過google身份驗證器加強linux帳戶安全
近期接連爆出的多起重大且具深遠影響的安全門事件,使得資訊保安越來越受重視,個人隱私保護是一方面,考慮到國情,個人隱私不是丟失多少的問題,而是還能保留多少,很多情況下無法左右,所以多數人都是抱著無所謂的心態。不過做為系統管理員,就不能也這樣想嘍,自己所管理的伺服器的安全可是不容小視,若有丟失,那影響可就大了。
同樣是基於國情,我們知道國內金融等領域推出的硬體驗證碼頗具實效,每次使用網銀時,必須要插入一個小裝置,並且需要將這個裝置中生成的隨機驗證碼,做為登入的重要條件輸入成功之後,才能正常使用系統功能。
對於屌絲管理員,我們不太可能為我們管理的伺服器申請這類裝置,不過,通過一些技術應用,我們可以將手機也變成一個類似隨機驗證碼生成器(感謝Google),每次登入系統時,除了常規的使用者/密碼驗證外,還需要繫結了指定金鑰的手機上生成的驗證碼,才能順利登入系統。若有此機制的話,那麼即使金鑰洩露,除非獲取到密碼的那個人,同時也拿到你的手機,否則因為它沒有驗證碼,仍然無法登入執行破壞,系統就是安全的。同學們,動心了沒有,如果好奇心沒有完全泯滅的話,就繼續往下看吧。
以我手邊的某臺Linux伺服器為例。下載Google的身份驗證模組:
# wget https://google-authenticator.googlecode.com/files/libpam-google-authenticator-1.0-source.tar.bz2
解壓縮並編譯安裝,操作步驟如下:
# tar xvf libpam-google-authenticator-1.0-source.tar.bz2
# cd libpam-google-authenticator-1.0
# make
# make install
而後,google的驗證模組就會被複制到/lib64/security目錄下,而用來生成金鑰的可執行程式:google-authenticator,則複製到/usr/local/bin目錄下,方便呼叫。
提示:編譯安裝google-authenticator需要pam-devel依賴包,如果沒有的話,請首先安裝該依賴包喲。
比如,我們想為jss使用者增加一層額外的驗證機制,則先通過google-authenticator生成金鑰:
[jss@localhost ~]$ google-authenticator
Do you want authentication tokens to be time-based (y/n) y
首先會提示你,是否要基於時間生成令牌,選擇Y,然後它會生成金鑰,以及緊急狀態使用的驗證碼(有5個,謹當無法獲取驗證碼時使用,注意這些緊急驗證碼用一次就少一個的喲,所以這幾個緊急驗證碼一定要儲存好,關鍵時刻要派上大用場的),詳細資訊如下:
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/jss@localhost.localdomain%3Fsecret%3D3V7K2ONO55DE56SD
Your new secret key is: 3V7K2ONO55DE56SD
Your verification code is 424380
Your emergency scratch codes are:
96307775
87311306
56915688
84694809
27875014
然後會提示你是否要更新驗證檔案,必須更新啊:
Do you want me to update your "/home/jss/.google_authenticator" file (y/n) y
提示是否禁止多次使用相同的令牌登入:
Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y
預設情況下,令牌只在30秒內有效,由於客戶端和伺服器時間不完全一致的因素,可以將時間視窗加大到最長4分鐘,是否要這麼做:
By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) y
是否限制嘗試次數,每30秒只能嘗試最多3次:
If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y
金鑰生成好之後,下面修改PAM中關於ssh的配置,編輯/etc/pam.d/sshd檔案:
# vim /etc/pam.d/sshd
增加一行:
auth required pam_google_authenticator.so
接下來再修改ssh的配置檔案,編輯/etc/ssh/sshd_config檔案:
# vim /etc/ssh/sshd_config
將ChallengeResponseAuthentication no修改為ChallengeResponseAuthentication yes
然後重新啟動ssh服務:
當再次使用jss使用者以SSH方式登入時,就會提示輸出驗證碼:
[root@mysqldb02 ~]# ssh jss@192.168.30.249
Verification code:
那麼,驗證碼從哪裡來呢,朋友,您這算是問到點兒上了。拿出你的手機,安裝一款名叫:Google身份驗證器的應用。在開啟的應用介面中新增帳戶,然後會出現兩個選擇:掃描條形碼(二維碼),或者選擇輸出提供的金鑰,任選其一即可。
有同學可能會問,這兩項資訊從哪裡來呢,同學,請你再仔細看下,執行google-authenticator命令後首先輸出的資訊,那個HTTP的網址,開啟你就會發現,原來它是個圖片二維碼,掃描即可。若網址打不開也沒關係,選擇金鑰就是了嘛。
帳戶新增完成後,您應該就能在手機上看到它生成的驗證碼了,先輸入驗證碼,然後再輸入密碼,只有驗證碼和密碼都輸入正確,才能正常登入。
Password:
Last login: Tue Jan 14 10:14:33 2014 from 192.168.30.246
注意喲,輸入驗證碼的時間最長只有30秒鐘,超時之後該驗證碼就失效,需要到手機端獲取新的驗證碼才行。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-1161112/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 客戶端身份驗證客戶端
- WebService通過SOAP頭進行身份驗證Web
- Laravel 使用 Laravel-google-authenticator 擴充通過 Google 身份驗證器為你的網站打造一個動態手機令牌LaravelGo網站
- Linux 控制系統帳戶過期Linux
- 通過vftps和虛擬帳號增強ftp的安全性FTP
- javascript 驗證身份證JavaScript
- 【仙山】flutter版谷歌身份驗證器Flutter谷歌
- SAP的通過支票進行客戶清帳操作
- 谷歌OAuth驗證系統曝漏洞,惡意軟體能夠用以竊取Google帳戶谷歌OAuthGo
- fiddler 手機代理上網 通過代理伺服器進行身份驗證失敗伺服器
- 使用Oracle外部身份認證增強安全性Oracle
- WEB身份驗證Web
- 直播軟體搭建,姓名,身份證input驗證過濾
- 身份證驗證工具類
- 你知道怎麼使用Google兩步驗證保護賬戶安全嗎?Go
- Laravel 使用 Laravel-google-authenticator 擴充透過 Google 身份驗證器為你的網站打造一個動態手機令牌LaravelGo網站
- [資訊]什麼才是 Google 帳戶安全的最大威脅?(11.15)Go
- 影片直播app原始碼,姓名,身份證input驗證過濾APP原始碼
- 我的Google Adsense帳戶被關Go
- Oracle的身份驗證Oracle
- 華為帳號服務升級,助力應用快速驗證使用者身份
- Windows10系統怎麼驗證Microsoft帳戶【圖文】WindowsROS
- PHP 驗證身份證號碼PHP
- 中國身份證號驗證庫
- C++身份證號驗證C++
- C#驗證身份證號C#
- Linux 帳戶管理(轉)Linux
- 支招 | 如何解決身份驗證系統安全問題
- 無密碼身份驗證:安全、簡單且部署快速密碼
- 網路安全法獲高票通過 明確加強個人資訊保護
- 網站漏洞檢測 身份驗證碼與重要操作驗證碼安全問題網站
- 後端安全驗證過程後端
- C++身份核驗介面程式碼、身份證OCR、身份證實名認證APIC++API
- 我的Google Adsense帳戶被關(續)Go
- 作業系統身份驗證和口令檔案身份驗證總結作業系統
- js正則驗證身份證號JS
- PHP 身份證精確匹配驗證PHP
- 身份證號碼驗證系統