Làm thế nào rủi ro là có một máy chủ cá nhân với ssh mở ra Internet?


25

Tiếp tục tiêu đề sẽ là trên mạng trong khi có kiến ​​thức hạn chế về bảo mật Internet.

Gần đây tôi đã thiết lập một máy chủ nhỏ với một máy tính cấp thấp chạy debian với mục đích sử dụng nó làm kho lưu trữ git cá nhân. Tôi đã kích hoạt ssh và khá ngạc nhiên về sự nhanh chóng mà nó phải chịu từ các cuộc tấn công vũ phu và tương tự. Sau đó, tôi đọc được rằng điều này khá phổ biến và đã học về các biện pháp bảo mật cơ bản để tránh các cuộc tấn công này (rất nhiều câu hỏi và trùng lặp trên serverfault đối phó với nó, xem ví dụ như cách này hay cách này ).

Nhưng bây giờ tôi tự hỏi nếu tất cả điều này là giá trị nỗ lực. Tôi quyết định thiết lập máy chủ của riêng mình để giải trí: Tôi chỉ có thể dựa vào các giải pháp của bên thứ ba như gitbucket.org, bettercodes.org, v.v. Mặc dù một phần thú vị là tìm hiểu về bảo mật Internet đủ thời gian để dành cho nó để trở thành một chuyên gia và gần như chắc chắn rằng tôi đã thực hiện các biện pháp phòng ngừa chính xác.

Để quyết định xem tôi có tiếp tục chơi với dự án đồ chơi này không, tôi muốn biết những gì tôi thực sự mạo hiểm khi làm như vậy. Chẳng hạn, các máy tính khác được kết nối với mạng của tôi cũng bị đe dọa ở mức độ nào? Một số máy tính này được sử dụng bởi những người có kiến ​​thức thậm chí còn ít hơn so với máy tính chạy Windows của tôi.

Xác suất mà tôi gặp rắc rối thực sự là gì nếu tôi tuân theo các nguyên tắc cơ bản như mật khẩu mạnh, quyền truy cập root bị vô hiệu hóa cho ssh, cổng không chuẩn cho ssh và có thể vô hiệu hóa đăng nhập mật khẩu và sử dụng một trong các quy tắc fail2ban, denyhosts hoặc iptables?

Nói cách khác, có một số con sói xấu lớn mà tôi nên sợ hay tất cả chủ yếu là về việc xua đuổi những đứa trẻ kịch bản?


Tôi nghĩ rằng bạn đã đánh vào đầu bạn khi bạn đề cập rằng bạn không có thời gian hoặc thiên hướng để trở thành một chuyên gia về bảo mật công nghệ $; đây là lý do chính để sử dụng một giải pháp lưu trữ. Đối số phổ biến duy nhất khác trong việc đánh giá nội bộ so với lưu trữ là chi phí. Vì github và những thứ tương tự là miễn phí, về cơ bản, bạn đang từ bỏ thời gian cá nhân của mình chỉ để có được kiến ​​thức về cách chạy repo git. Chúng tôi không thể nói cho bạn biết bạn nên làm gì với thời gian cá nhân của mình, nhưng trong tình huống chuyên nghiệp, điều này sẽ vô nghĩa. (caveat emptor: các tình huống phức tạp có nhiều biến hơn).
Chris S

1
Nếu bạn quyết định chạy máy chủ của riêng mình, hãy thêm vào danh sách việc cần làm thường xuyên để kiểm tra các bản cập nhật và lỗ hổng bảo mật cho mọi dịch vụ bạn chạy. Chỉ thiết lập nó là không đủ.
tuần

Hai từ: khóa công khai, như @Stephane đặt nó. Vô hiệu hóa keyboard-interactivexác thực và chỉ sử dụng pubkeyxác thực.
kostix

Câu trả lời:


14

IMO SSH là một trong những điều an toàn nhất để nghe trên internet mở. Nếu bạn thực sự lo lắng, hãy lắng nghe trên một cổng cao cấp không chuẩn. Tôi vẫn có tường lửa (cấp thiết bị) giữa hộp của bạn và Internet thực tế và chỉ sử dụng chuyển tiếp cổng cho SSH nhưng đó là một biện pháp phòng ngừa đối với các dịch vụ khác. Bản thân SSH là khá vững chắc.

Thỉnh thoảng tôi người đánh máy chủ SSH tại nhà của tôi (mở cho Time Warner Cable). Không bao giờ có một tác động thực tế.

Một số điều bổ sung bạn có thể làm để làm cho SSH an toàn hơn là ngăn các lần thử lặp lại từ cùng một địa chỉ IP cho máy gia đình giống như

MaxStartups 2:30:10

trong / etc / ssh / sshd_config sẽ hạn chế số lượng kết nối có thể được tạo trong một hàng trước khi đăng nhập thành công.


Nhà cung cấp dịch vụ Internet của tôi cung cấp một tường lửa có tham số tôi thấy khi mở cổng cho ssh. Có phải đó là những gì bạn đề cập đến?
Alfred M.

2
Có thể, một số ISP cung cấp cho bạn một thiết bị câm, một số bộ định tuyến có tường lửa tích hợp. Tôi chỉ nói rằng KHÔNG BAO GIỜ nên đặt HĐH cho mục đích chung trực tiếp trên Internet cho dù bạn có biện pháp phòng ngừa nào. Bạn muốn một số loại thiết bị phần cứng (hoặc một cái gì đó như DD-WRT) giữa bạn và khó chịu.
TheFiddlerWins

