Logging Aturan Firewall memungkinkan Anda mengaudit, memverifikasi, dan menganalisis efek aturan firewall Anda. Misalnya, Anda dapat menentukan apakah aturan firewall yang dirancang untuk menolak traffic berfungsi sebagaimana mestinya. Logging Aturan Firewall juga berguna jika Anda perlu menentukan berapa banyak koneksi yang terpengaruh oleh aturan firewall tertentu.
Aktifkan Firewall Rules Logging satu per satu untuk setiap aturan firewall yang koneksinya perlu Anda catat. Firewall Rules Logging adalah opsi untuk setiap aturan firewall, terlepas dari tindakan (allow
atau deny
) atau arah (masuk atau keluar) aturan tersebut.
Firewall Rules Logging mencatat traffic ke dan dari instance virtual machine (VM) Compute Engine. Hal ini mencakup produk Google Cloud yang di-build di VM Compute Engine, seperti instance cluster Google Kubernetes Engine (GKE) dan lingkungan fleksibel App Engine.
Saat Anda mengaktifkan logging untuk aturan firewall, Google Cloud akan membuat entri yang disebut data koneksi setiap kali aturan mengizinkan atau menolak traffic. Anda dapat melihat data ini di Cloud Logging, dan mengekspor log ke tujuan mana pun yang didukung ekspor Cloud Logging.
Setiap data koneksi berisi alamat IP sumber dan tujuan, protokol dan port, tanggal dan waktu, serta referensi ke aturan firewall yang diterapkan ke traffic.
Logging Aturan Firewall tersedia untuk aturan firewall VPC dan kebijakan firewall hierarkis.
Untuk informasi tentang cara melihat log, lihat Menggunakan Logging Aturan Firewall.
Spesifikasi
Firewall Rules Logging memiliki spesifikasi berikut:
- Anda hanya dapat mengaktifkan Logging Aturan Firewall untuk aturan di jaringan Virtual Private Cloud (VPC). Jaringan lama tidak didukung.
- Firewall Rules Logging hanya mencatat koneksi TCP dan UDP. Meskipun Anda dapat membuat aturan firewall yang berlaku untuk protokol lain, Anda tidak dapat mencatat koneksinya. Jika Anda juga ingin mencatat protokol lain ke dalam log, pertimbangkan untuk menggunakan Duplikasi Paket.
- Anda tidak dapat mengaktifkan Logging Aturan Firewall untuk aturan tolak traffic masuk yang tersirat dan aturan izinkan traffic keluar yang tersirat.
- Entri log ditulis dari perspektif VM. Entri log hanya dibuat jika aturan firewall mengaktifkan logging dan jika aturan tersebut berlaku untuk traffic yang dikirim ke atau dari VM. Entri dibuat sesuai dengan batas logging koneksi berdasarkan upaya terbaik.
- Jumlah koneksi yang dapat dicatat dalam interval tertentu didasarkan pada jenis mesin.
- Perubahan pada aturan firewall dapat dilihat di log audit VPC.
Contoh logging
Entri log dibuat setiap kali aturan firewall dengan logging yang diaktifkan diterapkan ke traffic. Total aliran paket tertentu dapat menghasilkan lebih dari satu entri log. Namun, dari perspektif VM tertentu, maksimal hanya satu entri log yang dapat dibuat jika aturan firewall yang berlaku untuknya mengaktifkan logging.
Contoh berikut menunjukkan cara kerja log firewall.
Contoh penolakan traffic keluar
Dalam contoh ini:
- Traffic antara instance VM di jaringan VPC
example-net
dalam projectexample-proj
dipertimbangkan. - Kedua instance VM tersebut adalah:
- VM1 di zona
us-west1-a
dengan alamat IP10.10.0.99
diwest-subnet
(regionus-west1
). - VM2 di zona
us-east1-b
dengan alamat IP10.20.0.99
dieast-subnet
(regionus-east1
).
- VM1 di zona
- Aturan A: Aturan firewall tolak keluar memiliki target semua instance di jaringan, tujuan
10.20.0.99
(VM2), dan berlaku untuk port TCP 80.- Logging diaktifkan untuk aturan ini.
- Aturan B: Aturan firewall izin masuk memiliki target semua instance di jaringan, sumber
10.10.0.99
(VM1), dan berlaku untuk port TCP 80.- Logging juga diaktifkan untuk aturan ini.
Perintah gcloud
berikut dapat digunakan untuk membuat aturan firewall:
Aturan A: aturan tolak keluar untuk TCP 80, berlaku untuk semua instance, tujuan
10.20.0.99
:gcloud compute firewall-rules create rule-a \ --network example-net \ --action deny \ --direction egress \ --rules tcp:80 \ --destination-ranges 10.20.0.99/32 \ --priority 10 \ --enable-logging
Aturan B: aturan izin masuk untuk TCP 80, berlaku untuk semua instance, sumber
10.10.0.99
:gcloud compute firewall-rules create rule-b \ --network example-net \ --action allow \ --direction ingress \ --rules tcp:80 \ --source-ranges 10.10.0.99/32 \ --priority 10 \ --enable-logging
Misalkan VM1 mencoba terhubung ke VM2 di port TCP 80. Aturan firewall berikut dicatat ke dalam log:
- Entri log untuk aturan A dari perspektif VM1 dihasilkan saat VM1
mencoba terhubung ke
10.20.0.99
(VM2). - Karena aturan A benar-benar memblokir traffic, aturan B tidak pernah dipertimbangkan, sehingga tidak ada entri log untuk aturan B dari perspektif VM2.
Data log firewall dibuat dalam contoh berikut.
Kolom | Nilai |
---|---|
koneksi | src_ip=10.10.0.99 src_port=[EPHEMERAL_PORT] dest_ip=10.20.0.99 dest_port=80 protocol=6 |
disposisi | DITOLAK |
rule_details | reference = "network:example-net/firewall:rule-a" priority = 10 action = DENY destination_range = 10.20.0.99/32 ip_port_info = tcp:80 direction = egress |
instance | project_id="example-proj" instance_name=VM1 region=us-west1 zone=us-west1-a |
vpc | project_id="example-proj" vpc_name=example-net subnetwork_name=west-subnet |
remote_instance | project_id="example-proj" instance_name=VM2 region=us-east1 zone=us-east1-b |
remote_vpc | project_id="example-proj" vpc_name=example-net subnetwork_name=east-subnet |
remote_location | Tidak ada informasi. Kolom ini hanya digunakan jika tujuan berada di luar jaringan VPC Anda. |
Contoh izinkan traffic keluar, izinkan traffic masuk
Dalam contoh ini:
- Traffic antara instance VM di jaringan VPC
example-net
dalam projectexample-proj
dipertimbangkan. - Kedua instance VM tersebut adalah:
- VM1 di zona
us-west1-a
dengan alamat IP10.10.0.99
diwest-subnet
(regionus-west1
). - VM2 di zona
us-east1-b
dengan alamat IP10.20.0.99
dieast-subnet
(regionus-east1
).
- VM1 di zona
- Aturan A: Aturan firewall izinkan keluar memiliki target semua instance di jaringan, tujuan
10.20.0.99
(VM2), dan berlaku untuk TCP port 80.- Logging diaktifkan untuk aturan ini.
- Aturan B: Aturan firewall izin masuk memiliki target semua instance di jaringan, sumber
10.10.0.99
(VM1), dan berlaku untuk port TCP 80.- Logging juga diaktifkan untuk aturan ini.
Perintah gcloud
berikut dapat digunakan untuk membuat dua aturan firewall:
Aturan A: aturan izin keluar untuk TCP 80, berlaku untuk semua instance, tujuan
10.20.0.99
(VM2):gcloud compute firewall-rules create rule-a \ --network example-net \ --action allow \ --direction egress \ --rules tcp:80 \ --destination-ranges 10.20.0.99/32 \ --priority 10 \ --enable-logging
Aturan B: aturan izin masuk untuk TCP 80, berlaku untuk semua instance, sumber
10.10.0.99
(VM1):gcloud compute firewall-rules create rule-b \ --network example-net \ --action allow \ --direction ingress \ --rules tcp:80 \ --source-ranges 10.10.0.99/32 \ --priority 10 \ --enable-logging
Misalkan VM1 mencoba terhubung ke VM2 di port TCP 80. Aturan firewall berikut dicatat ke dalam log:
- Entri log untuk aturan A dari perspektif VM1 dibuat saat VM1
terhubung ke
10.20.0.99
(VM2). - Entri log untuk aturan B dari perspektif VM2 dibuat karena VM2 mengizinkan
koneksi masuk dari
10.10.0.99
(VM1).
Data log firewall yang dilaporkan oleh VM1 dibuat dalam contoh berikut.
Kolom | Nilai |
---|---|
koneksi | src_ip=10.10.0.99 src_port=[EPHEMERAL_PORT] dest_ip=10.20.0.99 dest_port=80 protocol=6 |
disposisi | DIIZINKAN |
rule_details | reference = "network:example-net/firewall:rule-a" priority = 10 action = ALLOW destination_range = 10.20.0.99/32 ip_port_info = tcp:80 direction = egress |
instance | project_id="example-proj" instance_name=VM1 region=us-west1 zone=us-west1-a |
vpc | project_id="example-proj" vpc_name=example-net subnetwork_name=west-subnet |
remote_instance | project_id="example-proj" instance_name=VM2 region=us-east1 zone=us-east1-b |
remote_vpc | project_id="example-proj" vpc_name=example-net subnetwork_name=east-subnet |
remote_location | Tidak ada informasi. Kolom ini hanya digunakan jika tujuan berada di luar jaringan VPC Anda. |
Data log firewall yang dilaporkan oleh VM2 dibuat dalam contoh berikut.
Kolom | Nilai |
---|---|
koneksi | src_ip=10.10.0.99 src_port=[EPHEMERAL_PORT] dest_ip=10.20.0.99 dest_port=80 protocol=6 |
disposisi | DIIZINKAN |
rule_details | reference = "network:example-net/firewall:rule-b" priority = 10 action = ALLOW source_range = 10.10.0.99/32 ip_port_info = tcp:80 direction = ingress |
instance | project_id="example-proj" instance_name=VM2 region=us-east1 zone=us-east1-b |
vpc | project_id="example-proj" vpc_name=example-net subnetwork_name=east-subnet |
remote_instance | project_id="example-proj" instance_name=VM1 region=us-west1 zone=us-west1-a |
remote_vpc | project_id="example-proj" vpc_name=example-net subnetwork_name=west-subnet |
remote_location | Tidak ada informasi. Kolom ini hanya digunakan jika tujuan berada di luar jaringan VPC Anda. |
Contoh traffic masuk internet
Dalam contoh ini:
- Traffic dari sistem di luar jaringan VPC
example-net
ke instance VM di jaringan tersebut akan dipertimbangkan. Jaringan berada di projectexample-proj
. - Sistem di internet memiliki alamat IP
203.0.113.114
. - VM1 di zona
us-west1-a
memiliki alamat IP10.10.0.99
diwest-subnet
(regionus-west1
). - Aturan C: Aturan firewall izin masuk memiliki target semua instance di jaringan, sumber alamat IP apa pun (
0.0.0.0/0
), dan berlaku untuk TCP port 80.- Logging diaktifkan untuk aturan ini.
- Aturan D: Aturan firewall tolak keluar memiliki target semua instance di jaringan, tujuan alamat IP mana pun (
0.0.0.0/0
), dan berlaku untuk semua protokol.- Logging juga diaktifkan untuk aturan ini.
Perintah gcloud
berikut dapat digunakan untuk membuat aturan firewall:
Aturan C: aturan izin masuk untuk TCP 80, berlaku untuk semua instance, sumber apa pun:
gcloud compute firewall-rules create rule-c \ --network example-net \ --action allow \ --direction ingress \ --rules tcp:80 \ --source-ranges 0.0.0.0/0 \ --priority 10 \ --enable-logging
Aturan D: aturan penolakan keluar untuk semua protokol, berlaku untuk semua instance, tujuan apa pun:
gcloud compute firewall-rules create rule-d \ --network example-net \ --action deny \ --direction egress \ --rules all \ --destination-ranges 0.0.0.0/0 \ --priority 10 \ --enable-logging
Misalkan sistem dengan alamat IP 203.0.113.114
mencoba terhubung ke VM1
di port TCP 80. Hal berikut akan terjadi:
- Entri log untuk aturan C dari perspektif VM1 dibuat saat VM1 menerima
traffic dari
203.0.113.114
. - Meskipun ada aturan D, VM1 diizinkan untuk membalas permintaan masuk karena aturan firewall Google Cloud bersifat stateful. Jika permintaan masuk diizinkan, respons yang ditetapkan tidak dapat diblokir oleh jenis aturan keluar apa pun.
- Karena tidak berlaku, aturan D tidak pernah dipertimbangkan, sehingga tidak ada entri log untuk aturan D.
Data log firewall dibuat dalam contoh berikut.
Kolom | Nilai |
---|---|
koneksi | src_ip=203.0.113.114 src_port=[EPHEMERAL_PORT] dest_ip=10.10.0.99 dest_port=80 protocol=6 |
disposisi | DIIZINKAN |
rule_details | reference = "network:my-vpc/firewall:rule-c" priority = 10 action = ALLOW source_range = 0.0.0.0/0 ip_port_info = tcp:80 direction = ingress |
instance | project_id="example-proj" instance_name=VM1 region=us-west1 zone=us-west1-a |
vpc | project_id="example-proj" vpc_name=example-net subnetwork_name=west-subnet |
remote_location | benua negara wilayah kota |
Format log firewall
Tergantung pada spesifikasi, entri log dibuat di Cloud Logging untuk setiap aturan firewall yang telah mengaktifkan logging jika aturan tersebut berlaku untuk traffic ke atau dari instance VM. Kumpulan data log disertakan dalam kolom payload JSON dari Logging LogEntry.
Data log berisi kolom dasar, yang merupakan kolom inti dari setiap data log, dan kolom metadata yang menambahkan informasi tambahan. Anda dapat mengontrol apakah kolom metadata disertakan. Jika Anda menghapusnya, Anda dapat menghemat biaya penyimpanan.
Beberapa kolom log mendukung nilai yang juga merupakan kolom. Kolom ini dapat memiliki lebih dari satu bagian data dalam kolom tertentu. Misalnya, kolom connection
memiliki format IpConnection
, yang berisi alamat IP dan port sumber dan tujuan, serta protokol, dalam satu kolom. Kolom ini dijelaskan dalam tabel berikut.
Kolom | Deskripsi | Jenis kolom: Metadata dasar atau opsional |
---|---|---|
koneksi | IpConnection 5-Tuple yang menjelaskan alamat IP sumber dan tujuan, port sumber dan tujuan, serta protokol IP koneksi ini. |
Dasar |
disposisi | string Menunjukkan apakah koneksi adalah ALLOWED atau
DENIED . |
Dasar |
rule_details | RuleDetails Detail aturan yang diterapkan ke koneksi ini. |
|
Kolom rule_details.reference |
Dasar | |
Kolom detail aturan lainnya | Metadata | |
instance | InstanceDetails Detail instance VM. Dalam konfigurasi VPC Bersama, project_id berkorespondensi dengan project layanan. |
Metadata |
vpc | VpcDetails Detail jaringan VPC. Dalam konfigurasi VPC Bersama, project_id berkorespondensi dengan project host. |
Metadata |
remote_instance | InstanceDetails Jika endpoint jarak jauh koneksi adalah VM yang terletak di Compute Engine, kolom ini akan diisi dengan detail instance VM. |
Metadata |
remote_vpc | VpcDetails Jika endpoint jarak jauh koneksi adalah VM yang terletak di jaringan VPC, kolom ini akan diisi dengan detail jaringan. |
Metadata |
remote_location | GeographicDetails Jika endpoint jarak jauh koneksi berada di luar jaringan VPC, kolom ini akan diisi dengan metadata lokasi yang tersedia. |
Metadata |
IpConnection
Kolom | Jenis | Deskripsi |
---|---|---|
src_ip | string | Alamat IP sumber. Jika sumbernya adalah VM Compute Engine,
src_ip adalah alamat IP internal utama atau alamat
dalam rentang IP alias antarmuka jaringan VM. Alamat IP eksternal tidak ditampilkan. Logging menampilkan alamat IP VM seperti
yang dilihat VM pada header paket, sama seperti saat Anda menjalankan TCP dump di VM. |
src_port | bilangan bulat | Port sumber |
dest_ip | string | Alamat IP tujuan. Jika tujuannya adalah VM Google Cloud,
dest_ip adalah alamat IP internal utama atau alamat
dalam rentang IP alias antarmuka jaringan VM. Alamat IP eksternal
tidak ditampilkan meskipun digunakan untuk membuat koneksi. |
dest_port | bilangan bulat | Port tujuan |
protokol | bilangan bulat | Protokol IP koneksi |
RuleDetails
Kolom | Jenis | Deskripsi |
---|---|---|
referensi | string | Referensi ke aturan firewall; format:"network:{network name}/firewall:{firewall_name}" |
priority | bilangan bulat | Prioritas untuk aturan firewall. |
action | string | IZINKAN atau TOLAK |
source_range[ ] | string | Daftar rentang sumber tempat aturan firewall diterapkan. |
destination_range[ ] | string | Daftar rentang tujuan yang menerapkan aturan firewall. |
ip_port_info[ ] | IpPortDetails | Daftar protokol IP dan rentang port yang berlaku untuk aturan. |
direction | string | Arah penerapan aturan firewall (masuk atau keluar). |
source_tag[ ] | string | Daftar semua tag sumber yang menjadi sasaran aturan firewall. |
target_tag[ ] | string | Daftar semua tag target yang diterapkan aturan firewall. |
source_service_account[ ] | string | Daftar semua akun layanan sumber yang menjadi sasaran aturan firewall. |
target_service_account[ ] | string | Daftar semua akun layanan target yang menjadi sasaran aturan firewall. |
source_region_code[ ] | string | Daftar semua kode negara sumber yang menerapkan aturan firewall. |
destination_region_code[ ] | string | Daftar semua kode negara tujuan yang diterapkan aturan firewall. |
source_fqdn[ ] | string | Daftar semua nama domain sumber yang menjadi sasaran aturan firewall. |
destination_fqdn[ ] | string | Daftar semua nama domain tujuan yang menjadi sasaran aturan firewall. |
source_threat_intelligence[ ] | string | Daftar semua nama daftar Google Threat Intelligence sumber yang menjadi tempat aturan firewall diterapkan. |
destination_threat_intelligence[ ] | string | Daftar semua nama daftar Kecerdasan Ancaman Google tujuan tempat aturan firewall diterapkan. |
source_address_groups[ ] | string | Daftar semua grup alamat sumber yang menjadi sasaran aturan firewall. |
destination_address_groups[ ] | string | Daftar semua grup alamat tujuan yang menjadi sasaran aturan firewall. |
IpPortDetails
Kolom | Jenis | Deskripsi |
---|---|---|
ip_protocol | string | Protokol IP yang menjadi target aturan firewall. "ALL" jika berlaku untuk semua protokol. |
port_range[ ] | string | Daftar rentang port yang berlaku untuk aturan; misalnya, 8080-9090 . |
InstanceDetails
Kolom | Jenis | Deskripsi |
---|---|---|
project_id | string | ID project yang berisi VM |
vm_name | string | Nama instance VM |
region | string | Region VM |
zona | string | Zona VM |
VpcDetails
Kolom | Jenis | Deskripsi |
---|---|---|
project_id | string | ID project yang berisi jaringan |
vpc_name | string | Jaringan tempat VM beroperasi |
subnetwork_name | string | Subnet tempat VM beroperasi |
GeographicDetails
Kolom | Jenis | Deskripsi |
---|---|---|
benua | string | Benua untuk endpoint eksternal |
country | string | Negara untuk endpoint eksternal |
region | string | Region untuk endpoint eksternal |
city | string | Kota untuk endpoint eksternal |
Langkah selanjutnya
- Untuk menyiapkan logging dan melihat log, lihat Menggunakan Logging Aturan Firewall.
- Untuk mendapatkan insight tentang penggunaan aturan firewall Anda, lihat Analisis Firewall.
- Untuk menyimpan, menelusuri, menganalisis, memantau, dan mengirim pemberitahuan tentang data dan peristiwa log, lihat Cloud Logging.
- Untuk merutekan entri log, lihat Mengonfigurasi dan mengelola sink.