Cách giám sát máy chủ Linux của bạn bằng osquery

theanh

Administrator
Nhân viên
Osquery là phần mềm giám sát, truy vấn và phân tích Hệ điều hành nguồn mở. Được Facebook tạo ra, phần mềm này trình bày hệ điều hành như một cơ sở dữ liệu quan hệ hiệu suất cao có thể được truy vấn bằng các truy vấn dựa trên SQL.

Osquery là phần mềm đa nền tảng, có thể cài đặt trên Linux, Windows, MacOS và FreeBSD. Osquery cho phép chúng ta khám phá hồ sơ hệ điều hành, hiệu suất, bảo mật và nhiều số liệu khác bằng cách sử dụng các truy vấn dựa trên SQL.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt osquery trên các bản phân phối Linux Ubuntu 18.04 LTS và CentOS 7. Chúng ta sẽ cài đặt osquery, tìm hiểu cách sử dụng chế độ tương tác 'osqueryi' và cách giám sát hệ thống đang hoạt động bằng osquery.

Điều kiện tiên quyết​

  • Hệ điều hành Linux (Ubuntu 18.04 hoặc CentOS 7)
  • Quyền root

Những gì chúng ta sẽ làm​

  • Cài đặt osquery trên Hệ điều hành Linux
  • Cách sử dụng cơ bản Chế độ tương tác osqueryi
  • Giám sát hệ thống bằng osquery

Bước 1 - Cài đặt osquery trên Hệ điều hành Linux Ở bước này, chúng ta sẽ cài đặt gói osquery từ kho lưu trữ osquery chính thức.

Trên Ubuntu​

​Thêm khóa osquery.

Mã:
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY
Cài đặt gói osquery trên Ubuntu.
Mã:
sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
sudo apt install osquery -y[B]
 [/b]

Trên CentOS​

Thêm khóa osquery.

Mã:
curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery
Cài đặt gói osquery trên CentOS 7.
Mã:
sudo yum-config-manager --add-repo https://pkg.osquery.io/rpm/osquery-s3-rpm.repo
sudo yum-config-manager --enable osquery-s3-rpm
sudo yum install osquery
Chờ tất cả các gói được cài đặt.


Bước 2 - Cách sử dụng cơ bản Chế độ tương tác osqueryi​

osquery cung cấp hai giao diện chính cho người dùng, osqueryi và osqueryd.

osqueryi là bảng điều khiển truy vấn tương tác osquery. Giống như shell lệnh 'mysql' trên MySQL và shell 'psql' trên cơ sở dữ liệu PostgreSQL.

Trong bước này, chúng ta sẽ tìm hiểu cách sử dụng cơ bản của chế độ tương tác 'osqueryi'.

Gõ lệnh 'osqueryi' trên thiết bị đầu cuối máy chủ và bạn sẽ nhận được chế độ bảng điều khiển tương tác osquery.
Mã:
osqueryi
Tiếp theo, chúng ta sẽ tìm hiểu về lệnh cơ bản của chế độ bảng điều khiển osqueryi.

Hiển thị tất cả các lệnh cơ bản có sẵn trên chế độ tương tác osqueryi.
Mã:
.help


Hiển thị cấu hình và cài đặt osquery hiện tại.
Mã:
.show


Osquery cung cấp nhiều chế độ xem để hiển thị kết quả truy vấn. Chế độ mặc định là chế độ 'pretty'.

Bây giờ chúng ta sẽ thay đổi chế độ xem kết quả truy vấn, đối với hướng dẫn này, chúng ta sẽ sử dụng chế độ 'line'.
Mã:
.mode csv
.mode list
.mode column
.mode line
.mode pretty
Osquery trình bày hệ điều hành như một hệ thống cơ sở dữ liệu quan hệ. Tất cả thông tin về hệ thống được lưu trữ trong các bảng osquery và chúng ta có thể khám phá toàn bộ thông tin hệ thống bằng cách truy vấn tất cả các bảng có sẵn.

Để có danh sách tất cả các bảng có sẵn trong osquery, hãy chạy lệnh bên dưới.
Mã:
.tables


