F5 iRule redirect

F5 iRule Redirect, IP Kısıtlama vb. Örnekler


En çok tercih edilen yük dengeleme ürünlerinden biri olan F5 BIG-IP ürününün sunduğu en güçlü özelliklerden biri de iRuledur. iRule’lar ile uygulama trafiğini esnek bir şekilde manipüle edebilirsiniz. Bu yazıda iRule’un ne olduğundan ziyade iRule’lar ile yapılabilecek, uygulama yöneticilerinin işine yarayabilecek birkaç örnek verilecektir. f5 irule

Not: Oluşturulan iRulelar Virtual serverların içerisindeki Resources tabı kullanılarak devreye alınır.

Local Traffic > Virtual Servers > Buradan bir sanal sunucu seçin > resources > manage iRules butonuna tıklayın > uygulamak istediğiniz iRule seçin > Finish

Yeni F5 iRule oluşturma

  1. Local Traffic > iRules menüsüne gelin
  2. Create butonuna basın
  3. Bu iRule’a bir isim verin
  4. Definition kısmına gelen trafikte manipüle etmek istediğiniz şeyi belirtin

HTTPS redirection – http trafiği https’e yönlendirmek için iRule

when HTTP_REQUEST {

HTTP::redirect https://[getfield [HTTP::host] “:” 1][HTTP::uri]

 }

Bu iRule F5 içerisinde varsayılan olarak gelmektedir. Bir web servis için 2 virtual server oluşturduğunuzu varsayalım, birincisi http://www.üç.com için oluşturulan ve 80 portundan hizmet veren diğeri de https://www.üç.com için oluşturulan ve 443 portundan hizmet veren virtual serverlar olsun. Tüm bağlantıların daima https üzerinden gerçekleşmesini istiyorsanız 80 portu için hazırlamış olduğunuz virtual servera HTTPS redirect iRule’unu ekleyerek tüm http isteklerin https’e yönlendirilmesini sağlamış olursunuz.

URL yönlendirme üç.com -> https://üç.com/dört/

when HTTP_REQUEST {

   if { ([HTTP::uri] == “/”) } {

        HTTP::redirect https://[HTTP::host]/dört/

    }

}

Bazı durumlarda bir web sayfasına (üç.com) gelen isteği üç.com/dört URL ine yönlendirmek isteyebilirsiniz. Bu durum benim karşıma en çok Exchange owa devreye alınırken geldi. Yukarıdaki iRule hangi virtual server’a eklenirse ona gelen ve sonunda /herhangibirsey bulunmayan istekleri /dört URI’yına yönlendirir.

IP liste bazlı izin iRule

when HTTP_REQUEST {

    if { not ( [class match [IP::client_addr] equals liste_izinli_ipler  ] ) } {

        reject

    }

    else {

        HTTP::redirect https://[getfield [HTTP::host] “:” 1][HTTP::uri]

    }

}

Bir Virtual server ile yayınlanmış servise bağlanabilecek IP adreslerine kısıtlamalar getirmek istiyorsanız Bu iRule’u kullanabilirsiniz.

Yukarıdaki iRule hem https redirection yapıp hem de “liste_izinli_ipler” Data Group listte olmayan iplerin erişimini reddetmektedir.

Bu tip iRule’larda kullanmak üzere data group list oluşturmak için:

iRules > Data Group list altına gelin ve create butonuna basarak yeni liste oluşturun. Type kısmından address seçin. Address records bölgesine izinli IP’leri ekleyin.

Alternatif IP kısıtlama iRule

when HTTP_REQUEST {

    set hostname [string tolower [HTTP::host]]

    if {  $hostname contains “subdomain.alperensoyalp.com” && ( [class match [IP::client_addr] equals liste_izinli_ipler  ] ) }

                              {  pool pool_alperensoyalp.com   }

    else {    reject    }

}

