Tìm hiểu về InsSS và OpenSSH trên PC Linux của bạn
Chúng tôi đã ca ngợi những ưu đ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 quan trọng của Bảo trì và một số điều kỳ quặc có thể thêm nhiễu loạn cho một chuyến đi suôn sẻ.
Mặc dù chúng tôi đã viết hướng dẫn này với Linux, nhưng đ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 nó an toàn
Chúng tôi đã đề cập nhiều lần về cách SSH là một cách tuyệt vời để kết nối an toàn và dữ liệu đường hầm từ điểm này đến điểm khác. Chúng ta hãy xem xét ngắn gọn về cách mọi thứ hoạt động để bạn hiểu rõ hơn về lý do tại sao mọi thứ đôi khi trở nên kỳ lạ.
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 xuất hiện trong 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 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à họ hoàn toàn an toàn, phải 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ì sử dụng FTP và Telnet và tương tự không giống như sử dụng phong bì thư tiêu chuẩn. Nó giống như sử dụng bưu thiếp. Nếu ai đó tình cờ bước vào giữa, họ có thể thấy tất cả thông tin, bao gồm đị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 người này hoặc người kia. Đây được biết đến như là một cuộc tấn công người trung gian của người Viking và nó không chỉ làm tổn hại đến tài khoản của bạn mà còn khiến người ta nghi ngờ từng tin nhắn được gửi và nhận. Bạn không thể chắc chắn liệu bạn có nói chuyện với người gửi hay không, và ngay cả khi bạn là ai, bạn cũng không thể chắc chắn không ai nhìn vào mọi thứ ở giữa.
Bây giờ, hãy xem mã hóa SSL, loại giúp HTTP an toàn hơn. Ở đây, chúng tôi có một bưu điện xử lý thư tín, họ kiểm tra xem người nhận của bạn có phải là người mà họ tuyên bố hay không và có luật bảo vệ thư của bạn không bị xem. Nhìn chung, nó an toàn hơn và cơ quan trung ương - Verisign là một, đối với 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 không được mã hóa); thay vào đó họ ủy thác phong bì thật.
Cuối cùng, hãy nhìn vào SSH. Ở đây, thiết lập là một chút khác nhau. Chúng tôi không có trình 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 - giả sử, 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ố phép toán thực sự lạ mắt để ký vào phong bì của bạn. Bạn giao nó cho anh trai, bạn gái, bố hoặc con gái của bạn để đưa nó đến địa chỉ, và chỉ khi các phép toán lạ mắt của người nhận, bạn mới cho rằng địa chỉ đó là đúng. 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ò bởi 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 đến đích. Nếu toán học không khớp, chúng ta có thể giả sử rằng người nhận ban đầu đã di chuyển và chúng ta cần 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ó cái nhìn sâu sắc hơn, tất nhiên hãy trò chuyện trong các bình luận. Tuy nhiên, hiện tại, chúng ta hãy xem tính năng phù hợp 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 tưởng lấy phong bì (được niêm phong bằng phép thuật) 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à nó dựa trên một số phép toán phức tạp mà chúng ta sẽ bỏ qua ngay. Có một vài điều quan trọng cần loại bỏ khỏi điều này, mặc dù:
- Vì không có cơ quan trung ương, bảo mật thực sự nằm ở khóa máy chủ, khóa chung và khóa riêng. (Hai khóa sau này được định cấu hình khi bạn được cấp quyền truy cập hệ thống.)
- Thông thường, khi bạn kết nối với máy tính khác qua SSH, khóa máy chủ sẽ đượ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 dài dòng hơn).
- Nếu khóa máy chủ thay đổi, rất có thể bạn sẽ đượ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.
Bạn không nên lo lắng, mặc dù! 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ủ (dấu vân tay ECDSA ở trên) có thể được xác nhận. Trong các dự án trực tuyến hoàn toàn, thường nó sẽ ở 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 điện thoạ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í đã nghe nói về một số nơi có chìa khóa trên huy hiệu công việc của bạn hoặc trong 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 đích, 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 tính đến đầ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 cái đó 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:
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: e: 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 những gì bạn thấy khi bạn được nhắc đăng nhập từ xa. Nó sẽ phù hợp, và bạn đã hoàn tất. 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ủ lưu trữ mà bạn đã kết nối qua SSH bằng cách xem tệp know_hosts của bạn. Nó thường được đặt tại:
~ / .ssh / know_hosts
Bạn có thể mở nó trong bất kỳ trình soạn thảo văn bản. 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 tính chủ (hoặc địa chỉ web) và địa chỉ IP của máy chủ.
Thay đổi khóa máy chủ và sự cố
Có một vài lý do khiến khóa máy chủ thay đổi hoặc chúng không khớp với nội dung được ghi trong tệp know_hosts 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 bằng tay 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 vấn đề bảo mật.
- Hợp đồng thuê IP hoặc DNS đã thay đổi. Điều này thường có nghĩa là bạn đang cố gắng truy cập vào một máy tính khác.
- Hệ thống bị xâm phạm theo cách nào đó khiến khóa máy chủ thay đổi.
Nhiều khả năng, vấn đề là một trong ba vấn đề đầu tiên và bạn có thể bỏ qua thay đổi. Nếu hợp đồng thuê IP / DNS thay đổi, thì có thể có vấn đề với máy chủ và bạn có thể được chuyển đến một máy khác. Nếu bạn không chắc chắn lý do của sự 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.
Làm thế nào OpenSSH xử lý các máy chủ không xác định
OpenSSH có một cài đặt về cách nó xử lý các máy chủ không xác định, được phản ánh trong biến số StricthostKeyChecking, (không có dấu ngoặc kép).
Tùy thuộc vào cấu hình của bạn, các kết nối SSH với các máy chủ không xác định (có khóa chưa có trong tệp know_hosts của bạn) có thể đi 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 khuyến nghị, ngoại trừ nếu bạn 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 kết nối đi đến khóa máy chủ. Đâ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 bạn kết nối với bất kỳ máy chủ nào chưa có trong tệp know_hosts của bạn.
Bạn có thể dễ dàng thay đổi biến này trên dòng lệnh bằng cách sử dụng mô hình sau:
ssh -o 'StricthostKeyChecking [tùy chọn]' user @ host
Thay thế [tùy chọn] bằng cách không có, không có gì khác, bạn có thể yêu cầu có một số trích dẫn thẳng xung quanh biến này và cài đặt của nó. Đồng thời thay thế user @ host bằng tên người dùng và tên máy chủ của máy chủ mà bạn đang kết nối. Ví dụ:
ssh -o 'StricthostKeyChecking hỏi' [email protected]
Máy chủ bị chặn do phím bị thay đổi
Nếu bạn có một máy chủ mà bạn đang cố truy cập đã thay đổi khóa của nó, 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ủ đó, nhưng điều đó sẽ không hoàn toàn, triệt để, an toàn một cách hoang tưởng, phải không? Thay vào đó, chúng tôi chỉ có thể xóa giá trị vi phạm khỏi tệp know_hosts của chúng tôi.
Đó chắc chắn là một điều xấu xí phải 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 dòng chúng ta cần.
Chúng tôi đi đây. Xem cách nó trích dẫn tập tin chúng ta cần chỉnh sửa? Nó thậm chí còn cho chúng tôi số dòng! Vì vậy, hãy mở tập tin đó trong Nano:
Đâ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 tôi cần làm là nhấn Ctrl + K để cắt toàn bộ dòng.
Điều đó tốt hơn nhiều! Vì vậy, bây giờ chúng tôi nhấn Ctrl + O để ghi (lưu) tệp, sau đó 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 đó, chúng tôi có thể trả lời đơn giản với có.
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 khóa máy chủ của mình, nhưng nếu bạn thấy cần, bạn có thể dễ dàng thực hiện.
Đầu tiên, thay đổi thư mục hệ thống thích hợp:
cd / etc / ssh /
Đây thường là nơi chứa các khóa máy chủ toàn cầu, mặc dù một số distro đã đặ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 di chuyển chúng vào một thư mục sao lưu an toàn. Chỉ là một suy nghĩ!
Sau đó, chúng ta có thể yêu cầu máy chủ OpenSSH tự cấu hình lại:
sudo dpkg-cấu hình lại openssh-server
Bạn sẽ thấy một dấu nhắc trong khi máy tính của bạn tạo các khóa mới. Ta-da!
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ể tự mình thoát khỏi những điểm khó khăn. Nhận dạng máy chủ từ xa của Cameron đã thay đổi cảnh báo / lỗi là một thứ gì đó khiến nhiều người dùng bỏ qua, ngay cả những người quen thuộc với dòng lệnh.
.