Hạn chế an toàn quyền truy cập vào kho lưu trữ Debian riêng


9

Tôi đang tìm kiếm một phương pháp để hạn chế quyền truy cập vào kho lưu trữ Debian riêng tư và có thể xác thực nó không tương tác (tức là sử dụng tập lệnh)

Bài viết hữu ích nhất tôi tìm thấy nếu thực sự là một từ trang quản trị Debian nhưng phương thức bảo mật sử dụng ssh và khóa chung / riêng. Nó hoạt động rất tốt nhưng mỗi khóa công khai của máy chủ cần phải nằm trong tệp ủy quyền từ xa để xác thực thành công. Nó không nói gì về việc cung cấp mật khẩu cho ssh: // nhưng tôi cho rằng nó nên có thể.

Bạn đã thử các lựa chọn thay thế khác (ví dụ ftps)?

Cảm ơn trước


Vấn đề tôi gặp phải với bài viết trên là nó không chỉ cấp quyền truy cập kho lưu trữ APT - nó cung cấp quyền truy cập shell cho máy lưu trữ APT của tôi. Đó là rủi ro không thể chấp nhận.
BobDoolittle

Câu trả lời:


5

Nếu bạn luôn chạy apt-gettrên máy chủ của mình bằng tay (không có apt-getlệnh tự động nào được khởi chạy bởi crons), thì bạn có thể cân nhắc sử dụng chuyển tiếp tác nhân ssh . Điều này tránh việc phải quản lý một cặp khóa công khai / riêng tư trên mỗi máy chủ mà bạn quản lý và có lẽ an toàn hơn là để lại khóa riêng trên mọi máy chủ.

Cấu hình ban đầu - kết nối với các máy chủ bạn muốn quản lý và thêm một cái gì đó như thế này /etc/apt/sources.list(ví dụ này giả sử bạn muốn máy chủ của mình kết nối với managertài khoản):

    deb ssh://manager@my.repository.org/path other stuff
  • tạo một cặp khóa riêng / công khai trên máy tính của riêng bạn, johndoeví dụ như đăng nhập của bạn (với điều kiện máy tính của bạn chạy trên debian: nếu không, bạn có thể thực hiện việc này từ máy chủ debian dành riêng cho quản lý):

    ssh-keygen
    
  • đảm bảo rằng nó được bảo vệ bởi một cụm từ khóa mạnh
  • sao chép khóa công khai của bạn vào máy chủ kho lưu trữ trong /home/manager/.ssh/authorized_keys:

    ssh-copy-id manager@my.repository.org
    

Một lần mỗi phiên quản lý

  • khởi động tác nhân ssh trên máy của bạn bằng cách gõ:

    eval `ssh-agent`
    
  • thêm khóa của bạn vào tác nhân (điều này sẽ yêu cầu cụm mật khẩu của bạn):

    ssh-add
    

Quản lý máy chủ

  • kết nối với máy chủ mà bạn muốn quản lý bằng cách sử dụng ssh -A( -Akích hoạt chuyển tiếp tác nhân):

    ssh -A some.server.org
    
  • chuyển sang root (nếu bạn muốn sử dụng, sudobạn cần phải cấu hình /etc/sudoersnếu không sudosẽ phá vỡ chuyển tiếp tác nhân, đọc phần này ):

    su
    
  • bây giờ bạn có thể kết nối với tài khoản người quản lý của kho lưu trữ bằng ssh mà không cần nhập lại mật khẩu, nhờ chuyển tiếp đại lý. Vì vậy, apt-getnên làm việc tốt:

    apt-get udate
    

Kết thúc phiên quản lý của bạn

  • Khi bạn đã hoàn thành việc quản lý máy chủ của mình, hãy xóa các khóa khỏi tác nhân:

    ssh-add -D
    

Ưu điểm

  • Không cần nhiều cấu hình ban đầu
  • Chỉ cần một khóa riêng
  • Khóa riêng được bảo vệ bởi cụm mật khẩu mạnh
  • Nếu ai đó có quyền truy cập root vào một trong các máy chủ của bạn, họ sẽ không có quyền truy cập ngay vào máy chủ kho lưu trữ của bạn.
    • Lưu ý rằng nếu tin tặc kiên nhẫn và đủ điều kiện, anh ta có thể đợi cho đến khi bạn kết nối với máy chủ bằng cách chuyển tiếp đại lý và anh ta có thể chiếm quyền điều khiển cơ chế chuyển tiếp để có quyền truy cập vào máy chủ kho lưu trữ của bạn.
    • Để giúp ngăn chặn điều đó, bạn có thể sử dụng ssh-askđể chấp nhận / từ chối mọi nỗ lực sử dụng khóa của mình.
    • Trong mọi trường hợp, tin tặc sẽ không có quyền truy cập vào khóa riêng: anh ta sẽ chỉ có thể chiếm quyền điều khiển cơ chế chuyển tiếp để sử dụng khóa và chỉ trong thời gian bạn kết nối với máy chủ.

