Download PDF
Download page Установка сервера для доступа поддержки.
Установка сервера для доступа поддержки
Вы можете настроить сервер авторизации, чтобы организовать доступ технической поддержке к панелям управления. Для обеспечения безопасности рекомендуем использовать для этих целей отдельный сервер.
Подготовка сервера состоит из двух этапов:
- Настройка доступа к панели управления.
- Настройка доступа к SSH.
В статье приведён рекомендуемый вариант установки на ОС Debian 8 Jessie. Для других ОС порядок установки и запуска будет отличаться. Вместо скриптов ISPsystem вы можете использовать собственные.
Рекомендуем настроить на сервере авторизации файрвол. В настройках файрвола разрешите входящие подключения только для сети поддержки.
Настройка доступа к панели управления
Создайте пользователя goserver для доступа к панели управления:
adduser --disabled-password --gecos "" goserver
CODE- Скачайте скрипты из репозитория ISPsystem в директорию этого пользователя. Например, это можно сделать с помощью git:
Установите git:
apt-get update && apt-get -y install git
CODEСкачайте репозиторий:
git clone https://github.com/ispsystem/login-server /home/goserver/login-server
CODE
Установите пакеты для запуска скриптов:
apt-get -y install python-yaml python-paramiko gunicorn python-virtualenv gcc python-dev
CODEОбратите внимание!
Пакеты gcc и python-dev нужны для установки модуля gevent через pip. Версия gevent из репозитория debian может вызвать проблемы с работой SSL.
Чтобы установленные модули не мешали работе ОС, создайте виртуальное окружение:
virtualenv /home/goserver/venv
CODEУстановите в созданном окружении нужные пакеты:
/home/goserver/venv/bin/pip install gevent ipaddress
CODEСгенерируйте SSL-сертификаты для веб-сервера:
openssl req -newkey rsa:1024 -nodes -keyout /home/goserver/server.key -out /home/goserver/server.crt -x509 -days 3650 -subj \ "/C=XX/ST=XX/L=XX/O=XX/OU=XX/CN=example.com/emailAddress="root@example.com
CODEchown goserver:goserver /home/goserver/server.key /home/goserver/server.crt
CODEСоздайте конфигурационный файл для gunicorn:
cat > /etc/gunicorn.d/goserver << EOF CONFIG = { 'working_dir': '/home/goserver/login-server', 'user': 'goserver', 'group': 'goserver', 'environment': { 'PYTHONPATH': '/home/goserver/venv/lib/python2.7/site-packages', }, 'args': ( '--bind', '1.1.1.1:8443', '--workers', '1', '--timeout', '60', '--reload', '--certfile', '/home/goserver/server.crt', '--keyfile', '/home/goserver/server.key', '--do-handshake-on-connect', '--ssl-version', '5', '--ciphers', 'TLSv1.2,TLSv1', '-k', 'gevent', 'goserver:myapp', ), } EOF
CODE1.1.1.1 — IP-адрес сервера
Сгенерируйте SSH-ключ без секретной фразы (passphrase):
su -l goserver -c 'ssh-keygen -t dsa'
CODEПередайте специалистам поддержки содержимое файла /home/goserver/.ssh/id_dsa.pub.
Создайте конфигурационный файл сервера авторизации /home/goserver/login-server/config.yml:
Пример конфигурационного файла
# путь до приватного SSH-ключа. Если путь стандартный, можно не указывать. keyfile: /home/goserver/.ssh/id_dsa # Сети, с которых разрешён доступ. Используйте формат: сеть/маска networks: - 192.168.0.0/24 # Пользователи в формате логин: пароль, зашифрованный функцией crypt # Пароль можно зашифровать так: # mkpasswd -m md5 -S `pwgen -s 8 1` __ПАРОЛЬ__ users: user1: $1$J5hIelk6$JcTj78g3r7ddKW7ZX7j2x1 user2: $1$gGJvd0dz$BoCItoXBq6EqdTg1m4G6D1 # Лог, в который будут записываться переходы. Пользователь goserver должен иметь права на запись в эту директорию либо файл должен быть создан заранее. logfile: /var/log/goserver.log
CODEСоздайте лог-файл:
touch /var/log/goserver.log
CODEchown goserver /var/log/goserver.log
CODEДобавьте gunicorn в автозагрузку и запустите. Если gunicorn уже был запущен, предварительно его надо остановить:
systemctl stop gunicorn
CODEsystemctl enable gunicorn
CODEsystemctl start gunicorn
CODE
Настройка доступа к SSH
Создайте пользователя support для доступа к SSH:
adduser --disabled-password --gecos "" support
CODEУстановите скрипт go пользователя goserver в качестве оболочки входа (login shell) для пользователя support:
usermod -s /home/goserver/login-server/go support
CODEУстановите sudo:
apt-get -y install sudo
CODEУстановите разрешение на запуск SSH для пользователя support. Для этого добавьте в файл /etc/sudoers строку:
support ALL=(goserver) NOPASSWD: /usr/bin/ssh
CODEОбратите внимание!
Для редактирования файла /etc/sudoers рекомендуем использовать команду visudo.
Настройте скрипт go:
Создайте файл /home/goserver/login-server/config.sh:
cat > /home/goserver/login-server/config.sh << EOF log=/var/log/gossh.log # путь до лог-файла входов. Пользователь support должен иметь права на запись в эту директорию либо файл должен быть создан заранее. logdir=/var/log/gossh # путь до директории с лог-файлами stdout-соединений. Пользователь support должен иметь права на запись в эту директорию. #keyfile=path_to_file # путь до приватного SSH-ключа. Если путь стандартный, можно не указывать sudouser=goserver # пользователь, от которого запускать sudo EOF
CODEСоздайте файлы и директории для логов:
touch /var/log/gossh.log
CODEchown support /var/log/gossh.log
CODEmkdir -p /var/log/gossh
CODEchown support /var/log/gossh
CODE
- Настройте ротацию логов:
Установите logrotate:
apt-get -y install logrotate
CODEСоздайте файл с настройками для logrotate:
cat > /etc/logrotate.d/goserver << EOF /var/log/gossh/*.log { size 1M copytruncate delaycompress compress } /var/log/gossh.log { size 1M copytruncate delaycompress compress } /var/log/goserver.log { size 1M delaycompress compress postrotate systemctl reload gunicorn endscript EOF
CODE
Использование сервера авторизации
Настройка авторизации
Для подключения к панели управления:
Зашифруйте пароли пользователей для подключения к серверу:
mkpasswd -m md5 -S `pwgen -s 8 1` <pass>
CODE<pass> — пароль в открытом виде
Добавьте имена пользователей и зашифрованные пароли в раздел users файла /home/goserver/login-server/config.yml:
Пример настройки
users: user1: $1$J5hIelk6$JcTj78g3r7ddKW7ZX7j2x1 user2: $1$gGJvd0dz$BoCItoXBq6EqdTg1m4G6D1
CODEОбновите настройки веб-сервера:
systemctl reload gunicorn
CODE
Для подключения по SSH добавьте публичную часть SSH-ключа сотрудника поддержки в файл /home/support/.ssh/authorized_keys.
Примеры команд
Подключиться по SSH
ssh -t support@1.1.1.1 go 2.2.2.2
1.1.1.1 — IP-адрес сервера авторизации
2.2.2.2 — IP-адрес сервера с панелью управления
Подключиться по SSH и выполнить команду
ssh -t support@1.1.1.1 go 2.2.2.2 ps uxaw
1.1.1.1 — IP-адрес сервера авторизации
2.2.2.2 — IP-адрес сервера с панелью управления
ps uxaw — выполняемая команда
Скопировать файлы на сервер
rsync -aPv /tmp/srv/ -e "ssh -t support@1.1.1.1 go" 2.2.2.2:/tmp/
1.1.1.1 — IP-адрес сервера авторизации
2.2.2.2 — IP-адрес сервера с панелью управления
/tmp/srv/ — директория с файлами, которые надо скопировать
/tmp/ — директория на сервере, в которую надо записать файлы