Установка и настройка

Установка

Важно

Перед началом установки необходимо произвести настройку окружения. Все команды выполняются только от суперпользователя.

Режим суперпользователя:

sudo -i
  1. Для работы системы требуется установленный 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
    
  2. Установите базовые зависимости:

    pip install -r requirements.txt
    pip install -r requirements-dev.txt
    pip install docker PyJWT
    
  3. Альтернативная установка базовых зависимостей:

    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.

  1. Выполните настройку docker для ssh-tunnel. Выполняется в каталоге с файлом <Dockerfile>:

    docker build -t ssh-tunnel .
    
  2. Выполните настройку ssp deamon.

  3. Создайте unit-файл:

    mcedit /etc/systemd/system/ssp.service
    
  4. Вставьте в файл следующее содержимое:

    [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
    
  5. Настройка прав:

    sudo chmod 644 /etc/systemd/system/ssp.service
    chown -R root:root /opt/SockSshProxy/src/ssp
    chmod 755 /opt/SockSshProxy/src/ssp
    
  6. Включите автозагрузки и запуск:

    systemctl daemon-reload
    systemctl enable ssp.service
    systemctl start ssp.service
    
  1. Выполним настройку ssp-api(rest-api).

  2. Создайте 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
    
  3. Настройте автозапуск:

    systemctl daemon-reload
    systemctl start ssp-api.service
    systemctl enable ssp-api.service
    
  1. Настройте службу управления демоном ssp.py через systemd

  2. Создаем службу /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
    
  3. Настройте автозапуск:

    sudo systemctl daemon-reload
    sudo systemctl enable sspd
    sudo systemctl start sspd
    
  1. Настройте консольный клиент для взаимодействия с демонами <sspcli.py>.

  2. Скопируйте файл sspcli.py в /usr/local/bin/ и настройте права:

    sudo cp sspcli.py /usr/local/bin/sspcli
    sudo chmod +x /usr/local/bin/sspcli
    
  3. Для удобства создадим 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
    
  4. Далее настройте права:

    sudo chmod +x /usr/local/bin/ssp-tunnel
    
  5. Настройте автоматическое управление демонами:

    sudo systemctl start ssp sspd
    
  1. Настройте файл <app.py>, который находится в директории ssh_web_interface. Поменяйте значение API_BASE_URL на свой IP-адрес.

Файл конфигурации

Примечание

Файл конфигурации хранит в себе список пользователей и паролей, а так же время жизни токена общего файла auth.conf для конкретного модуля.