The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Запуск John the Ripper в MPI-кластере на базе Ubuntu 10.04
Инструкция по превращению нескольких компьютеров в MPI-кластер и последующем
запуске в этом кластере John the Ripper с целью организации эксперимента по
распределенному подбору значений, соответствующих заданному хэшу (например, для
проверки своих паролей на надежность). Руководство носит упрощенный характер и
не охватывает некоторых вопросов по обеспечению высокой надежности и
безопасности, рассматривая процесс создания кластера как проводимый в
академических целях эксперимент.

Для создания кластера нам понадобиться как минимум два компьютера, работающих
под управлением  Ubuntu Linux 10.04. Для соединения машин будет достаточно
любых сетевых карт,  John the Ripper не требует большой пропускной способности.


Настройка сервера.

Для работы кластера нам потребуются следующие пакеты c реализацией MPI Message Passing Interface:

   $ sudo apt-get install libmpich1.0-dev libmpich-mpd1.0-dev libmpich-shmem1.0-dev mpich2 mpich2-doc 

Дополнительно, установим John the Ripper, OpenSSH и комплект для сборки из исходных текстов:

   $ sudo apt-get install john openssh-server build-essentials


Для упрощения настройки заносим IP и имя текущего хоста в /etc/hosts

   127.0.0.1 localhost
   10.0.0.1 server1.test.ru server1

Создаем в системе пользователя "cluster" и создаем каталог bin в домашней
директории этого пользователя:

   $ sudo useradd -m -s /bin/bash cluster
   $ sudo passwd cluster

   $ sudo su - cluster -c "mkdir ~/bin;export PATH=~/bin:$PATH"


Настраиваем MPICH

Создаем в домашней директории пользователя  cluster конфигурационный файл
~/.mpd.conf с настройками аутентификации для MPI-кластера.
Записываем в файл ~/.mpd.conf строку "secretword=пароль", где пароль для
аутентификации всех узлов кластера.


Правим права доступа:
   $ chmod 600 ~/.mpd.conf

Список узлов кластера, включая текущий сервер, перечисляем в файле ~/mpd.hosts.
Формат строки файла "хост:число процессоров", т.е. для четырехядерного сервера
c IP 10.0.0.2 указываем "10.0.0.2:4". Все IP должны быть доступны по сети, т.е.
127.0.0.1 для локального узла указывать нельзя.

Итоговый процесс настройки MPICH выглядит следующим образом:

   $ touch ~/.mpd.conf
   $ chmod 600 ~/.mpd.conf
   $ echo secretword=pass>~/.mpd.conf
   $ /sbin/ifconfig|grep "inet addr" # смотрим IP на хостах

   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

   $ cat /proc/cpuinfo|grep processor|wc -l # смотрим число ядер CPU

   1

   $ echo "10.0.0.1:1" >> ~/mpd.hosts

Запускаем кластер:

   $ mpdboot

Просматриваем список узлов кластера:

   $ mpdtrace

Завершаем работу кластера:

   $ mpdallexit


Установка John the Ripper

Исходные тексты версии John the Ripper с дополнительными MPI-патчами можно
загрузить на странице http://www.bindshell.net/tools/johntheripper

Загружаем код:

   $ mkdir source
   $ cd source
   $ wget http://www.bindshell.net/tools/johntheripper/john-1.7.2-bp17-mpi8.tar.gz

Распаковываем архив и выполняем сборку:

   $ tar -zxf john-1.7.2-bp17-mpi8.tar.gz
   $ cd john-1.7.2-bp17-mpi8/src/
   $ make # будет выведен список опций
   $ make linux-x86-sse2

где вместо linux-x86-sse2 можно указать другой тип системы:

   linux-x86-mmx Linux, x86 с MMX
   linux-x86-sse Linux, x86 с SSE2 (лучший выбор)
   linux-x86-any Linux, x86
   linux-x86-64 Linux, AMD x86-64, 64-bit/SSE2 (лучший выбор)
   linux-x86-64-mmx Linux, AMD x86-64, 32-bit с MMX


Проверяем работу собранной программы:

   $ ../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

   $ mv ../run/* ~/bin

Проверяем, что John the Ripper собран с поддержкой MPI:

   $ john|grep mpi

   John the Ripper password cracker, version 1.7.2_bp17_mpi


Повторяем все ранее описанные шаги на всех узлах кластера.

Настраиваем беспарольный вход по SSH для пользователя cluster для всех узлов кластера.

Генерируем rsa-ключ:

   $ ssh-keygen -t rsa

Копируем ключ на другие узлы кластера:

   $ ssh cluster@10.0.0.2 mkdir -p .ssh
   $ cat .ssh/id_rsa.pub | ssh cluster@10.0.0.2 'cat>>.ssh/authorized_keys'

Добавляем параметры узла в ~/mpd.hosts и создаем ~/.mpd.conf и ~/mpd.hosts на удаленных узлах:

   $ ssh cluster@10.0.0.2 'cat /proc/cpuinfo|grep processor|wc -l'
   2
   $ echo 10.0.0.2:2 >> ~/mpd.hosts
   $ for i in `cut --delimiter=: -f1 ~/mpd.hosts`;do scp ~/.mpd.conf cluster@$i:~; scp ~/mpd.hosts cluster@$i:~; done

Добавляем в /etc/hosts имя дополнительного узла:

   10.0.0.2 node1

Синхронизируем содержимое /etc/hosts на всех узлах.
Если этого не сделать возникнет ошибка:

   mpdboot_server (handle_mpd_output 407): failed to handshake with mpd on 10.0.0.2; recvd

Запускаем кластер:

   $ mpdboot --verbose --ncpus=1 -n 2

   running mpdallexit on server
   LAUNCHED mpd on server via
   RUNNING: mpd on server
   LAUCNHED mpd on 10.0.0.2 via server
   RUNNING: mpd on 10.0.0.2

где, --verbose - вывод расширенной информации, а "--ncpus=1" - задаем число CPU
для текущего сервера, "-n 2" - указываем, что в кластере 2 узла (текущий сервер
10.0.0.1 + внешний узел 10.0.0.2).

На втором узле 10.0.0.2 MPICH будет запущен автоматически.

Смотрим список активных узлов:

   $ mpdtrace
   server
   node1


Для тестирования, запустим команду hostname на всех узлах:

   $ mpiexec -np 3 hostname

   server
   node1
   node1

node1 - вывелось два раза так как к узлу привязано 2 CPU и задача была выполнена два раза.

Завершаем работу кластера:

   $ mpdallexit
   Using the MPI cluster to crack passwords.

Попробуем подобрать значение для MD5-хэша:

   $ echo fb7852f240efac3c0bdce8cf9dcb2e50 > crackme1.md5

Запускаем кластер:

   $ mpdboot --ncpus=2 -n 2

Копируем файл crackme1.md5 на все узлы:

   $ for i in `cut --delimiter=: -f1 ~/mpd.hosts`;do scp ~/crackme1.mp5
cluster@$1:~;done

Чтобы упросить процесс копирования на все узлы кластера напишем простой скрипт  distributer.sh:

   #!/bin/bash

   # usage: ./distributer.sh filename

   for x in `cut --delimiter=: -f1 ~/mpd.hosts`;do scp $1 cluster@$i:~;done

Запускаем John the Ripper на 3 CPU:

   $ mpiexec -np 3 john --format:raw-MD5 crackme1.md5

   Loaded 1 password hash (Raw MD5 [raw-md5 SSE2])
   Loaded 1 password hash (Raw MD5 [raw-md5 SSE2])
   Loaded 1 password hash (Raw MD5 [raw-md5 SSE2])

   test1 (user)

Process 2 completed loop.

Threat: 2 guesses: 1 time 0:00:00:02 (3) c/s: 5616K trying: 12345 - 56778

После завершения подбора завершаем работу кластера:

   $ mpdallexit
 
10.03.2011 , Источник: http://www.petur.eu/blog/?p=59...
Ключи: mpi, cluster, johntheripper, mpich, ubuntu, hash, ubuntu / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Кластерные технологии

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Игорь, 17:31, 10/03/2011 [ответить] [смотреть все]
  • +/
    Забавно
     
  • 1.2, free, 21:28, 10/03/2011 [ответить] [смотреть все]
  • +/
    man ssh-copy-id
    не удержался
     
     
  • 2.7, sn00p, 10:01, 11/03/2011 [^] [ответить] [смотреть все] [показать ветку]
  • +1 +/
    Какая разница то, как ключи копировать, по времени одно и тоже.
     
  • 1.3, fyjybvec, 23:33, 10/03/2011 [ответить] [смотреть все]
  • +/
    Поднимал на слаке. Достаточно пакета mpich2.
     
  • 1.4, Андрей, 04:05, 11/03/2011 [ответить] [смотреть все]
  • +/
    mpich (вместо openmpi) был выбран просто так или есть причины?
     
     
  • 2.8, Аноним, 10:43, 11/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Авторы патчей для John the Ripper рекомендуют использовать mpich This has curr... весь текст скрыт [показать] [показать ветку]
     
  • 1.6, anoni, 10:01, 11/03/2011 [ответить] [смотреть все]  
  • +/
    MPI для John the Ripper?!
    Тогда еще обязательно нужно torque использовать!
     
     
  • 2.11, nuclight, 17:22, 11/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    И Infiniband-карточки купить ... весь текст скрыт [показать] [показать ветку]
     
  • 1.9, крендель, 16:46, 11/03/2011 [ответить] [смотреть все]  
  • +/
    John the Ripper умеет использовать GPU (видео карты) для перебора паролей? Или только CPU проц системы?
     
     
  • 2.13, solardiz, 21:26, 11/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Пока только CPU Вернее, есть патчи, добавляющие поддержку OpenCL для некоторых ... весь текст скрыт [показать] [показать ветку]
     
  • 2.15, solardiz, 00:49, 19/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Openwall приняли в Google Summer of Code 2011. Среди наших "идей" - в том числе поддержка GPU в JtR (две отдельных под-задачи). Студенты - шлите заявки. :-) Начать лучше с подписки на john-dev и постинга туда, не дожидаясь начала приема заявок Google'ом (будет с 28-го марта).

    http://openwall.info/wiki/ideas#John-the-Ripper
    http://www.openwall.com/lists/announce/2011/03/18/1
    http://www.openwall.com/lists/
    http://www.google-melange.com/gsoc/program/accepted_orgs/google/gsoc2011

     
     
  • 3.16, крендель, 00:06, 22/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Спасибо, отличная новость! Ждем развития!
     
  • 1.12, JL2001, 18:11, 11/03/2011 [ответить] [смотреть все]  
  • +/
    зачем устанавливается это ?
    sudo apt-get install john
    мы же отдельно качаем сырцы и компилим, закидываем в директорию ~/bin юзера cluster
     
  • 1.14, ffsdmad, 11:30, 17/03/2011 [ответить] [смотреть все]  
  • +/
    восстановите мне пароль
    user21:$6$QQidrD8G$hZ4ll/2g5t.aZjGNr5b4v2.tnTNR9Jnx/Y2sR8cr6QS.npXSBge8gTHpfm6nupCBmpW2143Xf/A6ISXRmZNFp0:14863:0:99999:7:::
     
     
  • 2.18, dq0s4y71, 17:23, 23/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    JtR не умеет SHA-512.
     
     
  • 3.19, solardiz, 01:41, 24/03/2011 [^] [ответить] [смотреть все]  
  • +/
    > JtR не умеет SHA-512.

    Начиная с 1.7.6 (вышла прошлым летом), в JtR есть поддержка "generic crypt(3)", благодаря которой SHA-crypt хеши поддерживаются при условии их поддержки системой - т.е. на Linux с glibc 2.7 или новее, а также на свежих версиях Solaris. И на Linux и на Solaris реализована также OpenMP-параллелизация этого режима (включается раскомментариванием строчки в Makefile), благодаря crypt_r(3) на glibc и thread-safe crypt(3C) на Solaris. Автораспознавание хешей этого типа работает (т.е., например, просто "john /etc/shadow" без всяких опций сработает как надо, хотя лучше сначала применить "unshadow", чтобы использовать информацию из полей GECOS и имена домашних каталогов).

     
  • 1.17, dq0s4y71, 16:56, 23/03/2011 [ответить] [смотреть все]  
  • +/
    В JtR есть такая константа PLAINTEXT_LENGTH. Для MD5, например, она равна 15. Сделайте ваш пароль длиной больше 15 символов и хоть на кластере его ломай хоть на суперкомпьютере - JtR его ни в жисть не возьмет. А произвольно увеличить PLAINTEXT_LENGTH и перекомпилить нельзя :(
     
     
  • 2.20, solardiz, 02:10, 24/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Да, для MD5-based crypt 3 действительно есть ограничение в 15 символов, которое... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.21, dq0s4y71, 13:33, 24/03/2011 [^] [ответить] [смотреть все]  
  • +/
    > solardiz

    Упс! Так вы и есть Solar Designer? Никогда бы не подумал, что вы русскоязычный :) Ну, тогда позвольте лично выразить вам свое восхищение качеством вашего ПО и пожелать дальнейших успехов вашему проекту! :)

     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor