Format

ACL belirtmenin iki yolu vardır isimlendirilmiş ACL ve satır içi ACL. Aşağıda isimlendirilmiş bir tanım var.

acl is_static path -i -m beg /static

ACL anahtar sözcüğüyle başlayıp, ardından bir isim ve ardından koşul gelir. Burada is_static adlı bir ACL'miz var. Aşağıdaki şekilde kullanmanın nedeni birden fazla yerde aynı ACL kullanılacaksa doğrudur.

acl is_static path -i -m beg /static
use_backend be_static if is_static

path -i -m beg /static koşulu, URL'nin /static ile başlayıp başlamadığını kontrol eder. Bunun, bu makalenin ilerisindeki diğer koşullarla birlikte nasıl çalıştığını göreceksiniz.

İkinci form anonim veya satır içi ACL'dir:

use_backend be_static if { path -i -m beg /static }

Bu, yukarıdaki iki satırın yaptığı ile aynı şeyi yapar, sadece tek satırda. Sıralı ACL'ler için durum süslü parantezlerin içinde bulunur.

Her iki durumda da, birden çok koşulu birlikte kullanabilirsiniz. Aralarında hiçbir şey olmadan birbiri ardına listelenen ACL'lerin bir ve (&&) ile birleştirildiği kabul edilecektir. Genel durum yalnızca her iki ACL de doğruysa geçerlidir.

http-request deny if { path -i -m beg /api } { src 10.0.0.0/16 }

Bu, 10.0.0.0/16 alt ağındaki herhangi bir istemcinin /api ile başlayan herhangi bir şeye erişmesini engeller.

Ünlem işareti eklemek bir koşulu tersine çevirir:

http-request deny if { path -i -m beg /api } !{ src 10.0.0.0/16 }

Artık yalnızca 10.0.0.0/16 alt ağındaki istemcilerin /api ile başlayan yollara erişmesine izin verilirken, diğerlerinin tümü yasaklanacaktır.

IP adresleri bir dosyadan da içe aktarılabilir:

http-request deny if { path -i -m beg /api } { src -f /etc/haproxy/blacklist.acl }

Daha sonra blacklist.acl içinde engellemek için CIDR gösterimini kullanarak tek tek veya bir dizi IP adresini listeleyebilirsiniz:

blacklist.acl
192.168.122.3
192.168.122.0/24

|| (veya) kullanarak her iki koşulun da geçerli olabileceği bir ACL tanımlayabilirsiniz.

http-request deny if { path -i -m beg /evil } || { path -i -m end /evil }

Bununla, adresi /evil başlayan veya /evil biten her istek reddedilecektir.

Adlandırılmış ACL'leri birleştirmek için de aynısını yapabilirsiniz:

acl starts_evil path -i -m beg /evil
acl ends_evil path -i -m end /evil
http-request deny if starts_evil || ends_evil

Adlandırılmış ACL'lerde, aynı ACL adını birden çok kez belirtmek koşulların mantıksal bir || (veya) neden olur, bu nedenle son blok da şu şekilde ifade edilebilir:

acl evil path_beg /evil
acl evil path_end /evil
http-request deny if evil

Bu, daha karmaşık koşullar oluşturmak için AND'leri ve OR'ları (ayrıca adlandırılmış ve satır içi ACL'leri) birleştirmenize olanak tanır, örneğin:

http-request deny if evil !{ src 10.0.0.0/16 }

Bu, adres /evil ile başlıyor veya bitiyorsa, yalnızca 10.0.0.0/16 alt ağında olmayan istemciler için isteği engeller.

Last updated