ваше сообщение коммита
This commit is contained in:
@@ -1,37 +0,0 @@
|
||||
# План задач по маскировке и шифрованию данных
|
||||
|
||||
## 1. Анализ данных
|
||||
- [ ] Определить, какие поля и таблицы содержат чувствительные данные (например, email, ФИО, адрес, сообщения, вложения).
|
||||
- [ ] Составить список полей для маскировки (для user/guest) и для шифрования (для хранения в БД).
|
||||
|
||||
## 2. Маскировка данных (токенизация)
|
||||
- [ ] Реализовать функцию маскировки на backend (Node.js):
|
||||
- [ ] Для ролей user/guest возвращать токены вместо реальных данных (например, `token_<id>`).
|
||||
- [ ] Для admin возвращать реальные значения.
|
||||
- [ ] Внедрить маскировку в API-эндпоинты, возвращающие списки пользователей, чатов, сообщений и т.д.
|
||||
- [ ] Обновить frontend для корректного отображения токенов и подсказок (например, «Данные скрыты, доступ только администратору»).
|
||||
|
||||
## 3. Шифрование данных при хранении
|
||||
- [ ] Выбрать алгоритм шифрования (например, AES-256-GCM).
|
||||
- [ ] Реализовать функции шифрования/дешифрования на backend для чувствительных полей.
|
||||
- [ ] Хранить ключи шифрования только в переменных окружения (не в коде и не в БД).
|
||||
- [ ] Мигрировать существующие данные: зашифровать чувствительные поля в БД.
|
||||
- [ ] Обновить логику создания/обновления записей: шифровать данные перед сохранением.
|
||||
- [ ] Обновить логику чтения: расшифровывать данные для admin, возвращать токены для user/guest.
|
||||
|
||||
## 4. Шифрование файлов и вложений
|
||||
- [ ] Реализовать шифрование файлов/вложений перед сохранением на диск или в облако.
|
||||
- [ ] Обеспечить расшифровку файлов только для admin.
|
||||
|
||||
## 5. Безопасное хранение ключей
|
||||
- [ ] Настроить хранение ключей шифрования в переменных окружения (Akash/Flux Cloud).
|
||||
- [ ] Обновить Dockerfile и инструкции деплоя для поддержки секретов.
|
||||
|
||||
## 6. Тестирование и аудит
|
||||
- [ ] Провести тестирование маскировки и шифрования для всех ролей.
|
||||
- [ ] Проверить, что admin видит реальные данные, user/guest — только токены.
|
||||
- [ ] Провести аудит безопасности (внешний или внутренний).
|
||||
|
||||
## 7. Документация
|
||||
- [ ] Описать логику маскировки и шифрования в README или отдельном разделе.
|
||||
- [ ] Добавить инструкции по настройке переменных окружения и деплою на Akash/Flux Cloud.
|
||||
@@ -1,293 +0,0 @@
|
||||
# Руководство по настройке WEB SSH
|
||||
|
||||
## Обзор
|
||||
|
||||
Система WEB SSH позволяет автоматически публиковать локальное Vue.js приложение в интернете через SSH-туннель и NGINX на удаленном сервере.
|
||||
|
||||
## Архитектура
|
||||
|
||||
```
|
||||
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
|
||||
│ Vue.js Frontend │───▶│ WebSSH Agent │───▶│ VPS Server │
|
||||
│ (localhost:5173) │ │ (localhost:12345) │ │ (ваш сервер) │
|
||||
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
|
||||
│ │
|
||||
│ ▼
|
||||
│ ┌─────────────────────┐
|
||||
│ │ NGINX + SSL │
|
||||
│ │ (порт 80/443) │
|
||||
│ └─────────────────────┘
|
||||
│ │
|
||||
│ ▼
|
||||
│ ┌─────────────────────┐
|
||||
└─────────────▶│ SSH Reverse Tunnel │
|
||||
│ (порт 9000) │
|
||||
└─────────────────────┘
|
||||
```
|
||||
|
||||
## Требования
|
||||
|
||||
### Локальная машина
|
||||
- ✅ Node.js 16+
|
||||
- ✅ SSH клиент
|
||||
- ✅ Docker и Docker Compose
|
||||
- ✅ Yarn
|
||||
|
||||
### Удаленный сервер (VPS)
|
||||
- ✅ Ubuntu/Debian или CentOS/RHEL
|
||||
- ✅ SSH доступ с правами sudo/root
|
||||
- ✅ Открытые порты 80, 443, 22
|
||||
- ✅ Домен, указывающий на IP сервера
|
||||
|
||||
## Установка и настройка
|
||||
|
||||
### 1. Запуск основного приложения
|
||||
|
||||
```bash
|
||||
# Клонируйте проект
|
||||
git clone <your-repo-url>
|
||||
cd DApp-for-Business
|
||||
|
||||
# Запустите приложение
|
||||
docker-compose up -d
|
||||
|
||||
# Убедитесь, что фронтенд доступен
|
||||
curl http://localhost:5173
|
||||
```
|
||||
|
||||
### 2. Установка WebSSH Agent
|
||||
|
||||
```bash
|
||||
# Перейдите в директорию агента
|
||||
cd webssh-agent
|
||||
|
||||
# Установите зависимости
|
||||
npm install
|
||||
|
||||
# Запустите агент
|
||||
npm start
|
||||
# или в фоновом режиме:
|
||||
nohup node agent.js > agent.log 2>&1 &
|
||||
```
|
||||
|
||||
### 3. Проверка работы агента
|
||||
|
||||
```bash
|
||||
# Проверьте статус агента
|
||||
curl http://localhost:12345/health
|
||||
|
||||
# Ожидаемый ответ:
|
||||
# {"status":"ok","timestamp":"2025-07-06T18:08:57.789Z","version":"1.0.0","tunnelConnected":false}
|
||||
```
|
||||
|
||||
## Использование
|
||||
|
||||
### 1. Подготовка SSH ключей
|
||||
|
||||
```bash
|
||||
# Создайте SSH ключ (если еще нет)
|
||||
ssh-keygen -t rsa -b 4096 -C "webssh@yourdomain.com"
|
||||
|
||||
# Скопируйте публичный ключ на сервер
|
||||
ssh-copy-id -i ~/.ssh/id_rsa.pub user@your-server.com
|
||||
|
||||
# Проверьте подключение
|
||||
ssh -i ~/.ssh/id_rsa user@your-server.com
|
||||
```
|
||||
|
||||
### 2. Настройка через веб-интерфейс
|
||||
|
||||
1. Откройте приложение: `http://localhost:5173`
|
||||
2. Перейдите в **Настройки** → **WEB SSH**
|
||||
3. Заполните форму:
|
||||
|
||||
#### Обязательные поля:
|
||||
- **Домен**: `example.com` (ваш домен)
|
||||
- **Email для SSL**: `admin@example.com` (для Let's Encrypt)
|
||||
- **SSH Host/IP**: `192.168.1.100` или `server.example.com`
|
||||
- **SSH Пользователь**: `root` или ваш пользователь
|
||||
- **SSH Приватный ключ**: содержимое файла `~/.ssh/id_rsa`
|
||||
|
||||
#### Дополнительные настройки (заполняются автоматически):
|
||||
- **Локальный порт**: `5173` (порт Vue.js приложения)
|
||||
- **Порт сервера**: `9000` (порт для SSH туннеля)
|
||||
- **SSH порт**: `22` (стандартный SSH порт)
|
||||
|
||||
4. Нажмите **"Опубликовать"**
|
||||
|
||||
### 3. Процесс публикации
|
||||
|
||||
После нажатия "Опубликовать" агент автоматически:
|
||||
|
||||
1. ✅ Подключается к вашему серверу по SSH
|
||||
2. ✅ Устанавливает NGINX и certbot (если не установлены)
|
||||
3. ✅ Создает конфигурацию NGINX для вашего домена
|
||||
4. ✅ Перезапускает NGINX
|
||||
5. ✅ Получает SSL сертификат через Let's Encrypt
|
||||
6. ✅ Создает SSH reverse-туннель
|
||||
7. ✅ Ваше приложение становится доступным по адресу `https://yourdomain.com`
|
||||
|
||||
## Управление туннелем
|
||||
|
||||
### Через веб-интерфейс
|
||||
- **Статус**: отображается в верхней части страницы
|
||||
- **Отключить**: кнопка "Отключить" при активном туннеле
|
||||
- **Логи**: отображаются в нижней части страницы
|
||||
|
||||
### Через API
|
||||
```bash
|
||||
# Статус туннеля
|
||||
curl http://localhost:12345/tunnel/status
|
||||
|
||||
# Создание туннеля
|
||||
curl -X POST http://localhost:12345/tunnel/create \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"domain": "example.com",
|
||||
"email": "admin@example.com",
|
||||
"sshHost": "192.168.1.100",
|
||||
"sshUser": "root",
|
||||
"sshKey": "-----BEGIN OPENSSH PRIVATE KEY-----\n...",
|
||||
"localPort": 5173,
|
||||
"serverPort": 9000,
|
||||
"sshPort": 22
|
||||
}'
|
||||
|
||||
# Отключение туннеля
|
||||
curl -X POST http://localhost:12345/tunnel/disconnect
|
||||
```
|
||||
|
||||
## Безопасность
|
||||
|
||||
### Локальная безопасность
|
||||
- ✅ Агент принимает соединения только с localhost
|
||||
- ✅ SSH ключи хранятся временно и удаляются после отключения
|
||||
- ✅ Все операции логируются
|
||||
|
||||
### Серверная безопасность
|
||||
- ✅ Используется HTTPS с автоматическими SSL сертификатами
|
||||
- ✅ NGINX настроен с безопасными заголовками
|
||||
- ✅ SSH туннель использует приватные ключи
|
||||
|
||||
## Устранение неполадок
|
||||
|
||||
### Агент не запускается
|
||||
```bash
|
||||
# Проверьте порт
|
||||
netstat -tulpn | grep 12345
|
||||
|
||||
# Проверьте логи
|
||||
tail -f webssh-agent/agent.log
|
||||
|
||||
# Убейте процесс и перезапустите
|
||||
pkill -f "node agent.js"
|
||||
nohup node agent.js > agent.log 2>&1 &
|
||||
```
|
||||
|
||||
### SSH соединение не устанавливается
|
||||
```bash
|
||||
# Проверьте SSH ключ
|
||||
ssh -i ~/.ssh/id_rsa user@server
|
||||
|
||||
# Проверьте доступность сервера
|
||||
ping your-server.com
|
||||
|
||||
# Проверьте SSH порт
|
||||
telnet your-server.com 22
|
||||
```
|
||||
|
||||
### NGINX не настраивается
|
||||
```bash
|
||||
# На сервере проверьте NGINX
|
||||
sudo nginx -t
|
||||
sudo systemctl status nginx
|
||||
|
||||
# Проверьте логи
|
||||
sudo tail -f /var/log/nginx/error.log
|
||||
```
|
||||
|
||||
### SSL сертификат не получается
|
||||
```bash
|
||||
# Проверьте DNS
|
||||
nslookup your-domain.com
|
||||
|
||||
# Проверьте доступность домена
|
||||
curl -I http://your-domain.com
|
||||
|
||||
# На сервере проверьте certbot
|
||||
sudo certbot certificates
|
||||
sudo tail -f /var/log/letsencrypt/letsencrypt.log
|
||||
```
|
||||
|
||||
### Туннель не работает
|
||||
```bash
|
||||
# Проверьте процесс SSH
|
||||
ps aux | grep ssh
|
||||
|
||||
# Проверьте порты на сервере
|
||||
sudo netstat -tulpn | grep 9000
|
||||
|
||||
# Проверьте логи агента
|
||||
tail -f webssh-agent/agent.log
|
||||
```
|
||||
|
||||
## Примеры использования
|
||||
|
||||
### Разработка
|
||||
```bash
|
||||
# Запустите локальное приложение
|
||||
docker-compose up -d
|
||||
|
||||
# Запустите агент
|
||||
cd webssh-agent && npm start
|
||||
|
||||
# Настройте туннель через веб-интерфейс
|
||||
# Ваше приложение доступно по https://yourdomain.com
|
||||
```
|
||||
|
||||
### Демонстрация клиентам
|
||||
```bash
|
||||
# Быстрая публикация для демо
|
||||
# 1. Заполните форму в веб-интерфейсе
|
||||
# 2. Нажмите "Опубликовать"
|
||||
# 3. Отправьте клиенту ссылку https://yourdomain.com
|
||||
```
|
||||
|
||||
### Тестирование на мобильных устройствах
|
||||
```bash
|
||||
# Опубликуйте приложение
|
||||
# Теперь можете тестировать на любых устройствах
|
||||
# через https://yourdomain.com
|
||||
```
|
||||
|
||||
## Файловая структура
|
||||
|
||||
```
|
||||
DApp-for-Business/
|
||||
├── webssh-agent/ # Локальный агент
|
||||
│ ├── agent.js # Основной файл агента
|
||||
│ ├── package.json # Зависимости
|
||||
│ ├── install.sh # Установочный скрипт
|
||||
│ └── README.md # Документация агента
|
||||
├── frontend/ # Vue.js приложение
|
||||
│ ├── src/
|
||||
│ │ ├── views/settings/
|
||||
│ │ │ └── WebSshSettingsView.vue # Страница настроек
|
||||
│ │ └── services/
|
||||
│ │ └── webSshService.js # Сервис для работы с агентом
|
||||
│ └── ...
|
||||
└── docker-compose.yml # Конфигурация Docker
|
||||
```
|
||||
|
||||
## Поддержка
|
||||
|
||||
Если у вас возникли проблемы:
|
||||
|
||||
1. Проверьте этот документ
|
||||
2. Посмотрите логи агента: `tail -f webssh-agent/agent.log`
|
||||
3. Проверьте статус: `curl http://localhost:12345/health`
|
||||
4. Создайте Issue в репозитории проекта
|
||||
|
||||
## Лицензия
|
||||
|
||||
MIT License
|
||||
Reference in New Issue
Block a user