Khi đã biết tất cả các bảng có sẵn trong hệ thống osquery, chúng ta sẽ xem xét các cột.

Sử dụng lệnh sau để lấy lược đồ (cột, kiểu) của các bảng.
Mã:
.schema users
.schema processes


Và bạn sẽ nhận được tất cả các cột lược đồ của bảng.

Bước 3 - Giám sát Linux cơ bản bằng truy vấn​

Trong bước này, chúng ta sẽ giám sát hệ thống Linux trực tiếp bằng osquery. Chúng tôi sẽ theo dõi thông tin hồ sơ hệ thống, người dùng, giao diện mạng, v.v. thông qua chế độ tương tác osqueryi.

Lấy thông tin hệ thống​

Hiển thị chi tiết về phần cứng hệ thống.
Mã:
SELECT * FROM system_info;
SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;

Lấy phiên bản hệ điều hành​

Hiển thị thông tin hệ điều hành hiện tại, bao gồm phiên bản hệ điều hành, nền tảng, bản vá hệ điều hành và tên mã.
Mã:
SELECT * FROM os_version;

Xem Phiên bản Kernel và Mô-đun​

Để kiểm tra thông tin kernel của hệ thống, osquery cung cấp các bảng 'kernel_info' và 'kernel_modules'.

Hiển thị kernel được hệ thống sử dụng.
Mã:
SELECT * FROM kernel_info;
Hiển thị tất cả các mô-đun kernel đã tải trên hệ thống.
Mã:
SELECT * FROM kernel_modules LIMIT 5;

Kiểm tra Kho lưu trữ và Gói​

osquery cung cấp các bảng để kiểm tra kho lưu trữ và các gói đã cài đặt trên cả Linux Ubuntu và CentOS.

- Trên Ubuntu

Trên Ubuntu, chúng ta có thể kiểm tra các kho lưu trữ khả dụng thông qua 'apt_sources' và kiểm tra các gói được cài đặt thông qua 'deb_packages'.

Kiểm tra tất cả các kho lưu trữ Ubuntu khả dụng.
Mã:
SELECT * FROM apt_sources;
SELECT name, base_uri, release, maintainer, components FROM apt_sources ORDER BY name;
Kiểm tra tất cả các gói được cài đặt bằng bảng deb_packages.
Mã:
SELECT * FROM deb_packages;
Chỉ hiển thị tên gói và phiên bản.
Mã:
SELECT name, version FROM deb_packages ORDER BY name;


Đối với một gói cụ thể, hãy thêm bộ lọc tên.
Mã:
SELECT name, version FROM deb_packages WHERE name="nginx";


- Trên CentOS

Trên CentOS, chúng ta có thể kiểm tra kho lưu trữ khả dụng thông qua 'yum_sources' và kiểm tra các gói được cài đặt thông qua 'rpm_packages'.

Kiểm tra tất cả các kho lưu trữ CentOS khả dụng.
Mã:
SELECT * FROM yum_sources;
SELECT name, baseurl, enabled FROM yum_sources;
Kiểm tra kho lưu trữ đã bật bằng cách thêm bộ lọc 'enabled'.
Mã:
SELECT name, baseurl, enabled FROM yum_sources WHERE enabled=1;


Kiểm tra tất cả các gói được cài đặt bằng bảng rpm_packages.
Mã:
SELECT * FROM rpm_packages;
SELECT name, version FROM rpm_packages ORDER BY name;
Đối với tên gói cụ thể, hãy thêm bộ lọc name.
Mã:
SELECT name, version FROM rpm_packages WHERE name="firewalld";



Mount Disk Info​

Chúng ta có thể sử dụng bảng mounts để kiểm tra mọi thông tin chi tiết về ổ đĩa hệ thống, bao gồm các inodes còn trống, cờ, loại, v.v.

Kiểm tra mọi đĩa được hệ thống gắn kết.
Mã:
SELECT * FROM mounts;
SELECT device, path, type, inodes_free, flags FROM mounts;
Đối với loại thiết bị cụ thể.
Mã:
SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="ext4";
SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="tmpfs";

