Redmine — авторизация с помощью одноразовых паролей (OTP)

в 8:41, , рубрики: linux, otp, redmine, Блог компании centos-admin.ru, системное администрирование, метки: ,

Google Authenticator
Если вы являетесь активным пользователем Redmine, содержимое которого наверняка конфиденциально, вы наверняка задумывались над усилением безопасности приложения.

В этой статье описана процедура настройки авторизации в Redmine через одноразовые пароли (OTP) с помощью мобильного приложения Google Authenticator.

Статья описывает установку и настройку Google Authenticator, а так же плагина redmine_pam_auth для Redmine 2.2 под ОС CentOS 6.

Устанавливаем Google Authenticator

Для этого подключаем репозиторий Southbridge:

rpm -Uhv http://rpms.southbridge.ru/southbridge-rhel6-stable.rpm

Или ставим rpm напрямую, без подключения репозитория:

rpm -Uhv http://rpms.southbridge.ru/rhel6/stable/x86_64/google-authenticator-1.0-0.gita096a62.el6.x86_64.rpm
Устанавливаем pam-mysql

Можно обойтись и без него, но тогда придется добавить пользователя «redmine» в группу «shadow» или запускать Redmine под рутом, что в свете последних эксплоитов в rails кажется плохой идеей.

yum install pam-mysql
Создаем конфиг pam для авторизации через google authenticator

Файл /etc/pam.d/google-authenticator

#%PAM-1.0

account	 required   pam_mysql.so user=<redmine_db_user> passwd=<redmine_db_password> host=<redmine_db_host> db=<redmine_dbname> table=users usercolumn=login passwdcolumn=login crypt=0
auth       required   pam_google_authenticator.so user=redmine secret=/opt/redmine/tmp/google-authenticator/${USER}
auth       required   pam_env.so
session    required   pam_unix.so
Устанавливаем плагин авторизации через pam для Redmine

Клонируем плагин из github

cd /opt/redmine
git clone git://github.com/cardil/redmine-pam-auth.git plugins/redmine_pam_auth

Устанавливаем pam-devel, который потребуется для компиляции гема rpam-ruby19

yum install pam-devel

Устанавливаем необходимые гемы для работы redmine-pam-auth (обратите внимание на исключения --without — возможно в вашей конфигурации используется rmagick, postgresql или что-то еще). Если вы еще не используете bundler — очень рекомендую, это намного удобнее, чем установка гемов в систему вручную.

cd /opt/redmine
bundle install --without development test sqlite postgresql rmagick --path vendor/bundle

Выполняем миграции плагинов

bundle exec rake redmine:plugins:migrate RAILS_ENV="production"
Генерируем ключи пользователей для Google Authenticator

Создаем папку для хранения ключей Google Authenticator

mkdir /opt/redmine/tmp/google-authenticator

Генерируем ключи (подробное описание ключей командной строки можно посмотреть с помощью параметра "--help" — вы можете использовать параметры авторизации на свое усмотрение).
Параметр "--label=username@example.net" — метка, которая поможет идентифицировать аккаунт в мобильном приложении Google Authenticator. Параметр "--secret=/opt/redmine/tmp/google-authenticator/username" — хранилище ключей, где username — имя пользователя в Redmine.

google-authenticator --time-based --disallow-reuse --qr-mode=UTF8 --force --no-rate-limit --minimal-window --label=username@example.net --secret=/opt/redmine/tmp/google-authenticator/username

Корректируем права

chown -R redmine:redmine /opt/redmine/tmp/google-authenticator
chmod 0600 /opt/redmine/tmp/google-authenticator/olemskoi
Устанавливаем бесплатное приложение Google Authenticator

Мобильное приложение Google Authenticator доступно для iPhone, Android и BlackBerry.

Подробнее о установке можно почитать на странице помощи Google.

Во время генерации ключей google-authenticator выводит ссылку типа https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/username@example.net%3Fsecret%3DDOYZKVDCN7GUGJH3 — заходим на нее в браузере и сканируем из мобильного приложения Google Authenticator отображенный QR-код.

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

В профиле пользователя Redmine указываем режим аутентификации «Pam»
Redmine - настройка авторизации через PAM

Готово!

Теперь при авторизации вам достаточно указать имя пользователя, запустить Google Authenticator на мобильном телефоне и переписать цифры в поле ввода пароля.

В одной из следующих статей напишу о шифровании Wiki — это поможет избежать утечки данных из Wiki в случае, если сервер, на котором размещен Redmine, все же взломали и загрузили базу данных. Кому интересно, добро пожаловать на наш Хабра-блог.

Автор: olemskoi

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js