Bảo mật SVN + SSH


9

Tôi sử dụng snv + ssh với xác thực dựa trên khóa. Ngay bây giờ để bất kỳ người dùng svn nào của tôi truy cập vào kho lưu trữ thông qua Subversion, tôi phải đặt các tệp repo thành có thể đọc và ghi được trên hệ thống tệp cho những người dùng đó.

Tôi muốn ngăn người dùng có thể xóa cơ sở dữ liệu repo khi đăng nhập vào máy chủ thông qua ssh, nhưng vẫn có thể kiểm tra và cam kết mã.

Suy nghĩ về cách tôi có thể làm điều này?

Câu trả lời:


4

Để truy cập URL svn + ssh, máy khách svn khởi chạy một thể hiện svnserve bằng cách sử dụng "ssh -q user @ host svnserve -t" và nói chuyện với cá thể đó thông qua stdin / stdout.

Nếu người dùng của bạn cần truy cập ssh bình thường, bạn vẫn có thể ngăn họ truy cập vào kho lưu trữ bằng cách giới hạn quyền truy cập vào một người dùng (chown -R svnserve: svnserve repo; chmod -R g-rwx, o-rwx repo) và bằng cách thay thế lệnh svnserve này setuid / setgid svnserve wrapper chương trình .


10

Trong môi trường người dùng được chia sẻ, tôi khuyên bạn nên thiết lập máy chủ Subversion thực sự ( svnservehoặc thông qua Apache). Trong môi trường này, người dùng cá nhân hoàn toàn không cần truy cập vào tệp lưu trữ vì tất cả quyền truy cập tệp được thực hiện trong tài khoản người dùng của quy trình máy chủ.

Sách Subversion có một phần về Chọn cấu hình máy chủ có thể giúp ích. Từ phần đó (nhấn mạnh của tôi):

Nếu bạn có một cơ sở hạ tầng hiện có chủ yếu dựa trên tài khoản SSH và nếu người dùng của bạn đã có tài khoản hệ thống trên máy chủ của bạn, thì việc triển khai một giải pháp svnserve-over-SSH là điều hợp lý. Mặt khác, chúng tôi không đề xuất rộng rãi tùy chọn này cho công chúng. Nói chung, nó được coi là an toàn hơn khi người dùng của bạn truy cập vào kho lưu trữ thông qua các tài khoản (tưởng tượng) được quản lý bởi svnserve hoặc Apache, chứ không phải bởi các tài khoản hệ thống đầy đủ.


4

Trang web này có một số thủ thuật hay: http://svn.apache.org/repose/asf/subversion/trunk/notes/ssh-tricks

Nếu không có cái nào phù hợp với bạn, có lẽ một cách giải quyết có thể làm nên chuyện? Bạn có thể sao lưu kho lưu trữ mỗi khi ai đó thực hiện một cái gì đó bằng cách thêm một cái gì đó như thế này vào hook hook: sudo rsync -a / my / repo / path / my / clos / path /


2

Tôi thấy hai hướng có thể để tấn công vấn đề này:

  • cung cấp quyền truy cập shell hạn chế, ví dụ: người dùng chỉ có thể sử dụng svn với tài khoản của họ (có thể cần một tài khoản khác nếu quyền truy cập shell cũng được yêu cầu cho các mục đích khác) - Tôi đã tìm thấy một vài tài liệu tham khảo thú vị cho svnonly . Lưu ý: tôi đã không thử chúng.
  • di chuyển sang lật đổ trên https, thêm chứng chỉ ứng dụng khách. Tôi đã thấy mọi người thảo luận về điều này, nhưng bản thân tôi chưa bao giờ làm điều đó. Nhược điểm: yêu cầu phân phối chứng chỉ ứng dụng khách ngoài các phím ssh.

1

tôi đồng tình với Greg và Olaf - truy cập https. Tôi đang sử dụng một thiết lập như vậy trong một thời gian và không thấy bất kỳ nhược điểm nào của nó.

bạn sẽ nhận được lợi ích bổ sung của kiểm soát truy cập chi tiết trong kho lưu trữ - vì vậy bạn có thể làm cho một số phần của nó chỉ đọc và một số hoàn toàn không thể truy cập được đối với người dùng đã chọn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.