Tìm hiểu Ins and Out của OpenSSH trên PC Linux của bạn

Mục lục:

Tìm hiểu Ins and Out của OpenSSH trên PC Linux của bạn
Tìm hiểu Ins and Out của OpenSSH trên PC Linux của bạn

Video: Tìm hiểu Ins and Out của OpenSSH trên PC Linux của bạn

Video: Tìm hiểu Ins and Out của OpenSSH trên PC Linux của bạn
Video: Chặn Người Khác Xài Ké WiFi Nhà Mình ( Modem Viettel HG8045) - YouTube 2024, Tháng mười một
Anonim
Chúng tôi đã mở rộng các đặc điểm của SSH nhiều lần, cho cả bảo mật và truy cập từ xa. Chúng ta hãy xem xét chính máy chủ, một số khía cạnh "bảo trì" quan trọng và một số điều kỳ quặc có thể làm tăng thêm sự hỗn loạn cho một chuyến đi suôn sẻ.
Chúng tôi đã mở rộng các đặc điểm của SSH nhiều lần, cho cả bảo mật và truy cập từ xa. Chúng ta hãy xem xét chính máy chủ, một số khía cạnh "bảo trì" quan trọng và một số điều kỳ quặc có thể làm tăng thêm sự hỗn loạn cho một chuyến đi suôn sẻ.

Trong khi chúng tôi đã viết hướng dẫn này với Linux, điều này cũng có thể áp dụng cho OpenSSH trong Mac OS X và Windows 7 thông qua Cygwin.

Tại sao tính năng này an toàn

Chúng tôi đã đề cập nhiều lần về cách SSH là cách tuyệt vời để kết nối an toàn và truyền dữ liệu từ điểm này sang điểm khác. Chúng ta hãy xem xét một cách ngắn gọn về cách mọi thứ hoạt động để bạn có được một ý tưởng tốt hơn về lý do tại sao mọi thứ có thể trở nên kỳ quặc đôi khi.

Khi chúng tôi quyết định bắt đầu kết nối với một máy tính khác, chúng tôi thường sử dụng các giao thức dễ làm việc. Telnet và FTP đều đến với tâm trí. Chúng tôi gửi thông tin đến một máy chủ từ xa và sau đó chúng tôi nhận được xác nhận lại về kết nối của chúng tôi. Để thiết lập một số loại an toàn, các giao thức này thường sử dụng kết hợp tên người dùng và mật khẩu. Điều đó có nghĩa là chúng hoàn toàn an toàn, đúng không? Sai rồi!
Khi chúng tôi quyết định bắt đầu kết nối với một máy tính khác, chúng tôi thường sử dụng các giao thức dễ làm việc. Telnet và FTP đều đến với tâm trí. Chúng tôi gửi thông tin đến một máy chủ từ xa và sau đó chúng tôi nhận được xác nhận lại về kết nối của chúng tôi. Để thiết lập một số loại an toàn, các giao thức này thường sử dụng kết hợp tên người dùng và mật khẩu. Điều đó có nghĩa là chúng hoàn toàn an toàn, đúng không? Sai rồi!

Nếu chúng tôi nghĩ rằng quá trình kết nối của chúng tôi là thư, thì việc sử dụng FTP và Telnet và các dịch vụ tương tự không giống như sử dụng phong bì gửi thư tiêu chuẩn. Nó giống như sử dụng bưu thiếp. Nếu ai đó xảy ra để bước vào giữa, họ có thể xem tất cả các thông tin, bao gồm cả địa chỉ của cả hai phóng viên và tên người dùng và mật khẩu được gửi đi. Sau đó, họ có thể thay đổi tin nhắn, giữ thông tin giống nhau, và mạo danh một phóng viên hoặc bên kia. Điều này được gọi là một cuộc tấn công "trung gian", và nó không chỉ làm tổn hại đến tài khoản của bạn, mà nó còn đặt câu hỏi cho mỗi và mọi thông điệp được gửi và nhận được. Bạn không thể chắc chắn nếu bạn đang nói chuyện với người gửi hay không, và ngay cả khi bạn đang có, bạn không thể chắc chắn không ai nhìn vào tất cả mọi thứ từ giữa.

