VMware vCenter ๋กœ๊ทธ ์ˆ˜์ง‘

๋‹ค์Œ์—์„œ ์ง€์›:

์ด ๋ฌธ์„œ์—์„œ๋Š” Bindplane์„ ์‚ฌ์šฉํ•˜์—ฌ VMware vCenter ๋กœ๊ทธ๋ฅผ Google Security Operations๋กœ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์„œ๋Š” ์›์‹œ ๋กœ๊ทธ๋ฅผ ํ†ตํ•ฉ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ (UDM)๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ JSON์œผ๋กœ ํŒŒ์‹ฑํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ , ์‹คํŒจํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ syslog ๋ฉ”์‹œ์ง€๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ grok ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„๋“œ๋ฅผ ์ถ”์ถœํ•˜๊ณ  UDM ์Šคํ‚ค๋งˆ์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

๋‹ค์Œ ๊ธฐ๋ณธ ์š”๊ฑด์ด ์ถฉ์กฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • Google SecOps ์ธ์Šคํ„ด์Šค
  • Windows 2016 ์ด์ƒ ๋˜๋Š” systemd๊ฐ€ ์„ค์น˜๋œ Linux ํ˜ธ์ŠคํŠธ
  • ํ”„๋ก์‹œ ๋’ค์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฉํ™”๋ฒฝ ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ๋Š”์ง€ ํ™•์ธ
  • VMware vCenter์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ

Google SecOps ์ˆ˜์ง‘ ์ธ์ฆ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ

  1. Google SecOps ์ฝ˜์†”์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.
  2. SIEM ์„ค์ • > ์ˆ˜์ง‘ ์—์ด์ „ํŠธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ˆ˜์ง‘ ์ธ์ฆ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. Bindplane์ด ์„ค์น˜๋  ์‹œ์Šคํ…œ์— ํŒŒ์ผ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

Google SecOps ๊ณ ๊ฐ ID ๊ฐ€์ ธ์˜ค๊ธฐ

  1. Google SecOps ์ฝ˜์†”์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.
  2. SIEM ์„ค์ • > ํ”„๋กœํ•„๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  3. ์กฐ์ง ์„ธ๋ถ€์ •๋ณด ์„น์…˜์—์„œ ๊ณ ๊ฐ ID๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

Bindplane ์—์ด์ „ํŠธ ์„ค์น˜

๋‹ค์Œ ์•ˆ๋‚ด์— ๋”ฐ๋ผ Windows ๋˜๋Š” Linux ์šด์˜์ฒด์ œ์— Bindplane ์—์ด์ „ํŠธ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

Windows ์„ค์น˜

  1. ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ ๋˜๋Š” PowerShell์„ ๊ด€๋ฆฌ์ž๋กœ ์—ฝ๋‹ˆ๋‹ค.
  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux ์„ค์น˜

  1. ๋ฃจํŠธ ๋˜๋Š” sudo ๊ถŒํ•œ์œผ๋กœ ํ„ฐ๋ฏธ๋„์„ ์—ฝ๋‹ˆ๋‹ค.
  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

์ถ”๊ฐ€ ์„ค์น˜ ๋ฆฌ์†Œ์Šค

