在本文中我將一步一步指導大家設定自己的“超級電腦叢集”,通過Ubuntu MPI Cluster平台,藉助John the Ripper實現在多台電腦上對加密過的目標進行暴力破解。當然這一切應以學術研究為目的。
電腦上具備四核處理器的朋友有福了。儘管Ubuntu 軟體庫中的”john”二進位代碼原本只針對於單核運行,但我的設定將嘗試使其在四核電腦上運行效率更高,耗時更少。
本文的出發點是將問題表達得通俗易懂,以使普通使用者便於理解掌握,因此我決定不在其中涉及NIS,NFS,BIND或諸如此類的複雜技術。讀者應該不必花費數天時間閱讀有關Linux系統管理員知識的教材或手冊,也能在家中輕鬆建立並玩轉電腦叢集系統。我製作的應用基於Ubuntu 10.04 Server,因為它是迄今為止最常用的Linux工具,同時也是一種蘊涵長效機制的版本,在2015年之前可以一直適用。
前言
本文中談到的叢集實施方案並不會對具備高實用性及安全性的運行環境構成威脅。
背景
我發現不得不從破解自己設定的一個塵封多年早已忘卻的老密碼開始著手。在搜集了幾台手邊的電腦之後,我開始嘗試讓它們協同工作。
本文的誕生,是極端沮喪的心情、過量的咖啡因加上一整個不眠之夜的產物。
基本要求
需要至少兩台可運行Ubuntu Linux 10.04版本且已連網的電腦。
“John”並不需要太大的頻寬。
伺服器配置
伺服器要求
一個靜態IP地址或DHCP中保留的IP。
需要用到的軟體包
以下軟體包是必備的:
?libmpich1.0 - dev- MPICH靜態庫和開發檔案
?libmpich - mpd1.0 - dev- MPICH靜態庫和開發檔案
? libmpich - shmem1.0 - dev- MPICH靜態庫和開發檔案
? openssh-server — 安全架構 (SSH) 工具, 保障遠端電腦的安全訪問
? mpich2 — 實施MPI資訊傳遞介面標準
? mpich2-doc — MPICH2相關文檔
? john — 強力的密碼破解工具
? build-essentials – 必備軟體包的資訊統計清單
www.linuxidc.com@server:~$ sudo apt-get install libmpich1.0-dev libmpich-mpd1.0-dev libmpich-shmem1.0-dev mpich2 mpich2-doc john openssh-server build-essentials
網路設定
預設情況下,/etc/hosts檔案應如下所示:
127.0.0.1 localhost
127.0.1.1 server.linuxidc.com server
#下列內容是採用IPv6協議的主機
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
首先把你的IP地址修改為127.0.1.1。
<server.linuxidc.com>處應為你的FQDN,而<server>處應為你的電腦主機名稱。
通過執行下列命令尋找你的IP:
www.linuxidc.com@server:~$ ifconfig|grep “inet addr”
inet addr:10.0.0.1 Bcast:10.255.255.255 Mask:255.0.0.0
inet addr: 127.0.0.1 Mask:255.0.0.0
修改後/etc/hosts下的內容應如下所示:
127.0.0.1 localhost
10.0.0.1 server.linuxidc.com server
#下列內容是採用IPv6協議的主機
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
使用者配置
建立一個名為“cluster”(叢集)並在其路徑中加入~/bin/代碼。
我發現在每台電腦上都對’cluster’採取相同的設定步驟是最便捷的做法。
www.linuxidc.com@server:~$ sudo useradd -m -s /bin/bash cluster
www.linuxidc.com@server:~$ sudo passwd cluster
Enter new UNIX password:(輸入新的UNIX密碼)
Retype new UNIX password:(再次輸入新的UNIX密碼)
passwd: password updated successfully(密碼:密碼更改成功)
www.linuxidc.com@server:~$ sudo su – cluster -c “mkdir ~/bin;export PATH=~/bin:$PATH”
MPICH設定
MPI的應用基於以下設定檔:
? ~/.mpd.conf
註:此檔案以a開頭且必須配合chmod 600才會生效。
此檔案在你的密碼中包含一個單獨的命令列“secretword=<password>“ (replace <password>,其內容必須與叢集中所有~/.mpd.conf中的相關內容相同。
? ~/mpd.hosts
此檔案中包含所有叢集節點及伺服器的列表,其格式為“host:number-of-cpu-cores”, fx。如果您的電腦具備四核心處理器,則將10.0.0.2設定為10.0.0.2:4。
如果你只是想使用MPICH的功能而不在乎可用處理器核心的數量,那麼該數值可以設定得低於實際情況。
舉例說明,如果伺服器具備四核心處理器,你可能希望將數值設定為:3,而不是:4,這樣伺服器可以同時處理其它一些運算。
千萬不要預設localhost或127.0.0.1這類你必須串連網路才能使用的IP。
檢查處理器核心數量,並建立設定檔。
cluster@server:~$ touch ~/.mpd.conf
cluster@server:~$ chmod 600 ~/.mpd.conf
cluster@server:~$ echo secretword=pass>~/.mpd.conf
cluster@server:~$ /sbin/ifconfig|grep “inet addr”
cluster@server:~$ /sbin/ifconfig|grep “inet addr”
inet addr:127.0.0.1 Mask:255.0.0.0
cluster@server:~$ cat /proc/cpuinfo|grep processor|wc –l
cluster@server:~$ echo 10.0.0.1: 1 >~/mpd.hosts
設定完成後,通過執行以下指令檢查是否運行正常:
? mpdboot – 啟動叢集
? mpdtrace - 列出群體的所有節點
? mpdallexit – 關閉叢集
mpdallexit – shut down the cluster
cluster@server:~$ mpdtracecluster@server:~$ mpdallexit
如果設定方面沒有任何錯誤,那麼你的指令將全部被正確執行。如果出現問題,請檢查你的~/.mpd.cof的使用權限設定及/etc/hosts和~/mpd.hosts的內容是否正確。
安裝John the Ripper
在www.bindshell.net/tools/johntheripper處可以擷取具備MPI補丁版本的John the Ripper。
cluster@server:~$ mkdir source
cluster@server:~$ cd source
cluster@server:~/source$ wget http://www.bindshell.net/tools/johntheripper/john-1.7.2-bp 17-mpi8.tar.gz
從src目錄中解壓並運行make指令(若你的電腦解析度不足,請嘗試使用make|less指令)。
cluster@server:~/source$ tar -zxf john-1.7.2-bp17-mpi8.tar.g
cluster@server:~/source$ cd john-1.7.2-bp17-mpi8/src/
cluster@server:~/source/john-1.7.2-bp17-mpi8/src$ make
此時你會看到一個選項清單。
要建立John the Ripper,鍵入
保持系統清空
運行所需的系統如下所示:
linux-x86-mmx Linux, x86 with MMX
linux-x86-sse Linux, x86 with SSE2 (推薦)
linux-x86-any Linux, x86
linux-x86-64 Linux, AMD x86-64, 64-bit native w/SSE2 (推薦)
linux-x86-64-mmx Linux, AMD x86-64, 32-bit with MMX
我發現linux-x86-sse2在我基於Intel架構的工作站上運行效果最好。
cluster@server:~/source/john-1.7.2-bp17-mpi8/src$ make clean linux-x86-sse2
如果程式編譯過程沒問題,測試一下它能否正常工作。
cluster@server:~/source/john-1.7.2-bp17-mpi8/src$ ../run/john -format=DES –test
Benchmarking: Traditional DES [128/128 BS SSE2]… DONE
Many salts: 1994K c/s real, 1994K c/s virtual
Only one salt: 1658 c/s real, 1654K c/s virtual
將你新編譯出的可執行檔移動至~/bin下。
運行John程式並確保它是_mpi版本。
如果仍然無法正確執行,那一定是你設定的路徑出了問題。
cluster@server:~/source/john-1.7.2-bp17-mpi8/src$ john|grep version
John the Ripper password cracker, version 1.7.2_bp17_mpi
配置額外的節點
每次在叢集中新增節點,都需要遵循下列操作:
該節點的IP地址為10.0.0.2
前期準備