Bây giờ, hãy xem mã hóa SSL, loại làm cho HTTP an toàn hơn. Ở đây, chúng tôi có một bưu điện xử lý thư từ, người kiểm tra xem người nhận của bạn có phải là người được họ khiếu nại hay không và có luật bảo vệ thư của bạn không bị xem xét. Tổng quan an toàn hơn và cơ quan trung ương - Verisign là một, cho ví dụ HTTPS của chúng tôi - đảm bảo rằng người bạn đang gửi thư để kiểm tra. Họ làm điều này bằng cách không cho phép bưu thiếp (thông tin đăng nhập không được mã hóa); thay vào đó họ ủy thác phong bì thật.

Cuối cùng, hãy xem SSH. Ở đây, thiết lập có một chút khác biệt. Chúng tôi không có người xác thực trung tâm ở đây, nhưng mọi thứ vẫn an toàn. Đó là bởi vì bạn đang gửi thư cho ai đó có địa chỉ mà bạn đã biết - nói, bằng cách trò chuyện với họ qua điện thoại - và bạn đang sử dụng một số toán học thực sự ưa thích để ký vào phong bì của mình. Bạn trao nó cho anh trai, bạn gái, cha, hoặc con gái của bạn để mang nó đến địa chỉ, và chỉ khi các trận đấu toán học ưa thích của người nhận bạn có cho rằng địa chỉ là những gì nó nên được. Sau đó, bạn nhận được một lá thư trở lại, cũng được bảo vệ khỏi con mắt tò mò của toán học tuyệt vời này. Cuối cùng, bạn gửi thông tin đăng nhập của bạn trong một phong bì bí mật được thuật toán bí mật khác đến đích. Nếu toán không khớp, chúng tôi có thể giả định rằng người nhận ban đầu đã được di chuyển và chúng tôi cần phải xác nhận lại địa chỉ của họ.
Cuối cùng, hãy xem SSH. Ở đây, thiết lập có một chút khác biệt. Chúng tôi không có người xác thực trung tâm ở đây, nhưng mọi thứ vẫn an toàn. Đó là bởi vì bạn đang gửi thư cho ai đó có địa chỉ mà bạn đã biết - nói, bằng cách trò chuyện với họ qua điện thoại - và bạn đang sử dụng một số toán học thực sự ưa thích để ký vào phong bì của mình. Bạn trao nó cho anh trai, bạn gái, cha, hoặc con gái của bạn để mang nó đến địa chỉ, và chỉ khi các trận đấu toán học ưa thích của người nhận bạn có cho rằng địa chỉ là những gì nó nên được. Sau đó, bạn nhận được một lá thư trở lại, cũng được bảo vệ khỏi con mắt tò mò của toán học tuyệt vời này. Cuối cùng, bạn gửi thông tin đăng nhập của bạn trong một phong bì bí mật được thuật toán bí mật khác đến đích. Nếu toán không khớp, chúng tôi có thể giả định rằng người nhận ban đầu đã được di chuyển và chúng tôi cần phải xác nhận lại địa chỉ của họ.

Với lời giải thích miễn là nó, chúng tôi nghĩ rằng chúng tôi sẽ cắt nó ở đó. Nếu bạn có một số thông tin chi tiết hơn, cảm thấy tự do để trò chuyện trong các ý kiến, tất nhiên. Bây giờ, hãy xem xét tính năng có liên quan nhất của SSH, xác thực máy chủ.

Khóa máy chủ

Xác thực máy chủ về cơ bản là phần mà người mà bạn tin cậy mang phong bì (niêm phong bằng phép toán) và xác nhận địa chỉ của người nhận. Đó là một mô tả khá chi tiết về địa chỉ và dựa trên một số phép toán phức tạp mà chúng tôi sẽ bỏ qua ngay. Tuy nhiên, có một vài điều quan trọng cần lấy đi từ điều này:

  1. Vì không có thẩm quyền trung tâm, bảo mật thực sự nằm trong khóa máy chủ, khóa công khai và khóa riêng. (Hai khóa sau được định cấu hình khi bạn được cấp quyền truy cập vào hệ thống.)
  2. Thông thường, khi bạn kết nối với một máy tính khác thông qua SSH, khóa máy chủ được lưu trữ. Điều này làm cho các hành động trong tương lai nhanh hơn (hoặc ít tiết).
  3. Nếu khóa máy chủ thay đổi, bạn sẽ rất có thể được cảnh báo và bạn nên cảnh giác!

Vì khóa máy chủ được sử dụng trước khi xác thực để thiết lập danh tính của máy chủ SSH, bạn nên chắc chắn kiểm tra khóa trước khi kết nối. Bạn sẽ thấy một hộp thoại xác nhận như dưới đây.

Tuy nhiên, bạn không nên lo lắng! Thông thường khi bảo mật là một mối quan tâm, sẽ có một vị trí đặc biệt mà khóa máy chủ (vân tay ECDSA ở trên) có thể được xác nhận. Trong các liên doanh hoàn toàn trực tuyến, thường nó sẽ có trên một trang web chỉ đăng nhập an toàn. Bạn có thể phải (hoặc chọn!) Gọi cho bộ phận CNTT của bạn để xác nhận khóa này qua điện thoại. Tôi thậm chí còn nghe nói về một số nơi mà chìa khóa nằm trên huy hiệu công việc của bạn hoặc trên danh sách "Số khẩn cấp" đặc biệt. Và, nếu bạn có quyền truy cập vật lý vào máy mục tiêu, bạn cũng có thể tự kiểm tra!
Tuy nhiên, bạn không nên lo lắng! Thông thường khi bảo mật là một mối quan tâm, sẽ có một vị trí đặc biệt mà khóa máy chủ (vân tay ECDSA ở trên) có thể được xác nhận. Trong các liên doanh hoàn toàn trực tuyến, thường nó sẽ có trên một trang web chỉ đăng nhập an toàn. Bạn có thể phải (hoặc chọn!) Gọi cho bộ phận CNTT của bạn để xác nhận khóa này qua điện thoại. Tôi thậm chí còn nghe nói về một số nơi mà chìa khóa nằm trên huy hiệu công việc của bạn hoặc trên danh sách "Số khẩn cấp" đặc biệt. Và, nếu bạn có quyền truy cập vật lý vào máy mục tiêu, bạn cũng có thể tự kiểm tra!

Kiểm tra Khóa Máy chủ của Hệ thống của bạn

Có 4 loại thuật toán mã hóa được sử dụng để tạo khóa, nhưng mặc định cho OpenSSH vào đầu năm nay là ECDSA (với một số lý do chính đáng). Chúng ta sẽ tập trung vào ngày hôm nay.Đây là lệnh bạn có thể chạy trên máy chủ SSH mà bạn có quyền truy cập vào:

ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l

Đầu ra của bạn sẽ trả về một cái gì đó như thế này:

256 ca:62:ea:7c:e4:9e:2e:a6:94:20:11:db:9c:78:c3:4c /etc/ssh/ssh_host_ecdsa_key.pub

Số đầu tiên là độ dài bit của khóa, sau đó là chính khóa và cuối cùng bạn có tệp được lưu trữ. So sánh phần giữa đó với phần bạn thấy khi được nhắc đăng nhập từ xa. Nó phải phù hợp và bạn đã sẵn sàng. Nếu không, thì điều gì đó khác có thể xảy ra.

Bạn có thể xem tất cả các máy chủ mà bạn đã kết nối thông qua SSH bằng cách xem tập tin known_hosts của bạn. Nó thường được đặt tại:

~/.ssh/known_hosts

