Tôi có thể tắt quyền truy cập shell tương tác trong khi tạo lưu lượng truy cập web thông qua SSH không?


12

Tôi đang xem xét triển khai SSH đường hầm như một giải pháp VPN giá rẻ cho người dùng bên ngoài để truy cập các ứng dụng web chỉ đối mặt với Intranet.

Tôi hiện đang sử dụng Ubuntu Server 10.04.1 64 bit với cài đặt OpenSSH.

Tôi đang sử dụng Putty trên các hộp Windows để tạo một đường hầm trên một cổng cục bộ đến máy chủ ssh của tôi.

start putty -D 9999 mysshserver.com -N

Sau đó tôi sử dụng nói với Firefox để sử dụng proxy SOCKS trên localhost: 9999.

Cờ -N sẽ vô hiệu hóa trình vỏ tương tác từ phía máy khách. Có cách nào để làm điều này ở phía máy chủ không?

Bên cạnh việc vô hiệu hóa quyền truy cập root, sử dụng xác thực khóa rsa và thay đổi cổng mặc định; Có bất kỳ thực hành bảo mật rõ ràng nào khác tôi nên làm theo cho mục đích này? Mục tiêu của tôi là chỉ đơn giản là có thể đường hầm lưu lượng truy cập web.

Câu trả lời:


15

Sau bốn năm, câu trả lời này xứng đáng được cập nhật. Mặc dù ban đầu tôi đã sử dụng authorized_keysbản thân mình và có thể sẽ vẫn sử dụng nó trong một số trường hợp chọn lọc, bạn cũng có thể sử dụng sshd_configtệp cấu hình máy chủ trung tâm .

sshd_config

Bạn có thể chỉ định (cho trường hợp sử dụng cụ thể của mình) một nhóm, chẳng hạn như proxy-onlyhoặc Matchngười dùng cá nhân. Trong sshd_config. Điều này được thực hiện sau khi cài đặt chung và thu hồi, lặp lại hoặc tinh chỉnh một số cài đặt được cung cấp trong cài đặt chung.

Lưu ý: một số cú pháp / chỉ thị được sử dụng sshd_config(5)được ghi lại trong mantrang cho ssh_config(5). Đặc biệt, đảm bảo đọc phần THỰC HÀNH của ssh_config(5).

Đối với một nhóm, điều này có nghĩa là Matchkhối của bạn sẽ bắt đầu như thế này:

Match group proxy-only

Bạn có thể Matchcác tiêu chí sau: User, Group, Host, LocalAddress, LocalPortAddress. Để phù hợp với một số tiêu chí, chỉ cần phân tách các cặp mẫu tiêu chí ( group proxy-onlyở trên).

Bên trong một khối như vậy, theo truyền thống được thụt lề theo cách ngắn gọn (nhưng không cần thiết), sau đó bạn có thể khai báo các cài đặt bạn muốn áp dụng cho nhóm người dùng mà không phải chỉnh sửa từng authorized_keystệp cho các thành viên của nhóm đó.

Các no-ptythiết lập từ authorized_keyssẽ được nhân đôi bởi một PermitTTY nothiết lập và command="/sbin/nologin"sẽ trở thành ForceCommand /sbin/nologin.

Ngoài ra, bạn cũng có thể đặt thêm cài đặt để đáp ứng sự hoang tưởng của quản trị viên, chẳng hạn như - chrootđưa người dùng vào thư mục nhà của anh ta và sẽ kết thúc với một cái gì đó như thế này:

Match group proxy-only
    PermitTTY no
    ForceCommand /sbin/nologin
    ChrootDirectory %h
    # Optionally enable these by un-commenting the needed line
    # AllowTcpForwarding no
    # GatewayPorts yes
    # KbdInteractiveAuthentication no
    # PasswordAuthentication no
    # PubkeyAuthentication yes
    # PermitRootLogin no

(tự kiểm tra xem bạn cần hay muốn các dòng nhận xét và không ghi chú khi cần)

