Thứ ba, 17/03/2020 | 00:00 GMT+7

Cách cài đặt và cấu hình SNMP Daemon và Client trên Ubuntu 18.04

Một phần lớn của việc trở thành administrator hệ thống là thu thập thông tin chính xác về server và cơ sở hạ tầng của bạn. Có một số công cụ và tùy chọn để thu thập và xử lý loại thông tin này. Nhiều người trong số họ được xây dựng dựa trên một công nghệ gọi là SNMP .

SNMP là viết tắt của giao thức quản lý mạng đơn giản. Đây là một cách mà các server có thể chia sẻ thông tin về trạng thái hiện tại của chúng và cũng là một kênh mà qua đó administrator có thể sửa đổi các giá trị được định nghĩa . Mặc dù bản thân giao thức có trọng lượng nhẹ, nhưng cấu trúc của các chương trình triển khai SNMP có thể nhanh chóng trở nên phức tạp. Để biết thêm thông tin về những điều cơ bản của giao thức SNMP, hãy xem bài viết Giới thiệu về SNMP của ta .

Trong hướng dẫn này, bạn sẽ cài đặt các công cụ để giao tiếp bằng SNMP. Bạn sẽ sử dụng hai server Ubuntu 18.04 để chứng minh. Một sẽ chứa trình quản lý SNMP , trình quản lý này sẽ nói chuyện với tác nhân để triển khai các thiết bị mạng. Đây sẽ được gọi là server quản lý . Server khác sẽ có tác nhân SNMP , tác nhân này sẽ hoạt động theo lệnh từ server người quản lý. Đây sẽ được gọi là server đại lý . Bạn cũng có thể chọn cài đặt tác nhân trên máy quản lý, nhưng việc giữ chúng riêng biệt sẽ giúp dễ dàng chứng minh chức năng nào được cung cấp bởi mỗi thành phần.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

Bước 1 - Cài đặt SNMP Daemon và Tiện ích

Bạn có thể bắt đầu khám phá cách SNMP có thể được triển khai trên hệ thống bằng cách cài đặt daemon và các công cụ trên server Ubuntu của bạn.

Từ máy local của bạn, đăng nhập vào server người quản lý với quyền là user không phải root của bạn:

  • ssh your_username@manager_server_ip_address

Cập nhật index gói cho trình quản lý gói APT :

  • sudo apt update

Tiếp theo, cài đặt phần mềm SNMP:

  • sudo apt install snmp snmp-mibs-downloader

Gói snmp cung cấp một tập hợp các công cụ dòng lệnh để đưa ra các yêu cầu SNMP cho các tác nhân. Gói snmp-mibs-downloader sẽ giúp cài đặt và quản các file Cơ sở Thông tin Quản lý (MIB) , theo dõi các đối tượng mạng.

Sau đó, mở một terminal mới trên máy local của bạn và đăng nhập vào server tác nhân :

  • ssh your_username@agent_server_ip_address

Trên server tác nhân , cập nhật index gói :

  • sudo apt update

Sau đó, cài đặt daemon SNMP

  • sudo apt install snmpd

Lưu ý bạn không cần gói snmp-mibs-downloader , vì server tác nhân sẽ không quản lý các file MIB.

Đến đây bạn đã cài đặt các thành phần này, bạn sẽ cấu hình server quản lý của bạn .

Bước 2 - Cấu hình Server quản lý SNMP

Như đã đề cập trước đây, phần lớn công việc xảy ra trong server tác nhân , vì vậy cấu hình của bạn trên server người quản lý sẽ ít tham gia hơn. Bạn chỉ cần sửa đổi một file đảm bảo rằng các công cụ SNMP có thể sử dụng dữ liệu MIB bổ sung mà bạn đã cài đặt.

Trên server người quản lý của bạn, hãy mở file /etc/snmp/snmp.conf trong editor của bạn với các quyền sudo. Hướng dẫn này sẽ sử dụng nano :

  • sudo nano /etc/snmp/snmp.conf

Trong file này, có một vài comment và một dòng chưa comment . Để cho phép người quản lý nhập các file MIB, hãy comment dòng mibs : :

/etc/snmp/snmp.conf
# As the snmp packages come without MIB files due to license reasons, loading # of MIBs is disabled by default. If you added the MIBs you can reenable # loading them by commenting out the following line. #mibs : 

Lưu và đóng snmp.conf bằng cách nhấn CTRL+X , tiếp theo là Y , rồi ENTER nếu bạn đang sử dụng nano .

Đến đây bạn đã hoàn tất việc cấu hình server người quản lý , nhưng bạn vẫn cần sử dụng server này để giúp cấu hình server tác nhân của bạn , bạn sẽ thực hiện trong bước tiếp theo.

Bước 3 - Cấu hình server SNMP Agent

Là một hệ thống server -máy khách thực sự, server tác nhân không có bất kỳ công cụ bên ngoài nào cần thiết để cấu hình cài đặt SNMP của riêng nó. Bạn có thể sửa đổi một số file cấu hình để thực hiện một số thay đổi, nhưng hầu hết các thay đổi bạn cần thực hiện sẽ được thực hiện bằng cách kết nối với server tác nhân từ server quản lý của bạn.

Trong hướng dẫn này, bạn sẽ sử dụng version 3 của giao thức SNMP. Không giống như SNMPv1 và v2, trong SNMPv3 mỗi thông báo chứa các tham số bảo mật được mã hóa. Trong bước này, bạn sẽ cấu hình xác thực SNMPv3 và các luật kiểm soát truy cập.

Để bắt đầu, trên server đại lý của bạn, hãy mở file cấu hình của daemon với các quyền sudo:

  • sudo nano /etc/snmp/snmpd.conf

Bên trong, bạn sẽ phải thực hiện một vài thay đổi. Chúng chủ yếu được sử dụng để khởi động cấu hình của bạn để bạn có thể quản lý nó từ server khác của bạn .

Đầu tiên, bạn cần thay đổi chỉ thị agentAddress . Hiện tại, nó được cài đặt để chỉ cho phép các kết nối bắt nguồn từ máy tính local . Bạn cần comment hiện tại và bỏ comment bên dưới, dòng này cho phép tất cả các kết nối.

/etc/snmp/snmpd.conf
#  Listen for connections from the local system only #agentAddress  udp:127.0.0.1:161 #  Listen for connections on all interfaces (both IPv4 *and* IPv6) agentAddress udp:161,udp6:[::1]:161 

Lưu ý: Vì cho phép tất cả các kết nối như thế này không phải là phương pháp bảo mật tốt nhất, nên tốt nhất là bạn nên sớm khóa cài đặt này lại, sau khi quá trình khởi động hoàn tất.

Tiếp theo, bạn sẽ tạm thời chèn một dòng createUser . Các chỉ thị này thường không được lưu trong file này; bạn sẽ gỡ bỏ nó trong giây lát.

User bạn đang tạo sẽ được gọi là bootstrap và sẽ được sử dụng làm mẫu để tạo user thực đầu tiên của bạn. Các gói SNMP thực hiện điều này thông qua một quá trình sao chép các thuộc tính của user .

Khi xác định user mới, bạn phải chỉ định loại xác thực ( MD5 hoặc SHA ) cũng như cung cấp passphrase (password bảo vệ) phải có ít nhất tám ký tự. Nếu bạn định sử dụng mã hóa để truyền, giống như bạn làm trong hướng dẫn này, bạn cũng phải chỉ định giao thức bảo mật ( DES hoặc AES ) và tùy chọn là passphrase (password bảo vệ) giao thức bảo mật. Nếu không có passphrase (password bảo vệ) giao thức bảo mật nào được cung cấp, thì passphrase (password bảo vệ) xác thực cũng sẽ được sử dụng cho giao thức bảo mật.

Thêm dòng createUser này vào cuối file :

/etc/snmp/snmpd.conf
... createUser bootstrap MD5 temp_password DES 

Đến đây bạn đã chỉ định user mới, bạn có thể cài đặt cấp độ truy cập mà user này sẽ có. Trong hướng dẫn này, bạn sẽ cài đặt điều này cho user bootstrap của bạn và cho cả user mới mà bạn sẽ tạo, được gọi là demo . Bạn sẽ cho phép họ truy cập đọc và ghi bằng cách sử dụng lệnh rwuser (giải pháp thay thế là rouser cho quyền truy cập chỉ đọc).

Bạn cũng sẽ thực thi việc sử dụng mã hóa bằng cách chỉ định priv sau user của bạn. Nếu bạn muốn hạn chế user ở một phần cụ thể của MIB, bạn có thể chỉ định mã định danh đối tượng cấp cao nhất (OID) mà user phải có quyền truy cập ở cuối dòng.

Đối với mục đích của hướng dẫn này, cả hai dòng của bạn sẽ như sau:

/etc/snmp/snmpd.conf
... rwuser bootstrap priv rwuser demo priv 

Khi bạn thực hiện xong những thay đổi này, hãy lưu file .

Để triển khai những thay đổi này, hãy khởi động lại dịch vụ snmpd trên server tác nhân của bạn:

  • sudo systemctl restart snmpd

