如何在Linux上使用Osquery設定檔案完整性監控(FIM)

劉美利發表於2018-09-10

Osquery是一個SQL驅動作業系統檢測和分析工具,它由Facebook建立,支援像SQL語句一樣查詢系統的各項指標,可以用於OSX和Linux作業系統。

Osquery是一個多平臺軟體,可以安裝在Linux,Windows,MacOS和FreeBSD上。它允許我們使用基於SQL的查詢來處理作業系統的配置檔案、效能、安全檢查等。

在本教程中,我們將向您展示如何使用Osquery設定檔案完整性監控(FIM)。我們使用的linux作業系統是Ubuntu 18.04和CENTOS 7。

條件

  • Linux(Ubuntu或CentOS)

  • Root許可權

  • 完成了第一個osquery指南

步驟一:在Linux伺服器上安裝osquery

Osquery為所有的安裝平臺提供了自己的儲存庫,我們要做的第一步是從官方的osquery儲存庫安裝osquery包。

在Ubuntu上

將osquery金鑰新增到系統。

Export OSQUERY_KEY = 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B 
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $ OSQUERY_KEY

新增osquery儲存庫並安裝。

sudo add-apt-repository'deb [arch = amd64] https://pkg.osquery.io/deb deb 
main'sudo apt install osquery -y

在CentOS上

將osquery金鑰新增到系統。

curl -L https://pkg.osquery.io/rpm/GPG | sudo tee / etc / pki / rpm-gpg / RPM-GPG-KEY-osquery

新增並啟用osquery儲存庫,然後安裝該軟體包。

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

等待安裝所有軟體包

注意: 如果您收到關於yum-config-manager命令的錯誤訊息。

sudo: yum-config-manager: command not found

安裝'yum-utils'包。

yum -y install yum-utils

步驟二:啟用Osquery的Syslog Consumption

Osquery提供了一些功能,可以使用Apple system Log (ASL)讀取Apple MacOS上的系統日誌,對於Linux則使用syslog。

在此步驟中,我們將通過rsyslog啟用osquery的syslog consumption。

在Ubuntu上

使用如下apt命令安裝rsyslog

sudo apt install rsyslog –y

在CentOS上

使用如下yum命令安裝rsyslog包。

sudo yum install rsyslog -y

安裝完成後,轉到'/etc/rsyslog.d'目錄並建立一個新的配置檔案osquery.conf。

cd /etc/rsyslog.d/
vim osquery.conf

然後貼上如下配置

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“)

儲存並退出

步驟三: osquery基本配置

osquery預設配置是'osquery.conf',通常位於'/ etc / osquery'目錄中。

在這一步,我們將瞭解osquery配置元件,建立自定義osquery配置,然後將osqueryd部署為服務。

格式化為JSON 檔案的osquery 配置包含如下規範:

  • Options:osqueryd CLI命令的一部分,它決定應用程式的啟動和初始化。

  • Schedule:將計劃的查詢名稱的Flow定義到查詢詳情。

  • Decorators:用於向結果和快照日誌新增額外的“decorations”。

  • Packs:一組排程查詢

  • More:File Path, YARA, Prometheus, Views, EC2, Chef Configuration。

轉到'/ etc / osquery'目錄並建立一個新的自定義配置'osquery.conf'。

cd / etc / osquery / 
vim osquery.conf

貼上以下配置。

{
    “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”:“SELECT * FROM crontab;”,
            “interval”:300
        },
        “system_info”:{
            “query”:“SELECT hostname,cpu_brand, physical_memory FROM system_info;“,
            “interval”:3600
        },
        “ssh_login”:{
            “query”:“SELECT username,time,host FROM last WHERE type = 7”,
            “interval”:360
        }
    },
 
    “decorators”:{
        “load”:[
            “SELECT uuid AS host_uuid FROM system_info;”,
            “SELECT user AS username FROM logged_in_users ORDER BY time DESC LIMIT 1;”
        ]
    },
 
    “packs”:{
        “osquery-monitoring”:“/ usr / share / osquery / packages / osquery -monitoring.conf”
    }
}

儲存並退出

注意:

  • 我們使用'filesystem'作為配置檔案和記錄器外掛

  • 定義'/ var / log / osquery'目錄的記錄器路徑

  • 將SysLog-PIP啟用到'/Va/ysLogy/SySalpJixBube檔案中。

  • 在排程程式中,我們定義了三個查詢來檢查crontab, system info, 和ssh login.

  • 啟用名為“osquery-monitoring”的osquery包,並將該包放置在'/Ur/Stuts/OsQue/Pokes’目錄中。

啟動osqueryd daemon service(使其在每次系統引導時啟動)。

systemctl start osqueryd 
systemctl enable osqueryd

重新啟動rsyslog服務

systemctl restart rsyslog

osquery基本配置完成。

步驟四:使用osquery配置檔案完整性監控(FIM)

Osquery使用Linux和FSEvents提供Linux和MacOS Darwin上的檔案完整性監控。簡單地的說,它使用'file_path'檢測定義目錄上的任何一個檔案的更改,然後將所有活動儲存到file_events表中。

在這個步驟中,我們將配置Osquery來使用自定義FIM包監視重要目錄,如HOST、SSH目錄,以及tmp和www web根目錄等。

轉到“/usr/share/osquery/packs”目錄,建立一個新的軟體包配置檔案“fim.conf”。

cd / usr / share / osquery / packs 
vim fim.conf

配置如下:

{
  "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/%%"
      ]
  }
}

儲存並退出

返回到 '/etc/osquery'配置目錄,編輯osquery.conf檔案。

cd /etc/osquery/
vim osquery.conf

在 'packs' 中新增檔案完整性監控包配置。

   "packs": {
        "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf",
        "fim": "/usr/share/osquery/packs/fim.conf"
    }

儲存並退出,然後重新啟動osqueryd服務。

systemctl restart osqueryd

注意: 繼續使用JSON linter“  http://jsonlint.com/  ” 檢查JSON配置檔案,確保沒有錯誤。

步驟五:測試

我們將通過在定義的目錄“home”和“www”上建立一個新檔案來測試檔案完整性監控包。

轉到“/var/www/”目錄,建立一個名為“howtoforge.md”的新檔案。

cd /var/www/
touch howtoforge.md

轉到'/ home / youruser /'目錄並建立一個名為'hakase-labs.md'的新檔案。

cd / home / vagrant / 
touch hakase-labs.md

使用實時互動模式osqueryi 和osquery 的結果日誌檢查所有日誌監控。

osqueryi

執行下面的osqueryi命令。

osqueryi --config-path /etc/osquery/osquery.conf

檢查'file_events'表中檔案更改的所有日誌。

對於全域性更改。

select * from file_events;

對於'home'目錄。

select target_path, category, action, atime, ctime, mtime from file_events WHERE category="home";

對於'www' web root目錄。

select target_path, category, action, atime, ctime, mtime from file_events WHERE category="www";

osqueryd 結果日誌

轉到'/ var / log / osquery'目錄,您將獲得'osqueryd.results.log'檔案。

cd / var / log / osquery / 
ls -lah osqueryd.results.log

使用'grep'命令篩選osquery日誌。

grep -rin howtoforge.md osqueryd.results.log 
grep -rin hakase-labs.md osqueryd.results.log

你將看到所有已建立的檔案資訊

使用osquery在Linux Server Ubuntu和CentOS上安裝和配置檔案完整性監控(FIM)已成功完成。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31542119/viewspace-2213905/,如需轉載,請註明出處,否則將追究法律責任。

相關文章