Cách thiết lập Giám sát tính toàn vẹn của tệp (FIM) bằng osquery trên Linux

theanh

Administrator
Nhân viên
Osquery là một công cụ, giám sát và phân tích hệ điều hành nguồn mở. Được tạo bởi Facebook, công cụ 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à một phần mềm đa nền tảng, có thể được cài đặt trên Linux, Windows, MacOS và FreeBSD. Công cụ này cho phép chúng ta khám phá tất cả các cấu hình, hiệu suất, kiểm tra bảo mật, v.v. của các hệ điều hành đó bằng các truy vấn dựa trên SQL.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách thiết lập Giám sát toàn vẹn tệp (FIM) bằng osquery. Chúng tôi sẽ sử dụng hệ điều hành Linux Ubuntu 18.04 và CentOS 7.

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

  • Linux (Ubuntu hoặc CentOS)
  • Quyền root
  • Hoàn thành hướng dẫn osquery đầu tiên

Những việc chúng tôi sẽ làm​

  1. Cài đặt osquery trên máy chủ Linux
  2. Bật Syslog Consumption cho osquery
  3. Cấu hình osquery cơ bản
  4. Cấu hình giám sát tính toàn vẹn của tệp osquery
  5. Kiểm tra

Bước 1 - Cài đặt osquery trên máy chủ Linux​

Osquery cung cấp kho lưu trữ riêng cho tất cả các nền tảng cài đặt và bước đầu tiên chúng ta sẽ làm là cài đặt gói osquery TỪ kho lưu trữ osquery chính thức.

Trên Ubuntu​

Thêm khóa osquery vào hệ thống.
Mã:
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY
Thêm kho lưu trữ osquery và cài đặt gói.
Mã:
sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
sudo apt install osquery -y

Trên CentOS​

Thêm khóa osquery vào hệ thống.
Mã:
curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery
Thêm và kích hoạt kho lưu trữ osquery, sau đó cài đặt gói.
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 -y
Chờ tất cả các gói được cài đặt.



Lưu ý:

Nếu bạn gặp lỗi về lệnh yum-config-manager.
Mã:
sudo: yum-config-manager: command not found
Cài đặt gói 'yum-utils'.
Mã:
yum -y install yum-utils

Bước 2 - Kích hoạt Syslog Consumption trong osquery​

Osquery cung cấp các tính năng để đọc hoặc sử dụng nhật ký hệ thống trên Apple MacOS bằng Apple System Log (ASL) và đối với Linux là sử dụng syslog.

Trong bước này, chúng tôi sẽ kích hoạt syslog consumption cho osquery thông qua rsyslog.

Trên Ubuntu​

Cài đặt gói rsyslog bằng lệnh apt bên dưới.
Mã:
sudo apt install rsyslog -y

Trên CentOS​

Cài đặt gói rsyslog bằng lệnh yum bên dưới.
Mã:
sudo yum install rsyslog -y
Sau khi cài đặt hoàn tất, hãy chuyển đến thư mục '/etc/rsyslog.d' và tạo tệp cấu hình mới osquery.conf.
Mã:
cd /etc/rsyslog.d/
vim osquery.conf
Dán cấu hình sau vào đó.
Mã:
template( name="OsqueryCsvFormat" type="string" string="%timestamp:::date-rfc3339,csv%,%hostname:::csv%,%syslogseverity:::csv%,%syslogfacility-text:::csv%,%syslogtag:::csv%,%msg:::csv%\n")*.* action(type="ompipe" Pipe="/var/osquery/syslog_pipe" template="OsqueryCsvFormat")
Lưu và thoát.


Bước 3 - Cấu hình cơ bản của osquery​

Cấu hình mặc định của osquery là 'osquery.conf', thường nằm trong thư mục '/etc/osquery'. Có các mẫu cấu hình osquery '/usr/share/osquery/osquery.conf' và mẫu cấu hình gói osquery.

