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

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

Reading time2 min
Views6.1K
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
Tags:
Hubs:
Total votes 11: ↑9 and ↓2+7
Comments6

Articles

Information

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