Блокировка сервера git ssh

Блокировка сервера git ssh

Я хотел бы настроить сервер git через ssh с одной учетной записью SSH для проекта. Все участники проекта должны иметь свои ключи ssh, перечисленные в authorized_keys. Блокировка должна ограничить доступ только для выполнения git-вещей и только внутри выделенного каталога.

Как лучше всего создать такую ​​настройку? Есть git-shell, который, по-видимому, может сделать блокировку, чтобы выполнять только команды git, но я не могу найти, как ограничить доступ к одному каталогу. Есть также различные оболочки Python и Ruby — какой из них мне доверять?

решение1

Вы могли бы взглянуть нагитозилигитолитgitolite немного лучше в плане предоставления доступа и т. д. к репозиториям, вам не придется беспокоиться о предоставлении пользователям доступа к серверу и т. п.

решение2

Какова ваша модель угроз?

Хороший парень случайно уничтожил репозиторий git или другие данные:Убедитесь, что ваши пользователи могут писать только в свой homedir, 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, чтобы обеспечить возможность аудита.

Связанный контент