All-in-One Yükleyici veya Docker İmajı ile Native Node Yapılandırma¶
Self-hosted Wallarm Native Node all-in-one yükleyicisi veya Docker imajı kullanılarak dağıtılırken, .yaml
yapılandırma dosyasını oluşturursunuz. Bu dosyada, bu belgede açıklanan tüm parametreler için node yapılandırmasını belirtebilirsiniz.
Node çalışırken all-in-one yükleyici kullanılarak ayarları değiştirmek için:
-
/opt/wallarm/etc/wallarm/go-node.yaml
dosyasını güncelleyin. İlk yapılandırma dosyası kurulum sırasında bu yola kopyalanır. -
Değişikliklerin uygulanması için Wallarm servisini yeniden başlatın:
Eğer node bir Docker imajı kullanılarak dağıtıldıysa, yapılandırma dosyasını ana makinede güncellemek ve güncellenmiş dosya ile Docker konteynerini yeniden başlatmak önerilir.
mode (gereklidir)¶
Wallarm node'unun çalışma modu. Aşağıdakilerden biri olabilir:
-
MuleSoft, Cloudflare, Amazon CloudFront, Broadcom Layer7 API Gateway, Fastly konektörleri için
connector-server
. -
TCP trafik aynalama analizi için
tcp-capture
.
Eğer Wallarm konektörü için Native Node'u kurduysanız, temel yapılandırma aşağıdaki gibidir:
version: 2
mode: connector-server
connector:
address: ":5050"
tls_cert: path/to/tls-cert.crt
tls_key: path/to/tls-key.key
blocking: true
allowed_networks:
- 0.0.0.0/0
allowed_hosts:
- w.com
- "*.test.com"
mesh:
discovery: dns
name: native-node-mesh-discovery
port: 9093
url_normalize: true
route_config:
wallarm_application: 10
wallarm_mode: monitoring
routes:
- route: /example/api/v1
wallarm_mode: off
- route: /example/extra_api
wallarm_application: 2
- route: /example/testing
wallarm_mode: off
log:
pretty: true
level: debug
log_file: stderr
access_log:
enabled: true
verbose: true
log_file: stderr
Eğer TCP trafik aynalama analizi için Native Node'u kurduysanız, temel yapılandırma aşağıdaki gibidir:
version: 3
mode: tcp-capture
goreplay:
filter: <your network interface and port, e.g. 'lo:' or 'enp7s0:'>
extra_args:
- -input-raw-engine
- vxlan
path: /opt/wallarm/usr/bin/gor
parse_responses: true
response_timeout: 5s
url_normalize: true
http_inspector:
real_ip_header: "X-Real-IP"
route_config:
wallarm_application: 10
wallarm_mode: monitoring
routes:
- route: /example/api/v1
wallarm_mode: off
- route: /example/extra_api
wallarm_application: 2
- route: /example/testing
wallarm_mode: off
log:
pretty: true
level: debug
log_file: stderr
access_log:
enabled: true
verbose: true
log_file: stderr
Konektör'e Özel Ayarlar¶
connector.address (gereklidir)¶
Dinlenecek IP adresi ve portu iki nokta üst üste (:
) ile ayırarak belirtir.
Portun 80
, 8080
, 9000
veya 3313
olmadığından emin olun; çünkü bunlar diğer Wallarm işlemleri tarafından kullanılmaktadır.
connector.tls_cert (gereklidir)¶
Node'un çalıştığı alan için verilen TLS/SSL sertifikasının (genellikle bir .crt
veya .pem
dosyası) yolunu belirtir.
Güvenli iletişim sağlamak için, sertifika güvenilir bir Sertifika Yetkilisi (CA) tarafından sağlanmalıdır.
Eğer node bir Docker imajı kullanılarak dağıtıldıysa, SSL şifre çözümü yük dengeleyici seviyesinde gerçekleşeceği için bu parametre gerekli değildir.
connector.tls_key (gereklidir)¶
TLS/SSL sertifikasıyla ilişkili özel anahtarın (genellikle bir .key
dosyası) yolunu belirtir.
Eğer node bir Docker imajı kullanılarak dağıtıldıysa, SSL şifre çözümü yük dengeleyici seviyesinde gerçekleşeceği için bu parametre gerekli değildir.
connector.blocking¶
Genellikle bu parametreyi değiştirmenize gerek yoktur. Kötü niyetli istekler için özel engelleme davranışı, wallarm_mode
parametresi ile kontrol edilir.
Bu parametre, Native Node'un kötü niyetli, yasaklanmış IP'lerden veya diğer engelleme gerektiren koşullardan gelen gelen istekleri engelleme yeteneğini etkinleştirir.
Varsayılan: true
.
connector.allowed_networks¶
Bağlantıya izin verilen IP ağlarının listesidir.
Varsayılan: 0.0.0.0/0
(tüm IP ağlarına izin verilir).
connector.allowed_hosts¶
İzin verilen ana bilgisayar isimlerinin listesidir.
Varsayılan: tüm ana bilgisayarlara izin verilir.
Bu parametre, joker karakter eşleştirmeyi destekler:
-
*
ayırıcı olmayan karakterlerden oluşan herhangi bir diziyi eşleştirir -
?
ayırıcı olmayan tek bir karakteri eşleştirir -
'[' [ '^' ] { character-range } ']'
Joker karakter eşleştirme sözdizimi detayları
// The pattern syntax is:
//
// pattern:
// { term }
// term:
// '*' matches any sequence of non-Separator characters
// '?' matches any single non-Separator character
// '[' [ '^' ] { character-range } ']'
// character class (must be non-empty)
// c matches character c (c != '*', '?', '\\', '[')
// '\\' c matches character c
//
// character-range:
// c matches character c (c != '\\', '-', ']')
// '\\' c matches character c
// lo '-' hi matches character c for lo <= c <= hi
//
// Match requires pattern to match all of name, not just a substring.
Örneğin:
connector.mesh¶
Mesh özelliği, Wallarm node'larının çoklu node replikaları dağıtıldığında tutarlı trafik işleme sağlamak için connector-server
modunda kullanılır. İstekleri ve karşılık gelen yanıtları, başlangıçta farklı replikalar tarafından ele alınmış olsa bile aynı node'a yönlendirir. Bu, otomatik ölçeklendirme veya ECS'de çoklu replikalar söz konusu olduğunda kritik öneme sahiptir.
Kubernetes environments
Kubernetes'te, Helm chart for native Wallarm node deployment kullanın. Otomatik ölçeklendirme veya çoklu replikalar tespit edildiğinde mesh otomatik olarak yapılandırılır; ekstra ayarlamaya gerek yoktur.
ECS'de mesh'i yapılandırmak için:
-
Node'ların mesh içinde birbirlerini dinamik olarak bulup iletişim kurabilmesi için AWS Cloud Map, Google Cloud DNS veya benzeri hizmetlerle servis keşfi kurun.
Servis keşfi olmadan mesh düzgün çalışmayacaktır, çünkü node'lar birbirlerini bulamayacak ve trafik yönlendirme sorunları yaşanacaktır.
-
Aşağıda gösterildiği gibi yapılandırma dosyasına
connector.mesh
parametrelerini ekleyerek Wallarm node'unun mesh'i kullanacak şekilde yapılandırılmasını sağlayın:
discovery¶
Mesh'deki node'ların birbirlerini nasıl keşfedeceğini tanımlar. Şu anda sadece dns
değeri kullanılabilir.
Node'lar, DNS kullanarak birbirlerini keşfeder. DNS kaydı, mesh'e katılan tüm node'ların IP adreslerine çözülmelidir.
name¶
Mesh'deki diğer node'ların IP adreslerini çözmek için kullanılan DNS alan adını belirtir. Bu genellikle, ECS servisindeki tüm node örneklerine çözünen bir değere ayarlanır.
port¶
Mesh içerisindeki node'lar arası iletişim için kullanılan dahili portu belirtir. Bu port dışa açılmaz ve ECS kümesindeki node'lar arası trafik için ayrılmıştır.
connector.url_normalize¶
Route yapılandırmaları seçilmeden ve libproton ile veri analiz edilmeden önce URL normalizasyonunu etkinleştirir.
Varsayılan: true
.
TCP Ayna Özel Ayarları¶
goreplay.filter¶
Trafiği yakalamak için kullanılacak ağ arayüzünü belirtir. Bir değer belirtilmezse, instance'daki tüm ağ arayüzlerinden trafiği yakalar.
Değer, iki nokta üst üste (:
) ile ayrılmış ağ arayüzü ve port olmalıdır, örn.:
Birden fazla arayüz ve port'tan trafiği yakalamak için goreplay.filter
ile birlikte goreplay.extra_args
kullanılabilir, örn.:
version: 3
goreplay:
filter: 'eth0:80'
extra_args:
- "-input-raw"
- "eth0:8080"
- "-input-raw"
- "eth0:8081"
- "-input-raw"
- "eth1:80"
filter
, GoReplay'e -input-raw
argümanını iletir; extra_args
ise ek -input-raw
girdilerini belirtmenizi sağlar.
Ana makinedeki mevcut ağ arayüzlerini görmek için:
goreplay.extra_args¶
GoReplay'e iletilecek ek argümanları belirtmenizi sağlar.
-
Genellikle, analiz gerektiren ayna trafiğin türlerini tanımlamak için kullanılır, örneğin VLAN, VXLAN. Örneğin:
Eğer ayna trafik, VLAN veya VXLAN gibi ek protokollerle sarmalanmamışsa,
extra_args
yapılandırması atlanabilir. Sarmalanmamış trafik varsayılan olarak ayrıştırılır. -
Ek arayüz ve portları yakalamak için
filter
ile birlikteextra_args
genişletilebilir:version: 3 goreplay: filter: 'eth0:80' extra_args: - "-input-raw" - "eth0:8080" - "-input-raw" - "eth0:8081" - "-input-raw" - "eth1:80"
filter
, GoReplay'e-input-raw
argümanını iletir;extra_args
ise ek-input-raw
girdilerini belirtmenizi sağlar.
goreplay.path¶
GoReplay binari dosyasının yolunu belirtir. Genellikle bu parametre değiştirilmez.
Varsayılan: /opt/wallarm/usr/bin/gor
.
goreplay.parse_responses¶
Aynalanan yanıtların ayrıştırılıp ayrıştırılmayacağını kontrol eder. Bu, güvenlik açığı tespiti ve API discovery gibi Wallarm özelliklerinin yanıt verilerini kullanarak çalışmasını sağlar.
Varsayılan: true
.
Ayrıca, yanıt aynalamasının hedef instance'daki Wallarm node'una iletildiğinden emin olun.
Node sürümü 0.10.1 ve öncesinde, bu parametre middleware.parse_responses
olarak ayarlanır.
goreplay.response_timeout¶
Bir yanıt için beklenen maksimum süreyi belirtir. Bu süre içerisinde yanıt alınamazsa, Wallarm işlemleri ilgili yanıtı beklemeyi bırakır.
Varsayılan: 5s
.
Node sürümü 0.10.1 ve öncesinde, bu parametre middleware.response_timeout
olarak ayarlanır.
goreplay.url_normalize¶
Route yapılandırmaları seçilmeden ve libproton ile veri analiz edilmeden önce URL normalizasyonunu etkinleştirir.
Varsayılan: true
.
Node sürümü 0.10.1 ve öncesinde, bu parametre middleware.url_normalize
olarak ayarlanır.
http_inspector.real_ip_header¶
Varsayılan olarak, Wallarm kaynak IP adresini ağ paketlerinin IP başlıklarından okur. Ancak, proxy ve yük dengeleyiciler bu değeri kendi IP'lerine çevirebilir.
Gerçek istemci IP'sinin korunması için, bu aracılar genellikle bir HTTP başlığı (örn., X-Real-IP
, X-Forwarded-For
) ekler. real_ip_header
parametresi, orijinal istemci IP'sini çıkarmak için hangi başlığın kullanılacağını belirtir.
Temel Ayarlar¶
route_config¶
Belirli rotalar için ayarların belirtildiği yapılandırma bölümüdür.
route_config.wallarm_application¶
Wallarm application ID. Bu değer, belirli rotalar için geçersiz kılınabilir.
Varsayılan: -1
.
route_config.wallarm_mode¶
Genel trafik filtreleme modu: block
, safe_blocking
, monitoring
veya off
. OOB modunda trafik engellemesi desteklenmez.
Mod, belirli rotalar için geçersiz kılınabilir.
Varsayılan: monitoring
.
route_config.routes¶
Belirli uç noktalar için Wallarm yapılandırmasını ayarlar. Wallarm modu ve application ID'lerini içerir. Örnek yapılandırma:
host¶
Rota ana bilgisayarını belirtir.
Bu parametre, connector.allowed_hosts
ile benzer joker karakter eşleştirmeyi destekler.
Örneğin:
routes.route veya route¶
Belirli rotaları tanımlar. Rotalar, NGINX benzeri öneklerle yapılandırılabilir:
- route: [ = | ~ | ~* | ^~ | ]/location
# | | | | ^ prefix (regex'lerden daha düşük öncelikli)
# | | | ^ prefix (regex'lerden daha yüksek öncelikli)
# | | ^ re case insensitive
# | ^ re case sensitive
# ^ tam eşleşme
Örneğin, sadece tam eşleşen rota için:
Düzenli ifade ile rota eşleştirmek için:
wallarm_application¶
Belirli uç noktalar için Wallarm application ID'yu ayarlar. route_config.wallarm_application
değeri, belirli uç noktalar için geçersiz kılınır.
wallarm_mode¶
Ana bilgisayara özgü trafik filtreleme modu: block
, safe_blocking
, monitoring
veya off
. OOB modunda trafik engellemesi desteklenmez.
Varsayılan: monitoring
.
log.pretty¶
Hata ve erişim günlüklerinin formatını kontrol eder. İnsan tarafından okunabilir günlükler için true
, JSON günlükleri için false
olarak ayarlayın.
Varsayılan: true
.
log.level¶
Günlük seviyesi; debug
, info
, warn
, error
, fatal
olabilir.
Varsayılan: info
.
log.log_file¶
Hata günlüğü çıktısının hedefini belirtir. Seçenekler: stdout
, stderr
veya bir dosya yolu.
Varsayılan: stderr
. Ancak, node stderr
çıktısını /opt/wallarm/var/log/wallarm/go-node.log
dosyasına yönlendirir.
log.access_log.enabled¶
Erişim günlüklerinin toplanıp toplanmayacağını kontrol eder.
Varsayılan: true
.
log.access_log.verbose¶
Erişim günlüğü çıktısında her istek için ayrıntılı bilginin dahil edilip edilmeyeceğini kontrol eder.
Varsayılan: true
.
log.access_log.log_file¶
Erişim günlüğü çıktısının hedefini belirtir. Seçenekler: stdout
, stderr
veya bir dosya yolu.
Varsayılan: stderr
. Belirtilmezse, log.log_file
ayarı kullanılır.
Gelişmiş Ayarlar¶
version: 2
http_inspector:
workers: auto
libdetection_enabled: true
api_firewall_enabled: true
api_firewall_database: /opt/wallarm/var/lib/wallarm-api/2/wallarm_api.db
wallarm_dir: /opt/wallarm/etc/wallarm
shm_dir: /tmp
wallarm_process_time_limit: 1s
tarantool_exporter:
address: 127.0.0.1:3313
enabled: true
log:
proton_log_mask: info@*
metrics:
enabled: true
listen_address: :9000
legacy_status:
enabled: true
listen_address: 127.0.0.1:10246
health_check:
enabled: true
listen_address: :8080
version: 3
http_inspector:
workers: auto
libdetection_enabled: true
api_firewall_enabled: true
api_firewall_database: /opt/wallarm/var/lib/wallarm-api/2/wallarm_api.db
wallarm_dir: /opt/wallarm/etc/wallarm
shm_dir: /tmp
wallarm_process_time_limit: 1s
tarantool_exporter:
address: 127.0.0.1:3313
enabled: true
log:
proton_log_mask: info@*
metrics:
enabled: true
listen_address: :9000
legacy_status:
enabled: true
listen_address: 127.0.0.1:10246
health_check:
enabled: true
listen_address: :8080
http_inspector.workers¶
Wallarm işçi (worker) sayısını belirtir.
Varsayılan: auto
(yani işçi sayısı CPU çekirdek sayısına eşitlenir).
http_inspector.libdetection_enabled¶
libdetection kütüphanesi kullanılarak SQL Injection saldırılarının ek doğrulamasının yapılıp yapılmayacağını belirler.
Varsayılan: true
.
http_inspector.api_firewall_enabled¶
API Specification Enforcement özelliğinin etkin olup olmadığını kontrol eder. Bu özelliğin etkinleştirilmesi, gerekli abonelik ve Wallarm Console üzerinden yapılan yapılandırmanın yerine geçmez.
Varsayılan: true
.
http_inspector.api_firewall_database¶
API Specification Enforcement için yüklediğiniz API spesifikasyonlarını içeren veritabanının yolunu belirtir. Bu veritabanı, Wallarm Cloud ile senkronize olur.
Genellikle bu parametre değiştirilmez.
Varsayılan: /opt/wallarm/var/lib/wallarm-api/2/wallarm_api.db
.
http_inspector.wallarm_dir¶
Node yapılandırma dosyaları için dizin yolunu belirtir. Genellikle bu parametre değiştirilmez. Yardım gerekirse, Wallarm support team ile iletişime geçin.
Varsayılan: /opt/wallarm/etc/wallarm
.
http_inspector.shm_dir¶
HTTP analizörü için paylaşılan dizini belirtir. Genellikle bu parametre değiştirilmez.
Varsayılan: /tmp
.
http_inspector.wallarm_process_time_limit¶
Wallarm Native Node tarafından tek bir HTTP isteğinin işlenmesi için maksimum süreyi belirler.
Süre aşıldığında, istek overlimit_res
saldırısı olarak işaretlenir ve engellenir.
Bu limit, bu parametre ile veya Wallarm Console üzerinden yapılandırılabilir. Wallarm Console ayarları yerel yapılandırmaları geçersiz kılar.
tarantool_exporter.address¶
Wallarm'ın istek işleme sürecinde, istatistiksel analiz hizmeti olan postanalytics servisi için adresi belirler. Genellikle bu parametre değiştirilmez.
Varsayılan: 127.0.0.1:3313
.
tarantool_exporter.enabled¶
Postanalytics servisi etkinleştirildi mi kontrol eder. Wallarm node, postanalytics servisi olmadan çalışmaz; bu parametre true
olmalıdır.
Varsayılan: true
.
log.proton_log_mask¶
Dahili trafik günlüğü için kullanılan maskeyi belirtir. Genellikle bu parametre değiştirilmez.
Varsayılan: info@*
.
metrics.enabled¶
Prometheus metrikleri etkinleştirildi mi kontrol eder. Bu parametre true
olmalıdır; aksi halde Wallarm node düzgün çalışmaz.
Varsayılan: true
.
metrics.listen_address¶
Prometheus metriklerinin açılacağı adres ve portu belirtir. Bu metriklere ulaşmak için /metrics
uç noktasını kullanın.
Varsayılan: :9000
(tüm ağ arayüzlerinde, port 9000).
metrics.legacy_status.enabled¶
/wallarm-status
metrik servisi etkinleştirilmiş mi kontrol eder. Bu parametre true
olmalıdır; aksi halde Wallarm node düzgün çalışmaz.
Varsayılan: true
.
metrics.legacy_status.listen_address¶
JSON formatında /wallarm-status
metriklerinin açılacağı adres ve portu belirtir. Bu metriklere /wallarm-status
uç noktası üzerinden ulaşabilirsiniz.
Varsayılan: 127.0.0.1:10246
.
health_check.enabled¶
Sağlık kontrol uç noktalarının etkinleştirilip etkinleştirilmediğini belirler.
Varsayılan: true
.
health_check.listen_address¶
/live
ve /ready
sağlık kontrol uç noktaları için adres ve portu belirtir.
Varsayılan: :8080
(tüm ağ arayüzlerinde, port 8080).