Initial commit: forge-tools-ssh — MCP-сервер для администрирования по SSH
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
# Безопасность
|
||||
|
||||
`forge-tools-ssh` намеренно устроен так, чтобы AI-ассистент не мог выйти за
|
||||
рамки, заданные оператором. Если вы нашли способ обойти эти рамки — сообщите,
|
||||
пожалуйста, команде разработки, не открывая публичный issue.
|
||||
|
||||
## Модель угроз
|
||||
|
||||
- **Хосты.** При заданном `allowed_hosts` подключение к любому хосту вне списка
|
||||
отклоняется. Отсутствие или порча конфига не открывают доступ.
|
||||
- **Учётные данные.** Ассистент передаёт только имя профиля; хост, ключ и адрес
|
||||
берутся из конфига. Произвольные ключи и пароли из модели не используются.
|
||||
- **Команды.** Пользовательские значения экранируются перед попаданием в shell.
|
||||
Инструмент `run` эмитит permission-паттерны для внешнего движка одобрения.
|
||||
- **Файлы.** Запись проверяет синтаксис для известных форматов; чтение ограничено
|
||||
по размеру.
|
||||
|
||||
## Известные ограничения
|
||||
|
||||
- **Host key не проверяется** (`ssh.InsecureIgnoreHostKey`). Канал не защищён от
|
||||
подмены сервера на уровне SSH. Рассчитано на доверенную сеть; при
|
||||
необходимости включайте строгую проверку host key на уровне инфраструктуры.
|
||||
- **Путь внутри удалённой системы не ограничивается**: границей служат права
|
||||
Unix-пользователя, под которым выполнено подключение. Заводите отдельного
|
||||
пользователя с минимально необходимыми правами.
|
||||
|
||||
## Гигиена репозитория
|
||||
|
||||
- Реальные ключи, адреса и пароли в репозиторий не коммитятся: только
|
||||
`ssh.json.example` с подстановками `${VAR}`.
|
||||
- Приватные ключи и рабочие данные исключены через `.gitignore` (`/data/`).
|
||||
Reference in New Issue
Block a user