Ana içeriğe geç

EOL Wallarm NGINX Modüllerinin Yükseltilmesi

Bu yönergeler, ömrünü tamamlamış (EOL) Wallarm NGINX modüllerini (sürüm 3.6 ve altı) 5.0 sürümüne yükseltmek için gereken adımları açıklamaktadır. Wallarm NGINX modülleri, aşağıdaki yönergelerden birine uygun olarak kurulan modüllerdir:

  • NGINX stable için ayrı paketler

  • NGINX Plus için ayrı paketler

  • Dağıtım tarafından sağlanan NGINX için ayrı paketler

Wallarm nodes 3.6 and lower are not supported

You are recommended to upgrade the Wallarm nodes 3.6 and lower since these versions are not supported, they are end-of-life.

Node configuration and traffic filtration have been significantly simplified in the Wallarm node of the latest versions. Before upgrading the modules, please carefully review the list of changes and general recommendations. Please note that some settings of the latest node are incompatible with the nodes 3.6 and lower.

Tümünü Bir Arada Yükleyici ile Yükseltme

Güncelleme, Wallarm'ın all-in-one installer aracı kullanılarak gerçekleştirilir; çünkü ayrı Linux paketleri kullanımdan kaldırılmıştır. Bu yöntem, önceki yaklaşıma kıyasla yükseltme sürecini ve devam eden dağıtım bakımını sadeleştirir.

Yükleyici otomatik olarak aşağıdaki işlemleri gerçekleştirir:

  1. İşletim sisteminizi ve NGINX sürümünüzü kontrol eder.
  2. Tespit edilen OS ve NGINX sürümü için Wallarm repositorilerini ekler.
  3. Bu repositorilerden Wallarm paketlerini kurar.
  4. Kurulan Wallarm modülünü NGINX'inize entegre eder.
  5. Sağlanan token ile filtreleme düğümünü Wallarm Cloud'a bağlar.

    Ayrı Linux paketleri ile manuel yükseltme artık desteklenmemektedir.

Manual ile all-in-one karşılaştırması

Wallarm Teknik Destek Ekibini, EOL Düğüm Yükseltmesi Yapacağınızı Bildirin

Ömrünü tamamlamış Wallarm NGINX modüllerini (sürüm 3.6 ve altı) 5.0 sürümüne yükseltiyorsanız, Wallarm teknik destek ekibini bu durumdan haberdar edin ve yardım isteyin.

Diğer yardımların yanı sıra, Wallarm hesabınız için yeni IP listesi mantığını etkinleştirmelerini talep edin. Yeni IP listesi mantığı etkinleştirildiğinde, lütfen Wallarm Console'u açın ve IP lists bölümünün mevcut olduğundan emin olun.

Gereksinimler

  • Access to the account with the Administrator role in Wallarm Console for the US Cloud or EU Cloud.

  • Access to https://meganode.wallarm.com to download all-in-one Wallarm installer. Ensure the access is not blocked by a firewall.

  • Access to https://us1.api.wallarm.com for working with US Wallarm Cloud or to https://api.wallarm.com for working with EU Wallarm Cloud. If access can be configured only via the proxy server, then use the instructions.

  • Executing all commands as a superuser (e.g. root).

  • Access to the IP addresses below for downloading updates to attack detection rules and API specifications, as well as retrieving precise IPs for your allowlisted, denylisted, or graylisted countries, regions, or data centers.

    34.96.64.17
    34.110.183.149
    35.235.66.155
    34.102.90.100
    34.94.156.115
    35.235.115.105
    
    34.160.38.183
    34.144.227.90
    34.90.110.226
    

Yükseltme Prosedürü

  • Eğer filtreleme düğümü ile postanalytics modülleri aynı sunucuda kuruluysa, hepsini yükseltmek için aşağıdaki yönergeleri takip edin.

    Yeni bir makinede, all-in-one installer kullanarak daha yeni sürümde bir düğüm çalıştırmanız, düzgün çalıştığını test ettikten sonra eskisini durdurup trafiğin eski makine yerine yeni makine üzerinden yönlendirilmesini sağlamanız gerekecektir.

  • Eğer filtreleme düğümü ile postanalytics modülleri farklı sunucularda kuruluysa, önce postanalytics modülünü ve sonra bu yönergeleri takip ederek filtreleme modülünü yükseltin.

Adım 1: Threat Replay Testing Modülünü Devre Dışı Bırakın (node 2.16 veya altı yükseltiliyorsa)

Eğer Wallarm düğümünüzü 2.16 veya daha düşük bir sürümden yükseltiyorsanız, lütfen Wallarm Console → VulnerabilitiesConfigure bölümünden Threat Replay Testing modülünü devre dışı bırakın.

Bu modülün çalışması, yükseltme sürecinde yanlış pozitif sonuçlara neden olabilir. Modülü devre dışı bırakmak bu riski minimize eder.

Adım 2: Temiz Bir Makine Hazırlayın

When upgrading modules with all-in-one installer, you cannot upgrade an old package installation - instead you need to use a clean machine. Thus, as step 1, prepare a machine with one of the supported OS:

  • Debian 10, 11 and 12.x

  • Ubuntu LTS 18.04, 20.04, 22.04

  • CentOS 7, 8 Stream, 9 Stream

  • Alma/Rocky Linux 9

  • RHEL 8.x

  • RHEL 9.x

  • Oracle Linux 8.x

  • Oracle Linux 9.x

  • Redox

  • SuSe Linux

  • Others (the list is constantly widening, contact Wallarm support team to check if your OS is in the list)

Using new clean machine will lead to that at some moment you will have both old and new node, which is good: you can test the new one working properly without stopping the old one.

Adım 3: NGINX ve Bağımlılıkları Kurun

Install the latest NGINX version of:

  • NGINX stable (the latest supported version is v1.28.0) - see how to install it in the NGINX documentation.

  • NGINX Mainline (the latest supported version is v1.27.5) - see how to install it in the NGINX documentation.

  • NGINX Plus (the latest supported version is NGINX Plus R33) - see how to install it in the NGINX documentation.

  • Distribution-Provided NGINX - to install, use the following commands:

    sudo apt update 
    sudo apt -y install --no-install-recommends nginx
    
    sudo apt-get update
    sudo apt-get install nginx
    
    sudo yum -y update 
    sudo yum install -y nginx
    
    sudo yum -y update 
    sudo yum install -y nginx
    
    sudo yum -y update 
    sudo yum install -y nginx
    

Adım 4: Wallarm Token'ını Hazırlayın

To install node, you will need a Wallarm token of the appropriate type. To prepare a token:

  1. Open Wallarm Console → SettingsAPI tokens in the US Cloud or EU Cloud.
  2. Find or create API token with the Node deployment/Deployment usage type.
  3. Copy this token.
  1. Open Wallarm Console → Nodes in the US Cloud or EU Cloud.
  2. Do one of the following:
    • Create the node of the Wallarm node type and copy the generated token.
    • Use existing node group - copy token using node's menu → Copy token.

Adım 5: All-in-one Wallarm Yükleyicisini İndirin

Wallarm suggests all-in-one installations for the following processors:

  • x86_64

  • ARM64 (beta)

To download all-in-one Wallarm installation script, execute the command:

curl -O https://meganode.wallarm.com/6.1/wallarm-6.1.0.x86_64-glibc.sh
curl -O https://meganode.wallarm.com/6.1/wallarm-6.1.0.aarch64-glibc.sh

Adım 6: All-in-one Wallarm Yükleyicisini Çalıştırın

Filtreleme Düğümü ve Postanalytics Aynı Sunucuda

  1. Run downloaded script:

    # If using the x86_64 version:
    sudo env WALLARM_LABELS='group=<GROUP>' sh wallarm-6.1.0.x86_64-glibc.sh
    
    # If using the ARM64 version:
    sudo env WALLARM_LABELS='group=<GROUP>' sh wallarm-6.1.0.aarch64-glibc.sh
    

    The WALLARM_LABELS variable sets group into which the node will be added (used for logical grouping of nodes in the Wallarm Console UI).

    # If using the x86_64 version:
    sudo sh wallarm-6.1.0.x86_64-glibc.sh
    
    # If using the ARM64 version:
    sudo sh wallarm-6.1.0.aarch64-glibc.sh
    
  2. Select US Cloud or EU Cloud.

  3. Enter Wallarm token.