Daemon SNMP sẽ lắng nghe các kết nối trên cổng :161 . Cấu hình UFW để cho phép kết nối từ server người quản lý tới cổng này:

  • sudo ufw allow from manager_server_ip_address to any port 161

Bạn có thể tìm hiểu thêm về UFW trong Cách cài đặt Tường lửa với UFW trên Ubuntu 18.04 .

Bây giờ server đại lý đã được cấu hình , bạn có thể kết nối với server đại lý của bạn từ server người quản lý để xác minh kết nối.

Bước 4 - Xác minh xác thực cho server đại lý

Trong bước này, bạn sẽ kiểm tra đảm bảo rằng bạn có thể kết nối với account bootstrap của mình với server đại lý . Tuy nhiên, trước đó, hướng dẫn này sẽ nói một chút về cấu trúc chung của việc gửi một lệnh SNMP.

Khi sử dụng bộ công cụ có trong gói snmp (bộ phần mềm net-snmp ), có một vài mẫu theo cách bạn phải gọi các lệnh. Điều đầu tiên cần làm là xác thực với daemon SNMP mà bạn muốn giao tiếp. Điều này thường liên quan đến việc cung cấp một vài thông tin. Những cái chung như sau:

  • -v : Cờ này được sử dụng để chỉ định version của giao thức SNMP mà bạn muốn sử dụng. Hướng dẫn này sẽ sử dụng v3.
  • -c : Cờ này được sử dụng nếu bạn đang sử dụng chuỗi cộng đồng kiểu SNMP v1 hoặc v2 để xác thực. Vì bạn đang sử dụng xác thực dựa trên user kiểu v3, bạn không cần phải làm điều này.
  • -u : Tham số này được sử dụng để chỉ định tên user mà bạn muốn xác thực. Để đọc hoặc sửa đổi bất kỳ thứ gì bằng SNMP, bạn phải xác thực bằng tên user đã biết.
  • -l : Điều này được sử dụng để chỉ định mức độ bảo mật mà bạn đang kết nối. Các giá trị có thể có là noAuthNoPriv để không xác thực và không mã hóa, authNoPriv để xác thực nhưng không mã hóa và authPriv để xác thực và mã hóa. Tên user mà bạn đang sử dụng phải được cấu hình để hoạt động ở level độ bảo mật mà bạn chỉ định, nếu không việc xác thực sẽ không thành công.
  • -a : Tham số này được sử dụng để chỉ định giao thức xác thực được sử dụng. Các giá trị có thể là MD5 hoặc SHA . Điều này phải trùng với thông tin đã được chỉ định khi user được tạo.
  • -x : Tham số này được sử dụng để chỉ định giao thức mã hóa được sử dụng. Các giá trị có thể là DES hoặc AES . Điều này phải trùng với thông tin đã được chỉ định khi user được tạo. Điều này là cần thiết khi nào đặc tả quyền của user có priv sau nó, làm cho mã hóa bắt buộc.
  • -A : Điều này được sử dụng để cung cấp passphrase (password bảo vệ) xác thực đã được chỉ định khi user được tạo.
  • -X : Đây là passphrase (password bảo vệ) mã hóa được chỉ định khi user được tạo. Nếu không có gì được chỉ định nhưng một thuật toán mã hóa đã được đưa ra, thì passphrase (password bảo vệ) xác thực sẽ được sử dụng. Điều này là bắt buộc khi tham số -x được cung cấp hoặc khi nào đặc tả quyền của user có priv sau nó, yêu cầu mã hóa.

Sử dụng thông tin này, bạn có thể xây dựng các lệnh của bạn . Với cách bạn cài đặt user bootstrap của bạn , các lệnh bạn sẽ sử dụng với account đó sẽ giống như sau:

snmp_command -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host snmp_sub_command_or_options 

Từ server người quản lý của bạn, hãy kiểm tra đảm bảo rằng account bootstrap của bạn có . Nhập thông tin sau để hiển thị thông tin hệ thống cho server tác nhân :

  • snmpget -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address 1.3.6.1.2.1.1.1.0

Chuỗi 1.3.6.1.2.1.1.1.0 là OID chịu trách nhiệm hiển thị thông tin hệ thống. Nó sẽ trả về kết quả của uname -a trên hệ thống từ xa.

Điều này sẽ cho kết quả sau:

Output
SNMPv2-MIB::sysDescr.0 = STRING: Linux agent 4.15.0-66-generic #75-Ubuntu SMP Tue Oct 1 05:24:09 UTC 2019 x86_64

