Làm thế nào để cho phép ssh chỉ người dùng root từ mạng cục bộ?


38

Tôi đã cài đặt Google-Authenticator trên máy CentOS 6.5 và định cấu hình một số người dùng nhất định để cung cấp OTP.

Trong khi chỉnh sửa, /etc/ssh/sshd_configtôi thấy một lệnh " PermitRootLogin" được nhận xét theo mặc định.

Tôi muốn đặt " PermitRootLogin no" nhưng vẫn có thể ssh vào máy dưới dạng root chỉ từ mạng cục bộ.

Điều đó có thể không?


5
Đừng bao giờ làm điều này. SSH là người dùng của bạn, sau đó sử dụng sudo để nâng cao quyền. Làm điều này để nó để lại dấu vết giấy và vì vậy bạn sẽ biết tài khoản nào đã bị xâm phạm.
SnakeDoc

3
@SnakeDoc: Đó là một trường phái tư tưởng, nhưng nó không rõ ràng và tôi sẽ tranh luận ngược lại. sudo là một bề mặt tấn công phức tạp lớn và không phải là thứ tôi muốn cài đặt. SSH pubkey auth là một bề mặt tấn công nhỏ hơn nhiều. Hoặc có thể được ghi lại, nhưng ghi nhật ký không hữu ích khi người dùng (root) có thể chỉnh sửa hoặc xóa nhật ký, đó luôn là trường hợp trừ khi bạn đăng nhập vào bộ lưu trữ chỉ phụ lục bên ngoài.
R ..

1
@R .. Nếu bạn thiết lập sudoers chính xác, sử dụng nguyên tắc đặc quyền tối thiểu, những vấn đề bạn mô tả phần lớn không phải là vấn đề. Không người dùng nào có thể ssh in và sudo - suroot, hoặc làm bất cứ điều gì người dùng của họ không cần (trong sudoers, bạn sử dụng danh sách trắng cho các lệnh). Nếu bạn cần root, bạn phải ở trong giao diện điều khiển - tức là. Root qua SSH không bao giờ được phép ... khóa hay không.
SnakeDoc

1
@SnakeDoc: Bạn nhầm rồi. Sudo có cả bề mặt tấn công phức tạp của riêng nó bề mặt tấn công phức tạp cơ bản vốn là một nhị phân hoàn hảo, dưới dạng tất cả các trạng thái được thừa hưởng trong suốt quá trình thực thi. Trong một số trường hợp, một lỗi trong chính chương trình suid (suid) thậm chí không cần thiết; lỗi trong cơ sở hạ tầng cơ bản như trình liên kết động (ví dụ CVE-2010-3856) có thể là đủ.
R ..

1
@R .. Bạn cho rằng bạn sẽ luôn biết nếu một khóa bị rò rỉ. Đó là một trong những giả định. Hơn nữa, một khi vào, kẻ tấn công của bạn có quyền root. Vẫn tốt hơn là gửi chúng thông qua một tài khoản không có đặc quyền và khiến chúng phải nâng lên để root. Bằng cách này, bạn có một khóa phải bị rò rỉ, cụm mật khẩu chính bị phá vỡ và sau đó mật khẩu tài khoản người dùng thông thường bị phá vỡ. Và nếu kẻ tấn công vượt qua tất cả ... họ không thể làm gì vì người dùng này được thiết lập theo sudoers với khả năng rất hạn chế ... Xem lợi ích bây giờ? Không cho phép đăng nhập root trực tiếp qua ssh ... thời gian. Đó là vệ sinh tốt
SnakeDoc

Câu trả lời:


54

Sử dụng Matchtham số cấu hình trong /etc/ssh/sshd_config:

# general config
PermitRootLogin no 

# the following overrides the general config when conditions are met. 
Match Address  192.168.0.*
    PermitRootLogin yes

Xem man sshd_config


Tại sao tôi không nghĩ về điều đó? Cảm ơn người bạn đời
Itai Ganot

8
Bạn cũng có thể hạn chế nguồn cho các khóa xác thực trong ~root/.ssh/authorized_keys. Tiền tố khóa với from="192.168.0.0/24 ".
BillThor

9
Tôi cũng sẽ thay đổi nó để cho phép các địa chỉ liên kết cục bộ IPv6. Cách các địa chỉ liên kết cục bộ hoạt động trong IPv6 làm cho chúng rất mạnh mẽ để cấu hình mạng sai. Điều đó có nghĩa là nếu bạn cần ssh in để sửa lỗi cấu hình mạng, có thể sử dụng địa chỉ liên kết cục bộ IPv6 là tùy chọn duy nhất còn lại.
kasperd

FYI Nếu bạn bổ sung sử dụng chỉ thị AllowUser , bạn phải bổ sung (và phản trực giác) cũng làmAllowUser root
Robert Riedl

14

Các Match addressphương pháp đã được đề cập, nhưng bạn cũng có thể hạn chế người sử dụng (hoặc nhóm) được phép đăng nhập vào một hệ thống. Ví dụ: để giới hạn đăng nhập cho người dùng itai(từ bất cứ đâu) và root(từ một mạng cụ thể), hãy sử dụng:

AllowUsers itai root@192.168.0.*

Điều này ngăn tất cả người dùng khác (như apache) đăng nhập thông qua SSH.

Xem thêm AllowUserstừ khóa trong hướng dẫn sshd_config (5) .


4
Tôi thích AllowGroupsvà thêm tất cả người dùng có thể đăng nhập bằng SSH vào một nhóm cụ thể. Đoán đây là vấn đề của hương vị, nhưng có vẻ như ít chỉnh sửa sshd_config (nghĩa là ít nguy cơ gây rối và khóa mọi người hơn).
một CVn

1
@ MichaelKjorling Ngoài ra, Allowgroup có nghĩa là bạn không cần quyền chỉnh sửa cho sshd_config nếu nhóm của bạn mở rộng hoặc thu hẹp. Điều này thậm chí có thể cho phép nhiều loại quản lý hoặc thực tập hơn để làm điều đó.
Nzall

Điểm hay, lưu ý rằng bạn có thể kết hợp các tùy chọn, có AllowUsers itai root@192.168.0.*AllowGroups ssh-usersbạn sẽ không vô tình gây ra khóa trong trường hợp thực tập viên vô tình xóa nhóm :)
Lekensteyn
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.