Filtre Düğümü Günlükleri ile Çalışma¶
Bu makale, bir Wallarm filtre düğümünün günlük dosyalarını nasıl bulacağınız konusunda size rehberlik eder.
Günlük dosyaları, /opt/wallarm/var/log/wallarm
dizininde yer almaktadır. Aşağıda, karşılaşacağınız günlük dosyalarının bir özeti ve her birinin içerdiği bilgi türleri verilmiştir:
-
api-firewall-out.log
: API specification enforcement günlükleri. -
appstructure-out.log
(sadece Docker konteynerlerinde): API Discovery modül etkinlik günlükleri. -
tarantool-out.log
: postanalytics modül işlemlerinin günlükleri. -
wcli-out.log
: Brute force tespiti, saldırıların Cloud'a aktarılması ve düğümün Cloud ile senkronizasyon durumu vb. dahil olmak üzere Wallarm servislerinin büyük bir bölümünün günlükleri. -
go-node.log
: Native Node günlükleri.
NGINX Tabanlı Filtre Düğümü için Genişletilmiş Günlük Kaydının Yapılandırılması¶
NGINX, işlenen isteklerin günlüklerini (erişim günlükleri) varsayılan olarak önceden tanımlanmış combined
günlük formatını kullanarak ayrı bir günlük dosyasına yazar.
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $request_id $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" ';
Gerekirse bir veya daha fazla filtre düğümü değişkenini (ve diğer NGINX değişkenlerini) dahil ederek özel bir günlük formatı tanımlayabilir ve kullanabilirsiniz. NGINX günlük dosyası, filtre düğümü tanılamasını çok daha hızlı hale getirecektir.
Filtre Düğümü Değişkenleri¶
NGINX günlük formatını tanımlarken aşağıdaki filtre düğümü değişkenlerini kullanabilirsiniz:
Name | Type | Değer |
---|---|---|
request_id | String | İstek tanımlayıcı Şu formatta bir değere sahiptir: a79199bcea606040cc79f913325401fb |
wallarm_request_cpu_time | Float | Filtre düğümüne ait makinenin CPU'sunun isteği işlerken harcadığı süre (saniye cinsinden). |
wallarm_request_mono_time | Float | İsteğin işlenmesinde CPU'nun harcadığı süre ile kuyruk bekleme süresinin toplamı (saniye cinsinden). Örneğin, eğer istek 3 saniye kuyrukta beklemiş ve CPU tarafından 1 saniye işlenmişse:
|
wallarm_serialized_size | Integer | Serileştirilen isteğin bayt cinsinden boyutu. |
wallarm_is_input_valid | Integer | İstek geçerliliği0 : İstek geçerli. İstek filtre düğümü tarafından kontrol edilmiş ve LOM kuralları'na uygundur.1 : İstek geçersiz. İstek filtre düğümü tarafından kontrol edilmiş ve LOM kuralları'na uymamaktadır. |
wallarm_attack_type_list | String | İstek içerisinde, libproton kütüphanesi kullanılarak tespit edilen saldırı türleri. Türler metin formatında sunulur:
| sembolüyle ayrılır. Örneğin: XSS ve SQLi saldırıları tespit edildiğinde, değişken değeri xss|sqli olur. |
wallarm_attack_type | Integer | İstek içerisinde, libproton kütüphanesi kullanılarak tespit edilen saldırı türleri. Türler bit dizisi formatında sunulur:
6 olur. |
wallarm_attack_point_list (NGINX node 5.2.1 ve üzeri) | String | Kötü niyetli yük içeren istek noktalarını listeler. Bir nokta birden fazla parser tarafından sırasıyla işleniyorsa, tüm aşamalardaki noktalar değere dahil edilir. Kötü niyetli yük içeren birden fazla nokta, | ile birleştirilir.Örnek: [post][json][json_obj, 'data'][base64] , JSON'da base64 kodlamalı data gövde parametresinde tespit edilen kötü niyetli yükü belirtir.Bu günlük verilerinin, Wallarm Console UI'da sunulan basitleştirilmiş, kullanıcı dostu görünümden farklı olabileceğini unutmayın. |
wallarm_attack_stamp_list (NGINX node 5.2.1 ve üzeri) | String | İstek içerisinde tespit edilen her saldırı işareti için dahili Wallarm kimliklerini listeler. Birden fazla işaret kimliği | ile birleştirilir. Aynı saldırı işareti birden fazla ayrıştırma aşamasında tespit edilirse, kimlikler tekrarlanabilir. Örneğin, union+select+1 içeren bir SQLi saldırısı 7|7 döndürebilir, bu da birden fazla tespiti gösterir.Bu günlük verilerinin, Wallarm Console UI'da sunulan basitleştirilmiş, kullanıcı dostu görünümden farklı olabileceğini unutmayın. |
Konfigürasyon Örneği¶
Aşağıdaki değişkenleri içeren wallarm_combined
adlı genişletilmiş günlük formatını belirtmeniz gerektiğini varsayalım:
-
combined
formatında kullanılan tüm değişkenler -
Tüm filtre düğümü değişkenleri
Bunu yapmak için aşağıdaki adımları izleyin:
-
Aşağıdaki satırlar, istenen günlük formatını tanımlar. Bu satırları NGINX yapılandırma dosyasındaki
http
bloğuna ekleyin.log_format wallarm_combined '$remote_addr - $remote_user [$time_local] ' '"$request" $request_id $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' '$wallarm_request_cpu_time $wallarm_request_mono_time $wallarm_serialized_size $wallarm_is_input_valid $wallarm_attack_type $wallarm_attack_type_list $wallarm_attack_point_list $wallarm_attack_stamp_list';
-
Genişletilmiş günlük formatını etkinleştirmek için, ilk adımda belirtilen aynı bloğa aşağıdaki yönergeyi ekleyin:
access_log /var/log/nginx/access.log wallarm_combined;
İşlenmiş istek günlükleri,
/var/log/nginx/access.log
dosyasınawallarm_combined
formatında yazılacaktır.Koşullu Günlük Kaydı
Yukarıda listelenen yönerge ile, saldırı ile ilişkili olmayanlar da dahil olmak üzere tüm işlenmiş istekler bir günlük dosyasına kaydedilir.
Sadece saldırıya ait istekler için günlük kaydı yapmak üzere koşullu günlük kaydını yapılandırabilirsiniz (bu istekler için
wallarm_attack_type
değişken değeri sıfır değildir). Bunu yapmak için, yukarıdaki yönergeye şu koşulu ekleyin:access_log /var/log/nginx/access.log wallarm_combined if=$wallarm_attack_type;
Bu, günlük dosyası boyutunu küçültmek veya bir filtre düğümünü SIEM solutions ile entegre etmek istediğinizde yararlı olabilir.
-
Kullandığınız işletim sistemine bağlı olarak aşağıdaki komutlardan birini çalıştırarak NGINX'i yeniden başlatın:
Detaylı Bilgi
NGINX'de günlük kaydı yapılandırması hakkında detaylı bilgi görmek için bu link'e gidin.