Trong bước này, chúng ta sẽ tìm hiểu về các thành phần cấu hình osquery, tạo cấu hình osquery tùy chỉnh, sau đó triển khai osqueryd dưới dạng dịch vụ.

Cấu hình osquery được định dạng dưới dạng tệp JSON chứa các thông số cấu hình osquery được mô tả bên dưới.
  • Tùy chọn: một phần của lệnh CLI osqueryd và lệnh này xác định ứng dụng bắt đầu và khởi tạo.
  • Lịch trình: Xác định luồng tên truy vấn được lên lịch đến các chi tiết truy vấn.
  • Decorators: Được sử dụng để thêm "decorations" bổ sung vào kết quả và nhật ký ảnh chụp nhanh.
  • Packs: một nhóm các truy vấn lên lịch.
  • Thêm: Đường dẫn tệp, YARA, Prometheus, Chế độ xem, EC2, Cấu hình Chef.
Đi tới thư mục '/etc/osquery' và tạo cấu hình tùy chỉnh mới 'osquery.conf'.
Mã:
cd /etc/osquery/
vim osquery.conf
Dán các cấu hình sau vào đó.
Mã:
{ "options": { "config_plugin": "filesystem", "logger_plugin": "filesystem", "logger_path": "/var/log/osquery", "disable_logging": "false", "log_result_events": "true", "schedule_splay_percent": "10", "pidfile": "/var/osquery/osquery.pidfile", "events_expiry": "3600", "database_path": "/var/osquery/osquery.db", "verbose": "false", "worker_threads": "2", "enable_monitor": "true", "disable_events": "false", "disable_audit": "false", "audit_allow_config": "true", "host_identifier": "hakase-labs", "enable_syslog": "true", "syslog_pipe_path": "/var/osquery/syslog_pipe", "force": "true", "audit_allow_sockets": "true", "schedule_default_interval": "3600" }, "schedule": { "crontab": { "query": "CHỌN * TỪ crontab;", "interval": 300 }, "system_info": { "query": "CHỌN tên máy chủ, nhãn hiệu cpu, bộ nhớ vật lý TỪ system_info;", "interval": 3600 }, "ssh_login": { "query": "CHỌN tên người dùng, thời gian, máy chủ TỪ lần cuối NƠI type=7", "interval": 360 } }, "decorators": { "load": [ "CHỌN uuid LÀ host_uuid TỪ system_info;", "CHỌN người dùng LÀM tên người dùng TỪ logged_in_users SẮP XẾP THEO thời gian GIẢM DẦN GIỚI HẠN 1;" ] }, "packs": { "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf" }}
Lưu và thoát.

Lưu ý:
  • Chúng tôi đang sử dụng 'filesystem' làm plugin cấu hình và ghi nhật ký.
  • Xác định đường dẫn ghi nhật ký đến thư mục '/var/log/osquery'.
  • Bật pip syslog đến tệp '/var/syslog/syslog_pipe'.
  • Trên trình lập lịch, chúng tôi xác định ba truy vấn để kiểm tra crontab, thông tin hệ thống và đăng nhập ssh.
  • Bật các gói osquery có tên 'osquery-monitoring' và các tệp gói nằm tại thư mục '/usr/share/osquery/packs'.
Bây giờ hãy khởi động dịch vụ daemon osqueryd và bật dịch vụ này để khởi chạy mọi lúc tại system boot.
Mã:
systemctl start osqueryd
systemctl enable osqueryd
Và khởi động lại dịch vụ rsyslog.
Mã:
systemctl restart rsyslog
Cấu hình osquery cơ bản đã hoàn tất.


Bước 4 - Cấu hình Giám sát toàn vẹn tệp (FIM) bằng osquery​

Osquery cung cấp Giám sát toàn vẹn tệp trên Linux và MacOS Darwin bằng cách sử dụng inotify và FSEvents. Đơn giản, nó theo dõi và phát hiện bất kỳ thay đổi nào của các tệp trên thư mục được xác định bằng cách sử dụng 'file_path' và sau đó lưu trữ tất cả hoạt động vào bảng file_events.

Trong bước này, chúng ta sẽ cấu hình osquery để theo dõi các thư mục quan trọng như home, thư mục ssh, v.v., tmp và thư mục gốc web www bằng các gói FIM tùy chỉnh.

Đi tới thư mục '/usr/share/osquery/packs' và tạo tệp cấu hình gói mới 'fim.conf'.
Mã:
cd /usr/share/osquery/packs
vim fim.conf
Dán các cấu hình bên dưới.
Mã:
{ "queries": { "file_events": { "query": "SELECT * FROM file_events;", "removed": false, "interval": 300 } }, "file_paths": { "homes": [ "/root/.ssh/%%", "/home/%/.ssh/%%" ], "etc": [ "/etc/%%" ], "home": [ "/home/%%" ], "tmp": [ "/tmp/%%" ], "www": [ "/var/www/%%" ] }}
Lưu và thoát.

Bây giờ quay lại thư mục cấu hình '/etc/osquery' và chỉnh sửa tệp osquery.conf.
Mã:
cd /etc/osquery/
vim osquery.conf
Thêm cấu hình gói Giám sát toàn vẹn tệp vào phần 'packs'.
Mã:
"packs": { "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf", "fim": "/usr/share/osquery/packs/fim.conf" }


Lưu và thoát, sau đó khởi động lại dịch vụ osqueryd.
Mã:
systemctl restart osqueryd



Lưu ý:

Tiếp tục kiểm tra tệp cấu hình JSON bằng trình kiểm tra JSON 'http://jsonlint.com/' và đảm bảo không có lỗi.

Bước 5 - Kiểm tra​

Chúng tôi sẽ kiểm tra các gói Giám sát tính toàn vẹn của tệp bằng cách tạo một tệp mới trên thư mục đã xác định 'home' và 'www'.

Đi tới thư mục '/var/www/' và tạo một tệp mới có tên 'howtoforge.md'.
Mã:
cd /var/www/
touch howtoforge.md
Đi đến thư mục '/home/youruser/' và tạo một tệp mới có tên 'hakase-labs.md'.
Mã:
cd /home/vagrant/
touch hakase-labs.md
Bây giờ chúng ta sẽ kiểm tra tất cả các bản ghi giám sát bằng chế độ tương tác thời gian thực osqueryi và các bản ghi kết quả osquery.


osqueryi​

Chạy lệnh osqueryi bên dưới.
Mã:
osqueryi --config-path /etc/osquery/osquery.conf
Bây giờ hãy kiểm tra tất cả các bản ghi về các thay đổi tệp trong bảng 'file_events'.

Đối với các thay đổi toàn cục.
Mã:
select * from file_events;
Đối với thư mục 'home'.
Mã:
select target_path, category, action, atime, ctime, mtime from file_events WHERE category="home";
Đối với thư mục gốc web 'www'.
Mã:
select target_path, category, action, atime, ctime, mtime from file_events WHERE category="www";

nhật ký kết quả osqueryd​

Đi tới thư mục '/var/log/osquery' và bạn sẽ nhận được tệp 'osqueryd.results.log'.
Mã:
cd /var/log/osquery/
ls -lah osqueryd.results.log
Lọc nhật ký osquery bằng lệnh 'grep'.
Mã:
grep -rin howtoforge.md osqueryd.results.log
grep -rin hakase-labs.md osqueryd.results.log
Bạn sẽ thấy thông tin về các tệp đó đã được tạo.



Việc cài đặt và cấu hình Giám sát toàn vẹn tệp (FIM) trên Máy chủ Linux Ubuntu và CentOS bằng osquery đã hoàn tất thành công.

Tham khảo​

 
Back
Bên trên