Предлагаю вашему вниманию, разработанный нашей компанией, плагин 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/
Добавить комментарий