Yukarıdaki iRule şunu belirtmektedir: eğer istek subdomain.alperensoyalp.com’a geliyorsa VE isteğin geldiği IP adresi liste_izinli_ipler listesindekilerle eşleşiyorsa bu istekleri pool_alperensoyalp.com pool’una yönlendir. Diğerlerini reddet.

Bir URI erişimini engelleme

when HTTP_REQUEST {

   if { [HTTP::uri] equals “/admin” } {

      HTTP::uri “/anasayfa”

   }

}

Yukarıdaki iRule ile /admin URI’na gelen http isteklerini /anasayfa’ya yönlendirebilirsiniz.

Apache Tomcat Güvenliği için iRule

when HTTP_REQUEST {

  if { [string tolower [HTTP::uri]] starts_with “/manager” or [string tolower [HTTP::uri]] starts_with “/erisimistenmeyenfarklıbirpath” } {

    HTTP::respond 403 content {<html>403 Unauthorized</html>}

  }

}

/managere URI’na gelen isteklere 403 Unauthorized mesajı çıkarmak için yukarıdaki iRule kullanabilirsiniz.

Veya direk bu URI a gelen isteği reddetmek için

when HTTP_REQUEST {

  if { [string tolower [HTTP::uri]] starts_with “/manager” or [string tolower [HTTP::uri]] starts_with “/erisimistenmeyenfarklıbirpath” } {

    reject

  }

}

Farklı subdomainleri farklı pool’lara yönlendirmek için iRule

when HTTP_REQUEST {

set host [string tolower [HTTP::host]]

set uri [string tolower [HTTP::uri]]

    if {$host contains “test1.cas.tr”}

    {

        if { $uri eq “/”} {

                    HTTP::redirect https://test1.cas.tr/test/

                    pool TEST1

        }

    }elseif {$host contains “test2.cas.tr”}

    {

        pool TEST2

               }elseif {$host contains “test3.cas.tr”}

    {

        pool TEST3

    }

}

Yukarıdaki yöntem ile tek bir Dış – Reel IP kullanarak birçok subdomaini yayınlayabilirsiniz. Her bir subdomain için önceden farklı pool’lar oluşturmanız ve yukarıdaki formatı kendinize uyarlamanız yeterli.

F5 iRule ile http context cevabı dönme

when HTTP_REQUEST {

  if { [HTTP::uri] equals “/” } {

    HTTP::respond 200 content {<html>Connection Successful</html>}

  }

}

Eğer bir virtual servera gelen html isteklerine context olarak dönmek istiyorsanız yukarıdaki örneği kullanabilirsiniz. yukarıdaki Örnek iRule’un iliştirildiği virtual server’a http isteği gönderen kullanıcı “Connection Successful” cevabı alacaktır.

Sertifika doğrulatmak için en kolay yöntemlerden biri F5 üzerinden bu yöntemle yapmaktır. Aşağıdaki iRule u kendinize göre düzenleyip yapabilirsiniz.

when HTTP_REQUEST {

          if { [HTTP::path] equals “/.well-known/pki-validation/111111111111111111111111.txt”}

{

    HTTP::respond 200 content {1111111111111111111111111111111111111111111111111

test.com

20190619142011pm}

  }

}

if { [HTTP::path] equals “/.well-known/pki-validation/111111111111111111111111.txt”}

Ayrıca ek bilgi olarak: NETSCALER – F5 Ne neye karşılık geliyor?

citrix netscaler f5 big-ip

Yorumlar (2 yorum)
Betül Demir
Betül Demir #
- 12:32

F5 load balance paylaşımınız faydalı oldu,teşekkürler.
Bu alanda türkçe kaynak ve blog bulmakta zorlanıyoruz,yazılarınızın devamının gelmesini dilerim.

    Alperen Soyalp
    Alperen Soyalp #
    - 14:20

    Rica ederim Betül! Faydalı olmasına sevindim. Yorumun için teşekkürler 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir