Gunakan petunjuk ini untuk memecahkan masalah terkait kebijakan keamanan Google Cloud Armor.
Masalah umum
Men-debug kebijakan keamanan
Jika Anda memerlukan informasi tambahan tentang peristiwa tertentu yang memicu aturan yang telah dikonfigurasi sebelumnya, baca Menggunakan logging permintaan, lalu aktifkan logging verbose. Cloud Logging mencatat tingkat detail yang lebih tinggi dalam log yang dapat Anda gunakan untuk menganalisis dan men-debug kebijakan dan aturan.
Traffic diizinkan meskipun aturan penolakan dikonfigurasi dalam kebijakan keamanan Cloud Armor
Untuk memperbaikinya, ikuti langkah-langkah berikut:
Pastikan kebijakan keamanan Cloud Armor terpasang ke layanan backend target. Misalnya, perintah berikut menjelaskan semua data yang terkait dengan layanan backend
BACKEND
. Hasil yang ditampilkan harus mencakup nama kebijakan keamanan Cloud Armor yang terkait dengan layanan backend ini.gcloud compute backend-services describe BACKEND
Tinjau log HTTP(S) untuk menentukan kebijakan dan aturan mana yang cocok untuk traffic Anda beserta tindakan terkait. Untuk melihat log, gunakan Cloud Logging.
Berikut adalah contoh log permintaan yang diizinkan dengan kolom yang relevan ditandai. Periksa kolom berikut dan pastikan kolom tersebut cocok dengan aturan yang Anda konfigurasi untuk menolak traffic:
configuredAction
harus cocok dengan tindakan yang dikonfigurasi dalam aturan.name
harus cocok dengan nama kebijakan keamanan Cloud Armor yang dilampirkan ke layanan backend ini.outcome
harus cocok denganconfiguredAction
.priority
harus sesuai dengan angka prioritas aturan.
httpRequest: remoteIp: 104.133.0.95 requestMethod: GET requestSize: '801' requestUrl: http://74.125.67.38/ responseSize: '246' serverIp: 10.132.0.4 status: 200 userAgent: curl/7.35.0 insertId: ajvis5ev4i60 internalId: projectNumber: '895280006100' jsonPayload: '@type': type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry enforcedSecurityPolicy: configuredAction: ACCEPT name: mydev-policy-log-test1 outcome: ACCEPT priority: 2147483647 statusDetails: response_sent_by_backend logName: projects/mydev-staging/logs/requests resource: labels: backend_service_name: BACKEND_SERVICE_NAME forwarding_rule_name: FORWARDING_RULE_NAME project_id: PROJECT_ID target_proxy_name: TARGET_HTTP_PROXY_NAME url_map_name: URL_MAP_NAME zone: global type: http_load_balancer severity: INFO timestamp: '2017-04-18T18:57:05.845960288Z'
Tinjau hierarki aturan untuk memastikan aturan yang cocok sudah benar. Kemungkinan ada aturan dengan prioritas yang lebih tinggi dan tindakan izinkan yang cocok dengan traffic Anda. Gunakan perintah
describe
padasecurity-policies
di Google Cloud CLI untuk melihat konten kebijakan keamanan Cloud Armor.Misalnya, contoh berikut menunjukkan cara aturan izinkan dengan prioritas lebih tinggi (pada prioritas 100) mencocokkan traffic yang berasal dari alamat IP 1.2.3.4, sehingga mencegah aturan tolak dengan prioritas lebih rendah (pada prioritas 200) dipicu dan memblokir traffic.
gcloud compute security-policies describe POLICY_NAME
Output:
creationTimestamp: '2017-04-18T14:47:58.045-07:00 description: '' fingerprint: Yu5spBjdoC0= id: '2560355463394441057' kind: compute#securityPolicy name: POLICY_NAME rules: -action: allow description: allow high priority rule kind: compute#securityPolicyRule match: srcIpRanges: -'1.2.3.4/32' preview: false priority: 100 -action: deny description: deny lower priority rule kind: compute#securityPolicyRule match: srcIpRanges: -'1.2.3.0/24 preview: false priority: 200 -action: deny description: default rule kind: compute#securityPolicyRule match: srcIpRanges: -'*' preview: false priority: 2147483647 selfLink: http://www.googleapis.com/compute/v1/projects/bigclustertestdev0-devconsole/global/securityPolicies/sp
Aturan yang telah dikonfigurasi sebelumnya menampilkan positif palsu
Deteksi XSS dan SQLi didasarkan pada pencocokan tanda tangan statis pada header permintaan HTTP dan parameter L7 lainnya. Pola ekspresi reguler ini rentan terhadap positif palsu. Anda dapat menggunakan aturan yang telah dikonfigurasi sebelumnya untuk deteksi XSS dan SQLi dalam mode pratinjau, lalu memeriksa log untuk mengetahui apakah ada positif palsu.
Jika menemukan positif palsu, Anda dapat membandingkan konten traffic dengan
aturan OWASP CRS.
Jika aturan tidak valid atau tidak relevan, nonaktifkan dengan menggunakan ekspresi
evaluatePreconfiguredWaf
, dan tentukan ID aturan dalam argumen
exclude ID list
.
Setelah meninjau log dan menghapus semua positif palsu, nonaktifkan mode pratinjau.
Untuk menambahkan aturan yang telah dikonfigurasi sebelumnya dalam mode pratinjau:
Buat kebijakan keamanan dengan set ekspresi yang telah dikonfigurasi sebelumnya dalam mode pratinjau:
gcloud compute security-policies rules create 1000 --security-policy POLICY_NAME --expression "evaluatePreconfiguredWaf('xss-stable')" --action deny-403 --preview
Tinjau log HTTP(S) untuk kolom permintaan HTTP seperti
url
dancookie
. Misalnya,requestUrl
dibandingkan secara positif dengan ID aturan OWASP CRS 941180:httpRequest: remoteIp: 104.133.0.95 requestMethod: GET requestSize: '801' requestUrl: http://74.125.67.38/foo?document.cookie=1010" responseSize: '246' serverIp: 10.132.0.4 status: 200 userAgent: curl/7.35.0 insertId: ajvis5ev4i60 internalId: projectNumber: '895280006100' jsonPayload: '@type': type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry enforcedSecurityPolicy: configuredAction: ACCEPT name: POLICY_NAME outcome: ACCEPT priority: 2147483647 preconfiguredExprIds: [ 'owasp-crs-v030001-id941180-xss' ] statusDetails: response_sent_by_backend logName: projects/mydev-staging/logs/requests resource: labels: backend_service_name: BACKEND_SERVICE forwarding_rule_name: mydev-forwarding-rule project_id: mydev-staging target_proxy_name: mydev-target-http-proxy url_map_name: mydev-url-map zone: global type: http_load_balancer severity: INFO timestamp: '2017-04-18T18:57:05.845960288Z'
Kecualikan ID aturan OWASP CRS 941180 dengan memperbarui aturan dalam kebijakan keamanan Cloud Armor:
gcloud compute security-policies rules update 1000 \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('xss-stable', ['owasp-crs-v030001-id941180-xss'])" \ --action deny-403 \ --preview
Tinjau log lagi, lalu nonaktifkan mode pratinjau untuk menerapkan aturan.
Klien dengan tanda tangan yang ditolak tidak diblokir atau ditolak
Jika Anda menggunakan Cloud Armor dengan Cloud CDN, kebijakan keamanan diberlakukan hanya untuk permintaan konten dinamis, cache tidak ditemukan, atau permintaan lain yang ditujukan untuk server asal CDN. Cache ditemukan akan ditampilkan meskipun kebijakan keamanan Cloud Armor downstream menghalangi permintaan tersebut untuk menjangkau server asal CDN.
Masalah terkait pembatasan kecepatan
Traffic tidak dibatasi seperti yang diharapkan
Anda mungkin mendapati bahwa alamat IP klien mengirimkan traffic tingkat tinggi ke aplikasi dengan kecepatan yang melebihi nilai minimum yang Anda tetapkan, tetapi traffic tidak dibatasi seperti yang Anda harapkan. Ikuti langkah-langkah berikut untuk menyelidiki masalah ini.
Pertama, konfirmasi apakah aturan dengan prioritas lebih tinggi mengizinkan traffic dari alamat IP tersebut. Periksa log untuk melihat apakah aturan ALLOW
dipicu untuk alamat IP. Ini bisa berupa aturan ALLOW
itu sendiri, atau dalam aturan THROTTLE
atau
RATE_BASED_BAN
lainnya.
Jika Anda menemukan aturan dengan prioritas yang lebih tinggi, lakukan salah satu tindakan berikut:
- Ubah prioritas untuk memastikan bahwa aturan pembatasan kecepatan memiliki prioritas yang lebih tinggi, dengan menetapkan nilai numerik lebih rendah.
- Mengecualikan alamat IP dari ekspresi yang cocok dalam aturan yang memiliki prioritas lebih tinggi.
Masalahnya juga mungkin karena nilai minimum ditetapkan secara keliru. Jika demikian, permintaan akan dicocokkan secara akurat, tetapi tindakan sesuai akan dipicu. Periksa log untuk mengonfirmasi bahwa hal ini terjadi, lalu kurangi nilai minimum dalam aturan Anda.
Terakhir, alamat IP mungkin tidak cocok dengan aturan pembatasan atau larangan berbasis kecepatan. Untuk memperbaiki hal ini, periksa kesalahan dalam kondisi kecocokan, lalu ubah kondisi kecocokan aturan ke nilai yang benar.