Внедрение сервиса ONE-TIME SECRET для передачи конфиденциальной информации

Thank you for reading this post, don't forget to subscribe! 

В про­цес­се рабо­ты часто при­хо­дит­ся отправ­лять раз­лич­ную кон­фи­ден­ци­аль­ную инфор­ма­цию кол­ле­гам или парт­не­рам, напри­мер пароль для досту­па к какой-то систе­ме. Отправ­лять пароль про­сто по почте не без­опас­но, т.к. он там и оста­нет­ся и не факт, что при пер­вом захо­де на сер­вер его поме­ня­ют. Для этих целей суще­ству­ет сер­вис, кото­рый гене­ри­ру­ет вре­мен­ную ссыл­ку с инфор­ма­ци­ей, кото­рую мы хотим передать.
Ребя­та из ONE-TIME SECRET выло­жи­ли свои нара­бот­ки в откры­тый доступ, что бы каж­дый мог уста­но­вить их сер­вер у себя в сети, соб­ствен­но как я и поступил.

Уста­нов­ку про­из­во­дил на Centos 7 minimal. Как все­гда перед нача­лом, обно­вил и доуста­но­вил нуж­ные мне пакеты:

# yum -y update
# yum -y install epel-release
# yum -y install net-tools vim mc wget unzip bash-completion telnet

Если меша­ет SeLinux, отклю­ча­ем его:

# vim /etc/sysconfig/selinux

Пра­вим стро­ку на:

SELINUX=disabled

И пере­за­гру­жа­ем сервер.

Уста­но­вим паке­ты, тре­бу­ю­щи­е­ся для onetimesecret:

# yum -y install gcc gcc-c++ make libtool git ntp openssl-devel readline-devel libevent-devel libyaml-devel zlib-devel bzip2 bzip2-libs

Настрой­те пра­виль­ное вре­мя на сер­ве­ре, я на эти граб­ли насту­пил, что сер­вер зара­бо­тал, но не гене­ри­ро­вал ссылки!

Уста­нав­ли­ва­ем Ruby (при его сбор­ке могут про­ска­ки­вать warning, но это не страшно):

# mkdir ~/sources
# cd ~/sources
# wget http://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2
# tar xjf ruby-1.9.3-p551.tar.bz2
# cd ruby-1.9.3-p551
# ./configure && make
# make install
# gem install bundler

Уста­нав­ли­ва­ем Redis:

# cd ~/sources
# wget https://github.com/antirez/redis/archive/3.2.9.tar.gz
# tar zxf 3.2.9.tar.gz
# cd redis-3.2.9
# make
# make install

Уста­нав­ли­ва­ем One-Time Secret:

# adduser ots
# mkdir /etc/onetime
# chown ots /etc/onetime
# passwd ots
# su - ots
$ git clone https://github.com/onetimesecret/onetimesecret
$ cd onetimesecret
$ bundle install --frozen --deployment --without=dev
$ su -
# mkdir /var/log/onetime /var/run/onetime /var/lib/onetime
# chown ots /var/log/onetime /var/run/onetime /var/lib/onetime
# su - ots
$ cd onetimesecret
$ bin/ots init
$ cp -R etc/* /etc/onetime/
$ su -
# vim /etc/onetime/redis.conf

Рас­ком­мен­ти­ру­ем строку:

requirepass *пароль для редис*

Настро­им кон­фиг ots:

# vim /etc/onetime/config

При­мер верх­ней части кон­фи­га, ниж­нюю мож­но не менять:

[codesyntax lang="php"]

[/codesyntax]

После этих настро­ек мож­но запу­стить One-Time Secret:

# su - ots
$ cd onetimesecret
$ redis-server /etc/onetime/redis.conf
$ bundle exec thin -e dev -R config.ru -p 7143 start

Если хоти­те запу­стить с https:

$ bundle exec thin -e dev -R config.ru -p 7143 start --ssl --ssl-key-file /etc/onetime/private.key --ssl-cert-file /etc/onetime/cert.crt

А мож­но настро­ить еще proxy server:

# yum -y install httpd mod_ssl
# systemctl enable httpd
# vim /etc/httpd/conf.d/ots.conf

При­мер­но с таким содержанием:

[codesyntax lang="php"]

[/codesyntax]

# systemctl start httpd

На этом все, мож­но откры­вать в бра­у­зе­ре сайт https://ots.company.ru