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

в 19:40, , рубрики: encryption, redmine, wiki, Блог компании centos-admin.ru, информационная безопасность, системное администрирование, метки: , ,

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

Автор: olemskoi

Источник

Поделиться