1. 程式人生 > 資訊 >老哥都說好:小雷先生 iPhone 氣囊殼 1.9 元手慢無

老哥都說好:小雷先生 iPhone 氣囊殼 1.9 元手慢無

Linux Token Auth 一次性密碼認證

摘要

伺服器端指令碼:

https://github.com/oscm/devops/blob/master/bin/chpasswd.sh

手機應用:

https://github.com/oscm/Token

我的系列文件

Netkiller Architect 手札

Netkiller Developer 手札

Netkiller PHP 手札

Netkiller Python 手札

Netkiller Testing 手札

Netkiller Cryptography 手札

Netkiller Linux 手札

Netkiller Debian 手札

Netkiller CentOS 手札

Netkiller FreeBSD 手札

Netkiller Shell 手札

Netkiller Security 手札

Netkiller Web 手札

Netkiller Monitoring 手札

Netkiller Storage 手札

Netkiller Mail 手札

Netkiller Docbook 手札

Netkiller Project 手札

Netkiller Database 手札

Netkiller PostgreSQL 手札

Netkiller MySQL 手札

Netkiller NoSQL 手札

Netkiller LDAP 手札

Netkiller Network 手札

Netkiller Cisco IOS 手札

Netkiller H3C 手札

Netkiller Multimedia 手札

Netkiller Perl 手札

Netkiller Amateur Radio 手札

Netkiller DevOps 手札

您可以使用iBook閱讀當前文件


目錄

  • 1. 什麼是Token
  • 2. 為什麼使用令牌
  • 3. 什麼時候能用到令牌技術
  • 4. 本文的Token應用在什麼地方
  • 5. 誰來部署
  • 6. 手機端配置
    • 6.1. 設定密碼
    • 6.2. 檢視伺服器密碼
    • 6.3. 設定重新整理時間

1. 什麼是Token

Token(令牌)是一個身份認證標識,token還有一個特點,那就是存在過期時間的。也就是令牌不是長久有效的。

2. 為什麼使用令牌

我們通常需要臨時或者一次性使用的身份認證

3. 什麼時候能用到令牌技術

例如我們去餐廳就餐,向前臺獲取Wifi密碼,然後可以享受30分鐘的上網服務。30分鐘過後密碼將失效。

我們公司有很多伺服器,密碼的管理非常麻煩,有時還會有人事變動,一旦人員發生變動,所有的伺服器密碼都需要修改一次,非常麻煩,偶爾會有漏改情況,使用堡壘機可以更好的管理密碼,但成本非常昂貴。

於是我便想起了Token技術,但購買Token硬體成本也要花費不少錢。Token的原理我很清楚,通過對稱演算法算出相同對等金鑰,我們可以不購買硬體裝置,自己開發,手機裝置隨身攜帶,所以開發移動版Token最好不過。

4. 本文的Token應用在什麼地方

我採用Token技術實現Linux指定使用者的密碼週期變化,以時間為基準,手機同步算出伺服器上的密碼。為了防止密碼被窮舉,我增加了4個干擾字元。

如果對密碼演算法強度感到不安全,你可以自行修改複雜度。

你還可以遠端修改密碼,不多講。

5. 誰來部署

首先由管理員部署密碼修改程式 chpasswd.sh 然後加入到crontab 中定時執行。

由於考慮到讀者的水平參差不齊,所以我使用shell完成,這樣絕大多數讀者都能看懂。

# cat chpasswd.sh 
		
#!/bin/bash
datetime=`date +%Y-%m-%d" "%H":"%M`
email="[email protected]"
#password=$(cat /dev/urandom | tr -cd [:alnum:] | fold -w30 | head -n 1)
string=$(date -u "+%Y$1%m$2%d$3%H$4%M")
password=$(echo $string | md5sum | cut -c 2-9 | base64 | tr -d "=" | cut -c 1-32)
echo $password > ~/.lastpasswd
echo $password | passwd www --stdin > /dev/null		

~/.lastpasswd 中儲存最後一次密碼

crontab 設定,每分鐘修改一次密碼。

# crontab -l
*/1 * * * * /root/chpasswd.sh a b c d		

a b c d 自行設定,設定與手機端相同即可

至此伺服器端配置完成

6. 手機端配置

安裝Token.apk檔案到你的手機

https://github.com/oscm/Token

6.1. 設定密碼

確認密碼

選擇環境

設定干擾碼

6.2. 檢視伺服器密碼

6.3. 設定重新整理時間

預設1分鐘重新整理一次,可能沒有來得及輸入完密碼就會更新密碼

如果修改此項,伺服器端crontab中的設定同步更改即可。