본문 바로가기
운영체제 (LNX,WIN)

Osquery Augeas 렌즈 활용 시스템 설정을 SQL 쿼리로 조회 분석 자동화

by 날으는물고기 2025. 3. 5.

Osquery Augeas 렌즈 활용 시스템 설정을 SQL 쿼리로 조회 분석 자동화

728x90

Osquery는 다양한 시스템 정보를 SQL 형태로 조회할 수 있도록 지원하는 오픈소스 도구입니다. 그중 Augeas를 활용하여 시스템 설정 파일을 구조화된 데이터로 변환하고 SQL 쿼리로 조회할 수 있습니다.

Augeas란?

Augeas는 Linux 및 Unix 시스템의 구성 파일을 파싱, 수정, 검증하는 라이브러리입니다. 시스템의 다양한 설정 파일을 구조화된 데이터 형태로 변환하고, 이를 안전하게 수정할 수 있도록 지원합니다.

1. Osquery에서 Augeas는 기본 활성화인가?

Osquery는 기본적으로 내장된 Augeas 렌즈를 사용하여 주요 설정 파일을 파싱할 수 있습니다. 하지만, /usr/share/osquery/lenses/ 폴더에 있는 렌즈 파일들은 자동으로 로드되지 않으며, 필요할 경우 설정을 통해 직접 추가해야 합니다.

2. 기본 동작 방식

  • 기본적으로 활성화된 내장 렌즈 사용
    • Osquery는 augeas 테이블을 제공하며, 특정 시스템 설정 파일을 파싱할 수 있습니다.
    • /usr/share/osquery/lenses/ 경로의 파일들은 Osquery가 자동으로 참조하지 않습니다.
  • 추가적인 설정 없이도 내장된 규칙을 통해 일부 주요 파일 조회 가능
    SELECT * FROM augeas LIMIT 10;
    위와 같이 실행하면 기본적으로 로드된 설정 파일 목록을 확인할 수 있습니다.

3. 기본적인 활용법

Osquery의 augeas 테이블을 활용하면 다양한 설정 파일을 SQL로 조회할 수 있습니다.

3.1. SSH 설정 확인

SELECT * FROM augeas WHERE path = '/etc/ssh/sshd_config';
  • /etc/ssh/sshd_config 파일의 내용을 SQL 형태로 조회할 수 있습니다.

3.2. DNS 설정 확인

SELECT * FROM augeas WHERE path = '/etc/resolv.conf';
  • resolv.conf 파일의 내용을 확인하여 DNS 설정을 파악할 수 있습니다.

3.3. 사용자 계정 정보 확인

SELECT * FROM augeas WHERE path = '/etc/passwd';
  • /etc/passwd 파일을 SQL 형식으로 조회하여 사용자 정보를 확인할 수 있습니다.

4. 추가 설정 방법

기본 내장 렌즈 외에도 /usr/share/osquery/lenses/ 폴더에 있는 추가적인 .aug 렌즈 파일을 활용할 수 있습니다.

4.1. /etc/osquery/osquery.conf 설정 추가

커스텀 렌즈를 적용하려면 Osquery 설정 파일에 다음 내용을 추가합니다.

{
  "options": {
    "augeas_lenses": "/usr/share/osquery/lenses/"
  }
}
  • 이 설정을 추가하면 /usr/share/osquery/lenses/ 경로의 렌즈 파일을 로드하여 사용할 수 있습니다.

4.2. Osquery 서비스 재시작

설정을 변경한 후 Osquery를 재시작합니다.

sudo systemctl restart osqueryd

또는

sudo service osqueryd restart

4.3. 추가된 렌즈 확인

설정이 제대로 적용되었는지 확인하기 위해 다시 Osquery에서 augeas 테이블을 조회합니다.

SELECT * FROM augeas LIMIT 10;

또는 특정 파일이 제대로 파싱되는지 확인합니다.

SELECT * FROM augeas WHERE path = '/etc/nginx/nginx.conf';
  • /etc/nginx/nginx.conf 파일이 로드되었는지 확인할 수 있습니다.

5. Osquery와 Augeas를 활용한 보안 점검 예제

Osquery의 augeas 테이블을 활용하여 보안 점검을 자동화할 수 있습니다.

5.1. SSH Root 로그인 차단 확인

SELECT * FROM augeas WHERE path = '/etc/ssh/sshd_config' AND value = 'PermitRootLogin no';
  • SSH 설정에서 PermitRootLoginno로 설정되어 있는지 확인합니다.

5.2. 패스워드 최소 길이 정책 확인

SELECT * FROM augeas WHERE path = '/etc/login.defs' AND key = 'PASS_MIN_LEN';
  • 시스템의 최소 패스워드 길이 설정을 확인합니다.

5.3. Sudoers 파일 확인

SELECT * FROM augeas WHERE path = '/etc/sudoers';
  • /etc/sudoers 파일의 내용을 구조화된 형태로 조회하여, 특정 사용자의 sudo 권한을 점검할 수 있습니다.

6. 정리

  1. Osquery는 기본적으로 내장된 Augeas 렌즈를 사용하여 주요 설정 파일을 분석할 수 있습니다.
  2. /usr/share/osquery/lenses/ 폴더의 렌즈 파일들은 자동으로 로드되지 않으며, 추가 설정이 필요합니다.
  3. augeas 테이블을 활용하여 다양한 설정 파일을 SQL 쿼리로 분석할 수 있습니다.
  4. 추가 렌즈 적용이 필요한 경우, /etc/osquery/osquery.conf 설정을 수정하여 augeas_lenses 옵션을 추가해야 합니다.
  5. 보안 점검 자동화를 위해 augeas 테이블을 활용하여 설정값을 직접 조회할 수 있습니다.

7. 요약 명령어

작업 명령어
기본적으로 로드된 설정 파일 목록 조회 SELECT * FROM augeas LIMIT 10;
특정 설정 파일 조회 (예: SSH 설정) SELECT * FROM augeas WHERE path = '/etc/ssh/sshd_config';
추가적인 렌즈 적용 설정 (/etc/osquery/osquery.conf) {"options": {"augeas_lenses": "/usr/share/osquery/lenses/"}}
Osquery 재시작 sudo systemctl restart osqueryd
SSH Root 로그인 허용 여부 확인 SELECT * FROM augeas WHERE path = '/etc/ssh/sshd_config' AND value = 'PermitRootLogin no';
패스워드 최소 길이 확인 SELECT * FROM augeas WHERE path = '/etc/login.defs' AND key = 'PASS_MIN_LEN';

이렇게 Osquery에서 Augeas를 활용하여 시스템 설정 파일을 SQL로 조회하고, 필요할 경우 추가적인 렌즈를 적용하여 보안 점검 및 분석을 자동화할 수 있습니다. Osquery는 기본적으로 Augeas 렌즈를 내장하고 있으며, /usr/share/osquery/lenses/ 디렉터리에 있는 파일들은 샘플로 제공되는 참고용 파일입니다. 즉, osquery가 직접 해당 경로의 파일을 자동으로 로드하는 것은 아닙니다.

Osquery에서 Augeas 렌즈 활용 방식

  1. Osquery는 기본적으로 Augeas 기반의 설정 파일 분석 기능을 포함하고 있습니다.
  2. /usr/share/osquery/lenses/ 경로에 있는 .aug 파일들은 Osquery가 자동으로 로드하는 것이 아니라, 사용자가 필요하면 osquery.conf 또는 osquery.flags 설정을 통해 직접 적용할 수 있습니다.
  3. /etc/osquery/osquery.conf 또는 /etc/osquery/osquery.flagsAugeas 플러그인을 활성화하면 해당 렌즈를 활용할 수 있습니다.

Lenses 폴더의 역할

  • lenses 폴더에 있는 .aug 파일들은 Augeas 렌즈(Lenses) 라고 불리는 설정 파일입니다.
  • .aug 파일은 특정 구성 파일의 구조를 정의하고, 이를 파싱하고 조작할 수 있도록 합니다.
  • 예를 들어, sshd.aug 파일은 /etc/ssh/sshd_config 파일을 읽고 수정하는 규칙을 정의합니다.
  • resolv.aug 파일은 /etc/resolv.conf 파일을 관리하는 역할을 합니다.

Osquery에서의 활용

Osquery는 시스템의 다양한 정보를 SQL 쿼리 형식으로 가져올 수 있도록 해주는 도구입니다. Osquery에서는 Augeas를 사용하여 다양한 설정 파일을 구조화된 데이터로 변환하여 SQL 기반 쿼리로 조회할 수 있도록 지원합니다.

예제: SSH 설정을 Osquery로 확인

SELECT * FROM augeas WHERE path = '/etc/ssh/sshd_config';

위의 쿼리를 실행하면 sshd_config의 내용을 구조화된 형태로 조회할 수 있습니다.

예제: DNS 설정 확인

SELECT * FROM augeas WHERE path = '/etc/resolv.conf';

이렇게 하면 resolv.conf 파일의 DNS 설정을 분석할 수 있습니다.

주요 Augeas Lenses 예시

아래는 몇 가지 중요한 .aug 파일과 해당 파일이 처리하는 설정 파일입니다.

렌즈 파일 (.aug) 처리하는 설정 파일
sshd.aug /etc/ssh/sshd_config (SSH 데몬 설정)
resolv.aug /etc/resolv.conf (DNS 설정)
passwd.aug /etc/passwd (사용자 계정 정보)
shadow.aug /etc/shadow (암호화된 사용자 비밀번호)
sudoers.aug /etc/sudoers (Sudo 권한 설정)
hosts.aug /etc/hosts (호스트 네임 설정)
sysctl.aug /etc/sysctl.conf (커널 매개변수 설정)
iptables.aug /etc/sysconfig/iptables (방화벽 설정)

Osquery에서 lenses 폴더의 .aug 파일들은 Augeas를 통해 시스템 설정 파일을 파싱하고 SQL 쿼리로 조회할 수 있도록 지원하는 역할을 합니다. 이를 활용하면 다양한 설정 파일을 안전하게 분석하고 관리할 수 있습니다. osquerydsystemd 기반으로 실행되고 있는지 확인하려면 journalctl 명령어를 사용하여 관련 로그를 조회할 수 있습니다.

osqueryd 서비스 상태 확인

먼저 systemctl을 사용하여 osqueryd 서비스가 정상적으로 실행 중인지 확인합니다.

systemctl status osqueryd

정상적으로 실행 중이라면 Active: active (running) 상태로 표시됩니다.

osqueryd 서비스 로그 조회 (journalctl)

journalctl을 사용하여 osqueryd 서비스의 실행 로그를 조회할 수 있습니다.

(1) 최근 osqueryd 로그 출력

journalctl -u osqueryd --no-pager

--no-pager 옵션을 사용하면 페이지 네비게이션 없이 한 번에 모든 로그를 출력합니다.

(2) 실시간 로그 모니터링

journalctl -u osqueryd -f

-f 옵션을 사용하면 실시간으로 osqueryd 서비스의 로그가 출력됩니다.

(3) 특정 날짜 이후의 로그 조회

예를 들어, 지난 1시간 동안의 로그를 확인하고 싶다면

journalctl -u osqueryd --since "1 hour ago"

특정 날짜 이후의 로그를 확인하려면

journalctl -u osqueryd --since "2024-02-20 00:00:00"

(4) 부팅 이후 로그 조회

journalctl -u osqueryd -b

이 명령어는 현재 부팅된 이후의 osqueryd 로그만 출력합니다.

(5) 에러 메시지만 필터링

journalctl -u osqueryd -p err

-p err 옵션을 사용하면 Error 이상의 심각도를 가진 로그만 출력합니다.

osqueryd 서비스가 비정상적일 경우 추가 확인 방법

(1) 서비스 자동 시작 설정 확인

systemctl is-enabled osqueryd

출력 값이 enabled이면 부팅 시 자동 실행이 설정되어 있습니다.

(2) 실행 중인 osqueryd 프로세스 확인

ps aux | grep osqueryd

(3) 설정 파일 확인

osquery 설정 파일(osquery.flags)의 경로를 확인하여 올바르게 설정되어 있는지 점검합니다.

cat /etc/osquery/osquery.flags

(4) 설정 변경 후 서비스 재시작

설정을 수정했다면, osqueryd를 다시 시작하고 로그를 확인하세요.

systemctl restart osqueryd
journalctl -u osqueryd -f

부가적인 osqueryd 로그 분석

osqueryd가 실행되면서 생성하는 로그 파일을 직접 확인하는 것도 방법입니다.

cat /var/log/osquery/osqueryd.INFO
cat /var/log/osquery/osqueryd.WARNING
cat /var/log/osquery/osqueryd.ERROR

이러한 방법을 통해 osqueryd의 실행 상태를 journalctl을 통해 점검하는 방법과 추가적인 확인 절차로 특정 문제에 대한 분석을 수행할 수 있습니다.

728x90

댓글