Я хотел бы настроить сервер git через ssh с одной учетной записью SSH для проекта. Все участники проекта должны иметь свои ssh-ключи, перечисленные в authorized_keys. Блокировка должна ограничивать доступ только к работе с git и только внутри выделенного каталога.
Как лучше всего создать такую установку? Существует git-shell, который, по-видимому, может заблокировать выполнение только команд git, но я не могу найти, как ограничить доступ к одному каталогу. Существуют также различные оболочки Python и Ruby - каким из них я должен доверять?
ты мог бы взглянуть на гитоз или гитолит, gitolite лучше в плане предоставления доступа и т. д. к репозиториям, вам не нужно беспокоиться о предоставлении пользователям доступа к серверу и тому, что не
Какая у вас модель угроз?
Хороший парень случайно уничтожает репозиторий git или другие данные: Убедитесь, что ваши пользователи могут писать только в свой домашний каталог, tmp и репозиторий git. Делайте резервную копию репозитория после каждой фиксации и регулярно практикуйте процедуры восстановления.
Плохой парень крадет чей-то закрытый ключ и хочет завладеть вашей системой: Ваша поверхность атаки ограничена частями sshd, защищенными аутентификацией, и любым интерфейсом оболочки, который вы используете, поэтому сделайте его как можно меньше. Оболочки Python / Ruby включают много кода и много места для ошибок. Используйте git-shell или рассмотрите возможность использования директив Match и ChrootDirectory в sshd_config, чтобы ограничить, к каким частям файловой системы пользователи могут получить доступ.
Плохой парень крадет чей-то закрытый ключ и получает ваш исходный код: Научите пользователей, как защитить свои закрытые ключи, и установите процедуры для быстрого отзыва ключей (например, кому звонить в 4 часа ночи, чтобы отозвать ключи).
Не использовать .ssh/authorized_keys
вместо этого используйте AuthorizedKeyfile
ключевое слово в sshd_config, чтобы указать путь, по которому у пользователей нет доступа на запись, например /etc/ssh/keys/%u
. Слишком сложно гарантировать, что пользователи никогда не смогут перезаписать .ssh / authorized_keys своей собственной копией.
Кроме того, держите ключевые файлы пользователей и sshd_config под контролем версий, чтобы разрешить аудит.