Назад | Перейти на главную страницу

Безопасность SVN + SSH

Я использую snv + ssh с аутентификацией на основе ключа. Прямо сейчас, чтобы любой из моих пользователей svn мог получить доступ к репозиторию через Subversion, я должен сделать файлы репо доступными для чтения и записи в файловой системе для этих пользователей.

Я хочу запретить пользователям удалять базу данных репо при входе на сервер через ssh, но при этом иметь возможность проверять и фиксировать код.

Мысли о том, как это сделать?

В общей пользовательской среде я бы рекомендовал настроить настоящий сервер Subversion (либо svnserve или через Apache). В этой среде отдельным пользователям вообще не нужен доступ к файлам репозитория, потому что весь доступ к файлам осуществляется под учетной записью пользователя серверного процесса.

В книге о Subversion есть раздел о Выбор конфигурации сервера что может помочь. Из этого раздела (выделено мной):

Если у вас есть существующая инфраструктура, которая в значительной степени основана на учетных записях SSH, и если у ваших пользователей уже есть системные учетные записи на вашем сервере, имеет смысл развернуть решение svnserve-over-SSH. В противном случае мы не рекомендуем этот вариант широкой публике. Обычно считается более безопасным, если ваши пользователи получают доступ к репозиторию через (воображаемые) учетные записи, управляемые svnserve или Apache, а не через полноценные системные учетные записи.

Для доступа к URL-адресу svn + ssh клиент svn запускает экземпляр svnserve, используя «ssh -q user @ host svnserve -t», и общается с этим экземпляром через stdin / stdout.

Если вашим пользователям нужен нормальный доступ по ssh, вы все равно можете запретить им доступ к репозиторию, ограничив доступ одним пользователем. (chown -R svnserve: репозиторий svnserve; chmod -R g-rwx, репо o-rwx) и заменив команду svnserve этим setuid / setgid программа-оболочка svnserve.

На этом сайте есть несколько интересных приемов: http://svn.apache.org/repos/asf/subversion/trunk/notes/ssh-tricks

Если у вас ничего из этого не работает, может быть, обходной путь поможет? Вы можете делать резервную копию репозитория каждый раз, когда кто-то что-то фиксирует, добавляя что-то вроде этого в крючки фиксации: sudo rsync -a / my / repo / path / my / closed / path /

Я вижу два возможных направления решения этой проблемы:

  • предоставить ограниченный доступ к оболочке, например пользователи могут использовать svn только со своими учетными записями (может потребоваться другая учетная запись, если доступ к оболочке также требуется для других целей) - я нашел несколько интересный ссылки на поиск в Google для svnonly. Примечание: сам не пробовал.
  • перейти на Subversion через https, добавив клиентские сертификаты. Я видел, как люди обсуждали это, но никогда не делал этого сам. Оборотная сторона: требуется распространение клиентских сертификатов в дополнение к ssh-ключам.

Я согласен с Грегом и Олафом - переходите на https-доступ. Я использую такую ​​установку довольно давно и не вижу в ней никаких недостатков.

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