Ana içeriğe geç

Ömrünü Tamamlamış (EOL) Çok Kiracılı Node'un Güncellenmesi

Bu talimatlar, ömrünü tamamlamış (sürüm 3.6 ve altı) çok kiracılı node'un 5.0 sürümüne kadar güncellenmesi için izlenecek adımları açıklar.

Gereksinimler

  • technical tenant account altında eklenmiş Global administrator rolüne sahip kullanıcı tarafından sonraki komutların yürütülmesi

  • US Wallarm Cloud ile çalışıyorsanız https://us1.api.wallarm.com adresine veya EU Wallarm Cloud ile çalışıyorsanız https://api.wallarm.com adresine erişim. Lütfen erişimin bir güvenlik duvarı tarafından engellenmediğinden emin olun.

  • Saldırı tespit kuralları güncellemeleri ve API spesifikasyonlarına erişim sağlamak, ayrıca beyaz listeye alınmış, kara listeye alınmış veya gri listeye alınmış ülkeler, bölgeler ya da veri merkezlerine ilişkin kesin IP'leri almak için aşağıdaki IP adreslerine erişim.

    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
    

Adım 1: Wallarm destek ekibi ile iletişime geçin

Çok kiracılı node güncellemesi sırasında custom ruleset building özelliğinin en son sürümünü almak için Wallarm destek ekibi ile iletişime geçin.

Engellenmiş güncelleme

Yanlış bir custom ruleset building sürümünün kullanılması güncelleme sürecini engelleyebilir.

Destek ekibi ayrıca çok kiracılı node'un güncellenmesiyle ve gerekli yeniden yapılandırmayla ilgili tüm sorularınızı yanıtlamanıza yardımcı olacaktır.

Adım 2: Standart güncelleme prosedürünü uygulayın

Standart prosedürler aşağıdakilerdir:

Çok kiracılı node oluşturulması

Wallarm node oluşturulurken, lütfen Multi-tenant node seçeneğini seçin:

Multi-tenant node creation

Adım 3: Çok kiracılılık yeniden yapılandırması

Trafiğin kiracılarınız ve onların uygulamalarıyla nasıl ilişkilendirileceğine dair yapılandırmayı yeniden yazın. Aşağıdaki örneğe göz atın. Örnekte:

  • Tenant, partnerin müşterisini temsil eder. Partnere ait iki müşteri bulunmaktadır.

  • tenant1.com ve tenant1-1.com hedefli trafik, müşteri 1 ile ilişkilendirilmelidir.

  • tenant2.com hedefli trafik, müşteri 2 ile ilişkilendirilmelidir.

  • Müşteri 1'in ayrıca üç uygulaması bulunmaktadır:

    • tenant1.com/login
    • tenant1.com/users
    • tenant1-1.com

    Bu 3 yol hedefli trafik, ilgili uygulama ile ilişkilendirilmelidir; kalan trafik müşteri 1’in genel trafiği olarak kabul edilmelidir.

Önceki sürüm yapılandırmanızı inceleyin

3.6 sürümünde, bu aşağıdaki gibi yapılandırılabilirdi:

server {
  server_name  tenant1.com;
  wallarm_application 20;
  ...
  location /login {
     wallarm_application 21;
     ...
  }
  location /users {
     wallarm_application 22;
     ...
  }

server {
  server_name  tenant1-1.com;
  wallarm_application 23;
  ...
}

server {
  server_name  tenant2.com;
  wallarm_application 24;
  ...
}
...
}

Yukarıdaki yapılandırma ile ilgili notlar:

  • tenant1.com ve tenant1-1.com hedefli trafik, bu müşteriye API request aracılığıyla 20 ve 23 değerleriyle ilişkilendirilmiştir.

  • Diğer uygulamaları kiracılara bağlamak için benzer API istekleri gönderilmiş olmalıdır.

  • Kiracılar ve uygulamalar ayrı varlıklar olduğundan, bunları farklı direktiflerle yapılandırmak mantıklıdır. Ek API isteklerinden kaçınmak da pratik olacaktır. Kiracılar ile uygulamalar arasındaki ilişkilerin yapılandırma üzerinden tanımlanması mantıklıdır. Mevcut yapılandırmada bu eksik olmakla birlikte, aşağıda açıklanan yeni 5.x yaklaşımında yer alacaktır.

5.x Yaklaşımını İnceleyin

5.x sürümünde, node yapılandırmasında tenant tanımlamanın yolu UUID kullanımıdır.

Yapılandırmayı yeniden yazmak için aşağıdakileri yapın:

  1. Kiracılarınızın UUID'lerini edinin.

  2. Kiracıları dahil edip, uygulamalarını NGINX yapılandırma dosyasına ekleyin.

Kiracılarınızın UUID'lerini Edinin

Kiracı listesini almak için, authenticated istekleri Wallarm API'ye gönderin. Kimlik doğrulama yöntemi, tenant creation sırasında kullanılan yöntemle aynıdır.

  1. Daha sonra UUID ile ilişkili olan clientid(leri) bulmak için alın:

    Wallarm Console kullanıcı arayüzündeki ID sütunundan clientid(leri) kopyalayın:

    Selector of tenants in Wallarm Console

    1. /v2/partner_client yoluna GET isteği gönderin:

      Kendi client'ınızdan gönderilen isteğe örnek

      curl -X GET \
      'https://us1.api.wallarm.com/v2/partner_client?partnerid=PARTNER_ID' \
      -H 'accept: application/json' \
      -H "X-WallarmApi-Token: <YOUR_TOKEN>"
      
      curl -X GET \
      'https://api.wallarm.com/v2/partner_client?partnerid=PARTNER_ID' \
      -H 'accept: application/json' \
      -H "X-WallarmApi-Token: <YOUR_TOKEN>"
      

      Burada PARTNER_ID, tenant oluşturma prosedüründeki Adım 2'de elde edilen değerdir.

      Yanıt örneği:

      {
      "body": [
          {
              "id": 1,
              "partnerid": <PARTNER_ID>,
              "clientid": <CLIENT_1_ID>,
              "params": null
          },
          {
              "id": 3,
              "partnerid": <PARTNER_ID>,
              "clientid": <CLIENT_2_ID>,
              "params": null
          }
      ]
      }
      
    2. Yanıt içerisinden clientid(leri) kopyalayın.

  2. Her kiracının UUID'sini almak için, v1/objects/client yoluna POST isteği gönderin:

    Kendi client'ınızdan gönderilen isteğe örnek

    curl -X POST \
    https://us1.api.wallarm.com/v1/objects/client \
    -H 'content-type: application/json' \
    -H 'X-WallarmApi-Token: <YOUR_TOKEN>' \
    -d '{ "filter": { "id": [<CLIENT_1_ID>, <CLIENT_2_ID>]}}'
    
    curl -X POST \
    https://api.wallarm.com/v1/objects/client \
    -H 'content-type: application/json' \
    -H 'X-WallarmApi-Token: <YOUR_TOKEN>' \
    -d '{ "filter": { "id": [<CLIENT_1_ID>, <CLIENT_2_ID>]}}'
    

    Yanıt örneği:

    {
    "status": 200,
    "body": [
        {
            "id": <CLIENT_1_ID>,
            "name": "<CLIENT_1_NAME>",
            ...
            "uuid": "11111111-1111-1111-1111-111111111111",
            ...
        },
        {
            "id": <CLIENT_2_ID>,
            "name": "<CLIENT_2_NAME>",
            ...
            "uuid": "22222222-2222-2222-2222-222222222222",
            ...
        }
    ]
    }
    
  3. Yanıttan, uuid(leri) kopyalayın.

Kiracıları Dahil Edin ve Uygulamalarını NGINX Yapılandırma Dosyasında Ayarlayın

NGINX yapılandırma dosyasında:

  1. Yukarıda aldığınız tenant UUID'lerini wallarm_partner_client_uuid direktiflerinde belirtin.

  2. Korunan uygulama ID'lerini wallarm_application direktiflerinde ayarlayın.

    Node 3.6 veya daha düşük için kullanılan NGINX yapılandırması uygulama yapılandırmasını içeriyorsa, sadece tenant UUID'lerini belirtip uygulama yapılandırmasını değiştirmeden bırakın.

Örnek:

server {
  server_name  tenant1.com;
  wallarm_partner_client_uuid 11111111-1111-1111-1111-111111111111;
  ...
  location /login {
     wallarm_application 21;
     ...
  }
  location /users {
     wallarm_application 22;
     ...
  }

server {
  server_name  tenant1-1.com;
  wallarm_partner_client_uuid 11111111-1111-1111-1111-111111111111;
  wallarm_application 23;
  ...
}

server {
  server_name  tenant2.com;
  wallarm_partner_client_uuid 22222222-2222-2222-2222-222222222222;
  ...
}
...
}

Yukarıdaki yapılandırmada:

  • Kiracılar ve uygulamalar farklı direktiflerle yapılandırılmıştır.

  • Kiracılar ile uygulamalar arasındaki ilişkiler, ilgili NGINX yapılandırma bloklarındaki wallarm_application direktifleri ile tanımlanmıştır.

Adım 4: Wallarm çok kiracılı node işleyişini test edin

  1. Send the request with test Path Traversal attack to a protected resource address:

    curl http://localhost/etc/passwd
    

    If traffic is configured to be proxied to example.com, include the -H "Host: example.com" header in the request.

  2. Open Wallarm Console → Attacks section in the US Cloud or EU Cloud and make sure the attack is displayed in the list.

    Attacks in the interface

  3. Optionally, test other aspects of the node functioning.