Как установить и использовать OTPW для одноразовых паролей SSH в Ubuntu 14.04

Вступление

SSH поставляется с множеством функций безопасности, чтобы убедиться, что ваши соединения безопасны, и что вы можете без проблем проходить аутентификацию на удаленном хосте. В частности, ключи SSH создают безопасный способ подключения без передачи вашего пароля или ключевой фразы через Интернет.

Однако существуют ситуации, когда использование ключа SSH нецелесообразно или может быть небезопасным. Допустим, вы пытаетесь использовать SSH с общедоступного компьютера или компьютера, который вы пытаетесь устранить для друга. Система открытых ключей предполагает, что компьютер, к которому вы подключаетесь с, является, по крайней мере, несколько заслуживающим доверия. Это не всегда так.

Если вы используете пару ключей в этом сценарии, даже если ваш ключ защищен паролем, ключ будет расшифрован и помещен в память локального компьютера для работы, по крайней мере, для проверки подлинности. Это означает, что он уязвим, если вы не доверяете локальной машине.

Система под названием * аутентификация по одноразовому паролю * или OTPW была создана для работы в таких условиях. Одноразовые пароли - это система, которая была включена в другие механизмы авторизации, такие как двухфакторная аутентификация и решения с единым входом.

В этом руководстве мы настроим OTPW на экземпляре Ubuntu 14.04 VPS. Это позволит нам войти в систему с двухкомпонентным паролем, который можно использовать только один раз.

Основная концепция

Способ работы OTPW заключается в подключении к системе аутентификации PAM.

После того, как вы настроили свою систему на разрешение входа в систему с помощью OTPW, вы можете сгенерировать набор паролей «чанков», указав префиксный пароль. Затем вы можете либо распечатать их, сохранить их на устройстве, к которому у вас будет доступ, и которому вы доверяете (например, зашифровать на своем телефоне), либо в каком-либо другом формате, к которому вы можете получить доступ _ _ без_с помощью компьютера, которому вы не доверяете.

Теперь, когда вам будет предложено ввести пароль, вам будет предоставлен ссылочный номер. Вы введете созданный вами префикс пароля, а затем часть пароля, связанную с указанным ссылочным номером.

Этот пароль будет работать только один раз. Если кто-то регистрирует ключи на вашем компьютере или видит, что вы вводите пароль, это не имеет значения, поскольку оно не будет действительным после того, как вы вошли в систему.

Установите компоненты

Чтобы настроить эту систему, нам нужно сначала установить необходимые компоненты.

Поскольку аутентификация полностью выполняется на стороне сервера, а клиентская часть ничем не отличается от обычного запроса пароля, мы будем устанавливать только несколько пакетов на нашем сервере.

Мы обновим наш кеш пакетов и установим их из репозитория:

sudo apt-get update
sudo apt-get install otpw-bin libpam-otpw

Как видите, механизм разделен на две части. Первый компонент используется для генерации и управления одноразовыми паролями. Второй - это плагин, который используется с PAM для аутентификации по этим файлам паролей.

Редактирование PAM, чтобы воспользоваться преимуществами OTPW

Прежде чем мы что-то сделаем с нашими действительными паролями, нам нужно будет добавить OTPW в качестве опции для PAM.

Мы хотим сделать это способом, ограничивающим обычные пароли, потому что мы предполагаем, что у вас уже есть https://www.digitalocean.com/community/articles/how-to-set-up-ssh-keys—​2 [ настроить ключи SSH] для аутентификации на компьютерах, которым вы доверяете. Наша конфигурация будет использовать ключи SSH, если они доступны, в противном случае она будет использовать механизм OTPW.

Для этого мы собираемся изменить только файл, связанный с входом в систему по SSH. Это не повлияет на наши локальные логины или наши логины через веб-консоль DigitalOcean.

Откройте файл конфигурации SSH PAM:

sudo nano /etc/pam.d/sshd

В верхней части файла есть директива, предназначенная для импорта файла + common-auth +. Этот файл позволяет проводить обычную проверку подлинности по паролю без использования системы OTPW, которая нам не нужна для наших сеансов SSH. Давайте прокомментируем это:

#@include common-auth

Ниже давайте добавим несколько строк, которые позволят нам использовать систему OTPW для обработки запросов пароля:

auth    required    pam_otpw.so
session optional    pam_otpw.so

Когда вы закончите, сохраните и закройте файл.

Настроить SSHD

Теперь, когда у нас есть модуль PAM демона SSH, настроенный для использования OTPW, мы можем настроить сам демон с соответствующими значениями.

Откройте файл с правами суперпользователя, чтобы проверить файл:

sudo nano /etc/ssh/sshd_config

Мы ищем несколько отдельных ценностей. Нам нужно проверить, что для каждого из этих параметров установлено значение ниже. Если вы не можете найти какие-либо параметры, добавьте и установите их. Не добавляйте параметры более одного раза, потому что они могут привести к сбою демона.

UsePrivilegeSeparation yes
PubkeyAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
UsePAM yes

После того, как вы установите эти параметры, захотите перезапустить наш демон SSH, чтобы изменения вступили в силу:

sudo service ssh restart

Создание файлов паролей OTPW

Теперь, когда наша система настроена на использование OTPW для пользователей SSH, у которых нет открытого ключа, мы можем создать два файла паролей, необходимых для работы этой системы.

Один файл, который будет храниться в + ~ / .otpw +, будет содержать хэшированное значение сегментов пароля, по одному на строку. Второй файл, который мы создадим, - это удобочитаемые сегменты одноразового пароля, которые мы должны скопировать на защищенное устройство, распечатать их или иным образом поместить в безопасное, переносимое место.

Все, что нам нужно сделать, чтобы сгенерировать этот список, это вызвать команду + otpw-gen +. Обычно это выводит читаемый человеком текст в стандартный формат, но мы можем передать его в файл для безопасного хранения:

cd ~
otpw-gen > nothingtosee.txt

Это сгенерирует случайное начальное число и запросит префикс пароля. Вы должны использовать те же правила здравого смысла, которые вы использовали бы для любого обычного пароля. Убедитесь, что вы помните пароль.

После этого у вас будет файл + ~ / .otpw +, содержащий хэшированные значения суффиксов паролей, по одному на строку:

OTPW1
280 3 12 8
253tFMngG2PNYhn
132Kua%SZ+esb6t
237yH7D2FMbQsyW
125rrXfBRwnF+A%
106gJxhJE4jkknj
04135:5:knWIB4:
232/d4kI:n57IcD
244RASe8ka63b8Z
057GmqfFe=pXQqu
. . .

Вы также передали свои нехэшированные суффиксы с их ссылочным номером в файл в + ~ / nothingtosee.txt +.

OTPW list generated 2014-04-03 18:06 on sshd

000 /rGF h5Hq  056 /zi5 %yTJ  112 J7BT HdM=  168 fdBm X%Tn  224 69bi =9mE
001 GoOG jxYQ  057 E=o3 kuEF  113 zwit p27J  169 nHK9 CXRx  225 IihF =o8g
002 Xm=E PuXc  058 Ok27 ZJ++  114 On=5 pNYH  170 ZRDa mB5e  226 yYsb CAfn
003 deL+ iHs7  059 /WGS :J4M  115 ZZd/ 8zyU  171 acDd dESV  227 ddjg ipcR
004 KhDn NdfS  060 =tEz ACye  116 FkQ9 8kSu  172 iRSR nZWT  228 9hHd veZ9
005 rGFG K5=7  061 MvUW LRxc  117 2YwY axJJ  173 kEV5 T/Vz  229 wx%n Le6P
006 GWi2 fHjf  062 qOR: WN2x  118 FvD4 oNjT  174 99OT 8KPy  230 /I=Y hicP
007 XPom pEYp  063 8Xvm vZGa  119 UNjF :Kys  175 b95i SU3R  231 keLn aDcK
008 fJI% 3Qs2  064 3I7Q I2xc  120 5Tm9 REQK  176 AVg: 4ijE  232 :aIF op6V
009 P/Sn dSxA  065 A+J6 =4zo  121 LAyj 3m2+  177 TMuN 9rJZ  233 SWvB %+cL
. . .

В левом столбце указан номер ссылки, за которым следуют 8 символов для суффикса. Пробел между первым и последним 4 символами в суффиксе предназначен для удобства чтения и при необходимости может быть удален при вводе суффикса.

По умолчанию генератор выдает достаточно суффиксов, чтобы поместиться на стандартном листе бумаги, что отлично подходит для печати и одного из способов передачи вывода.

Вам придется выполнить эту процедуру для каждого пользователя, для которого вы хотите настроить доступ к одноразовому паролю.