Bạn có thể mở nó trong bất kỳ trình soạn thảo văn bản nào. Nếu bạn nhìn, hãy cố gắng chú ý đến cách các khóa được lưu trữ. Chúng được lưu trữ với tên của máy chủ (hoặc địa chỉ web) và địa chỉ IP của máy tính đó.

Thay đổi khóa và sự cố máy chủ

Có một vài lý do tại sao khóa máy chủ thay đổi hoặc chúng không khớp với những gì được ghi trong tệp known_host của bạn.

  • Hệ thống đã được cài đặt lại / cấu hình lại.
  • Các khóa máy chủ đã được thay đổi theo cách thủ công do các giao thức bảo mật.
  • Máy chủ OpenSSH được cập nhật và đang sử dụng các tiêu chuẩn khác nhau do các vấn đề bảo mật.
  • Thuê IP hoặc DNS đã thay đổi. Điều này thường có nghĩa là bạn đang cố truy cập một máy tính khác.
  • Hệ thống đã bị xâm nhập theo một cách nào đó để khóa máy chủ thay đổi.

Rất có thể, vấn đề là một trong ba vấn đề đầu tiên và bạn có thể bỏ qua thay đổi. Nếu thuê IP / DNS thay đổi, thì có thể có sự cố với máy chủ và bạn có thể được định tuyến đến một máy khác. Nếu bạn không chắc chắn lý do thay đổi là gì thì có lẽ bạn nên cho rằng đó là lý do cuối cùng trong danh sách.

Cách OpenSSH xử lý các máy chủ không xác định

OpenSSH có một cài đặt cho cách nó xử lý các máy chủ không xác định, được phản ánh trong biến “StrictHostKeyChecking” (không có dấu ngoặc kép).
OpenSSH có một cài đặt cho cách nó xử lý các máy chủ không xác định, được phản ánh trong biến “StrictHostKeyChecking” (không có dấu ngoặc kép).

Tùy thuộc vào cấu hình của bạn, kết nối SSH với máy chủ không xác định (có khóa không có trong tệp known_hosts của bạn) có thể theo ba cách.

  • StrictHostKeyChecking được đặt thành không; OpenSSH sẽ tự động kết nối với bất kỳ máy chủ SSH nào bất kể trạng thái khóa máy chủ. Điều này không an toàn và không được đề xuất, trừ khi bạn đang thêm một loạt máy chủ sau khi cài đặt lại hệ điều hành của mình, sau đó bạn sẽ thay đổi lại.
  • StrictHostKeyChecking được đặt để hỏi; OpenSSH sẽ hiển thị cho bạn các khóa máy chủ mới và yêu cầu xác nhận trước khi thêm chúng. Nó sẽ ngăn các kết nối chuyển sang các khóa máy chủ thay đổi. Đây là mặc định.
  • StrictHostKeyChecking được đặt thành có; Ngược lại với “không”, điều này sẽ ngăn cản bạn kết nối với bất kỳ máy chủ nào chưa có trong tệp known_host của bạn.

Bạn có thể thay đổi biến này một cách dễ dàng trên dòng lệnh bằng cách sử dụng mô hình sau:

ssh -o 'StrictHostKeyChecking [option]' user@host

Thay thế [tùy chọn] bằng "không", "yêu cầu" hoặc "có". Hãy lưu ý rằng có một dấu nháy đơn liên quan đến biến này và cài đặt của nó. Ngoài ra, hãy thay thế người dùng @ host bằng tên người dùng và tên máy chủ lưu trữ của máy chủ mà bạn đang kết nối. Ví dụ:

ssh -o 'StrictHostKeyChecking ask' [email protected]

Máy chủ bị chặn do các phím đã thay đổi

Nếu bạn có một máy chủ mà bạn đang cố truy cập có khóa đã được thay đổi, cấu hình OpenSSH mặc định sẽ ngăn bạn truy cập vào nó. Bạn có thể thay đổi giá trị StrictHostKeyChecking cho máy chủ lưu trữ đó, nhưng điều đó sẽ không hoàn toàn, triệt để, an toàn tuyệt đối, phải không? Thay vào đó, chúng ta chỉ có thể loại bỏ giá trị vi phạm khỏi tệp known_hosts của chúng ta.

Đó chắc chắn là một điều xấu xí có trên màn hình của bạn. May mắn thay, lý do của chúng tôi cho điều này là một hệ điều hành được cài đặt lại. Vì vậy, hãy phóng to trên dòng chúng ta cần.
Đó chắc chắn là một điều xấu xí có trên màn hình của bạn. May mắn thay, lý do của chúng tôi cho điều này là một hệ điều hành được cài đặt lại. Vì vậy, hãy phóng to trên dòng chúng ta cần.
Chúng tôi đi. Xem cách trích dẫn tệp cần chỉnh sửa? Nó thậm chí còn cho chúng ta số dòng! Vì vậy, hãy mở tập tin đó trong Nano:
Chúng tôi đi. Xem cách trích dẫn tệp cần chỉnh sửa? Nó thậm chí còn cho chúng ta số dòng! Vì vậy, hãy mở tập tin đó trong Nano:
Image
Image
Đây là khóa vi phạm của chúng tôi, trong dòng 1. Tất cả những gì chúng ta cần làm là nhấn Ctrl + K để cắt toàn bộ dòng.
Đây là khóa vi phạm của chúng tôi, trong dòng 1. Tất cả những gì chúng ta cần làm là nhấn Ctrl + K để cắt toàn bộ dòng.
Tốt hơn nhiều! Vì vậy, bây giờ chúng tôi nhấn Ctrl + O để ghi ra (lưu) tệp, sau đó nhấn Ctrl + X để thoát.
Tốt hơn nhiều! Vì vậy, bây giờ chúng tôi nhấn Ctrl + O để ghi ra (lưu) tệp, sau đó nhấn Ctrl + X để thoát.

Bây giờ chúng tôi nhận được một lời nhắc tốt đẹp thay vào đó, mà chúng tôi chỉ có thể phản ứng với "có".

Image
Image

Tạo khóa máy chủ mới

Đối với hồ sơ, thực sự không có quá nhiều lý do để bạn thay đổi chìa khóa máy chủ của mình, nhưng nếu bạn tìm thấy nhu cầu, bạn có thể thực hiện dễ dàng.

Đầu tiên, thay đổi thư mục hệ thống thích hợp:

cd /etc/ssh/

Đây thường là nơi các khóa máy chủ lưu trữ toàn cục, mặc dù một số bản phân phối đã đặt chúng ở nơi khác. Khi nghi ngờ kiểm tra tài liệu của bạn!

Tiếp theo, chúng tôi sẽ xóa tất cả các khóa cũ.

sudo rm /etc/ssh/ssh_host_*

Ngoài ra, bạn có thể muốn chuyển chúng vào một thư mục sao lưu an toàn. Chỉ là một ý nghĩ!

Sau đó, chúng tôi có thể yêu cầu máy chủ OpenSSH tự cấu hình lại:

sudo dpkg-reconfigure openssh-server

Bạn sẽ thấy lời nhắc khi máy tính của bạn tạo khóa mới. Ta-da!

Image
Image

Bây giờ bạn đã biết cách SSH hoạt động tốt hơn một chút, bạn sẽ có thể thoát ra khỏi những điểm khó khăn. Cảnh báo / lỗi "Nhận dạng máy chủ từ xa đã thay đổi" là điều khiến nhiều người dùng tắt, ngay cả những người quen thuộc với dòng lệnh.

Đối với điểm thưởng, bạn có thể kiểm tra Làm thế nào để sao chép từ xa tập tin qua SSH mà không cần nhập mật khẩu của bạn. Ở đó, bạn sẽ tìm hiểu thêm một chút về các loại thuật toán mã hóa khác và cách sử dụng các tệp quan trọng để tăng cường bảo mật.

Đề xuất: