Высшая степень паранойи или меняем пароль по CRON`у

А почему бы не менять пароль пользователя (единственного открытого для ssh 🙂 ) по крону?.. Кому интересно прошу под кат

Данная статья является не чем иным как стебом, прошу не воспринимать её в всерьез. Однако, и не строит забывать, то, что описанная ниже методика полностью работоспособна.

Подготовка:

sudo apt-get install hashalot

Собственно родился вот такой скриптик:

[code]#!/bin/bash
if [ -n "$1" ]
then
KEY=$1
else
read KEY
fi
KEY=`echo $KEY | tr ‘\n’ » 2>/dev/null`

date
TIME=`date +"%H %M %F"`
SECRET="type your secret phrase here"
PASS=`echo "$TIME $SECRET $KEY" | /usr/sbin/hashalot sha256 -q -x`

if [ -n "$2" ]
then
echo -e "$PASS\n$PASS" | passwd $2
else
echo $PASS
fi[/code]

Из настроек:

  1. В 11-й строке можно поиграть с ключами даты (только не используйте ключи выдающие значение с точностью меньше минуты).
  2. В 12-й строке вписать свою уникальную аброкадабру.
  3. В 13-й переставить местами ключи $TIME, $SECRET и $KEY. И поменять алгоритм хэша с sha256 на ripemd160rmd160rmd160compatsha384 или sha512.

Собственно что делает сей скрипт:

Первый параметр — фраза ключ, которая принимает участие в генерации пароля (если не задать то скрипт спросит сам)

Второй параметр — какому пользюку менять пароль. Если не задано то пароль соот-но никому не меняется, а выводится на экран. Для безнаказанной смены пароля надо быть под root. Если хотите в секретной фразе использовать пробел то просто обнесите её кавычками. Например: `моя очень секретная фраза`

Если для вас шестнадцатеричный хэш — не кашерный пароль, то просто удалите ключ -x в конце 13-й строчки получите хэш в бинарном виде который будет преобразован в символы кодировки 🙂

Создаем сей скрипт в /root, делаем исполняемым.

Далее пишем в крон что-то на подобие

* * * * * /root/myScript mySicretPhrase mySharedUserName

где myScript — имя выше описанного скрипта

mySicretPhrase — что-то что вам легко запомнить

mySharedUserName — имя пользователя который страдает параноей

Собственно все есть кроме решения вопроса — а как же все таки зайти с удаленного компьютера?

Варианта три (IMHO):

  1. Таскать с собой на флешке копию скрипта и запустив на удаленном компьютере получить тот же пароль, но для этого надо быть уверенным что на удаленном компьютере нет расхождения по времени с удаленным более чем на минуту (IMHO некошерно).
  2. Нарисовать вэб морду, но тут не понятно сколько настроек выносить в эту вэб морду (IMHO некошерно).
  3. Сделать серверное приложение к которому можно будет подключится ввести mySecretPhrase и получить текущий пароль.

Остановимся на данном варианте подробнее.

Делаем следующее:

1. Установим элементарный TCP сервер

 sudo apt-get install ucspi-tcp

Для IP-6

 sudo apt-get install ucspi-tcp-ipv6

2. Там есть интересная прилажуха tcpserver

Работает вот так:

tcpserver xx.xx.xx.xx port myScript

где xx.xx.xx.xxIP адрес сервера

port — порт сервера

myScript — приложения которому сервер будет передавать все полученные сообщения и отдавать пользователю все что вывело приложение. Если приложение остановилось то пользователь отключается.

У этого приложения есть еще много ключей настройки… но сейчас не о них.

3. У нас получается что-то вроде такого:

tcpserver 192.168.0.999 66 /root/myScript

4. Теперь в /etc/init.d создаем скрипт с содержанием на подобие п.3, делаем запускаемым и ставим в автозагрузку.

P.S.: пора лечится от паранойи…

P.P.S.: что бы получить пароль надо на удаленной машине выполнить:

telnet my-server.com 66

и ввести mySecretPhrase. Ответ от сервера и будет паролем по времени можно определить сколько еще пароль будет актуальным.

Высшая степень паранойи или меняем пароль по CRON`у: 4 комментария

  1. то есть брутфорс теперь выглядит так:
    — надо нащупать порт
    — перебором кидаем фразы на него
    — ответ пользуем в ssh
    проблема только узнать mySharedUserName

  2. А в cron-e можно сделать так чтобы — «только не используйте ключи выдающие значение с точностью меньше минуты»?
    Расскажите как 😉

    1. В cron`е никак он только по минутам 🙂 , но он по этому и по минутам, что по факту задания запускаются не точно в начало минуты а + 1 — 2 сек.
      И если при генерации пароля брать точность меньше минуты, то ты в свой пароль никогда не попадешь…
      А вот date без проблем даст тебе значение меньше минуты 😉

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *