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

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

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

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

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

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

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

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

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

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

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

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

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

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

Настройка Pi

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

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

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

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

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

ssh [email protected]

ssh pi@watchdog.local в окне терминала.

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

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

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

Подключение SSH к Raspberry Pi в окне терминала.

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

sudo nano /etc/ssh/sshd_config

sudo nano / etc / ssh / sshd_config в окне терминала.

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

ChallengeResponseAuthentication no

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

sshd_config, открытый в редакторе nano с выделенной строкой ChallengeResponseAuthentication в окне терминала.

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

sudo systemctl restart ssh

sudo systemctl перезапустите ssh в окне терминала.

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

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

sudo apt-get install libpam-google-authenticator

sudo apt-get установить libpam-google-Authenticator в окне терминала.

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

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

Значок приложения Google Authenticator на мобильном телефоне Android.

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

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

google-authenticator

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

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

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

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

Do you want me to update your "/home/pi/.google_authenticator" file? (y/n)

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

Вы хотите, чтобы я обновил ваш

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

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

Вы хотите запретить многократное использование одного и того же токена аутентификации?  (y / n) в окне терминала.

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

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

Вы хотите это сделать?  (да / нет) в окне терминала.

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

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

Вы хотите включить ограничение скорости?  (y / n) в окне терминала.

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

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

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

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

Связывая все вместе

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

sudo nano /etc/pam.d/sshd

sudo nano /etc/pam.d/sshd в окне терминала.

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

#2FA

auth required pam_google_authenticator.so

auth требуется pam_google_authenticator.so, добавленный в файл sshd в редакторе в окне терминала.

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

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

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

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

sudo systemctl restart ssh

sudo systemctl перезапустите ssh в окне терминала.

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

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

ssh [email protected]

ssh pi@watchdog.local в окне терминала.

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

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

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

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

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

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