Filtreleme Düğümü ve Postanalytics Farklı Sunucularda

Filtreleme düğümü ve postanalytics modüllerinin yükseltilme sırası

Eğer filtreleme düğümü ile postanalytics modülleri farklı sunucularda kuruluysa, postanalytics paketlerini yükseltmeden önce filtreleme düğümü paketlerini güncellemeniz gerekmektedir.

  1. Bu yönergeleri takip ederek postanalytics modülünü yükseltin.

  2. Filtreleme düğümünü yükseltin:

    # x86_64 sürümü kullanılıyorsa:
    sudo env WALLARM_LABELS='group=<GROUP>' sh wallarm-5.3.0.x86_64-glibc.sh filtering
    
    # ARM64 sürümü kullanılıyorsa:
    sudo env WALLARM_LABELS='group=<GROUP>' sh wallarm-5.3.0.aarch64-glibc.sh filtering
    

    WALLARM_LABELS değişkeni, düğümün ekleneceği grubu ayarlar (Wallarm Console UI'da düğümlerin mantıksal gruplandırılması için kullanılır).

    # x86_64 sürümü kullanılıyorsa:
    sudo sh wallarm-5.3.0.x86_64-glibc.sh filtering
    
    # ARM64 sürümü kullanılıyorsa:
    sudo sh wallarm-5.3.0.aarch64-glibc.sh filtering
    

Adım 7: Önceki Wallarm Düğüm Sürümünden Allowlist ve Denylist'leri 5.0'a Taşıyın (sadece node 2.18 veya altı yükseltiliyorsa)

Eğer düğümünüzü 2.18 veya daha düşük bir sürümden yükseltiyorsanız, önceki Wallarm düğüm sürümündeki allowlist ve denylist yapılandırmasını en güncel sürüme taşıyın.

Adım 8: Eski Düğüm Sunucusundan NGINX ve Postanalytics Yapılandırmalarını Yeni Olanına Aktarın

Eski makinede yer alan düğümle ilgili NGINX yapılandırması ve postanalytics yapılandırmasını, gerekli yönergeleri kopyalayarak yeni makinedeki dosyalara aktarın.

Kaynak Dosyalar

Eski makinede, işletim sistemine ve NGINX sürümüne bağlı olarak NGINX yapılandırma dosyaları farklı dizinlerde ve farklı isimlerde bulunabilir. En yaygın olanlar şunlardır:

  • NGINX ayarlarını içeren /etc/nginx/conf.d/default.conf

  • Wallarm düğüm izleme ayarlarını içeren /etc/nginx/conf.d/wallarm-status.conf. Detaylı açıklama linkte mevcuttur.

Ayrıca, postanalytics modülünün (Tarantool veritabanı ayarlarının) yapılandırması genellikle aşağıdakilerden birinde bulunur:

  • /etc/default/wallarm-tarantool veya

  • /etc/sysconfig/wallarm-tarantool

Hedef Dosyalar

All-in-one installer, işletim sistemi ve NGINX sürümlerinin farklı kombinasyonlarıyla çalıştığından, yeni makinenizde hedef dosyalar farklı isimlerde ve farklı dizinlerde olabilir.

Yapılandırma aktarılırken aşağıdaki adımların uygulanması gerekmektedir.

Kullanımdan Kaldırılmış NGINX Direktiflerini Yeniden Adlandırın

Açıkça yapılandırma dosyalarında belirtilmişse, aşağıdaki NGINX direktiflerinin isimlerini değiştirin:

Sadece direktif isimlerini değiştirdik; mantıkları aynı kalmaktadır. Eski isimdeki direktifler geçici olarak desteklenmeye devam etmektedir, ancak yeniden adlandırmanız tavsiye edilir.

Düğüm Loglama Değişkenlerini Güncelleyin

Yeni düğüm sürümünde, düğüm loglama değişkenlerinde aşağıdaki değişiklikler uygulanmıştır:

  • wallarm_request_time değişkeni wallarm_request_cpu_time olarak yeniden adlandırılmıştır.

    Sadece değişken adı değiştirilmiş olup, mantığı aynıdır. Eski isim geçici olarak desteklenmektedir, fakat yine de yeniden adlandırmanız önerilir.

  • wallarm_request_mono_time değişkeni eklenmiştir – sıraya, kuyruğa alınan zaman ile

    • Kuyrukta geçirilen süre
    • İsteğin işlenmesinde CPU'nun harcadığı saniye cinsinden toplam zaman
      bilgisini loglamak isterseniz, bu değişkeni log formatınızın yapılandırmasına ekleyin.

Wallarm Düğüm Filtrasyon Modu Ayarlarını Son Sürümlerde Yapılan Değişikliklere Göre Ayarlayın

  1. Aşağıda listelenen ayarların beklenen davranışlarının, off ve monitoring filtrasyon modlarının değişmiş mantığına uygunluğunu kontrol edin:

  2. Eğer beklenen davranış, değişen filtrasyon modu mantığıyla örtüşmüyorsa, bu yönergeleri kullanarak ayarları güncelleyin.

overlimit_res Saldırı Tespit Yapılandırmasını Direktiflerden Kurala Taşıyın

Starting from the version 3.6, you can fine-tune the overlimit_res attack detection using the rule in Wallarm Console.

Earlier, the wallarm_process_time_limit and wallarm_process_time_limit_block NGINX directives have been used. The listed directives are considered to be deprecated with the new rule release and will be deleted in future releases.

If the overlimit_res attack detection settings are customized via the listed directives, it is recommended to transfer them to the rule as follows:

  1. Open Wallarm Console → Rules and proceed to the Limit request processing time rule setup.

  2. Configure the rule as done via the NGINX directives:

    • The rule condition should match the NGINX configuration block with the wallarm_process_time_limit and wallarm_process_time_limit_block directives specified.
    • The time limit for the node to process a single request (milliseconds): the value of wallarm_process_time_limit.

      Risk of running out of system memory

      The high time limit and/or continuation of request processing after the limit is exceeded can trigger memory exhaustion or out-of-time request processing.

    • The node will either block or pass the overlimit_res attack depending on the node filtration mode:

      • In the monitoring mode, the node forwards the original request to the application address. The application has the risk to be exploited by the attacks included in both processed and unprocessed request parts.
      • In the safe blocking mode, the node blocks the request if it is originated from the graylisted IP address. Otherwise, the node forwards the original request to the application address. The application has the risk to be exploited by the attacks included in both processed and unprocessed request parts.
      • In the block mode, the node blocks the request.
  3. Delete the wallarm_process_time_limit and wallarm_process_time_limit_block NGINX directives from the NGINX configuration file.

    If the overlimit_res attack detection is fine-tuned using both the directives and the rule, the node will process requests as the rule sets.

wallarm-status.conf Dosyası İçeriğini Güncelleyin

Aşağıdaki gibi /etc/nginx/conf.d/wallarm-status.conf dosyasının içeriğini güncelleyin:

server {
  listen 127.0.0.8:80;
  server_name localhost;

  allow 127.0.0.0/8;   # Filtre düğüm sunucusunun yalnızca loopback adresleri için erişim sağlanır  
  deny all;

  wallarm_mode off;
  disable_acl "on";   # İstek kaynaklarının kontrolü devre dışı bırakılmış olup, yasaklanmış IP'lerin wallarm-status servisine erişimine izin verilir. https://docs.wallarm.com/admin-en/configure-parameters-en/#disable_acl
  access_log off;

  location ~/wallarm-status$ {
    wallarm_status on;
  }
}

İstatistik servisi yapılandırması hakkında daha fazla bilgi

Wallarm Engelleme Sayfasını Güncelleyin

Yeni düğüm sürümünde, Wallarm örnek engelleme sayfası değiştirilmiştir. Sayfadaki logo ve destek e-posta adresi varsayılan olarak boş bırakılmıştır.

Eğer engellenen isteklere yanıt olarak dönen sayfa olarak &/usr/share/nginx/html/wallarm_blocked.html yapılandırıldıysa, yeni örnek sayfa kopyalanıp özelleştirilerek kullanılmalıdır.

Adım 9: API Portunu Güncelleyin

Starting with version 4.0, the filtering node uploads data to the Cloud using the us1.api.wallarm.com:443 (US Cloud) and api.wallarm.com:443 (EU Cloud) API endpoints instead of us1.api.wallarm.com:444 and api.wallarm.com:444.

If you upgrade the node from the version 3.x or lower and your server with the deployed node has a limited access to the external resources and the access is granted to each resource separately, then after upgrade the synchronization between the filtering node and the Cloud will stop.

To restore the synchronization, in your configuration, change port 444 to 443 for API endpoint for each resource.

Adım 10: Threat Replay Testing Modülünü Yeniden Etkinleştirin (sadece node 2.16 veya altı yükseltiliyorsa)

Threat Replay Testing modülü kurulumu için önerileri inceleyin ve gerekiyorsa modülü yeniden etkinleştirin.

Bir süre sonra, modülün çalışmasının yanlış pozitif sonuçlara yol açmadığından emin olun. Yanlış pozitifler tespit ederseniz, lütfen Wallarm teknik destek ekibiyle iletişime geçin.

Adım 11: NGINX'i Yeniden Başlatın

Restart NGINX using the following command:

sudo systemctl restart nginx

Adım 12: Wallarm Düğümünün Çalışmasını Test Edin

Yeni düğümün çalışmasını test etmek için:

  1. Korumalı kaynak adresine test SQLI ve XSS saldırıları içeren bir istek gönderin:

    curl http://localhost/?id='or+1=1--a-<script>prompt(1)</script>'
    
  2. Wallarm Console → Attacks bölümünü US Cloud veya EU Cloud üzerinden açın ve saldırıların listelendiğini doğrulayın.

  3. Bulut ortamınızda veriler (kurallar, IP listeleri) yeni düğüme senkronize edildikten sonra, kuralların beklendiği gibi çalıştığını test etmek için birkaç test saldırısı gerçekleştirin.

Adım 13: Trafiğin Wallarm Düğümüne Yönlendirilmesini Yapılandırın

Kullanılan dağıtım yaklaşımına bağlı olarak, aşağıdaki ayarları gerçekleştirin:

Yük dengeleyicinizin hedeflerini, trafiği Wallarm örneğine yönlendirecek şekilde güncelleyin. Ayrıntılar için lütfen yük dengeleyici dokümantasyonunuza başvurun.

Trafiğin tamamen yeni düğüme yönlendirilmesinden önce, kısmi olarak yönlendirip yeni düğüm davranışını kontrol etmeniz önerilir.

Web veya proxy sunucunuz (örneğin, NGINX, Envoy) gelen trafiği Wallarm düğümüne yansıtacak şekilde yapılandırın. Yapılandırma ayrıntıları için ilgili web veya proxy sunucu dokümantasyonuna bakmanızı tavsiye ederiz.

Buradaki linkte, en popüler web ve proxy sunucuları (NGINX, Traefik, Envoy) için örnek yapılandırma bulunmaktadır.

Adım 14: Eski Düğümü Kaldırın

  1. Wallarm Console → Nodes bölümünden eski düğümü seçip Delete butonuna tıklayarak silin.

  2. İşlemi onaylayın.

    Düğüm Cloud üzerinden silindiğinde, uygulamalarınıza gelen isteklerin filtrelenmesi duracaktır. Filtreleme düğümünü silmek geri alınamaz. Düğüm listeden kalıcı olarak kaldırılacaktır.

  3. Eski düğümün bulunduğu makineyi silin veya sadece Wallarm düğüm bileşenlerinden temizleyin:

    sudo apt remove wallarm-node nginx-module-wallarm
    
    sudo apt remove wallarm-node nginx-module-wallarm
    
    sudo yum remove wallarm-node nginx-module-wallarm
    
    sudo yum remove wallarm-node nginx-module-wallarm
    
    sudo yum remove wallarm-node nginx-module-wallarm
    

Ayarların Özelleştirilmesi

Wallarm modülleri 5.0 sürümüne güncellenmiştir. Önceki filtreleme düğümü ayarları, yeni sürüme otomatik olarak uygulanacaktır. Ek ayarlar yapmak için mevcut direktifleri kullanın.

Common customization options: