redmine_wiki_encryptor — плагин шифрования данных Wiki

от автора

Redmine Если вы храните конфиденциальные данные в Wiki Redmine, наверняка задумывались, что случится, если кто-то сможет получить доступ к серверу и загрузить БД.
Предлагаю вашему вниманию, разработанный нашей компанией, плагин redmine_wiki_encryptor. С помощью этого плагина Redmine будет расшифровывать на лету данные из таблиц Wiki, таким образом, даже если кто-то и получит дамп БД, без ключа ничего прочитать не сможет.

Установка и настройка redmine_wiki_encryptor

Делаем бэкап БД Redmine. Если что-то пойдет не так, есть риск потерять данные Wiki.

Загружаем плагин:

git clone git://github.com/olemskoi/redmine_wiki_encryptor.git /opt/redmine/plugins/redmine_wiki_encryptor 

Устанавливаем гемы (подразумевается, что вы используете bundler для работы с гемами):

bundle install --without development test sqlite postgresql --path vendor/bundle 

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

bundle exec rake redmine:plugins:migrate RAILS_ENV="production" 

Добавляем конфигурацию плагина в файл redmine/config/configuration.yml, секцию «production» параметры key (ключ, по которому будет выполнено шифрование — берегите его), algorithm (алгоритм шифрования — список поддерживаемых вашей системой алгоритмов можно получить командой «openssl list-cipher-commands»):

production:   wiki_encryptor:     key: 'mega-secret-key'     algorithm: 'des' 

Останавливаем Redmine и шифруем данные Wiki:

bundle exec rake wiki_encryptor:encrypt RAILS_ENV="production" 

Теперь все данные Wiki хранятся в зашифрованном виде.

Важно! Отключаем в настройках Redmine Кэширование форматированного текста, иначе в папке redmine/tmp/cache будет складываться кэш всех посещаемых wiki-страниц в открытом виде:
Отключить кэширование форматированного текста

Удаляем cache:

rm -rf /opt/redmine/tmp/cache/* 

И самое интересное. Потенциально у злоумышленника все же будет возможность расшифровать данные, ведь можно посмотреть ключ в конфигурации. Для исключения этого момента, можно запускать Redmine вручную, а пароль в конфиге не хранить.
После выполнения процедуры шифрования удаляем из файла конфигурации redmine/config/configuration.yml ключ (все, что после пробела) и, для упрощения, пользуемся скриптом типа следующего:

#!/bin/sh  # Проверяем, остановлен ли Redmine /etc/init.d/redmine stop  # Считываем введенный пароль echo -n "Password: "; read password;  # Добавляем в файл конфигурации пароль sed -i "s/    key:/    key: '$password'/g" /opt/redmine/config/configuration.yml echo echo  # Запускаем Redmine /etc/init.d/redmine start  # Ждем на всякий случай несколько секунд sleep 3  # Удаляем пароль из конфигурации sed -i "s/    key: '$password'/    key:/g" /opt/redmine/config/configuration.yml 

Вот и все. Буду рад идеям и предложениям в комментариях!

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

Ссылки:
http://centos-admin.ru/ — сайт нашей компании
https://github.com/olemskoi/redmine_wiki_encryptor — плагин redmine_wiki_encryptor

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


Комментарии

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

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