1
Thiết lập xác thực khóa công khai như được đề cập trong câu trả lời khác và TẮT TẮT Thử tháchResponseAuthentication và PasswordAuthentication trong / etc / ssh / sshd_config.
Randy Orrison

Tôi biết đây là một câu hỏi ngu ngốc nhưng tôi có cần mua một tên miền để truy cập máy chủ của mình (thông qua ssh hoặc trình duyệt) từ internet không?
TheRookierLearner

@TheRookierLearner - không, bạn có thể sử dụng địa chỉ IP mà ISP cung cấp cho bạn. Tuy nhiên, tùy thuộc vào cấu hình mạng gia đình của bạn, có thể được chia sẻ thông qua tất cả các thiết bị của bạn bằng một thứ gọi là PNAT (hầu hết mọi người chỉ gọi nó là NAT). Nếu bạn giống như phần lớn mọi người, bạn sẽ cần phải tìm ra IP "NATed" của thiết bị cụ thể mà bạn muốn truy cập từ internet (chỉ ifconfig / ipconfig trên hệ thống, nó sẽ là 10.xxx, 172.16. Địa chỉ xx hoặc 192.168.xx xem RFC 1918 để biết nhiều hơn những gì bạn quan tâm về những con số này) và sau đó nói với bộ định tuyến của bạn về "cổng chuyển tiếp" hoặc "DMZ" cổng 22.
TheFiddlerWins

10

Thiết lập hệ thống xác thực khóa công khai với SSH thực sự không quan trọng và mất khoảng 5 phút để thiết lập .

Nếu bạn buộc tất cả kết nối SSH sử dụng nó, thì nó sẽ làm cho hệ thống của bạn trở nên linh hoạt như bạn có thể hy vọng mà không cần đầu tư RẤT NHIỀU vào cơ sở hạ tầng bảo mật. Thành thật mà nói, nó rất đơn giản và hiệu quả (miễn là bạn không có 200 tài khoản - thì nó sẽ trở nên lộn xộn) rằng việc không sử dụng nó sẽ là một hành vi phạm tội công khai.


3
Để buộc các kết nối SSH sử dụng xác thực khóa chung sau khi bạn thiết lập nó, hãy đảm bảo bạn TẮT TẮT Thử tháchResponseAuthentication và PasswordAuthentication trong / etc / ssh / sshd_config. Tôi đã quên điều này một lần, rất tiếc cho tôi (chỉ một lần, và không bao giờ nữa).
Randy Orrison

8

Tôi cũng điều hành một máy chủ git cá nhân mở ra thế giới trên SSH và tôi cũng gặp vấn đề tương tự như bạn, vì vậy tôi có thể thông cảm với tình huống của bạn.

TheFiddlerWins đã giải quyết các tác động bảo mật chính của việc mở SSH trên IP có thể truy cập công khai, nhưng công cụ tốt nhất IMO để đối phó với các nỗ lực vũ phu là Fail2Ban - phần mềm giám sát các tệp nhật ký xác thực của bạn, phát hiện các nỗ lực xâm nhập và thêm quy tắc tường lửa vào iptablestường lửa cục bộ của máy . Bạn có thể định cấu hình cả số lần thử trước lệnh cấm và độ dài của lệnh cấm (mặc định của tôi là 10 ngày).


Như nhận xét của tôi về bài viết trước đã nêu, đó là những gì NAS của tôi sử dụng ở nhà, và sau một vài tháng, số lượng các trang phục đã giảm đáng kể.
mveroone

2

Một cách khác để xử lý việc này là thiết lập VPN. Thay vì kết nối trực tiếp với các cổng SSH trên máy chủ gia đình của bạn, trước tiên bạn kết nối với VPN, sau đó chạy tất cả lưu lượng truy cập của bạn qua kết nối được mã hóa, bảo mật.

Cách lý tưởng để xử lý vấn đề này là với tường lửa kết hợp VPN Endpoint, nhưng bạn cũng có thể thiết lập máy tính Windows để hoạt động như một máy chủ VPN.

Đây là một ví dụ:

http://www.howtogeek.com/135996/

Bây giờ hãy nhớ rằng một cấu hình bảo mật thích hợp sẽ liên quan đến một máy tính công cộng (hoặc bán công khai) được cách ly khỏi mạng nội bộ của bạn. Một máy chủ web, hoặc bất kỳ máy tính nào lưu trữ các dịch vụ có sẵn công khai, phải ở bên ngoài mạng an toàn của nhà hoặc văn phòng của bạn. Bạn sẽ sử dụng 2 bộ định tuyến để tạo vùng an toàn hoặc DMZ, giữa bạn và Internet.

Bằng cách này, nếu máy chủ của bạn bị hack, nó không thể được sử dụng như một vectơ để tấn công các máy tính khác của bạn.

Vì vậy, thiết lập sẽ trông như thế này:

Cấu hình DMZ


Xin lỗi về hình ảnh nhỏ ... Tôi không thể tìm ra cách chỉnh sửa bài viết của mình.
TomXP411

2

Câu trả lời rất hay, tôi chỉ đề nghị hai điều:

  • Chỉ xem xét truy cập bằng hệ thống xác thực chính
  • Sử dụng Denyhosts : Nó sẽ cấm các máy chủ cố gắng truy cập máy chủ của bạn với auth không hợp lệ
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.