Đến đây bạn đã xác minh bạn có thể xác thực với server chạy daemon SNMP, bạn có thể tiếp tục tạo account regular user của bạn .

Bước 5 - Cài đặt Tài khoản User Thông thường

Mặc dù bạn đã chỉ định các quyền cho account user demo trong file snmpd.conf , bạn vẫn chưa tạo user này. Trong bước này, bạn sẽ sử dụng user bootstrap làm mẫu cho user mới của bạn . Bạn sẽ làm điều này bằng cách sử dụng công cụ snmpusm , được sử dụng để quản lý user .

Trên server người quản lý , bạn có thể tạo user từ mẫu bằng cách sử dụng công cụ snmpusm và cú pháp chung sau:

snmpusm authentication_info agent_server_ip_address create new_user existing_user 

Sử dụng những gì bạn biết về các cờ xác thực bạn cần chuyển và tận dụng account user bạn đã có ( bootstrap ), bạn có thể tạo user phù hợp với các quyền user mà bạn đã xác định ( demo ).

Lệnh sẽ giống như sau:

  • snmpusm -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address create demo bootstrap

Bạn sẽ nhận được thông báo sau:

Output
User successfully created.

Đến đây bạn có một user hoạt động đầy đủ được gọi là bản demo trên server đại lý của bạn. Tuy nhiên, nó vẫn đang sử dụng thông tin xác thực giống như account bootstrap . Để tăng tính bảo mật, bạn có thể thay đổi password thành password khác. Lần này, bạn sẽ sử dụng account demo để xác thực. Lưu ý password phải dài ít nhất tám ký tự:

  • snmpusm -u demo -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address passwd temp_password new_password

Bạn sẽ nhận được thông báo sau:

Output
SNMPv3 Key(s) successfully changed.

Bạn có thể kiểm tra thông tin đăng nhập và password mới của bạn bằng cách hỏi server đại lý dịch vụ SNMP đã chạy trong bao lâu. Bạn sẽ sử dụng lệnh snmpget để nhận một giá trị duy nhất từ server tác nhân .

Lần này, hãy tận dụng các định nghĩa MIB bổ sung mà bạn đã download để yêu cầu giá trị theo tên thay vì ID số OID.

  • snmpget -u demo -l authPriv -a MD5 -x DES -A new_password -X new_password agent_server_ip_address sysUpTime.0

Bạn sẽ nhận lại một giá trị đại diện cho lần cuối cùng khởi động lại daemon SNMP từ xa:

Output
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (53309) 0:08:53.09

Đến đây bạn có một account user đang hoạt động có tên là demo . Trong bước tiếp theo, bạn sẽ đơn giản hóa việc làm việc với các lệnh SNMP bằng cách cấu hình client .

Bước 6 - Tạo file cấu hình client

Bạn có thể nhận thấy rằng chi tiết xác thực cho tất cả các lệnh SNMP của bạn sẽ khá tĩnh với mỗi yêu cầu. Thay vì nhập chúng mỗi lần, bạn có thể tạo file cấu hình phía client chứa thông tin đăng nhập mà bạn đang kết nối.

Tệp cấu hình client có thể được đặt ở hai vị trí khác nhau tùy thuộc vào mức độ phổ biến rộng rãi mà bạn muốn chia sẻ.

Nếu bạn muốn chia sẻ thông tin đăng nhập của bạn với bất kỳ user hợp lệ nào trên máy quản lý của bạn , bạn có thể đặt chi tiết cấu hình của bạn vào file snmp.conf trên server người quản lý . Bạn cần mở file đó với các quyền sudo:

  • sudo nano /etc/snmp/snmp.conf

Tuy nhiên, nếu bạn muốn xác định thông tin xác thực cho riêng user của bạn , bạn có thể tạo folder .snmp ẩn trong folder chính của user trên server người quản lý và tạo file ở đó:

  • mkdir ~/.snmp
  • nano ~/.snmp/snmp.conf

Dù quyết định của bạn về vị trí đặt cấu hình, nội dung sẽ giống nhau.

Các lệnh mà bạn sẽ sử dụng để xác thực có trong bảng sau. Trong cột bên phải, bạn có thể thấy tên chỉ thị được sử dụng để đặt các chi tiết cấu hình đó trong file snmp.conf :

Cờ lệnh Sự miêu tả Chỉ thị snmp.conf dịch
-u username Tên user SNMPv3 để xác thực là. defSecurityName username
-l authPriv Mức độ bảo mật để xác thực. defSecurityLevel authPriv
-a MD5 Giao thức xác thực để sử dụng. defAuthType MD5
-x DES Giao thức bảo mật (mã hóa) để sử dụng. defPrivType DES
-A passphrase Passphrase (password bảo vệ) xác thực cho tên user được cung cấp. defAuthPassphrase passphrase
-X passphrase Passphrase (password bảo vệ) bảo mật từ tên user được cung cấp. defPrivPassphrase passphrase

