Bạn có ý định cho phép dịch vụ SSH ra thế giới không? Hay chỉ để các thành viên trong nhóm ở những nơi cụ thể? Câu trả lời của tôi phụ thuộc một chút vào mức độ nghiêm trọng của thử thách của bạn.
Trong cả hai trường hợp, một điều bạn nên làm là đảm bảo rằng máy chủ SSH không cho phép đăng nhập mật khẩu cho người dùng root.
- Trong / etc / ssh / sshd_config đảm bảo bạn không bao giờ cho phép đăng nhập root ngoại trừ khóa SSH.
Trong các hệ thống của tôi, tôi đã có cài đặt này
PermitRootLogin without-password
nhưng tôi nhận thấy trong Ubuntu mới hơn họ có
PermitRootLogin prohibit-password
Nếu bạn đọc "man sshd_config" tôi nghĩ nó có nghĩa là "mật khẩu cấm" mới hơn này có nghĩa tương tự và chắc chắn rõ ràng hơn về ý nghĩa. Điều đó KHÔNG mặc định trên một số hệ thống Linux, nhưng có lẽ nên như vậy.
Bây giờ, về vấn đề của bạn. Có phải máy chủ hệ thống của bạn chỉ có một số người dùng ở những nơi cụ thể? Làm cái này!
chỉnh sửa /etc/hosts.deny và chèn
TẤT CẢ
Sau đó chỉnh sửa /etc/hosts.allow và liệt kê số IP hoặc phạm vi muốn cho phép sử dụng SSH. Ký hiệu có một chút khó hiểu vì nếu bạn muốn cho phép tất cả các hệ thống có số IP như 111.222,65.101 đến 111.222,65.255, bạn hãy đặt một mục như thế này trong hosts.allow
ALL: 127.0.0.1
sshd: 111.222.65.
sshdfwd-X11: 111.222.65.
Đó là một giải pháp mạnh mẽ, mạnh mẽ. Nếu người dùng của bạn có thể được liệt kê theo phạm vi IP, hãy làm điều đó!
Giải pháp này tồn tại trước khi các bảng IP được tạo, nó (tôi nghĩ) dễ quản trị hơn rất nhiều, nhưng nó không tốt bằng giải pháp bảng IP vì các thói quen của bảng IP sẽ phát hiện kẻ thù sớm hơn các chương trình được lưu trữ bởi host.allow và máy chủ lưu trữ .deny. Nhưng đây là một cách chắc chắn, cách đơn giản để giải quyết rất nhiều vấn đề, không chỉ từ SSH.
Lưu ý vấn đề bạn tạo ra cho chính mình. Nếu bạn muốn mở một máy chủ FTP, máy chủ web hoặc không có gì, bạn sẽ phải cho phép các mục trong máy chủ cho phép.
Bạn có thể đạt được mục đích cơ bản tương tự bằng cách đấu tranh với iptables và tường lửa. Theo một nghĩa nào đó, đây là một giải pháp ưa thích vì bạn đang chặn kẻ thù ở ranh giới bên ngoài. Ubuntu có "ufw" (tường lửa không phức tạp) và "man ufw" có rất nhiều ví dụ. Tôi muốn có một GUI đẹp để lội qua điều này, tôi không phải làm điều này mọi lúc. Có lẽ những người khác có thể cho chúng tôi biết nếu có một bây giờ.
- Các bài đăng khác ở đây được đề xuất sử dụng khóa công khai SSH chỉ dành cho người dùng của bạn. Điều đó chắc chắn sẽ giúp ích, với mức giá phức tạp và thất vọng cho người dùng của bạn. Trong phòng thí nghiệm của chúng tôi, có 15 máy tính. Người dùng đi giữa các máy tính. Yêu cầu xác thực khóa SSH sẽ gây rắc rối lớn vì mọi người đi từ máy tính này sang máy tính khác.
Một nguồn thất vọng khác sẽ xảy ra khi một số người dùng tích lũy các khóa ssh khác nhau cho các máy chủ khác nhau. Vì tôi có khóa SSH cho khoảng 12 dự án khác nhau, hiện tại ssh không thành công vì tôi có quá nhiều khóa công khai (Yêu cầu "ssh -o PubkeyAuthentication = false" hoặc tạo một mục trong tệp .ssh / config. Đó là PITA)
- Nếu bạn phải để máy chủ mở cho SSH từ thế giới rộng lớn, thì chắc chắn bạn nên sử dụng thói quen từ chối để chặn các vị trí thường xuyên đăng nhập. Có 2 chương trình hay cho việc này, những chương trình chúng tôi đã sử dụng là denyhosts và fail2ban . Các chương trình này có các cài đặt cho phép bạn cấm người phạm tội trong khoảng thời gian bạn muốn.
Trong các hệ thống Centos Linux của chúng tôi, tôi nhận thấy họ đã bỏ gói denyhosts và chỉ cung cấp fail2ban. Tôi thích denyhosts vì nó đã xây dựng một danh sách các phạm vi người dùng / ip rắc rối và sau đó trong hosts.deny, danh sách đó đã được ghi chú. Chúng tôi đã cài đặt fail2ban thay vào đó và nó vẫn ổn. Tôi hiểu rằng bạn muốn chặn những người dùng xấu này ở rìa ngoài của máy chủ, vì vậy các trình chặn dựa trên bảng ip, như fail2ban, thực sự tốt hơn. Denyhosts hoạt động ở cấp độ thứ cấp, sau khi kẻ thù đã vượt qua iptables, chúng sẽ bị sshd từ chối.
Trong cả hai chương trình này, sẽ hơi tẻ nhạt khi đưa người dùng ra khỏi tù nếu họ quên mật khẩu và thử một vài lần để đăng nhập. Thật khó khăn để khiến mọi người quay lại khi họ mắc lỗi đăng nhập. Bạn đã đoán rằng sẽ có một GUI điểm và nhấp, nơi bạn có thể chỉ và cho phép mọi người quay lại, nhưng thực tế không phải vậy. Tôi chỉ phải làm điều này vài tháng một lần và quên đi giữa các lần, vì vậy tôi đã viết hướng dẫn cho chính mình trên trang web của mình http: //pj.freefacemony.org/blog/?p=602