Установка и настройка¶
Установка¶
Важно
Перед началом установки необходимо произвести настройку окружения. Все команды выполняются только от суперпользователя.
Режим суперпользователя:
sudo -i
Для работы системы требуется установленный Docker:
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo systemctl enable --now docker sudo usermod -aG docker $USER newgrp docker
Установите базовые зависимости:
pip install -r requirements.txt pip install -r requirements-dev.txt pip install docker PyJWT
Альтернативная установка базовых зависимостей:
sudo apt update sudo apt install -y python3 python3-pip python3-venv docker.io python3 -m venv ~/ssp_venv source ~/ssp_venv/bin/activate apt install docker PyJWT Flask Werkzeug requests logging-json apt install pytest pytest-cov
Настройка¶
Примечание
Здесь выполняется настройка приложений SSPSockProxy и ssp_web_interface.
Выполните настройку docker для ssh-tunnel. Выполняется в каталоге с файлом <Dockerfile>:
docker build -t ssh-tunnel .
Выполните настройку ssp deamon.
Создайте unit-файл:
mcedit /etc/systemd/system/ssp.service
Вставьте в файл следующее содержимое:
[Unit] Description=Secure Socket Processor (SSP) Daemon After=network.target docker.service Requires=docker.service [Service] Type=simple User=root Group=root ExecStart=/bin/sh -c 'cd /opt/SockSshProxy/src/ssp && /usr/bin/python3 ssp.py --socket /tmp/ssp.sock' Restart=on-failure RestartSec=5 StandardOutput=syslog StandardError=syslog SyslogIdentifier=ssp-daemon # Жестко задаем umask для безопасности UMask=0077 # Ограничение ресурсов (опционально) MemoryMax=512M CPUQuota=80% [Install] WantedBy=multi-user.target
Настройка прав:
sudo chmod 644 /etc/systemd/system/ssp.service chown -R root:root /opt/SockSshProxy/src/ssp chmod 755 /opt/SockSshProxy/src/ssp
Включите автозагрузки и запуск:
systemctl daemon-reload systemctl enable ssp.service systemctl start ssp.service
Выполним настройку ssp-api(rest-api).
Создайте systemd unit файл /etc/systemd/system/ssp-api.service с содержимым:
[Unit] Description=SSP API Daemon Instance %i After=network.target [Service] Type=simple User=root Group=root ExecStart=/bin/sh -c 'cd /opt/SockSshProxy/api && /usr/bin/python3 ssp-api.py --instance 1 start' Restart=on-failure RestartSec=5 StandardOutput=syslog StandardError=syslog SyslogIdentifier=ssp-daemon # Жестко задаем umask для безопасности UMask=0077 # Ограничение ресурсов (опционально) MemoryMax=512M CPUQuota=80% [Install] WantedBy=multi-user.target
Настройте автозапуск:
systemctl daemon-reload systemctl start ssp-api.service systemctl enable ssp-api.service
Настройте службу управления демоном ssp.py через systemd
Создаем службу
/etc/systemd/system/sspd.serviceс содержимым:[Unit] Description=SSH Socket Proxy Daemon (SSPD) After=network.target docker.service Requires=docker.service [Service] Type=simple User=root ExecStart=/bin/sh -c 'cd /opt/SockSshProxy/src/ssp && /usr/bin/python3 sspd.py --socket /tmp/sspd.sock --check-interval 30' Restart=on-failure RestartSec=5 StandardOutput=syslog StandardError=syslog SyslogIdentifier=sspd-daemon # Жестко задаем umask для безопасности UMask=0077 # Ограничение ресурсов (опционально) MemoryMax=512M CPUQuota=80% [Install] WantedBy=multi-user.target
Настройте автозапуск:
sudo systemctl daemon-reload sudo systemctl enable sspd sudo systemctl start sspd
Настройте консольный клиент для взаимодействия с демонами
<sspcli.py>.Скопируйте файл sspcli.py в
/usr/local/bin/и настройте права:sudo cp sspcli.py /usr/local/bin/sspcli sudo chmod +x /usr/local/bin/sspcli
Для удобства создадим Bash-обертку в
/usr/local/bin/ssp-tunnel:#!/bin/bash # Обертка для sspcli.py TOKEN_FILE="$HOME/.ssp_token" function auth { if [ $# -lt 2 ]; then echo "Usage: ssp-tunnel auth <username> <password> [domain]" return 1 fi sspcli auth "$1" "$2" "${3:-default}" && \ echo "Token saved to $TOKEN_FILE" } function create { if [ $# -lt 3 ]; then echo "Usage: ssp-tunnel create <vm_user> <vm_pass> <vm_ip> [token]" return 1 fi TOKEN="${4:-$(cat $TOKEN_FILE 2>/dev/null)}" if [ -z "$TOKEN" ]; then echo "ERROR: Token not found. Run 'auth' first." return 1 fi sspcli tunnel "$TOKEN" "$1" "$2" "$3" } case "$1" in auth) shift; auth "$@" ;; create) shift; create "$@" ;; *) echo "Usage: ssp-tunnel {auth|create} [args]" ;; esac
Далее настройте права:
sudo chmod +x /usr/local/bin/ssp-tunnel
Настройте автоматическое управление демонами:
sudo systemctl start ssp sspd
- Настройте файл
<app.py>, который находится в директорииssh_web_interface. Поменяйте значение API_BASE_URL на свой IP-адрес.
Файл конфигурации¶
Примечание
Файл конфигурации хранит в себе список пользователей и паролей, а так же время жизни токена общего файла auth.conf для конкретного модуля.