Synology 로그 수집
개요
이 파서는 grok 패턴을 사용하여 Synology SYSLOG 메시지에서 필드를 추출하여 UDM에 매핑합니다. 다양한 로그 형식을 처리하고, 사용자 로그인 및 리소스 액세스를 식별하고, 키워드를 기반으로 이벤트를 분류하여 공급업체 및 제품 정보로 데이터를 보강합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Synology DSM에 대한 액세스 권한
피드 설정
피드를 구성하려면 다음 단계를 따르세요.
- SIEM 설정 > 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 다음 페이지에서 단일 피드 구성을 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다(예: Synology 로그).
- 소스 유형으로 웹훅을 선택합니다.
- 로그 유형으로 Synology를 선택합니다.
- 다음을 클릭합니다.
- 선택사항: 다음 입력 파라미터의 값을 지정합니다.
- 분할 구분 기호: 로그 줄을 구분하는 데 사용되는 구분 기호입니다(예:
\n
). - 애셋 네임스페이스: 애셋 네임스페이스입니다.
- 수집 라벨: 이 피드의 이벤트에 적용된 라벨입니다.
- 분할 구분 기호: 로그 줄을 구분하는 데 사용되는 구분 기호입니다(예:
- 다음을 클릭합니다.
- 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.
- 보안 비밀 키 생성을 클릭하여 이 피드를 인증하기 위한 보안 비밀 키를 생성합니다.
- 비밀 키를 복사하여 저장합니다. 이 보안 비밀 키는 다시 볼 수 없습니다. 필요한 경우 새 보안 비밀 키를 재생성할 수 있지만 이 작업으로 인해 이전 보안 비밀 키는 더 이상 사용할 수 없게 됩니다.
- 세부정보 탭의 엔드포인트 정보 필드에서 피드 엔드포인트 URL을 복사합니다. 클라이언트 애플리케이션에서 이 엔드포인트 URL을 지정해야 합니다.
- 완료를 클릭합니다.
웹훅 피드에 대한 API 키 만들기
Google Cloud 콘솔 > 사용자 인증 정보로 이동합니다.
사용자 인증 정보 만들기를 클릭한 후 API 키를 선택합니다.
Google Security Operations API에 대한 API 키 액세스를 제한합니다.
엔드포인트 URL 지정
- 클라이언트 애플리케이션에서 웹훅 피드에 제공된 HTTPS 엔드포인트 URL을 지정합니다.
다음 형식의 커스텀 헤더의 일부로 API 키와 보안 비밀 키를 지정하여 인증을 사용 설정합니다.
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
권장사항: URL에 지정하는 대신 API 키를 헤더로 지정하세요.
웹훅 클라이언트가 커스텀 헤더를 지원하지 않는 경우 쿼리 파라미터를 다음 형식으로 사용하여 API 키와 보안 비밀 키를 지정할 수 있습니다.
ENDPOINT_URL?key=API_KEY&secret=SECRET
다음을 바꿉니다.
ENDPOINT_URL
: 피드 엔드포인트 URL입니다.API_KEY
: Google Security Operations에 인증하기 위한 API 키입니다.SECRET
: 피드를 인증하기 위해 생성한 보안 비밀 키입니다.
Google SecOps용 Synology에서 웹훅 만들기
- Synology NAS에서 DiskStation Manager (DSM)에 로그인합니다.
- 제어판 > 알림 > 웹훅으로 이동합니다.
- 추가를 클릭합니다.
다음 매개변수의 값을 지정합니다.
- 제공업체: 맞춤을 선택합니다.
규칙: 웹훅에서 보낼 메시지 유형을 선택합니다.
다음을 클릭합니다.
공급업체 이름: 웹훅에 고유한 이름을 지정합니다 (예: Google SecOps).
제목: 알림 메시지의 접두사로 추가됩니다.
Webhook URL: ENDPOINT_URL을 입력합니다.
알림 메시지를 영어로 보내기를 선택합니다.
다음을 클릭합니다.
HTTP 메서드: POST를 선택합니다.
SECRET 값을 사용하여 X-Webhook-Access-Key 헤더를 추가합니다.
API_KEY 값을 사용하여 헤더 X-goog-api-key를 추가합니다.
적용을 클릭합니다.
적용을 클릭하여 웹훅을 저장합니다.
UDM 매핑 테이블
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
app |
target.application |
grok 필터로 추출된 app 필드 값이 target.application 에 할당됩니다. |
desc |
metadata.description |
grok 필터로 추출된 desc 필드 값이 metadata.description 에 할당됩니다. |
desc |
target.file.names |
desc 필드에 'Closed)'가 포함된 경우 괄호 안의 파일 경로가 추출되어 target.file.names 에 할당됩니다. desc 필드에 'accessed shared folder'가 포함된 경우 괄호 안의 폴더 경로가 추출되어 target.file.names 에 할당됩니다. |
host |
principal.hostname |
host_and_ip 필드에서 grok 필터로 추출된 host 필드의 값이 principal.hostname 에 할당됩니다. |
host_and_ip |
principal.ip |
host_and_ip 필드가 파싱됩니다. IP 주소 (ip1 )가 발견되면 principal.ip 에 할당됩니다. 두 번째 IP 주소 (ip2 )가 발견되면 principal.ip 에도 추가됩니다. |
intermediary_host |
intermediary.hostname |
grok 필터로 추출된 intermediary_host 필드 값이 intermediary.hostname 에 할당됩니다. 메일에 '로그인' 또는 '로그인'이 포함된 경우 extensions 내에 빈 auth 객체가 생성됩니다. 원시 로그의 collection_time 필드의 타임스탬프가 사용됩니다. 메시지에 '로그인'이 포함된 경우 값이 USER_LOGIN 로 설정됩니다. 메시지에 'accessed shared folder'가 포함된 경우 값은 USER_RESOURCE_ACCESS 로 설정됩니다. 그렇지 않으면 기본값은 GENERIC_EVENT 입니다. grok 필터로 추출된 type 필드 값이 metadata.product_event_type 에 할당됩니다. 값은 'SYNOLOGY'로 정적으로 설정됩니다. 값은 'SYNOLOGY'로 정적으로 설정됩니다. 메시지에 '서명 실패'가 포함된 경우 값은 BLOCK 로 설정됩니다. 메시지에 'success'가 포함된 경우 값이 ALLOW 로 설정됩니다. severity 필드 (grok으로 추출됨)가 'INFO'이면 값이 INFORMATIONAL 로 설정됩니다. |
severity |
security_result.severity |
grok 필터로 추출된 severity 필드 값은 security_result.severity 를 결정하는 데 사용됩니다. 값이 'INFO'이면 'INFORMATIONAL'에 매핑됩니다. |
time |
metadata.event_timestamp |
grok 필터로 추출된 time 필드가 파싱되어 타임스탬프로 변환됩니다. 이 타임스탬프는 metadata.event_timestamp 에 할당됩니다. |
type |
metadata.product_event_type |
grok 필터로 추출된 type 필드 값이 metadata.product_event_type 에 할당됩니다. |
user |
target.administrative_domain |
user 필드에서 도메인이 추출되면 target.administrative_domain 에 할당됩니다. |
user |
target.user.userid |
user 필드의 사용자 이름 부분('\'가 있는 경우 그 앞)이 추출되어 target.user.userid 에 할당됩니다. 원시 로그의 collection_time 필드의 타임스탬프가 사용됩니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.