์ถ”๊ฐ€ ์„ค์น˜ ์˜ต์…˜์€ ์„ค์น˜ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Syslog๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ Google SecOps๋กœ ์ „์†กํ•˜๋„๋ก Bindplane ์—์ด์ „ํŠธ ๊ตฌ์„ฑ

  1. ๊ตฌ์„ฑ ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค.
    • config.yaml ํŒŒ์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ Linux์—์„œ๋Š” /etc/bindplane-agent/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๊ณ  Windows์—์„œ๋Š” ์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ (์˜ˆ: nano, vi, ๋ฉ”๋ชจ์žฅ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.
  2. ๋‹ค์Œ๊ณผ ๊ฐ™์ด config.yaml ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            log_type: 'VMWARE_VCENTER'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
    • ์ธํ”„๋ผ์— ํ•„์š”ํ•œ ๋Œ€๋กœ ํฌํŠธ์™€ IP ์ฃผ์†Œ๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    • <customer_id>๋ฅผ ์‹ค์ œ ๊ณ ๊ฐ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    • Google SecOps ์ˆ˜์ง‘ ์ธ์ฆ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ ์„น์…˜์—์„œ ์ธ์ฆ ํŒŒ์ผ์ด ์ €์žฅ๋œ ๊ฒฝ๋กœ๋กœ /path/to/ingestion-authentication-file.json๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

Bindplane ์—์ด์ „ํŠธ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์—ฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

  • Linux์—์„œ Bindplane ์—์ด์ „ํŠธ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    sudo systemctl restart bindplane-agent
    
  • Windows์—์„œ Bindplane ์—์ด์ „ํŠธ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ์„œ๋น„์Šค ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    net stop BindPlaneAgent && net start BindPlaneAgent
    

VMware vCenter์šฉ Syslog ๊ตฌ์„ฑ

  1. vCenter Server ๊ด€๋ฆฌ ์›น UI์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.
  2. Syslog > Forwarding Configuration > Configure๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  3. Create Forwarding Configuration(์ „๋‹ฌ ๊ตฌ์„ฑ ๋งŒ๋“ค๊ธฐ)์„ ์„ ํƒํ•˜๊ณ  Bindplane ์—์ด์ „ํŠธ IP ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  4. ํ”„๋กœํ† ์ฝœ ๋“œ๋กญ๋‹ค์šด์—์„œ ์‹ค์ œ Bindplane ์—์ด์ „ํŠธ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ UDP ๋˜๋Š” TCP๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  5. ํฌํŠธ ์„น์…˜์— Bindplane ์—์ด์ „ํŠธ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  6. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  7. ํ…Œ์ŠคํŠธ ๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ์ˆ˜์‹ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

UDM ๋งคํ•‘ ํ…Œ์ด๋ธ”

๋กœ๊ทธ ํ•„๋“œ UDM ๋งคํ•‘ ๋…ผ๋ฆฌ
Access Mask principal.process.access_mask 16์ง„์ˆ˜์—์„œ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Account Domain principal.administrative_domain
Account Name principal.user.userid
ApplicationProtocol additional.fields
Authentication Package security_result.about.resource.name
Client Address principal.ip, principal.asset.ip IP๋กœ ํŒŒ์‹ฑ๋ฉ๋‹ˆ๋‹ค.
Client Port principal.port ์ •์ˆ˜๋กœ ๋ณ€ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
cmd target.process.command_line
date ํƒ€์ž„์Šคํƒฌํ”„ yyyy-MM-dd๋กœ ํŒŒ์‹ฑ๋˜๊ณ  ๋‚ ์งœ๋กœ ํŒŒ์‹ฑ๋œ ์‹œ๊ฐ„๊ณผ yyyy-MM-dd HH:mm:ss๋กœ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.
date_time ํƒ€์ž„์Šคํƒฌํ”„ RFC 3339, TIMESTAMP_ISO8601, SYSLOGTIMESTAMP ํ˜•์‹์œผ๋กœ ๋‚ ์งœ๋กœ ํŒŒ์‹ฑ๋ฉ๋‹ˆ๋‹ค.
desc metadata.description
eventid metadata.product_event_type eventid - task๋กœ ์ž‘์—…๊ณผ ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
host_name principal.hostname, principal.asset.hostname
http_method network.http.method
ip target.ip, target.asset.ip
kv_data1 ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ํŒŒ์‹ฑ๋ฉ๋‹ˆ๋‹ค.
kv_data2 ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ํŒŒ์‹ฑ๋ฉ๋‹ˆ๋‹ค.
kv_msg1.cipher network.tls.cipher
kv_msg1.ctladdr intermediary.labels
kv_msg1.daemon security_result.about.labels
kv_msg1.from network.email.from mail_from์— @ ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์œผ๋ฉด @local์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
kv_msg1.msgid network.email.mail_id
kv_msg1.proto security_result.about.labels
kv_msg1.relay intermediary.hostname, intermediary.ip (HOSTNAME)์œผ๋กœ ํŒŒ์‹ฑ๋จ [IP] ๋˜๋Š” HOSTNAME. relay_domain์ด ์žˆ์œผ๋ฉด intermediary.hostname์œผ๋กœ ์„ค์ •ํ•˜๊ณ  relay_ip๊ฐ€ ์žˆ์œผ๋ฉด intermediary.ip๋กœ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.
kv_msg1.size network.sent_bytes ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜๋กœ ๋ณ€ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
kv_msg1.stat security_result.summary
kv_msg1.verify security_result.description, security_result.action kv_msg1.verify๊ฐ€ FAIL์ด๋ฉด security_result.action์ด BLOCK์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
kv_msg1.version network.tls.version
labels.log_type metadata.product_event_type
labels.net.host.ip principal.ip, principal.asset.ip
labels.net.host.port principal.port
labels.net.peer.ip target.ip, target.asset.ip
labels.net.peer.port target.port
labels.net.transport network.ip_protocol labels.net.transport๊ฐ€ TCP์ด๋ฉด TCP์ž…๋‹ˆ๋‹ค.
level security_result.severity ์ˆ˜์ค€์ด INFO/Informational/DEBUG/info/Information์ด๋ฉด INFORMATIONAL, ์ˆ˜์ค€์ด ERROR/error์ด๋ฉด ERROR, ์ˆ˜์ค€์ด WARNING์ด๋ฉด LOW์ž…๋‹ˆ๋‹ค.
log.file.path target.process.file.full_path
logName security_result.category_details
Logon Account principal.user.userid
Logon Type extensions.auth.mechanism logon_type์ด 2/Interactive์ด๋ฉด INTERACTIVE, logon_type์ด 3/8์ด๋ฉด NETWORK, logon_type์ด 4์ด๋ฉด BATCH, logon_type์ด 5์ด๋ฉด SERVICE, logon_type์ด 7์ด๋ฉด UNLOCK, logon_type์ด 9์ด๋ฉด NEW_CREDENTIALS, logon_type์ด 10์ด๋ฉด REMOTE_INTERACTIVE, logon_type์ด 11์ด๋ฉด CACHED_INTERACTIVE, ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” MECHANISM_UNSPECIFIED์ž…๋‹ˆ๋‹ค.
mail_from network.email.from mail_from์— @ ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์œผ๋ฉด @local์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
mail_to network.email.to mail_to์— @ ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์œผ๋ฉด @local์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
message grok ํŒจํ„ด์œผ๋กœ ํŒŒ์‹ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
namespace principal.namespace
port target.port ์ •์ˆ˜๋กœ ๋ณ€ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
process_id target.process.pid
providername principal.application
Relative Target Name target.file.full_path
resource.labels.project_id src.cloud.project.id
resource.type src.labels
response_status network.http.response_code ์ •์ˆ˜๋กœ ๋ณ€ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
sec_desc security_result.description
Security ID target.user.windows_sid
security_result_action_detail security_result.action_details
server_name target.hostname, target.asset.hostname
Share Name target.resource.name
Source Network Address principal.ip, principal.asset.ip IP๋กœ ํŒŒ์‹ฑ๋ฉ๋‹ˆ๋‹ค.
Source Port principal.port ์ •์ˆ˜๋กœ ๋ณ€ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
summary security_result.summary
target_host target.hostname, target.asset.hostname
target_url target.url
target_userid target.user.userid
time ํƒ€์ž„์Šคํƒฌํ”„ HH:mm:ss๋กœ ํŒŒ์‹ฑ๋˜๊ณ  ๋‚ ์งœ๋กœ ํŒŒ์‹ฑ๋œ ๊ฒฝ์šฐ yyyy-MM-dd HH:mm:ss๋กœ ๋‚ ์งœ์™€ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.
upn_name intermediary.url
URL target.url
User ID target.user.windows_sid
user_id principal.user.userid
UserAgent network.http.user_agent
metadata.event_type ๋ฉ”์‹œ์ง€์— API_HEALTH ๋˜๋Š” JobDispatcher๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ STATUS_UPDATE๋กœ ์„ค์ •ํ•˜๊ณ , ๋ฉ”์‹œ์ง€์— logged in as๊ฐ€ ํฌํ•จ๋˜๊ณ  target_userid๊ฐ€ ๋น„์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ USER_LOGIN์œผ๋กœ ์„ค์ •ํ•˜๊ณ , ๋ฉ”์‹œ์ง€์— Leave Validate๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ SCAN_HOST๋กœ ์„ค์ •ํ•˜๊ณ , ๋ฉ”์‹œ์ง€์— Getting IP Address from host๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ NETWORK_UNCATEGORIZED๋กœ ์„ค์ •ํ•˜๊ณ , ๋ฉ”์‹œ์ง€์— Wrote vpxd health๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ RESOURCE_WRITTEN์œผ๋กœ ์„ค์ •ํ•˜๊ณ , has_principal ๋ฐ has_target์ด true์ด๊ณ  application_protocol์ด ๋น„์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ NETWORK_HTTP๋กœ ์„ค์ •ํ•˜๊ณ , process_id ๋ฐ cmd๊ฐ€ ๋น„์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ PROCESS_LAUNCH๋กœ ์„ค์ •ํ•˜๊ณ , user_id๊ฐ€ ๋น„์–ด ์žˆ์ง€ ์•Š๊ฑฐ๋‚˜ eventid๊ฐ€ 4776์ธ ๊ฒฝ์šฐ USER_UNCATEGORIZED๋กœ ์„ค์ •ํ•˜๊ณ , eventid๊ฐ€ 4624/4768/4769์ธ ๊ฒฝ์šฐ USER_LOGIN์œผ๋กœ ์„ค์ •ํ•˜๊ณ , eventid๊ฐ€ 4634/4647์ธ ๊ฒฝ์šฐ USER_LOGOUT์œผ๋กœ ์„ค์ •ํ•˜๊ณ , eventid๊ฐ€ 5145์ธ ๊ฒฝ์šฐ USER_RESOURCE_ACCESS๋กœ ์„ค์ •ํ•˜๊ณ , host_name์ด ๋น„์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ STATUS_UPDATE๋กœ ์„ค์ •ํ•˜๊ณ , ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ GENERIC_EVENT๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
extensions.auth.type eventid๊ฐ€ 4624/4768/4769์ธ ๊ฒฝ์šฐ MACHINE์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
metadata.log_type VMWARE_VCENTER๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
metadata.vendor_name VMWARE๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
metadata.product_name VCENTER๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
security_result.action response_status๊ฐ€ 200์ด๊ฑฐ๋‚˜ ์ž‘์—…์ด ํ—ˆ์šฉ์ธ ๊ฒฝ์šฐ ALLOW๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

๋„์›€์ด ๋” ํ•„์š”ํ•˜์‹ ๊ฐ€์š”? ์ปค๋ฎค๋‹ˆํ‹ฐ ํšŒ์› ๋ฐ Google SecOps ์ „๋ฌธ๊ฐ€๋กœ๋ถ€ํ„ฐ ๋‹ต๋ณ€์„ ๋ฐ›์œผ์„ธ์š”.