Cảm ơn một lần nữa MiniQuark. Trên thực tế, các bản cập nhật không được giám sát, nhưng đây là một phương pháp tuyệt vời mà tôi có thể áp dụng cho mục đích thử nghiệm.
Humber

Hân hạnh! :) Vui mừng nếu nó giúp.
MiniQuark

4

Một cách để làm điều này chỉ là cho phép một bộ IP nhất định truy cập vào kho lưu trữ. Điều này hoạt động rất tốt cho LAN và VPN.

Đơn giản và hiệu quả.


1
Cảm ơn Antoine :). Trên thực tế, kho lưu trữ mà tôi có bây giờ có thể truy cập bằng phương thức đó (http qua kết nối OpenVPN). Tôi hạn chế các IP thuộc về VPN. Hạn chế ở đây là mọi máy chủ cần được kết nối với VPN để truy cập repo, với một chút khó chịu (quản lý một số chứng chỉ / khóa). Xin lỗi vì không chỉ định rằng trong câu hỏi.
Humber

Đúng, thật khó để quản lý OpenVPN nhưng nó làm cho việc quản lý bảo mật cho kho lưu trữ của bạn rất đơn giản. Ngoài ra, người dùng không phải bận tâm với thông tin đăng nhập một lần trong VPN.
Antoine Benkemoun

2

Giải pháp khóa công khai / riêng không quá tệ:

  • đăng nhập với quyền root trên máy khách
  • ssh-keygen, sau đóssh-copy-id your_login@your.repository.org
  • chỉnh sửa /etc/apt/sources.listvà thêm một cái gì đó như:

    deb ssh://your_login@your.repository.org/path other stuff
    

Cấp, nó yêu cầu bạn đặt khóa công khai của mỗi máy chủ vào ~/.ssh/authorized_keystệp trên máy chủ, nhưng nó không phức tạp (xem ở trên) và nó cho phép bạn kiểm soát máy chủ nào bạn cho phép hoặc không tại bất kỳ thời điểm nào (bạn có thể xóa khóa tại bất cứ lúc nào trong authorized_keys).


Cảm ơn MiniQuark. Có, giải pháp này không tệ, nhưng ssh-copy-id không hoạt động nếu xác thực mật khẩu bị tắt trong máy chủ openssh. Tôi đã nghĩ đến việc phổ biến cùng một tệp chính trên mỗi máy khách bằng cách sử dụng kho lưu trữ để có thể sử dụng nó. Để bảo mật hơn, người dùng có quyền tối thiểu sẽ được sử dụng. Nó gần giống như chia sẻ thông tin đăng nhập. Tôi hiện đang thử nghiệm phương pháp này để kiểm tra cách ứng xử / công việc.
Humber

1

Bạn có thể thiết lập quyền truy cập https vào kho lưu trữ của mình, được bảo mật bằng thông tin đăng nhập / mật khẩu (xác thực cơ bản). Vấn đề là bạn cần phải đăng nhập / mật khẩu Cleartext vào /etc/apt/sources.list(lưu ý: có một bản vá để cho phép đăng nhập / mật khẩu được đưa vào /root/.netrcthay thế).


Đây có lẽ là giải pháp tốt nhất, cũng không phải là netrc mà là /etc/apt/auth.conf. Tài liệu ở đây: manpages.debian.org/testing/apt/apt_auth.conf.5.en.html
Nicholi

0

Liên kết trong câu hỏi của bạn cho thấy nhiều phương pháp. Bạn muốn số 2, https + xác thực cơ bản.


Cảm ơn Justin. Tôi nghĩ rằng vận chuyển https với apt chỉ hoạt động nếu apt-Transport-https được cài đặt. Đây là một thay thế thú vị. Hạn chế duy nhất là thông tin đăng nhập trong nguồn.list
Humber

chmod 600 /etc/apt/source.list
Justin
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.