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가 자동으로 참조하지 않습니다.
- 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 설정에서
PermitRootLogin
이no
로 설정되어 있는지 확인합니다.
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. 정리
- Osquery는 기본적으로 내장된 Augeas 렌즈를 사용하여 주요 설정 파일을 분석할 수 있습니다.
/usr/share/osquery/lenses/
폴더의 렌즈 파일들은 자동으로 로드되지 않으며, 추가 설정이 필요합니다.augeas
테이블을 활용하여 다양한 설정 파일을 SQL 쿼리로 분석할 수 있습니다.- 추가 렌즈 적용이 필요한 경우,
/etc/osquery/osquery.conf
설정을 수정하여augeas_lenses
옵션을 추가해야 합니다. - 보안 점검 자동화를 위해
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 렌즈 활용 방식
- Osquery는 기본적으로 Augeas 기반의 설정 파일 분석 기능을 포함하고 있습니다.
/usr/share/osquery/lenses/
경로에 있는.aug
파일들은 Osquery가 자동으로 로드하는 것이 아니라, 사용자가 필요하면osquery.conf
또는osquery.flags
설정을 통해 직접 적용할 수 있습니다./etc/osquery/osquery.conf
또는/etc/osquery/osquery.flags
에 Augeas 플러그인을 활성화하면 해당 렌즈를 활용할 수 있습니다.
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 쿼리로 조회할 수 있도록 지원하는 역할을 합니다. 이를 활용하면 다양한 설정 파일을 안전하게 분석하고 관리할 수 있습니다. osqueryd
가 systemd
기반으로 실행되고 있는지 확인하려면 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
을 통해 점검하는 방법과 추가적인 확인 절차로 특정 문제에 대한 분석을 수행할 수 있습니다.
댓글