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.
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.
Thêm khóa osquery.
Cài đặt gói osquery trên Ubuntu.
Cài đặt gói osquery trên CentOS 7.
Chờ tất cả các gói được cài đặt.
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.
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.
Hiển thị cấu hình và cài đặt osquery hiện tại.
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'.
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.
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.
Và bạn sẽ nhận được tất cả các cột lược đồ của bảng.
Hiển thị kernel được hệ thống sử dụng.
Hiển thị tất cả các mô-đun kernel đã tải trên hệ thống.
- 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.
Kiểm tra tất cả các gói được cài đặt bằng bảng deb_packages.
Chỉ hiển thị tên gói và phiên bản.
Đối với một gói cụ thể, hãy thêm bộ lọc tên.
- 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.
Kiểm tra kho lưu trữ đã bật bằng cách thêm bộ lọc 'enabled'.
Kiểm tra tất cả các gói được cài đặt bằng bảng rpm_packages.
Đối với tên gói cụ thể, hãy thêm bộ lọc name.
Kiểm tra mọi đĩa được hệ thống gắn kết.
Đối với loại thiết bị cụ thể.
Kiểm tra thông tin chi tiết về giao diện mạng bằng cách sử dụng 'interface_details'.
Để 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'.
Đối với người dùng thông thường, chúng ta có thể chỉ định uid là '>=1000'.
Để kiểm tra người dùng đăng nhập cuối cùng, hãy sử dụng bảng 'last'.
Đối với người dùng thông thường, hãy điền 'type' là '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'.
Hiển thị tất cả các quy tắc iptables.
Chỉ định quy tắc bằng cách sử dụng truy vấn tùy chỉnh bên dưới.
Truy vấn quy trình cơ bản để kiểm tra tất cả các ứng dụng đang chạy.
Chỉ định các cột cho pid, v.v., đường dẫn và lệnh.
Kiểm tra tất cả các tệp nhị phân có sẵn.
Chỉ định tên người dùng và tên nhóm.
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.
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
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
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
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
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
Để 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;
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;
Mã:
SELECT * FROM deb_packages;
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;
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;
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;
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;
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;
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;
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;
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.