Пробовать

На компьютере, который не настроен с помощью вашего ключа SSH (вы также можете временно вывести ключ из каталога + ~ / .ssh +), вы можете протестировать новую систему одноразовых паролей.

Войдите в систему пользователя, для которого вы настроили OTPW, как обычно:

«» «»»

Password 253:

Как видите, нам дали суффикс, который хочет OTPW.

Сначала введите свой префиксный пароль, а затем непосредственно с суффиксом в той же строке, без пробела между вашим префиксным паролем и суффиксом. Вы можете сохранить пространство, которое отображается в суффиксном файле, если хотите.

Итак, допустим, что мой префикс-пароль - «crazyburr! To», и что у файла суффикса есть столбец, который выглядит так:

249 N4HY RsbH
250 +vAz fawn
251 O4/R ZrhM
252 c6kP jgUT

254 aYzA :F64
255 3ezp ZpIq
256 ggIi TD2v

В этом случае мы можем ввести «crazyburr! ToI = aA OKSz» или «crazyburr! ToI = aAOKSz».

После этого вы сможете войти без проблем. Если вы проверите файл + ~ / .otpw +, вы увидите, что одна из хэшированных строк была заменена на тире:

. . .
091icM5kSPVOdcU
274Uf3q/=kTYcu8
229fHfmIsCj7mjQ
---------------
115EzDO6=jM/sOT
143iWCdteSk3kg7
265S+QTGcg+MAZO
174UgXchxsI2g:G
. . .

Это означает, что суффикс был использован и больше не действителен.

Если два пользователя попытаются войти в учетную запись одновременно, OTPW вместо этого запросит ваш пароль префикса, а затем суффиксы three. Каждый из трех запрошенных суффиксов будет отличаться, так что кто-то, кто вводит кейлог и пытается побить вас нажатием клавиши ввода, не сможет завершить это успешно.

Приглашение будет выглядеть так:

Password 161/208/252:

В этой ситуации создается файл + ~ / .otpw.lock +. После успешного входа в систему он должен быть удален, но есть ошибка, из-за которой это не работает в некоторых ситуациях. В этом случае просто удалите блокировку вручную:

rm ~/.otpw.lock

В следующий раз вам снова будет предложено ввести только один пароль.

Предостережения и ошибки

Я упоминал выше, что иногда файл блокировки не удаляется автоматически после успешного входа в систему. Это особенно распространено, когда пользователь прерывает соединение, набирая CTRL-C перед завершением запроса.

Еще одна относительно важная ошибка - это сообщение о количестве оставшихся действительных записей OTPW. Обычно это обрабатывается строкой сеанса в конфигурации PAM, но в настоящее время она работает неправильно.

Чтобы обойти это, Вольфганг Кроенер написал очень простой bash-скрипт, который реализует эту функциональность в this нить списка рассылки Debian. Мы можем реализовать это различными способами, но самое простое - просто добавить его в конец нашего + ~ / .bashrc + для пользователей, использующих OTPW:

nano ~/.bashrc

Внизу вставьте это:

if [ "$SSH_TTY" -a -f $HOME/.otpw ]; then
 PW_LINES=$(wc -l <$HOME/.otpw)
 PW_USED=$(grep -- ---- $HOME/.otpw | wc -l)
 echo "OTPW $PW_USED/`echo $PW_LINES-2 | bc` used"
fi

Вы также можете добавить это в более централизованное место. Таким образом, он будет выводить в зависимости от того, существует ли файл + ~ / .otpw + для каждого пользователя.

Теперь, когда вы войдете в систему, вы получите статистику по вашим текущим оставшимся паролям:

OTPW 6/280 used

OTPW рекомендует заново составить список паролей, когда вы получаете менее 50% доступных паролей. Вы можете сделать это, повторно выполнив команду генерации:

otpw-gen > anotherfile.txt

Это перезапишет ваши предыдущие суффиксы пароля, поэтому после этой процедуры они станут непригодными для использования.

Заключение

Настройка OTPW может предоставить вам возможность входа на сервер из небезопасного местоположения. Несмотря на то, что он страдает некоторыми недостатками обычного входа в систему с паролями, он обеспечивает золотую середину между входами в систему на основе ключей, которые никогда не должны передаваться на небезопасный компьютер, и обычными входами в систему с паролями, которые имеют много недостатков и уязвимостей.

Related