Sử dụng thông tin này, bạn có thể tạo một file snmp.conf thích hợp. Đối với hướng dẫn này, nó sẽ giống như sau:

snmp.conf
defSecurityName demo defSecurityLevel authPriv defAuthType MD5 defPrivType DES defAuthPassphrase new_password defPrivPassphrase new_password 

Khi bạn hoàn tất, hãy lưu file .

Bây giờ, bạn có thể ra lệnh mà không cần cung cấp chi tiết xác thực. Bạn sẽ chỉ cần lệnh SNMP, server lưu trữ và các đối số lệnh.

Thay vì gõ:

  • snmpget -u demo -l authPriv -a MD5 -x DES -A new_password -X new_password agent_server_ip_address sysUpTime.0

Bạn có thể gõ:

  • snmpget agent_server_ip_address sysUpTime.0

Như bạn thấy , điều này làm giảm đáng kể lượng thông tin bạn cần cung cấp trong mỗi yêu cầu. Tiếp theo, bạn sẽ gỡ bỏ account bootstrap để thắt chặt an ninh mạng.

Bước 7 - Xóa account Bootstrap

Bây giờ account thông thường của bạn đã được cấu hình chính xác, bạn có thể xóa account bootstrap không an toàn.

Trên server tác nhân của bạn, hãy mở lại file /etc/snmp/snmpd.conf với các quyền sudo.

  • sudo nano /etc/snmp/snmpd.conf

Tìm và comment (hoặc xóa) cả hai dòng mà bạn đã thêm trước đó tham chiếu đến user bootstrap :

/etc/snmp/snmpd.conf
... #createUser bootstrap MD5 temp_password DES #rwuser bootstrap priv ... 

Lưu và đóng file .

Bây giờ, khởi động lại daemon SNMP:

  • sudo systemctl restart snmpd

Điều này sẽ đáp ứng khuyến nghị không có chỉ thị createUser trong file snmpd.conf bình thường. Nó cũng sẽ xóa các quyền khỏi user tạm thời đó.

Nếu bạn muốn xóa hoàn toàn user bootstrap khỏi usmUserTable , bạn có thể thực hiện bằng cách đưa ra lệnh này từ server người quản lý :

  • snmpusm agent_server_ip_address delete bootstrap

Bạn sẽ nhận được phản hồi sau:

Output
User successfully deleted.

Kết luận

Đến đây, bạn có một cài đặt client - server được cấu hình đầy đủ có thể giao tiếp an toàn bằng giao thức SNMP. Như vậy, bạn có thể thêm các daemon bổ sung trên các server khác và cấu hình quyền truy cập account trên toàn bộ cơ sở hạ tầng của bạn .

Để nghiên cứu thêm, bạn có thể sử dụng hướng dẫn Cách sử dụng Bộ công cụ Net-SNMP Để Quản lý và Giám sát Server của ta để tìm hiểu về các công cụ SNMP và cách sử dụng chúng để truy xuất các giá trị từng cái một hoặc hàng loạt và cách sửa đổi dữ liệu.


Tags:

Các tin liên quan

Cách lưu trữ một trang web với Caddy trên Ubuntu 18.04
2020-03-13
Cách sử dụng nsh để chạy các lệnh từ xa an toàn trên Ubuntu 18.04
2020-03-04
Cách đóng gói và xuất bản ứng dụng Snap trên Ubuntu 18.04
2020-02-25
Cách thiết lập Nền tảng Eclipse Theia Cloud IDE trên Ubuntu 18.04 [Khởi động nhanh]
2020-02-10
Cách sử dụng Cron để tự động hóa công việc trên Ubuntu 18.04
2020-01-31
Cách cài đặt và sử dụng Radamsa để Fuzz kiểm tra các chương trình và dịch vụ mạng trên Ubuntu 18.04
2020-01-30
Cách cài đặt Tinc và thiết lập VPN cơ bản trên Ubuntu 18.04
2020-01-21
Cách thiết lập Nền tảng Eclipse Theia Cloud IDE trên Ubuntu 18.04
2020-01-06
Cách sử dụng Ansible để cài đặt và thiết lập WordPress với LAMP trên Ubuntu 18.04
2019-12-31
Cách cài đặt WordPress với OpenLiteSpeed trên Ubuntu 18.04
2019-12-18