%hthông báo được thay thế bởi thư mục chính của người dùng ( %usẽ mang lại tên người dùng và %%ký hiệu phần trăm). Tôi thấy ChrootDirectoryđặc biệt hữu ích để giới hạn sftp-onlyngười dùng của mình :

Match group sftp-only
    X11Forwarding no
    AllowTcpForwarding no
    ChrootDirectory %h
    ForceCommand internal-sftp
    PasswordAuthentication no

Xin lưu ý rằng chỉ có một số chỉ thị nhất định có thể được sử dụng trong một Matchkhối. Tham khảo mantrang sshd_config(5)để biết chi tiết (tìm kiếm Match).

ủy quyền

NB: phần dưới nhận xét này là câu trả lời ban đầu của tôi. Trong khi đó - nhưng nó cũng phụ thuộc vào các tính năng của sshdphiên bản chính xác của bạn - tôi sẽ sử dụng phương pháp được mô tả ở trên trong hầu hết các trường hợp.

Có, bạn có thể, chi tiết như bạn có thể gán các khóa công khai. Ngoài nologin theo khuyến nghị của ajdecon, tôi sẽ đề nghị thiết lập các mục sau trước mục nhập chính trong authorized_keys:

no-pty ssh-rsa ...

No pty nói với phía máy chủ rằng không nên phân bổ thiết bị đầu cuối giả cho khóa đó.

Bạn cũng có thể buộc thực thi một cái gì đó như nologin cho một khóa cụ thể bằng cách thêm vào điều này:

command="/sbin/nologin",no-pty ssh-rsa ...

Xin lưu ý rằng no-ptymột mình sẽ không ngăn người dùng khóa thực thi các lệnh. Xem superuser.com/q/1230979/195460 .
Tad Lispy

3

Đối với bất kỳ người dùng chỉ sử dụng đường hầm, hãy thay đổi vỏ đăng nhập của họ thành / sbin / nologin. Bằng cách đó, người dùng của bạn sẽ không thể truy cập shell trên máy chủ, nhưng vẫn có thể chạy thiết lập đường hầm ssh từ máy khách của họ.


0

Tôi biết đây có thể không phải là câu trả lời mà bạn đang tìm kiếm, nhưng bạn đã xem xét sử dụng OpenVPN như một giải pháp thay thế chưa?


0

Trong trường hợp bạn sẵn sàng từ bỏ xác thực người dùng / vượt qua và sử dụng các khóa để đăng nhập, bạn có thể chỉ định tham số s cho mỗi khóa chung.

Các thông số đáng chú ý là:

lệnh = "lệnh"

Chỉ định rằng lệnh được thực thi bất cứ khi nào khóa này được sử dụng để xác thực. Lệnh được cung cấp bởi người dùng (nếu có) bị bỏ qua.

hạn chế

Cho phép tất cả các hạn chế, tức là vô hiệu hóa chuyển tiếp cổng, đại lý và X11, cũng như vô hiệu hóa phân bổ PTY và thực thi ~ / .ssh / rc.

và cuối cùng

chuyển tiếp cổng Cho phép chuyển tiếp cổng bị vô hiệu hóa trước đó bằng tùy chọn hạn chế.

Với những điều này, bạn có thể hạn chế rất nhiều người dùng của cặp khóa cụ thể đó, những gì anh ta có thể làm với phiên SSH.

Nó sẽ trông như thế này:

restrict,port-forwarding,command="/sbin/nologin" ssh-rsa <base64-encoded key>

Tôi thấy câu trả lời của mình hơi thừa đối với serverfault.com/a/242411/13364 , nhưng tôi đã để nó lại vì các tham số 'hạn chế' và 'chuyển tiếp cổng', theo ý kiến ​​của tôi tốt hơn 'không-pty'.
asdmin

-1

Tôi khuyên bạn nên thử Tunnelier . Cấu hình / quản lý dễ dàng hơn nhiều.

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.