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"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
:site: :host: ots.company.ru:7143 :domain: company.ru :ssl: true # NOTE Once the secret is set, do not change it (keep a backup offsite) :secret: *секретная фраза* :redis: :uri: 'redis://user:*пароль для редис*@127.0.0.1:7179/0?timeout=10&thread_safe=false&logging=false' :config: /etc/onetime/redis.conf :colonels: # Accounts created with the following email addresses # are automatically considered admins of the system. - mail@company.ru :emailer: :mode: :smtp :from: mail@company.ru :host: smtpserver.company.ru :port: 25 :tls: false :user: :pass: :auth: false |
[/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"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<VirtualHost *:80> ServerAdmin admin@company.ru DocumentRoot /var/www/html ServerName ots.company.ru ErrorLog logs/ots-error_log CustomLog logs/ots.ru-access_log common ProxyRequests Off ProxyPreserveHost On ProxyVia full <proxy *> Order deny,allow Allow from all </proxy> ProxyPass / http://ots.company.ru:7143/ ProxyPassReverse / http://ots.company.ru:7143/ </VirtualHost> <VirtualHost *:443> ServerName ots.company.ru ErrorLog logs/ots-error_log CustomLog logs/ots.ru-access_log common SSLEngine on SSLCertificateFile /etc/httpd/ssl/cert.crt SSLCertificateKeyFile /etc/httpd/ssl/private.key SSLProxyEngine On ProxyPreserveHost On ProxyPass / http://ots.company.ru:7143/ ProxyPassReverse / http://ots.company.ru:7143/ </VirtualHost> |
[/codesyntax]
# systemctl start httpd |
На этом все, можно открывать в браузере сайт https://ots.company.ru