파일 모니터링 · 5 min read · Nov 03, 2025
Linux에서 osquery를 사용하여 파일 무결성 모니터링(FIM) 설정하는 방법

Osquery는 오픈 소스 운영 체제 계측, 모니터링 및 분석 도구입니다. Facebook에서 개발하였으며, 운영 체제를 SQL 기반 쿼리를 사용하여 쿼리할 수 있는 고성능 관계형 데이터베이스로 노출합니다.
Osquery는 다중 플랫폼 소프트웨어로, Linux, Windows, MacOS 및 FreeBSD에 설치할 수 있습니다. SQL 기반 쿼리를 사용하여 이러한 운영 체제의 프로필, 성능, 보안 점검 등을 탐색할 수 있습니다.
이 튜토리얼에서는 osquery를 사용하여 파일 무결성 모니터링(FIM)을 설정하는 방법을 보여줍니다. Linux 운영 체제인 Ubuntu 18.04와 CentOS 7을 사용할 것입니다.
필수 조건
- Linux (Ubuntu 또는 CentOS)
- 루트 권한
- 첫 번째 osquery 가이드를 완료했음
우리가 할 일
- Linux 서버에 osquery 설치
- osquery에 대한 Syslog 소비 활성화
- 기본 osquery 구성
- osquery를 사용하여 파일 무결성 모니터링 구성
- 테스트
1단계 - Linux 서버에 osquery 설치
Osquery는 모든 플랫폼 설치를 위한 자체 저장소를 제공하며, 우리가 할 첫 번째 단계는 공식 osquery 저장소에서 osquery 패키지를 설치하는 것입니다.
Ubuntu에서
osquery 키를 시스템에 추가합니다.
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEYosquery 저장소를 추가하고 패키지를 설치합니다.
sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
sudo apt install osquery -yCentOS에서
osquery 키를 시스템에 추가합니다.
curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osqueryosquery 저장소를 추가하고 활성화한 후 패키지를 설치합니다.
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-utils2단계 - osquery에서 Syslog 소비 활성화
Osquery는 Apple MacOS에서 Apple System Log(ASL)를 사용하여 시스템 로그를 읽거나 소비하는 기능을 제공하며, Linux에서는 syslog를 사용합니다.
이 단계에서는 rsyslog를 통해 osquery의 syslog 소비를 활성화합니다.
Ubuntu에서
아래의 apt 명령을 사용하여 rsyslog 패키지를 설치합니다.
sudo apt install rsyslog -yCentOS에서
아래의 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")저장하고 종료합니다.

3단계 - 기본 osquery 구성
osquery의 기본 구성은 ‘osquery.conf’이며, 일반적으로 ‘/etc/osquery’ 디렉토리에 위치합니다. osquery 구성 샘플은 ‘/usr/share/osquery/osquery.conf’에 있으며, osquery 팩 구성 샘플도 있습니다.
이 단계에서는 osquery 구성 요소에 대해 배우고, 사용자 지정 osquery 구성을 생성한 후 osqueryd를 서비스로 배포합니다.
osquery 구성은 JSON 파일 형식으로 되어 있으며, 아래에 설명된 osquery 구성 사양을 포함합니다.
- 옵션: osqueryd CLI 명령의 일부로 앱 시작 및 초기화를 결정합니다.
- 스케줄: 예약된 쿼리 이름의 흐름을 쿼리 세부정보로 정의합니다.
- 장식자: 결과 및 스냅샷 로그에 추가 “장식”을 추가하는 데 사용됩니다.
- 팩: 예약된 쿼리 그룹입니다.
- 기타: 파일 경로, YARA, Prometheus, 뷰, EC2, Chef 구성.
‘/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/packs/osquery-monitoring.conf"
}
}저장하고 종료합니다.
참고:
- ‘filesystem’을 구성 및 로거 플러그인으로 사용하고 있습니다.
- 로거 경로를 ‘/var/log/osquery’ 디렉토리로 정의합니다.
- syslog 파이프를 ‘/var/syslog/syslog_pipe’ 파일로 활성화합니다.
- 스케줄러에서 crontab, 시스템 정보 및 ssh 로그인을 확인하기 위해 세 가지 쿼리를 정의합니다.
- ‘osquery-monitoring’이라는 osquery 팩을 활성화하고, 팩 파일은 ‘/usr/share/osquery/packs’ 디렉토리에 위치합니다.
이제 osqueryd 데몬 서비스를 시작하고 시스템 부팅 시마다 실행되도록 활성화합니다.
systemctl start osqueryd
systemctl enable osqueryd그리고 rsyslog 서비스를 재시작합니다.
systemctl restart rsyslog기본 osquery 구성이 완료되었습니다.

4단계 - osquery를 사용하여 파일 무결성 모니터링(FIM) 구성
Osquery는 inotify 및 FSEvents를 사용하여 Linux 및 MacOS Darwin에서 파일 무결성 모니터링을 제공합니다. 간단히 말해, ‘file_path’를 사용하여 정의된 디렉토리의 파일 변경 사항을 모니터링하고 감지한 후 모든 활동을 file_events 테이블에 저장합니다.
이 단계에서는 osquery를 구성하여 홈, ssh 디렉토리, tmp 및 www 웹 루트 디렉토리와 같은 중요한 디렉토리를 모니터링합니다. 사용자 지정 FIM 팩을 사용합니다.
‘/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 구성 파일을 계속 확인하고 오류가 없는지 확인합니다.
5단계 - 테스트
정의된 디렉토리 ‘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’ 웹 루트 디렉토리에 대해.
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해당 파일이 생성되었다는 정보를 확인할 수 있습니다.

Linux 서버 Ubuntu 및 CentOS에서 osquery를 사용하여 파일 무결성 모니터링(FIM)의 설치 및 구성이 성공적으로 완료되었습니다.
참고
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.