Вверх

Как настроить двухфакторную аутентификацию на Raspberry Pi

5 февраля 2021 |

Как настроить двухфакторную аутентификацию на Raspberry Pi

A Raspberry Pi sitting on a laptop keyboard. Kiklas / Shutterstock

Raspberry Pi сейчас повсюду, поэтому он привлек внимание злоумышленников и киберпреступников. Мы покажем вам, как защитить свой Pi с помощью двухфакторной аутентификации.

Удивительный Raspberry Pi

Raspberry Pi — это одноплатный компьютер. Он был запущен в Великобритании в 2012 году с целью побудить детей возиться, создавать и изучать код. Первоначально форм-фактор представлял собой плату размером с кредитную карту, работающую от зарядного устройства для телефона.

Он обеспечивает выход HDMI, порты USB, подключение к сети и работает под управлением Linux. Более поздние дополнения к линейке включали еще меньшие версии, предназначенные для включения в продукты или работы в качестве автономных систем. Цены варьируются от 5 долларов за минималистский Pi Zero до 75 долларов за Pi 4 B / 8 ГБ.

Его успех был невероятным: по всему миру было продано более 30 миллионов этих крошечных компьютеров. Любители сделали с ними удивительные и вдохновляющие вещи, в том числе подняли один к краю космоса и обратно на воздушном шаре.

Увы, когда вычислительная платформа становится достаточно широко распространенной, она неизбежно привлекает внимание киберпреступников. Ужасно думать, сколько Пи используют учетную запись пользователя и пароль по умолчанию. Если ваш Pi общедоступен и доступен из Интернета через Secure Shell (SSH), он должен быть безопасным.

Даже если на вашем Pi нет ценных данных или программного обеспечения, вам необходимо защитить его, потому что ваш Pi не является реальной целью — это просто способ проникнуть в вашу сеть. Как только злоумышленник закрепится в сети, он переключится на другие устройства, в которых он действительно заинтересован.

Двухфакторная аутентификация

Для аутентификации — или получения доступа к системе — требуется один или несколько факторов. Факторы делятся на следующие категории:

  • Что-то, что вы знаете: например, пароль или -фраза.
  • Что-то, что у вас есть: например, сотовый телефон, физический токен или ключ.
  • Кто-то из вас: биометрические данные, такие как отпечаток пальца или сканирование сетчатки.

Для многофакторной аутентификации (MFA) требуется пароль и один или несколько элементов из другого категории. В нашем примере мы будем использовать пароль и сотовый телефон. На сотовом телефоне будет запущено приложение Google Authenticator, а Pi будет запускать модуль аутентификации Google.

Приложение для мобильного телефона будет связано с вашим Pi путем сканирования QR-кода. Это передает некоторую исходную информацию на ваш мобильный телефон от Pi, гарантируя, что их алгоритмы генерации чисел одновременно генерируют одни и те же коды. Коды называются временными одноразовыми паролями (TOTP).

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

Настройка Pi

Если вы обычно используете SSH на своем Pi, скорее всего, это автономная система, поэтому мы настроим ее через SSH connection.

Безопаснее всего создать два SSH-соединения: одно для настройки и тестирования, а другое — в качестве подстраховки. Таким образом, если вы заблокируете свой Pi, у вас все равно останется активное второе активное SSH-соединение. Изменение настроек SSH не повлияет на текущее соединение, поэтому вы можете использовать второй, чтобы отменить любые изменения и исправить ситуацию.

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

Конечная санкция, конечно же, — перепрограммировать действующий на карту Micro SD Pi, но давайте постараемся этого избежать.

Во-первых, нам нужно выполнить два подключения к Pi. Обе команды имеют следующий вид:

ssh pi @ watchdog.local

Имя этого Пи — «сторожевой пес», но вместо этого вы должны ввести свое имя. Если вы изменили имя пользователя по умолчанию, используйте и его, наше — «пи».

Помните, в целях безопасности введите эту команду дважды в разных окнах терминала, чтобы у вас было два подключения к вашему Pi. Затем сверните один из них, чтобы он не мешал и не закрылся случайно.

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

Вам необходимо отредактировать файл «sshd_config». Сделаем это в текстовом редакторе nano:

sudo nano / etc / ssh / sshd_config

Прокрутите файл, пока не увидите следующую строку:

ChallengeResponseAuthentication нет

Замените «нет» на «да».”

Нажмите Ctrl + O, чтобы сохранить изменения в nano, а затем нажмите Ctrl + X, чтобы закрыть файл. Используйте следующую команду для перезапуска демона SSH:

sudo systemctl restart ssh

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

Введите следующее:

sudo apt-get install libpam-google-authentication

Установка приложения

Приложение Google Authenticator доступно для iPhone и Android, поэтому просто установите соответствующую версию для своего мобильного телефона. Вы также можете использовать Authy и другие приложения, поддерживающие этот тип кода аутентификации.

Google Authenticator App icon on an Android cell phone.

Настройка двухфакторной аутентификации

В учетной записи, которую вы будете использовать при подключении к Pi через SSH, выполните следующую команду (не включайте sudo prefix):

google-authentication

Вас спросят, хотите ли вы, чтобы токены аутентификации были привязаны к времени, нажмите Y, а затем нажмите Enter.

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

Вы также увидите некоторые коды безопасности под QR-кодом. Они записываются в файл с именем «.google_authenticator», но вы можете сделать их копию сейчас. Если вы когда-либо потеряете возможность получить TOTP (например, если вы потеряете свой мобильный телефон), вы можете использовать эти коды для аутентификации.

Вы должны ответить на четыре вопроса, первый из которых:

Вы хотите, чтобы я обновил ваш файл «/home/pi/.google_authenticator»? (да / нет)

Нажмите Y, а затем нажмите Enter.

Следующий вопрос спрашивает, хотите ли вы предотвратить многократное использование одного и того же кода в течение 30-секундного окна.

Нажмите Y, и затем нажмите Enter.

В третьем вопросе спрашивается, хотите ли вы расширить окно приема токенов TOTP.

Нажмите N в ответ к этому, а затем нажмите Enter.

Последний вопрос: «Хотите ли вы включить ограничение скорости?»

Введите Y , а затем нажмите Enter.

Вы вернулись в командную строку. При необходимости перетащите окно терминала шире и / или прокрутите вверх в окне терминала, чтобы увидеть весь QR-код.

На мобильном телефоне откройте приложение для проверки подлинности и нажмите знак плюса (+) в правом нижнем углу экрана. Выберите «Сканировать QR-код», а затем отсканируйте QR-код в окне терминала.

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

Анимированный кружок рядом с кодом указывает, как долго код будет действителен: a полный круг означает 30 секунд, полукруг означает 15 секунд и так далее.

Свяжем все вместе

Нам нужно отредактировать еще один файл. Мы должны указать SSH, какой модуль аутентификации PAM использовать:

sudo nano /etc/pam.d/sshd

Введите следующие строки в верхней части файла :

# Требуется аутентификация 2FA pam_google_authenticator.так что

Вы также можете выбрать, когда вы хотите, чтобы вас просили ввести TOTP:

  • После ввода пароля: Введите предыдущий строки под «@include common-auth», как показано на изображении выше.
  • Прежде чем вас попросят ввести пароль: введите предыдущие строки выше «@include common-auth».

Обратите внимание на символы подчеркивания (_), используемые в «pam_google_authenticator.so», а не на дефисы (-), которые мы использовали ранее с командой apt-get для установки модуля.

Нажмите Ctrl + O, чтобы записать изменения в файл, а затем нажмите Ctrl + X, чтобы закрыть редактор. Нам нужно перезапустить SSH в последний раз, и на этом все готово:

sudo systemctl restart ssh

Закройте это SSH-соединение, но оставьте другую сеть безопасности SSH соединение работает до тех пор, пока мы не проверим этот следующий шаг.

Убедитесь, что приложение аутентификатора открыто и готово на вашем мобильном телефоне, а затем откройте новое SSH-соединение с Pi:

ssh pi @ watchdog.local

У вас спросят пароль, а затем код. Введите код со своего мобильного телефона без пробелов между цифрами. Как и ваш пароль, он не отображается эхом на экране.

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

Лучше безопаснее, чем сожалеть

Вы заметили букву «r» в слове «безопаснее» выше?

Действительно, теперь вы в большей безопасности, чем раньше, при подключении к Raspberry Pi, но ничто не может быть на 100% безопасным. Есть способы обойти двухфакторную аутентификацию. Они основаны на социальной инженерии, атаках типа «злоумышленник в середине» и «злоумышленник на конечной точке», подмене SIM-карты и других передовых методах, которые мы, очевидно, не будем здесь описывать.

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

Как настроить двухфакторную аутентификацию на Raspberry Pi


Напишите пару строк: