Hướng dẫn kỹ thuật CÔNG TY CỔ PHẦN DỊCH VỤ CÔNG NGHỆ DATECH
Danh sách nội dung [Ẩn]
Hướng dẫn thiết lập kết nối SSH cho NETCONF Session
Bạn có thể sử dụng giao thức SSH để thiết lập kết nối giữa máy chủ quản lý cấu hình và thiết bị Junos. Máy chủ quản lý cấu hình được dùng để quản lý thiết bị Junos từ xa.
Bạn có thể sử dụng các tùy chọn sau để thiết lập kết nối SSH giữa máy chủ quản lý cấu hình và thiết bị Junos:
Đối với các phiên NETCONF sử dụng SSH hoặc SSH ra ngoài, bạn cần phải:
Xem các phần bên dưới để biết hướng dẫn chi tiết:
Cài đặt phần mềm SSH trên máy chủ quản lý cấu hình
Với kết nối SSH thông thường, máy chủ quản lý cấu hình (CMS) sẽ quản lý phiên SSH với thiết bị Junos.
Với kết nối SSH ra ngoài, thiết bị Junos sẽ thiết lập kết nối SSH đến máy chủ quản lý, sau đó máy chủ quản lý tiếp quản phiên SSH đó.
Để thiết lập kết nối SSH hoặc SSH ra ngoài với thiết bị, máy chủ quản lý cấu hình phải được cài đặt phần mềm SSH cục bộ.
Tham khảo thêm tại các trang sau để tải và cài đặt phần mềm SSH:
Bật dịch vụ NETCONF qua SSH
Để thiết lập phiên NETCONF trên thiết bị Junos, bạn cần bật dịch vụ NETCONF. Bạn có thể cấu hình máy chủ NETCONF để chấp nhận các phiên NETCONF qua các cổng sau:
Chúng tôi khuyến nghị sử dụng cổng NETCONF mặc định (830) vì thiết bị có thể dễ dàng nhận dạng và lọc lưu lượng NETCONF. Ngoài ra, bạn cũng có thể cấu hình thiết bị để chấp nhận các phiên NETCONF trên một cổng cụ thể thay vì cổng mặc định. Cổng này chỉ chấp nhận các phiên NETCONF qua SSH và sẽ từ chối các phiên SSH thông thường. Nếu bạn cũng bật dịch vụ SSH trên thiết bị, thiết bị sẽ chấp nhận các phiên NETCONF trên cả cổng SSH mặc định và cổng NETCONF đã cấu hình (dù là mặc định hay tùy chỉnh). Để tăng cường bảo mật, bạn có thể cấu hình các chính sách sự kiện (event policy) sử dụng thông tin UI_LOGIN_EVENT để vô hiệu hóa cổng mặc định hoặc giới hạn thêm quyền truy cập dịch vụ NETCONF trên một cổng cụ thể.
Để bật dịch vụ NETCONF qua SSH trên thiết bị Junos:
- Bật dịch vụ NETCONF trên cổng mặc định (830) hoặc một cổng do bạn chỉ định.
[edit system services] user@host# set netconf ssh |
[edit system services] user@host# set netconf ssh port port-number |
Số cổng có thể được cấu hình trong khoảng từ 1 đến 65535. Cổng được cấu hình sẽ chỉ chấp nhận các phiên NETCONF-over-SSH và từ chối các phiên SSH thông thường.
**Lưu ý: Mặc dù bạn có thể cấu hình NETCONF-over-SSH trên bất kỳ cổng nào trong khoảng từ 1 đến 65535, bạn nên tránh sử dụng các cổng thường được gán cho các dịch vụ khác. Việc này giúp tránh xung đột tài nguyên có thể xảy ra. Nếu bạn cấu hình một cổng đã được gán cho dịch vụ khác (ví dụ như FTP), và dịch vụ đó đang được bật, thì lệnh commit check sẽ không phát hiện xung đột tài nguyên và không đưa ra cảnh báo nào liên quan.
[edit system services] user@host# set ssh |
Cấu hình này cho phép truy cập SSH vào thiết bị cho tất cả người dùng và ứng dụng.
**Lưu ý: Trong các phiên bản mà hành vi mặc định là chặn người dùng root sử dụng dịch vụ SSH, bạn cần cấu hình lệnh root-login allow tại cấp cấu hình [edit system services ssh] để cho phép người dùng root mở các phiên NETCONF qua SSH.
[edit system services] user@host# set netconf ssh client-alive-interval 10 user@host# set netconf ssh client-alive-count-max 10 |
**Lưu ý: Các câu lệnh được cấu hình tại cấp cấu hình [edit system services netconf ssh] chỉ áp dụng cho các phiên NETCONF kết nối thông qua cổng mặc định (830) hoặc cổng do người dùng chỉ định được cấu hình tại cùng cấp này.
[edit] user@host# commit |
Trước khi máy chủ quản lý cấu hình có thể thiết lập kết nối SSH với thiết bị Junos, bạn cần đảm bảo các yêu cầu chung đã được nêu trong phần:
Ngoài ra, bạn cũng cần đáp ứng các yêu cầu trong các phần sau:
Cấu hình tài khoản người dùng cho ứng dụng client trên thiết bị Junos
Máy chủ quản lý cấu hình phải đăng nhập vào thiết bị Junos để thiết lập một phiên NETCONF. Vì vậy, máy chủ này cần có tài khoản người dùng trên mỗi thiết bị nơi nó thiết lập phiên NETCONF. Các hướng dẫn sau đây giải thích cách tạo một tài khoản người dùng cục bộ trên thiết bị Junos. Ngoài ra, bạn cũng có thể bỏ qua bước này nếu bạn muốn sử dụng xác thực thông qua RADIUS hoặc TACACS+.
Để tạo tài khoản người dùng cục bộ:
[edit system login] user@host# set user username class class-name |
[edit] user@host# commit |
Cấu hình cặp khóa công khai/riêng hoặc mật khẩu cho tài khoản người dùng Junos OS
Máy chủ quản lý cấu hình cần có cặp khóa SSH công khai/riêng, một mật khẩu dạng văn bản, hoặc cả hai, trước khi nó có thể xác thực với máy chủ NETCONF. Nếu tài khoản chỉ được sử dụng để kết nối với máy chủ NETCONF qua SSH, thì cặp khóa công khai/riêng là đủ. Nếu tài khoản cũng được sử dụng để truy cập thiết bị theo cách khác (ví dụ đăng nhập qua cổng console), thì tài khoản đó phải có mật khẩu văn bản. Mật khẩu cũng sẽ được sử dụng (máy chủ SSH sẽ yêu cầu) nếu xác thực bằng khóa bị lỗi.
**Lưu ý: Bạn có thể bỏ qua phần này nếu bạn chọn sử dụng xác thực thông qua RADIUS hoặc TACACS+.
Để tạo một mật khẩu dạng văn bản:
[edit system login user username authentication] user@host# set plain-text-password New password: password Retype new password: password |
Để lưu một mật khẩu mà bạn đã tạo trước đó và mã hóa bằng thuật toán Message Digest 5 (MD5) hoặc Secure Hash Algorithm 1 (SHA-1), hãy sử dụng lệnh sau:
[edit system login user username authentication] user@host# set encrypted-password "password" |
[edit system login user username authentication] user@host# commit |
Để tạo cặp khóa SSH công khai/riêng, thực hiện các bước sau:
user@nms:~$ ssh-keygen options |
Ví Dụ:
netconf-user@nms:~$ ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/home/netconf-user/.ssh/id_rsa): Created directory '/home/netconf-user/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/netconf-user/.ssh/id_rsa Your public key has been saved in /home/netconf-user/.ssh/id_rsa.pub ... |
Để biết thêm thông tin về các tùy chọn của lệnh ssh-keygen, hãy tham khảo trang hướng dẫn (manual page) của lệnh ssh-keygen.
[edit system login user username authentication] user@host# set load-key-file URL |
Junos OS sẽ sao chép nội dung của tệp đã chỉ định lên thiết bị đang chạy Junos OS. URL là đường dẫn đến tệp chứa một hoặc nhiều khóa công khai. Lệnh ssh-keygen theo mặc định sẽ lưu mỗi khóa công khai vào một tệp trong thư mục con .ssh nằm trong thư mục chính (home directory) của người dùng; tên tệp phụ thuộc vào phương thức mã hóa và phiên bản SSH được sử dụng. Để biết thêm thông tin về cách chỉ định đường dẫn URL, hãy tham khảo CLI User Guide (Hướng dẫn sử dụng CLI).
**Lưu ý: Ngoài ra, bạn cũng có thể dùng lệnh ssh-rsa tại cấp cấu hình [edit system login user account-name authentication]. Tuy nhiên, chúng tôi khuyến nghị sử dụng lệnh load-key-file vì cách này giúp bạn không cần phải gõ thủ công hoặc sao chép/dán khóa công khai vào dòng lệnh.
Thực hiện commit cấu hình.
[edit] user@host# commit |
Truy cập Khóa hoặc Mật khẩu từ Ứng dụng Client
Ứng dụng client phải có khả năng truy cập các khóa công khai/riêng hoặc mật khẩu đã cấu hình và cung cấp thông tin này khi máy chủ NETCONF yêu cầu.
Có một số phương pháp để cho phép ứng dụng truy cập khóa hoặc mật khẩu:
Để cho phép máy chủ quản lý cấu hình thiết lập kết nối SSH outbound đến máy chủ NETCONF, bạn cần đáp ứng các yêu cầu chung đã đề cập trong:
Cũng như các yêu cầu được trình bày trong các phần sau:
Cấu hình Thiết bị Junos cho Kết nối SSH Outbound
Để cấu hình thiết bị Junos cho SSH outbound:
Tại cấp cấu hình: [edit system services ssh], thiết lập phiên bản giao thức SSH về v2 bằng cách sử dụng câu lệnh:
[edit system services ssh] user@host# set protocol-version v2 |
[edit system services] outbound-ssh { client client-id { address { port port-number; retry number; timeout seconds; } device-id device-id; keep-alive { retry number; timeout seconds; } reconnect-strategy (in-order | sticky); secret password; services netconf; } } |
Các tùy chọn cấu hình như sau:
| address | (Bắt buộc) Tên máy (hostname) hoặc địa chỉ IPv4/IPv6 của máy chủ quản lý.
|
| client client-id | (Bắt buộc) Xác định đoạn cấu hình outbound-ssh trên thiết bị. Mỗi đoạn cấu hình outbound-ssh đại diện cho một kết nối SSH outbound duy nhất. Thuộc tính này không được gửi đến phía client. |
device-id device-id | (Bắt buộc) Xác định thiết bị chạy Junos OS với phía client trong quá trình khởi tạo kết nối. |
| keep-alive | (Tùy chọn) Xác định rằng thiết bị sẽ gửi các gói tin giữ kết nối (keepalive) tới máy chủ quản lý. Để cấu hình keepalive, bạn phải đặt cả timeout và retry.
|
| reconnect-strategy (sticky | in-order) | (Tùy chọn) Chỉ định phương thức mà thiết bị Junos sử dụng để tái kết nối nếu SSH outbound bị ngắt:
|
| secret password | (Tùy chọn) Khóa công khai SSH (public SSH host key) của thiết bị. Nếu được thêm vào trong cấu hình outbound-ssh, thiết bị sẽ gửi khóa công khai của mình cho máy chủ quản lý trong quá trình khởi tạo dịch vụ SSH outbound. Đây là phương pháp được khuyến nghị để máy chủ luôn có khóa công khai hiện tại của thiết bị. |
| services netconf | (Bắt buộc) Chỉ định dịch vụ được sử dụng trong phiên SSH. Hiện tại, NETCONF là dịch vụ duy nhất được hỗ trợ. |
[edit] user@host# commit |
Nhận và Quản lý Trình Tự Khởi Tạo Kết Nối SSH Outbound ở phía Client
Khi được cấu hình để sử dụng SSH outbound, thiết bị Junos sẽ cố gắng duy trì một kết nối liên tục với máy chủ quản lý cấu hình (configuration management server). Bất cứ khi nào phiên SSH outbound chưa được thiết lập, thiết bị sẽ gửi một trình tự khởi tạo kết nối SSH outbound đến máy chủ quản lý cấu hình được liệt kê trong danh sách máy chủ của thiết bị. Trước khi thiết lập được kết nối với thiết bị, mỗi máy chủ quản lý cấu hình cần được cấu hình để nhận trình tự khởi tạo kết nối từ thiết bị, thiết lập kết nối TCP với thiết bị, gửi lại danh tính thiết bị (device identity) cho thiết bị.
Trình tự khởi tạo có hai dạng, tùy thuộc vào cách bạn xử lý khóa công khai (public key) của máy chủ Junos:
MSG-ID: DEVICE-CONN-INFO\r\n MSG-VER: V1\r\n DEVICE-ID: <device-id>\r\n |
Nếu khóa công khai được thiết bị chuyển tiếp đến máy chủ quản lý cấu hình trong quá trình khởi tạo, thì trình tự khởi tạo sẽ có dạng như sau:
MSG-ID: DEVICE-CONN-INFO\r\n MSG-VER: V1\r\n DEVICE-ID: : <device-id>\r\n HOST-KEY: \r\n HMAC: <HMAC(pub-SSH-host-key,<secret>)>\r\n |
Chúc các bạn thực hiện thành công. Hi vọng bài viết này sẽ giúp ích cho các bạn trong công việc. Nếu bạn có vấn đề gì thắc mắc đừng ngần ngại liên hệ với chúng tôi theo thông tin dưới đây để được hỗ trợ thêm.
Hẹn gặp lại các bạn trong các bài viết tiếp theo !
CÔNG TY CỔ PHẦN DỊCH VỤ CÔNG NGHỆ DATECH
• Địa chỉ: Số 23E4 KĐT Cầu Diễn, Tổ 7, Phú Diễn, Bắc Từ Liêm, Hà Nội
• Điện thoại: 02432012368
• Hotline: 098 115 6699
• Email: info@datech.vn
• Website: https://datech.vn