Pull to refresh
71.13
Слёрм
Учебный центр для тех, кто работает в IT

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

Reading time3 min
Views11K
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/rpam

#%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 --window-size=17 --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/username


Устанавливаем бесплатное приложение 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»

Готово!


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

В одной из следующих статей напишу о шифровании Wiki — это поможет избежать утечки данных из Wiki в случае, если сервер, на котором размещен Redmine, все же взломали и загрузили базу данных. Кому интересно, добро пожаловать на наш Хабра-блог.
Tags:
Hubs:
Total votes 9: ↑8 and ↓1+7
Comments0

Articles

Information

Website
slurm.io
Registered
Founded
Employees
51–100 employees
Location
Россия
Representative
Антон Скобин