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

от автора

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=200×200&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, все же взломали и загрузили базу данных. Кому интересно, добро пожаловать на наш Хабра-блог.

ссылка на оригинал статьи http://habrahabr.ru/company/centosadmin/blog/168063/


Комментарии

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

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