Kiến thức Hữu ích 😍

Cài đặt & Bảo mật Grafana trên Ubuntu 20.04 | Hướng dẫn chi tiết


Bạn đang tìm kiếm một công cụ mạnh mẽ để trực quan hóa dữ liệu và giám sát hệ thống theo thời gian thực? Grafana chính là câu trả lời. Đây là một nền tảng phân tích và giám sát mã nguồn mở hàng đầu, cho phép bạn truy vấn, trực quan hóa, cảnh báo và khám phá các chỉ số hệ thống một cách dễ dàng. Với Grafana, bạn có thể biến những dữ liệu phức tạp từ máy chủ, ứng dụng hay cảm biến thành các dashboard đẹp mắt và dễ hiểu. Ubuntu 20.04, với sự ổn định và cộng đồng hỗ trợ lớn, là môi trường lý tưởng để triển khai Grafana. Tuy nhiên, một sai lầm phổ biến là cài đặt xong nhưng bỏ qua khâu bảo mật, tạo ra lỗ hổng cho các mối đe dọa. Bài viết này của AZWEB sẽ hướng dẫn bạn chi tiết từ A-Z: cài đặt Grafana trên Ubuntu 20.04, cấu hình bảo mật cơ bản đến nâng cao, và xử lý các sự cố thường gặp để bạn có một hệ thống giám sát an toàn và hiệu quả.

Hướng dẫn cài đặt Grafana trên Ubuntu 20.04

Để bắt đầu hành trình xây dựng một hệ thống giám sát chuyên nghiệp, bước đầu tiên và quan trọng nhất là cài đặt Grafana một cách chính xác. Quá trình này không hề phức tạp nếu bạn làm theo từng bước hướng dẫn cẩn thận. Chúng tôi sẽ cùng bạn đi qua từng giai đoạn, từ việc chuẩn bị môi trường Ubuntu cho đến khi bạn có thể truy cập vào giao diện Grafana lần đầu tiên. Hãy đảm bảo bạn đã sẵn sàng với quyền truy cập vào máy chủ Ubuntu 20.04 của mình và một kết nối internet ổn định.

Chuẩn bị môi trường và yêu cầu hệ thống

Trước khi cài đặt bất kỳ phần mềm nào, việc cập nhật hệ thống là cực kỳ quan trọng để đảm bảo tính tương thích và bảo mật. Hãy mở terminal và chạy lệnh sau để cập nhật danh sách gói và nâng cấp các gói hiện có.

sudo apt update && sudo apt upgrade -y

Lệnh này sẽ đảm bảo hệ điều hành của bạn đang ở trạng thái mới nhất. Tiếp theo, chúng ta cần cài đặt một vài gói tiện ích cần thiết mà Grafana có thể yêu cầu trong quá trình hoạt động.

sudo apt install -y apt-transport-https software-properties-common wget

Bạn cũng cần chắc chắn rằng mình đang sử dụng đúng phiên bản Ubuntu 20.04 (Focal Fossa) và có quyền root hoặc quyền sudo để thực hiện các lệnh cài đặt. Bạn có thể kiểm tra phiên bản Ubuntu bằng lệnh lsb_release -a. Việc chuẩn bị kỹ lưỡng môi trường ban đầu sẽ giúp quá trình cài đặt diễn ra suôn sẻ hơn rất nhiều.

Hình minh họa

Cài đặt Grafana qua kho chính thức

Sử dụng kho lưu trữ (repository) chính thức của Grafana là cách tốt nhất để đảm bảo bạn nhận được phiên bản ổn định và các bản cập nhật bảo mật kịp thời. Đầu tiên, hãy thêm khóa GPG của Grafana để xác thực các gói.

sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key

Sau khi thêm khóa, bạn cần thêm kho lưu trữ của Grafana vào danh sách nguồn của APT. Lệnh sau sẽ thực hiện điều đó cho bạn.

echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list

Bây giờ, hãy cập nhật lại danh sách gói và tiến hành cài đặt Grafana.

sudo apt update

sudo apt install grafana -y

Hình minh họa

Sau khi cài đặt hoàn tất, bạn cần khởi động dịch vụ Grafana và cho phép nó tự động chạy mỗi khi máy chủ khởi động lại.

sudo systemctl start grafana-server

sudo systemctl enable grafana-server

Để kiểm tra xem dịch vụ đã hoạt động đúng cách chưa, bạn có thể dùng lệnh sudo systemctl status grafana-server. Nếu mọi thứ ổn, bạn sẽ thấy trạng thái “active (running)”. Giờ đây, bạn có thể truy cập giao diện web của Grafana bằng cách mở trình duyệt và truy cập vào địa chỉ http://your_server_ip:3000. Cánh cửa đến với thế giới giám sát dữ liệu đã mở ra!

Cấu hình bảo mật cơ bản cho Grafana

Cài đặt thành công Grafana chỉ là bước khởi đầu. Một hệ thống giám sát mạnh mẽ cũng cần phải được bảo vệ một cách nghiêm ngặt. Việc bỏ qua các bước cấu hình bảo mật cơ bản có thể biến công cụ hữu ích của bạn thành một điểm yếu chết người, để lộ dữ liệu nhạy cảm của hệ thống. Trong phần này, chúng ta sẽ tập trung vào những hành động thiết yếu đầu tiên để “khóa chặt” Grafana, từ việc thay đổi thông tin đăng nhập mặc định đến việc quản lý người dùng và phân quyền. Đây là nền tảng vững chắc để bạn xây dựng các lớp bảo vệ phức tạp hơn sau này.

Thiết lập user và mật khẩu truy cập

Lần đầu tiên truy cập vào Grafana, bạn sẽ được yêu cầu đăng nhập với tài khoản mặc định. Tên người dùng là admin và mật khẩu cũng là admin. Đây là một thông tin đăng nhập công khai và là mục tiêu tấn công hàng đầu. Vì vậy, việc đầu tiên và bắt buộc bạn phải làm là thay đổi mật khẩu này ngay lập tức.

Hình minh họa

Sau khi đăng nhập thành công, Grafana sẽ yêu cầu bạn đặt một mật khẩu mới. Hãy chọn một mật khẩu mạnh, kết hợp chữ hoa, chữ thường, số và ký tự đặc biệt để tăng cường độ an toàn. Đừng bao giờ bỏ qua bước này!

Tiếp theo, hãy tạo ra các tài khoản người dùng mới cho các thành viên trong nhóm của bạn thay vì sử dụng chung tài khoản admin. Truy cập vào mục “Server Admin” -> “Users” và nhấn “New user”. Khi tạo người dùng, bạn có thể phân quyền cho họ theo ba vai trò chính: Viewer (chỉ xem), Editor (chỉnh sửa dashboard), và Admin (quản trị toàn bộ). Áp dụng nguyên tắc đặc quyền tối thiểu: chỉ cấp quyền cao nhất cho những ai thực sự cần nó. Điều này giúp giảm thiểu rủi ro nếu một tài khoản bị xâm phạm.

Hình minh họa

Kích hoạt xác thực hai lớp (nếu khả dụng)

Mật khẩu mạnh là lớp phòng thủ đầu tiên, nhưng xác thực hai yếu tố (2FA) sẽ bổ sung thêm một lớp bảo vệ cực kỳ quan trọng. Nó yêu cầu người dùng cung cấp một mã xác minh thứ hai (thường từ ứng dụng trên điện thoại) sau khi nhập mật khẩu. Điều này có nghĩa là ngay cả khi kẻ tấn công có được mật khẩu của bạn, họ cũng không thể đăng nhập nếu không có thiết bị của bạn.

Grafana phiên bản mã nguồn mở không tích hợp sẵn 2FA, nhưng bạn có thể kích hoạt tính năng này thông qua các plugin hoặc tích hợp với các hệ thống xác thực bên ngoài. Các phiên bản Enterprise có sẵn các tùy chọn nâng cao hơn.

Một số giải pháp phổ biến bao gồm:

  • Tích hợp LDAP/Active Directory: Nếu tổ chức của bạn đang sử dụng LDAP hoặc Active Directory, bạn có thể cấu hình Grafana để xác thực người dùng qua hệ thống này, tận dụng các chính sách bảo mật sẵn có.
  • Xác thực qua OAuth: Bạn có thể cho phép người dùng đăng nhập bằng tài khoản Google, GitHub, hoặc GitLab. Điều này chuyển gánh nặng xác thực cho các nhà cung cấp uy tín và thường đã được kích hoạt 2FA.
  • Plugin xác thực: Cộng đồng Grafana cung cấp nhiều plugin hỗ trợ các phương thức xác thực khác nhau, bao gồm cả các giải pháp 2FA. Bạn có thể tìm kiếm chúng trên marketplace của Grafana.

Mặc dù việc thiết lập có thể đòi hỏi thêm một chút công sức, nhưng việc bổ sung xác thực hai lớp là một khoản đầu tư xứng đáng cho sự an toàn của toàn bộ hệ thống giám sát của bạn.

Sử dụng HTTPS để bảo vệ dữ liệu truyền tải

Bạn đã cài đặt Grafana và thiết lập mật khẩu mạnh. Tuy nhiên, nếu bạn vẫn đang truy cập qua http://, toàn bộ dữ liệu, bao gồm cả tên người dùng và mật khẩu, đang được truyền đi dưới dạng văn bản thuần. Bất kỳ ai trong cùng mạng đều có thể “nghe lén” và đánh cắp thông tin này. Đây là một rủi ro bảo mật nghiêm trọng. Giải pháp chính là sử dụng HTTPS (HTTP Secure), giúp mã hóa toàn bộ dữ liệu trao đổi giữa trình duyệt của bạn và máy chủ Grafana. Trong phần này, AZWEB sẽ hướng dẫn bạn cách triển khai HTTPS một cách dễ dàng và hoàn toàn miễn phí.

Tạo và cài đặt chứng chỉ SSL miễn phí với Let’s Encrypt

Let’s Encrypt là một nhà cung cấp chứng chỉ số (CA) miễn phí, tự động và được tin cậy rộng rãi. Chúng ta sẽ sử dụng công cụ Certbot để tự động hóa quá trình lấy và cài đặt chứng chỉ SSL. Để thực hiện điều này, chúng ta cần một reverse proxy như Nginx hoặc Apache. Trong hướng dẫn này, chúng tôi sẽ sử dụng Nginx.

Đầu tiên, hãy cài đặt Nginx và Certbot.

sudo apt install nginx python3-certbot-nginx -y

Tiếp theo, bạn cần tạo một file cấu hình Nginx để làm reverse proxy cho Grafana. Tạo một file mới tại /etc/nginx/sites-available/grafana.

sudo nano /etc/nginx/sites-available/grafana

Thêm nội dung sau vào file, thay your_domain.com bằng tên miền của bạn.

server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Hình minh họa

Kích hoạt cấu hình này và kiểm tra cú pháp Nginx.

sudo ln -s /etc/nginx/sites-available/grafana /etc/nginx/sites-enabled/

sudo nginx -t

Nếu không có lỗi, hãy khởi động lại Nginx. Bây giờ, chạy Certbot để lấy chứng chỉ SSL và tự động cấu hình Nginx cho HTTPS.

sudo certbot --nginx -d your_domain.com

Certbot sẽ hỏi bạn một vài câu hỏi và sau khi hoàn tất, Nginx sẽ được cấu hình để chuyển hướng tất cả lưu lượng HTTP sang HTTPS và sử dụng chứng chỉ SSL mới.

Hình minh họa

Kiểm tra và đảm bảo kết nối an toàn

Sau khi Certbot chạy xong, hãy mở trình duyệt và truy cập vào tên miền của bạn bằng https://your_domain.com. Bạn sẽ thấy một biểu tượng ổ khóa màu xanh lá cây bên cạnh địa chỉ web, cho biết kết nối của bạn đã được mã hóa và an toàn.

Hình minh họa

Chứng chỉ của Let’s Encrypt có thời hạn 90 ngày. Tuy nhiên, Certbot đã tự động thiết lập một tác vụ gia hạn trong hệ thống của bạn. Tác vụ này sẽ tự động kiểm tra và gia hạn chứng chỉ trước khi nó hết hạn, đảm bảo kết nối của bạn luôn được bảo vệ mà không cần can thiệp thủ công.

Bạn có thể kiểm tra trạng thái của bộ đếm thời gian gia hạn tự động bằng lệnh:

sudo systemctl status certbot.timer

Cuối cùng, bạn nên cấu hình Grafana để nó nhận biết đang chạy sau một reverse proxy. Mở file cấu hình của Grafana.

sudo nano /etc/grafana/grafana.ini

Tìm và bỏ ghi chú (xóa dấu ;) các dòng sau, đồng thời cập nhật giá trị cho phù hợp:

[server]
protocol = http
http_port = 3000
domain = your_domain.com
root_url = https://your_domain.com

Lưu file và khởi động lại dịch vụ Grafana để áp dụng thay đổi. sudo systemctl restart grafana-server. Bây giờ, hệ thống Grafana của bạn đã được bảo vệ hoàn toàn bằng HTTPS.

Các vấn đề thường gặp và cách xử lý

Ngay cả với một quy trình cài đặt chuẩn, đôi khi bạn vẫn có thể gặp phải những sự cố không mong muốn. Đừng lo lắng, đây là một phần bình thường trong quá trình quản trị hệ thống. Việc biết cách chẩn đoán và khắc phục sự cố một cách nhanh chóng là một kỹ năng quan trọng. Trong phần này, chúng ta sẽ xem xét hai vấn đề phổ biến nhất khi triển khai Grafana: dịch vụ không khởi động được và lỗi kết nối HTTPS. Hiểu rõ nguyên nhân và cách xử lý sẽ giúp bạn tiết kiệm rất nhiều thời gian và công sức.

Lỗi không khởi động được dịch vụ Grafana

Một trong những tình huống gây khó chịu nhất là khi bạn chạy lệnh sudo systemctl start grafana-server nhưng dịch vụ không khởi động hoặc chạy rồi dừng ngay lập tức. Nguyên nhân có thể rất đa dạng, nhưng công cụ chẩn đoán đầu tiên và mạnh mẽ nhất của bạn chính là nhật ký hệ thống (system log).

Để kiểm tra log của dịch vụ Grafana, hãy sử dụng lệnh sau:

sudo journalctl -u grafana-server -f

Lệnh này sẽ hiển thị các log gần nhất của dịch vụ và tiếp tục theo dõi các log mới theo thời gian thực. Hãy tìm các dòng có chữ “error” hoặc “fatal”. Một số nguyên nhân phổ biến bao gồm:

  • Xung đột cổng (Port conflict): Log báo lỗi “bind: address already in use”. Điều này có nghĩa là một dịch vụ khác đang sử dụng cổng 3000. Bạn cần tìm và dừng dịch vụ đó hoặc thay đổi cổng mặc định của Grafana trong file grafana.ini.
  • Lỗi cấu hình: Bạn có thể đã mắc lỗi cú pháp trong file /etc/grafana/grafana.ini. Log sẽ chỉ ra dòng hoặc mục cấu hình bị lỗi. Hãy kiểm tra lại những thay đổi bạn vừa thực hiện.
  • Vấn đề về quyền: Dịch vụ Grafana không có quyền đọc/ghi vào các thư mục cần thiết như /var/lib/grafana hoặc /var/log/grafana. Lỗi này thường xảy ra nếu bạn thay đổi quyền sở hữu thư mục không đúng cách.

Việc đọc log một cách cẩn thận gần như luôn luôn cung cấp cho bạn manh mối để giải quyết vấn đề.

Hình minh họa

Vấn đề truy cập HTTPS bị lỗi chứng chỉ

Bạn đã thiết lập HTTPS, nhưng khi truy cập, trình duyệt lại hiển thị cảnh báo bảo mật như “Your connection is not private” (NET::ERR_CERT_INVALID). Đây là dấu hiệu cho thấy có vấn đề với chứng chỉ SSL của bạn.

Các bước kiểm tra và khắc phục:

  1. Kiểm tra tường lửa: Đảm bảo rằng tường lửa của bạn (ví dụ: UFW) đã cho phép lưu lượng truy cập qua cổng 443 (HTTPS). Sử dụng lệnh sudo ufw status để kiểm tra. Nếu chưa có, hãy thêm quy tắc: sudo ufw allow 'Nginx Full'. Hãy tìm hiểu thêm về firewall để bảo vệ mạng của bạn hiệu quả.
  2. Kiểm tra cấu hình Nginx: Mở lại file cấu hình Nginx của bạn (/etc/nginx/sites-available/grafana) và đảm bảo rằng các đường dẫn đến file chứng chỉ SSL (ssl_certificatessl_certificate_key) là chính xác. Certbot thường đặt chúng trong /etc/letsencrypt/live/your_domain.com/.
  3. Chứng chỉ hết hạn hoặc không hợp lệ: Chứng chỉ có thể đã hết hạn hoặc được cấp cho một tên miền khác. Bạn có thể sử dụng các công cụ kiểm tra SSL trực tuyến để phân tích tên miền của mình. Nếu chứng chỉ hết hạn, hãy thử gia hạn thủ công bằng lệnh sudo certbot renew.
  4. Lỗi Mixed Content: Đôi khi, trang HTTPS vẫn cố gắng tải một số tài nguyên (hình ảnh, script) qua HTTP. Mặc dù ít xảy ra với Grafana mặc định, nhưng nếu bạn nhúng nội dung tùy chỉnh, hãy đảm bảo tất cả các URL đều sử dụng https://. Đây là vấn đề liên quan đến SSL và bảo mật truyền tải dữ liệu.

Bằng cách kiểm tra tuần tự các nguyên nhân trên, bạn sẽ nhanh chóng xác định và giải quyết được các vấn đề liên quan đến chứng chỉ SSL.

Mẹo tối ưu triển khai và bảo vệ Grafana hiệu quả

Thường xuyên cập nhật Grafana và Ubuntu: Các bản cập nhật không chỉ mang lại tính năng mới mà còn chứa các bản vá bảo mật quan trọng. Hãy tạo thói quen chạy sudo apt update && sudo apt upgrade hàng tuần để giữ cho cả hệ điều hành và Grafana luôn được cập nhật phiên bản mới nhất, giảm thiểu rủi ro từ các lỗ hổng bảo mật đã được biết đến.

Hình minh họa

Giới hạn truy cập IP cho dịch vụ Grafana: Nếu hệ thống giám sát của bạn chỉ dành cho mục đích sử dụng nội bộ hoặc từ một số địa điểm cố định (như văn phòng), việc giới hạn truy cập theo địa chỉ IP là một lớp bảo vệ cực kỳ hiệu quả. Bạn có thể sử dụng tường lửa UFW để chỉ cho phép các IP đáng tin cậy kết nối đến cổng 443. Ví dụ: sudo ufw allow from your_office_ip to any port 443.

Thiết lập firewall cơ bản và giám sát log bảo mật: Đảm bảo UFW được kích hoạt và cấu hình để chỉ mở các cổng thực sự cần thiết (SSH, HTTP, HTTPS). Ngoài ra, hãy thường xuyên kiểm tra các log hệ thống và log của Grafana (/var/log/grafana/grafana.log) để phát hiện các hoạt động bất thường, chẳng hạn như các nỗ lực đăng nhập thất bại liên tục, có thể là dấu hiệu của một cuộc tấn công dò mật khẩu tấn công mạng.

Sử dụng backup định kỳ dashboard và cấu hình: Dữ liệu quý giá nhất trong Grafana chính là các dashboard mà bạn đã mất công xây dựng. Hãy thiết lập một cơ chế sao lưu tự động cho cơ sở dữ liệu của Grafana (thường là file SQLite tại /var/lib/grafana/grafana.db) và file cấu hình /etc/grafana/grafana.ini. Việc này đảm bảo bạn có thể khôi phục hệ thống nhanh chóng trong trường hợp xảy ra sự cố phần cứng hoặc lỗi phần mềm nghiêm trọng.

Kết luận

Qua bài viết này, chúng ta đã cùng nhau đi qua một hành trình chi tiết để triển khai và bảo mật Grafana trên nền tảng Ubuntu 20.04. Từ những bước cài đặt cơ bản, thay đổi mật khẩu mặc định, cho đến việc thiết lập một lớp bảo vệ vững chắc bằng HTTPS với Let’s Encrypt, bạn đã trang bị đầy đủ kiến thức để xây dựng một hệ thống giám sát không chỉ mạnh mẽ về tính năng mà còn an toàn về bảo mật. Việc áp dụng các mẹo tối ưu như cập nhật thường xuyên, giới hạn truy cập IP và sao lưu định kỳ sẽ giúp bạn duy trì một hệ thống ổn định và đáng tin cậy trong thời gian dài.

Hệ thống giám sát là “đôi mắt” của bạn nhìn vào hạ tầng công nghệ. Bảo vệ nó cũng chính là bảo vệ tài sản số của bạn. AZWEB khuyến khích bạn không chỉ dừng lại ở việc làm theo hướng dẫn, mà hãy bắt tay vào thực hành ngay. Hãy bắt đầu kết nối các nguồn dữ liệu, xây dựng những dashboard đầu tiên và khám phá kho tàng tính năng phong phú mà Grafana mang lại. Con đường chinh phục dữ liệu và tối ưu hóa hệ thống của bạn chỉ mới bắt đầu. Chúc bạn thành công

Đánh giá