Envoy tabanlı Wallarm düğümü için yapılandırma seçenekleri¶
Envoy, gelen istekleri işlemek için Envoy yapılandırma dosyasında tanımlanan eklenti filtrelerini kullanır. Bu filtreler, istek üzerinde gerçekleştirilecek eylemleri tanımlar. Örneğin, HTTP isteklerini proxylemek için envoy.http_connection_manager
filtresi kullanılır. Bu filtrenin, isteğe uygulanabilecek kendi HTTP filtreleri seti vardır.
Wallarm modülü, Envoy HTTP filtresi olarak tasarlanmıştır. Modülün genel ayarları, wallarm
HTTP filtresine ayrılmış bir bölümde yer alır:
listeners:
- address:
filter_chains:
- filters:
- name: envoy.http_connection_manager
typed_config:
http_filters:
- name: wallarm
typed_config:
"@type": type.googleapis.com/wallarm.Wallarm
<the Wallarm module configuration>
...
İstek gövdesi işlemesini etkinleştir
Wallarm modülünün bir HTTP istek gövdesini işlemesini sağlamak için, buffer filtresinin Envoy HTTP filtre zincirinde filtering node'dan önce yerleştirilmesi gerekir. Örneğin:
http_filters:
- name: envoy.buffer
typed_config:
"@type": type.googleapis.com/envoy.config.filter.http.buffer.v2.Buffer
max_request_bytes: <maximum request size (in bytes)>
- name: wallarm
typed_config:
"@type": type.googleapis.com/wallarm.Wallarm
<the Wallarm module configuration>
...
Gelen istek boyutu max_request_bytes
parametresinin değerini aşarsa, bu istek düşürülür ve Envoy 413
yanıt kodunu (“Payload Too Large”) geri döndürür.
İstek filtreleme ayarları¶
Dosyanın rulesets
bölümü, istek filtreleme ayarlarıyla ilgili parametreleri içerir:
rulesets:
- name: rs0
pdb: /etc/wallarm/proton.db
custom_ruleset: /etc/wallarm/custom_ruleset
key: /etc/wallarm/private.key
general_ruleset_memory_limit: 0
enable_libdetection: "on"
...
- name: rsN:
...
rs0
... rsN
girdileri, bir veya daha fazla parametre grubudur. Gruplar, daha sonra conf
bölümündeki ruleset
parametresi aracılığıyla onlara başvurulabilmesi için herhangi bir isimde olabilir. Filtering node yapılandırmasında en az bir grup bulunmalıdır (örneğin, rs0
).
Bu bölümün varsayılan değeri yoktur. Yapılandırma dosyasında değerleri açıkça belirtmeniz gerekir.
Tanımlama seviyesi
Bu bölüm sadece filtering node seviyesinde tanımlanabilir.
Parameter | Açıklama | Varsayılan Değer |
---|---|---|
pdb | proton.db dosyasına giden yol. Bu dosya, uygulama yapısına bağlı olmayan istek filtreleme için küresel ayarları içerir. | /etc/wallarm/proton.db |
custom_ruleset | Korunan uygulama ve filtering node ayarlarını içeren custom ruleset dosyasına giden yol. | /etc/wallarm/custom_ruleset |
key | proton.db ve custom ruleset dosyalarının şifreleme/şifre çözme işlemlerinde kullanılan Wallarm özel anahtarının bulunduğu dosyaya giden yol. | /etc/wallarm/private.key |
general_ruleset_memory_limit | proton.db ve custom ruleset’in bir örneği tarafından kullanılabilecek maksimum bellek miktarı için sınır. Bellek sınırı, istek işlenirken aşılırsa, kullanıcı 500 hatası alır. Bu parametrede aşağıdaki son ekler kullanılabilir:
0 değeri limiti devre dışı bırakır. | 0 |
enable_libdetection | libdetection library kullanılarak SQL enjeksiyon saldırılarının ek doğrulamasını etkinleştirir/devre dışı bırakır. Kütüphane kötü amaçlı yükü onaylamazsa, istek meşru kabul edilir. libdetection kütüphanesinin kullanılması, SQL enjeksiyon saldırıları arasındaki yanlış pozitiflerin sayısını azaltır. Varsayılan olarak, libdetection kütüphanesi etkindir. En iyi saldırı tespiti için kütüphanenin etkin kalması önerilir. libdetection kütüphanesiyle saldırı analizi yapılırken, NGINX ve Wallarm süreçleri tarafından tüketilen bellek yaklaşık %10 artabilir. | on |
Postanalytics modül ayarları¶
Filtering node’un tarantool
bölümü, postanalytics modülü ile ilgili parametreleri içerir:
server
girdisi, Tarantool server için ayarları tanımlayan bir parametre grubudur.
Tanımlama seviyesi
Bu bölüm sadece filtering node seviyesinde tanımlanabilir.
Parameter | Açıklama | Varsayılan Değer |
---|---|---|
uri | Tarantool server ile bağlantı için kullanılan kimlik bilgilerini içeren dize. Dize formatı IP address veya domain name:port şeklindedir. | localhost:3313 |
max_packets | Tarantool'a gönderilecek serileştirilmiş istek sayısı limiti. Sınırı kaldırmak için, parametre değeri olarak 0 ayarlayın. | 512 |
max_packets_mem | Tarantool'a gönderilecek serileştirilmiş isteklerin toplam hacmi (bayt cinsinden) limiti. | 0 (hacim sınırlı değildir) |
reconnect_interval | Tarantool ile yeniden bağlantı denemeleri arasındaki aralık (saniye cinsinden). 0 değeri, filtering node sunucu kullanılamazsa mümkün olan en kısa sürede yeniden bağlantı kurmaya çalışacağı anlamına gelir (önerilmez). | 1 |
Temel ayarlar¶
Wallarm yapılandırmasının conf
bölümü, filtering node'un temel işlemlerini etkileyen parametreleri içerir:
conf:
ruleset: rs0
mode: "monitoring"
mode_allow_override: "off"
application: 42
process_time_limit: 1000
process_time_limit_block: "attack"
request_memory_limit: 104857600
wallarm_status: "off"
wallarm_status_format: "json"
parse_response: true
unpack_response: true
parse_html_response: true
Tanımlama seviyesi
Daha esnek bir koruma seviyesi için, bu bölüm route veya virtual host seviyesinde geçersiz kılınabilir:
-
Route seviyesinde:
-
Virtual host seviyesinde:
virtual_hosts: - name: <the name of the virtual host> typed_per_filter_config: wallarm: "@type": type.googleapis.com/wallarm.WallarmConf <the section parameters>
Route seviyesinde geçersiz kılınanconf
bölümündeki parametreler, virtual host seviyesinde tanımlanan bölümdeki parametrelerin üzerinde önceliğe sahiptir; bu da filtering node seviyesinde listelenen parametrelerden daha yüksek öneme sahiptir.
Parameter | Açıklama | Varsayılan Değer |
---|---|---|
ruleset | rulesets bölümünde tanımlanan parametre gruplarından biri. Bu parametre grubu, kullanılacak istek filtreleme kurallarını belirler.Eğer bu parametre filtering node'un conf bölümünden çıkarılırsa, route veya virtual host seviyesinde geçersiz kılınan conf bölümünde bulunmalıdır. | - |
mode | Filtering node modu:
Filtrasyon modlarının ayrıntılı açıklaması → | block |
mode_allow_override | Filtering node modunun, mode parametresiyle belirlenmiş halinin custom ruleset ile geçersiz kılınmasına izin verir:
mode parametresi monitoring olarak ayarlanır ve mode_allow_override parametresi strict olarak belirlenirse, bazı istekler engellenebilir (block ), ancak filtering node tamamen devre dışı bırakılamaz (off ). | off |
application | Wallarm Cloud'da kullanılmak üzere, korunan uygulamanın benzersiz tanımlayıcısı. Değer, 0 hariç pozitif bir tam sayı olmalıdır.Uygulamaların kurulumu hakkında daha fazla detay → | -1 |
partner_client_uuid | Çok kullanıcılı (multi-tenant) Wallarm node için tenantın benzersiz tanımlayıcısı. Değer, UUID formatında bir string olmalıdır, örneğin:
Nasıl yapılır: | - |
process_time_limit | Parametre kullanım dışı bırakıldı 3.6 sürümünden itibaren, | |
Limit, tek bir isteğin işlenme süresi içindir (milisaniye cinsinden). İstek, belirlenen süre içinde işlenemezse, hata mesajı log dosyasına kaydedilir ve istek overlimit_res saldırısı olarak işaretlenir. | 1000 | |
process_time_limit_block | Parametre kullanım dışı bırakıldı 3.6 sürümünden itibaren, | |
İstek işleme süresi, process_time_limit parametresiyle belirlenen sınırı aştığında alınacak eylem: |
- `off` - istekler her zaman göz ardı edilir.
- `on` - istekler, `mode: "off"` haricinde her zaman engellenir.
- `attack` - `mode` parametresiyle belirlenen saldırı engelleme moduna bağlı olarak:
- `off` - istekler işlenmez.
- `monitoring` - istekler göz ardı edilir.
- `block` - istekler engellenir.
| attack
wallarm_status
| Filtering node istatistik servisini etkinleştirip etkinleştirmeyeceğini belirler. | false
wallarm_status_format
| Filtering node istatistiklerinin formatı: json
veya prometheus
. | json
disable_acl
| İstek kaynaklarının analizini devre dışı bırakmaya izin verir. Devre dışı bırakılırsa (on
), filtering node Wallarm Cloud'dan IP listelerini indirmez ve istek kaynak IP analizini atlar. | off
parse_response
| Uygulama yanıtlarının analiz edilip edilmeyeceğini belirler. Yanıt analizi, passive detection ve threat replay testing sırasında güvenlik açığı tespiti için gereklidir.
Olası değerler: true
(yanıt analizi etkin) ve false
(yanıt analizi devre dışı). | true
unpack_response
| Uygulama yanıtında dönen sıkıştırılmış verilerin açılıp açılmayacağını belirler. Olası değerler: true
(açma etkin) ve false
(açma devre dışı).
Bu parametre yalnızca parse_response true
iken etkindir. | true
parse_html_response
| Uygulama yanıtında alınan HTML koduna HTML ayrıştırıcılarının uygulanıp uygulanmayacağını belirler. Olası değerler: true
(HTML ayrıştırıcı uygulanır) ve false
(uygulanmaz).
Bu parametre yalnızca parse_response true
iken etkindir. | true