Làm cách nào để hạn chế người dùng SSH chỉ cho phép tạo đường hầm SSH?


31

Làm thế nào tôi có thể giới hạn một người dùng trên máy chủ SSH cho phép họ chỉ các đặc quyền cho SSH đường hầm ? tức là họ không thể chạy các lệnh ngay cả khi họ đăng nhập qua SSH.

Các máy chủ Linux của tôi là Ubuntu 11.04 và OpenWrt.

Câu trả lời:


34

Về phía máy chủ, bạn có thể hạn chế điều này bằng cách đặt vỏ người dùng của họ thành /bin/true. Điều này sẽ cho phép họ xác thực, nhưng thực tế không chạy bất cứ thứ gì vì họ không có vỏ để chạy nó. Điều này có nghĩa là họ sẽ bị giới hạn ở bất kỳ tập hợp con nào mà SSH có thể cung cấp cho họ. Nếu nó cung cấp cổng chuyển tiếp, họ vẫn có thể làm điều đó.

Về phía khách hàng, bạn có thể sẽ muốn kết nối với -N. Điều này ngăn máy khách khỏi HỎI cho một lệnh từ xa như shell, nó chỉ dừng lại sau khi phần xác thực được thực hiện. Cảm ơn các bình luận viên đã chỉ ra điều này.


Tôi sẽ thử cái này: P thx!
LanceBaynes

2
Để thêm vào câu trả lời của Caleb, bạn cũng có thể cần nói với khách hàng không được thực thi trình bao. Với dòng lệnh openssh, điều này được thực hiện với cờ -N. Có một tùy chọn tương tự trong PuTTY, nhưng tôi không nhớ tên chính xác.
Bill B

hmm, về cơ bản là bảo mật phía khách hàng, phải không? Tôi đang tìm kiếm một thiết lập bảo mật phía máy chủ, nhưng cảm ơn bạn!
LanceBaynes

2
Xin lỗi, tôi không rõ ràng - ý tôi là kết hợp với cài đặt máy chủ. Đó là kinh nghiệm của tôi trong quá khứ rằng nếu bạn đặt vỏ thành thứ gì đó không phải là vỏ, bạn hoàn toàn không thể kết nối vì nó cố gắng mở vỏ nhưng không thể. Vì vậy, bảo mật được thi hành ở phía máy chủ (sử dụng phương pháp của Caleb) nhưng nếu bạn gặp sự cố kết nối sau đó, bạn có thể cần phải đặt công tắc phía máy khách.
Bill B

3
Bạn tạo người dùng như vậy với useradd sshtunnel -m -d /home/sshtunnel -s /bin/true.
fracz

13

Điều sau đây có lợi thế là các chuyển tiếp ổ cắm của đại lý X11 và SSH cũng không được phép, điều này vẫn có thể được cho phép theo cách của Calebs. Một lợi thế khác là, nếu người dùng có thể thay đổi shell mặc định của mình thông qua bất kỳ cách nào khác, điều này vẫn sẽ hạn chế quyền truy cập SSH của anh ta chỉ chuyển tiếp TCP.

Đặt những điều sau vào /etc/ssh/sshd_config:

Match User that-restricted-guy
  AllowTcpForwarding yes
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

để cho phép người dùng that-restricted-guychuyển tiếp bất kỳ kết nối TCP nào thông qua máy hỗ trợ SSH của bạn (kết nối với máy này, cũng như localhostvà thậm chí kết nối từ máy này sang các máy khác).

Nếu bạn muốn nó thậm chí còn hạn chế hơn (đó là một ý tưởng tốt), bạn cũng có thể làm như sau:

Match User even-more-restricted-guy
  PermitOpen 127.0.0.1:12345
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

Điều này sẽ cho phép người dùng even-more-restricted-guychỉ chuyển tiếp các kết nối tới cổng TCP 127.0.0.1 12345 (vì nó được hiển thị thông qua máy hỗ trợ SSH của bạn).

Khi người dùng kết nối bình thường, bây giờ anh ta sẽ bị ngắt kết nối ngay lập tức vì /bin/falselệnh sẽ được kích hoạt mà không thoát ra ngay lập tức với mã 1. Nếu bạn muốn tránh điều này và giữ kết nối chuyển tiếp của bạn mở, hãy thêm -Ncờ vào sshlệnh. Điều này sẽ không cố thực hiện bất kỳ lệnh nào nhưng vẫn cho phép thiết lập chuyển tiếp TCP.

Một ví dụ về lệnh chuyển tiếp sẽ hoạt động trong thiết lập sau:

ssh -L 12345:127.0.0.1:12345 -N even-more-restricted-guy@insert-your-machine

1
Tôi đã đọc lại câu trả lời như một giải pháp cải tiến so với câu trả lời của Calebs.
AEF

Chắc chắn rồi. Tôi cũng dọn dẹp. Tốt để thấy sự hiểu lầm được giải quyết. Chúc ngủ ngon.
Jakuje

1

Bạn có thể kiểm soát những gì mọi người có thể làm trong ssh bằng cách kết hợp các nhóm giả sử phiên bản ssh của bạn đủ mới để hỗ trợ nó (openssh 5.x +).

Về cơ bản, chúng tôi đối xử với họ như thể họ là người dùng sftp, nhưng cho phép chuyển tiếp tcp và tùy ý chỉ định các điểm đến mà họ có thể chuyển tiếp. Nếu bạn cung cấp cho họ một thư mục chính nhưng không tạo bất kỳ thư mục nào trong đó, họ không thể chuyển bất kỳ tệp nào vì họ sẽ không được phép làm như vậy.

Match Group                     nicepeople
    PubkeyAuthentication        yes
    PasswordAuthentication      yes
    PermitEmptyPasswords        no
    GatewayPorts                no
    ChrootDirectory             /opt/dummy_location/%u
    ForceCommand                internal-sftp
    AllowTcpForwarding          yes
        PermitOpen              192.168.0.8:22
        PermitOpen              192.168.0.5:8080
    # Or leave out the PermitOpen to allow forwarding to anywhere.
    HostbasedAuthentication     no
    RhostsRSAAuthentication     no
    AllowAgentForwarding        no
    Banner                      none

Bạn có thể lặp lại những khối Nhóm đối sánh này cho mỗi nhóm mà bạn muốn cung cấp các hành vi hoặc hạn chế khác nhau.

Bạn có thể kiểm soát thêm nơi người này có thể truy cập mạng bằng iptables

/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -j REJECT
/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -m tcp -p tcp -d 192.168.0.0/24 -j ACCEPT

Điều này giả định nhóm "người đẹp" GID là 500.

Một số tùy chọn ssh ở trên có sẵn trong các phiên bản openssh cũ hơn, nhưng không nằm trong phần Match Group. Match Group rất hạn chế trong OpenSSH 4.x trở về trước.

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.