Thông tin bộ nhớ​

Kiểm tra bộ nhớ hệ thống theo byte.
Mã:
SELECT * FROM memory_info;

Thông tin giao diện mạng​

Kiểm tra địa chỉ mạng bằng cách sử dụng 'interface_addresses'.
Mã:
SELECT * FROM interface_addresses;


Kiểm tra thông tin chi tiết về giao diện mạng bằng cách sử dụng 'interface_details'.
Mã:
SELECT * FROM interface_details;
SELECT interface, mac, ipackets, opackets, ibytes, obytes FROM interface_details;

Thời gian hoạt động của máy chủ​

Kiểm tra máy chủ thời gian hoạt động.
Mã:
SELECT * FROM uptime;

Đang kiểm tra người dùng​

osqery cung cấp các bảng chi tiết để kiểm tra người dùng hệ thống. Chúng ta có thể sử dụng bảng 'users' để kiểm tra tất cả người dùng trên hệ thống, sử dụng bảng 'last' để kiểm tra lần đăng nhập cuối cùng của người dùng và sử dụng 'logged_in_users' để lấy người dùng đã đăng nhập với shell đang hoạt động.

Để kiểm tra tất cả người dùng khả dụng trên máy chủ, hãy sử dụng bảng 'users'.
Mã:
SELECT * FROM users;
Đối với người dùng thông thường, chúng ta có thể chỉ định uid là '>=1000'.
Mã:
SELECT * FROM users WHERE uid>=1000;


Để kiểm tra người dùng đăng nhập cuối cùng, hãy sử dụng bảng 'last'.
Mã:
SELECT * FROM last;


Đối với người dùng thông thường, hãy điền 'type' là '7'.
Mã:
SELECT username, time, host FROM last WHERE type=7;


Kiểm tra người dùng đã đăng nhập bằng shell đang hoạt động, sử dụng bảng 'logged_in_users'.
Mã:
SELECT * FROM logged_in_users;

Bảng IP Thông tin tường lửa​

Với bảng 'tables', chúng ta có thể kiểm tra tất cả các quy tắc có sẵn của tường lửa, bao gồm chuỗi, chính sách, IP src/dst và cổng, v.v.

Hiển thị tất cả các quy tắc iptables.
Mã:
SELECT * FROM iptables;
Chỉ định quy tắc bằng cách sử dụng truy vấn tùy chỉnh bên dưới.
Mã:
SELECT chain, policy, src_ip, dst_ip FROM iptables WHERE chain="POSTROUTING" order by src_ip;

Thông tin quy trình​

Chúng ta có thể kiểm tra tất cả các quy trình ứng dụng bằng cách sử dụng bảng 'quy trình'. Nó cung cấp thông tin chi tiết về quy trình bao gồm pid, tên, đường dẫn, lệnh, v.v.

Truy vấn quy trình cơ bản để kiểm tra tất cả các ứng dụng đang chạy.
Mã:
SELECT * FROM processes;
Chỉ định các cột cho pid, v.v., đường dẫn và lệnh.
Mã:
SELECT pid, name, path, cmdline FROM processes;

Kiểm tra công việc Cron​

Kiểm tra công việc cron khả dụng và thời gian chạy tập lệnh bằng bảng 'crontab'.
Mã:
SELECT * FROM crontab;

Tệp nhị phân SUID​

SUID (Đặt ID người dùng chủ sở hữu khi thực thi) là một loại quyền tệp đặc biệt được cấp cho tệp và chủ yếu là tệp thực thi nhị phân files.

Kiểm tra tất cả các tệp nhị phân có sẵn.
Mã:
SELECT * FROM suid_bin;
Chỉ định tên người dùng và tên nhóm.
Mã:
SELECT * FROM suid_bin WHERE username="root" AND groupname="nobody" order by path;


Và tất cả những điều trên là giám sát hệ thống Linux cơ bản bằng osquery.

Tham khảo​

 
Back
Bên trên