서버구축 (WEB,DB)

클라우드 환경 로그 MinIO 객체 저장소 기록 및 비정상 행위 모니터링

날으는물고기 2024. 10. 2. 00:46

MinIO를 클라우드 환경에서 로그 기록 및 참조 활용을 위해 구성하고, 인증 및 접근 액세스 로그를 기록하고 수집하여 비정상 행위를 모니터링하는 방법입니다.

1. MinIO 구성

MinIO는 객체 저장소로서 간편하게 설치 및 운영이 가능합니다. MinIO를 설치하는 방법은 여러 가지가 있지만, 여기서는 Docker를 이용한 설치 방법을 설명합니다.

docker run -p 9000:9000 --name minio \
  -e "MINIO_ROOT_USER=youraccesskey" \
  -e "MINIO_ROOT_PASSWORD=yoursecretkey" \
  -v /mnt/data:/data \
  -v /mnt/config:/root/.minio \
  quay.io/minio/minio server /data

2. 인증 및 접근 제어 설정

MinIO는 기본적으로 IAM 정책을 통해 접근 제어를 설정할 수 있습니다.

 

사용자 생성

mc admin user add myminio myuser mypassword

정책 생성

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketLocation",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::mybucket"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::mybucket/*"
      ]
    }
  ]
}

정책 적용

mc admin policy add myminio readwrite /path/to/policy.json
mc admin user policy set myminio readwrite user=myuser

3. 접근 로그 설정

MinIO는 서버 접근 로그를 파일로 기록하거나 중앙 로그 서버로 전송할 수 있습니다.

 

파일로 접근 로그 기록

MinIO의 구성 파일(config.json)에서 logger 섹션을 수정하여 로그 파일을 설정할 수 있습니다.

{
  "logger": {
    "console": {
      "enabled": true
    },
    "file": {
      "enabled": true,
      "filename": "/path/to/logs/minio.log"
    }
  }
}

중앙 로그 서버로 전송 (예: Fluentd)

Fluentd와 같은 중앙 로그 수집기를 이용하여 MinIO 로그를 수집할 수 있습니다. Fluentd 설정 예시는 다음과 같습니다.

<source>
  @type tail
  path /path/to/logs/minio.log
  pos_file /var/log/td-agent/minio.log.pos
  tag minio.access
  format json
</source>

<match minio.access>
  @type forward
  <server>
    name your-log-server
    host your-log-server-host
    port 24224
  </server>
</match>

4. 비정상 행위 모니터링

수집된 로그를 분석하여 비정상 행위를 모니터링하는 방법은 Wazuh를 이용하여 MinIO 접근 로그를 분석하고 비정상 행위를 탐지할 수 있습니다. Wazuh의 구성 파일(ossec.conf)에 MinIO 로그를 추가합니다.

<localfile>
  <log_format>json</log_format>
  <location>/path/to/logs/minio.log</location>
</localfile>

Wazuh 규칙을 통해 비정상 행위를 탐지하도록 설정합니다.

<group name="minio_access">
  <rule id="100001" level="5">
    <decoded_as>json</decoded_as>
    <field name="action">"Deny"</field>
    <description>MinIO Access Denied</description>
  </rule>
</group>

5. 결과 시각화 및 알림

TheHive를 이용하여 비정상 행위 탐지 결과를 시각화하고 알림을 설정할 수 있습니다. Wazuh와 TheHive를 연동하여 탐지된 이벤트를 TheHive로 전송하고, TheHive에서 분석 및 대응합니다.

# TheHive 설정 파일에 Wazuh 연동 설정 추가
{
  "name": "Wazuh",
  "description": "Wazuh Alert",
  "enabled": true,
  "interval": 60,
  "index": "wazuh-alerts-*",
  "query": {
    "bool": {
      "must": [
        { "match": { "agent.name": "minio-server" } },
        { "range": { "@timestamp": { "gte": "now-1d/d", "lt": "now/d" } } }
      ]
    }
  }
}

이와 같은 설정을 통해 MinIO의 접근 로그를 효과적으로 수집하고 비정상 행위를 모니터링할 수 있습니다. 더 궁금한 사항이나 추가적인 설정이 필요하다면 알려주세요.

728x90