Teknik derinlik
WebLogic DDoS Sıkılaştırma: Work Manager, Mesaj Zaman Aşımları ve Overload Protection
Son güncelleme: Ağustos 2026 · Work Manager kısıtları, mesaj zaman aşımları ve overload protection · Okuma süresi ~16 dk

WebLogic'te sınırlanacak sabit bir iş parçacığı havuzu yoktur; havuz kendi kendini ayarlar. Savunmayı Work Manager kısıtları, Complete Message Timeout ve Overload Protection eylemleriyle kurarsınız, bir maxThreads sayısıyla değil. Complete Message Timeout yavaş isteği karşılar, kapasite kısıtı işi sınırlar, Overload Protection ise sunucu dolduğunda ne yapacağını belirler.
Bu rehber Oracle WebLogic Server’ın kendisini bir DDoS saldırısının iş ve bağlantı tüketen
kısmına karşı sertleştirir. WebLogic yaklaşımı diğer uygulama sunucularından önemli bir noktada
değiştirir: sınırlanacak sabit bir iş parçacığı havuzu yoktur. WebLogic tek bir havuzu kendi
ayarlar, bu yüzden savunma bir maxThreads sayısı değildir; bir dizi Work Manager kısıtı,
mesaj zaman aşımı ve sunucu bir kaynağı tükettiğinde ne yapacağına karar veren Overload
Protection eylemidir.
Tomcat ve JBoss’ta olduğu gibi WebLogic bir uygulama sunucusudur ve sertleştirilmiş bir ön katmanın (Oracle HTTP Server ya da başka bir proxy) arkasında durur. Aşağıdaki kontroller ikinci hattır. Her ayar, MBean’i, WLST komutu ve çalıştığını gösteren sayacıyla verilir.
| Cihaz | Saldırı biçimi | WebLogic kontrolü | Nerede durur |
|---|---|---|---|
| Yavaş başlık / yavaş gövde | Complete Message Timeout; Idle Connection Timeout | WebServer / Server MBean | |
| Bağlantı seli | Accept Backlog; Maximum Open Sockets | Server MBean | |
| İş doygunluğu | Work Manager max-threads-constraint, capacity | self-tuning work managers | |
| Büyük istek istismarı | Max Post Size, Max Message Size, Post Timeout | WebServer MBean | |
| Sunucu aşırı yükü | Overload Protection: shared capacity, panic action | Overload MBean |
WebLogic havuzunu kendi ayarlar, bu yüzden savunma bir maxThreads sınırı değil, kısıtlar ve aşırı yük eylemleridir. Tomcat ve JBoss'ta olduğu gibi önce sertleştirilmiş bir ön katman gelir; bunlar ikinci hattır. Saldırı hattı doldurduğunda hiçbiri işe yaramaz.
0. Önce temel ölçüler: iş parçacığı ve bağlantı sayaçları
WebLogic çalışma durumunu MBean’ler üzerinden açar; bunlar WLST içinde okunur. Normal bir haftanın havuz, kuyruk ve bağlantı rakamlarını kaydedin:
# WLST — bağlan ve kendi kendini ayarlayan havuzu, sunucu kanalını oku
connect('weblogic', 'password', 't3://localhost:7001')
serverRuntime()
# Kendi kendini ayarlayan havuz: çalışan, boşta, kuyruk uzunluğu, throughput
cd('/ThreadPoolRuntime/ThreadPoolRuntime')
ls() # ExecuteThreadTotalCount, HoggingThreadCount, PendingUserRequestCount, Throughput
# Varsayılan kanaldaki açık soketler
cd('/ServerChannelRuntimes')
PendingUserRequestCount ve HoggingThreadCount, normal bir hafta temel değerine karşı, açık
soket sayısıyla birlikte, aşağıdaki her değerin ölçüldüğü temel ölçülerdir.
1. Önce ön katman
WebLogic’in dinleme adresinin iç olduğunu, önünde Oracle HTTP Server ya da bir proxy bulunduğunu doğrulayın:
# Dinleme adresi genel değil, iç bir arayüz olmalı
ss -ltnp | grep 7001
Genel bir arayüzdeyse iç adrese bağlayın ve internet bağlantısını ön katmanda sonlandırın. nginx ve Apache rehberleri bu katmanı ele alır. Oracle HTTP Server bir Apache türevidir, dolayısıyla Apache rehberi yakından uygulanır.
2. Mesaj ve bağlantı zaman aşımları
Complete Message Timeout birincil Slowloris savunmasıdır. Onu ve bağlantı sınırlarını WLST ile ayarlayın:
edit()
startEdit()
# Slowloris: tam bir istek mesajını almak için azami süre (saniye)
cd('/Servers/myserver')
cmo.setCompleteMessageTimeout(60)
# Boşta bağlantı zaman aşımı (saniye) — açılıp boşta kalan bağlantıyı kapatır
cmo.setIdleConnectionTimeout(30)
# Bağlantı backlog'u ve açık soket tavanı
cmo.setAcceptBacklog(300)
cmo.setMaxOpenSockCount(8192)
save()
activate()
Complete Message Timeout, Web Server düzeyinde ezilebilen bir sunucu varsayılanıdır. Eski bir domain’de çoğu zaman gevşek bir değerdedir. Onu birkaç on saniyeye çekmek buradaki en etkili yavaş istek önlemidir.
3. Work Manager kısıtları: havuzu değil işi sınırlamak
Havuz kendi kendini ayarladığı için iş sınıflarını kısıtlarsınız. Bir istek selinin WebLogic 503 döndürmeden önce ne kadar kuyruğa girebileceğini sınırlayan şey capacity kısıtıdır:
edit()
startEdit()
# max-threads kısıtı bir iş sınıfı için iş parçacığını sınırlar
cd('/SelfTuning/mydomain')
cmo.createMaxThreadsConstraint('MaxThreadsForApp')
cd('/SelfTuning/mydomain/MaxThreadsConstraints/MaxThreadsForApp')
cmo.setCount(128)
# capacity kısıtı reddetmeden (503) önce kuyruk + çalışan toplamını sınırlar
cd('/SelfTuning/mydomain')
cmo.createCapacity('AppCapacity')
cd('/SelfTuning/mydomain/Capacities/AppCapacity')
cmo.setCount(4096)
save()
activate()
DDoS ile ilgili olan capacity kısıtıdır. Bir sel altındaki sınırsız kuyruğu temiz bir reddetmeye çevirir ve zaten çalışan işi korur.
4. Overload Protection: öngörülebilir başarısızlık
Overload Protection, WebLogic bir kaynağı tükettiğinde ne yapacağına karar verir; böylece sunucu asılmak yerine yükü atar:
edit()
startEdit()
cd('/Servers/myserver/OverloadProtection/myserver')
# Yeni istekler reddedilmeden önce sunucu genelindeki toplam kuyruk
cmo.setSharedCapacityForWorkManagers(65536)
# Takılı iş parçacığı ele alımı: bir parçacık ne kadar çalışınca takılı sayılır
cd('/Servers/myserver')
cmo.setStuckThreadMaxTime(600)
cmo.setStuckThreadTimerInterval(60)
# Başarısızlık eşiğine ulaşınca alınacak eylem
cd('/Servers/myserver/OverloadProtection/myserver')
cmo.setFailureAction('force-shutdown') # ya da karantina için 'administrative'
cmo.setPanicAction('system-exit') # bellek yetersizliğinde temiz çıkış, denetleyici yeniden başlatır
save()
activate()
Sunucuyu tükenmeye iten bir DDoS altında bu, “sunucu asılır ve elle yeniden başlatılır” ile “sunucu yükü 503 ile atar ve yönetilebilir kalır” arasındaki farktır. Biri kesinti, diğeri sınırlı bir olaydır.
5. İstek boyutu sınırları
Web Server MBean’inde büyük istek yüzeyini kapatın:
edit()
startEdit()
cd('/Servers/myserver/WebServer/myserver')
cmo.setMaxPostSize(10485760) # 10 MB
cmo.setMaxPostTimeoutSecs(30) # bir POST gövdesini okumak için izin verilen süre
cmo.setPostTimeoutSecs(30)
save()
activate()
MaxPostSize ve post zaman aşımları, bir isteği açıp gövdeyi yavaş ya da devasa gönderen saldırı
sınıfını kapatır. Varsayılan sınırsız post boyutu, internete komşu her domain için yanlış seçimdir.
6. Ön katmanın arkasında istemci IP’si
Önde Oracle HTTP Server ya da bir proxy varken, WebLogic’in WebLogic eklentisinin ilettiği başlıkları (WLProxyPassThrough ile eklentinin WL-Proxy-Client-IP değeri) kullanması gerekir; böylece log’lar ve kurallar proxy’yi değil gerçek istemciyi görür. Eklentinin istemci adresini ilettiğini ve WebLogic’in buna güvenmeye ayarlandığını doğrulayın. Aksi hâlde her istek proxy’ye atfedilir. Bu, seri boyunca tekrarlayan proxy-IP hatasıdır.
İzlemeye bağlanacak sinyaller
# WLST serverRuntime() içinde, ThreadPoolRuntime'dan:
# 1. PendingUserRequestCount — kuyruğa alınan iş (sel imzası)
# 2. HoggingThreadCount — fazla tutulan iş parçacıkları (yavaş istek ya da takılı)
# 3. ExecuteThreadTotalCount ile throughput karşılaştırması — havuz doygunluğu
# 4. Açık soket sayısı ile MaxOpenSockCount karşılaştırması
cd('/ThreadPoolRuntime/ThreadPoolRuntime')
cmo.getPendingUserRequestCount()
cmo.getHoggingThreadCount()
Yükselen bir PendingUserRequestCount ile artan bir HoggingThreadCount, istek hızının WebLogic’in
işleyebileceğini aştığının imzasıdır. Bu, ön katmanın ya da bir üst katmanın fazlayı emmesi gereken
noktadır.
Bu katmanın dürüst sınırı
Buradaki her şey, çoğunu ilk olarak yakalaması gereken bir ön katmanın arkasında, uygulama katmanını savunur. İki durum bunun dışında kalır.
Birincisi hat doluluğu: hattı dolduran hacim ne ön katmana ne de WebLogic’e ulaşır.
İkincisi sunucuların altındaki işletim sistemi katmanıdır ve Linux ile Windows rehberlerinde ele alınır. WebLogic sıkılaştırması hem ön katmanın hem işletim sistemi katmanının yerinde olduğunu varsayar. Hat kapasitesinin üstünde cevap şebeke tarafıdır.
Uygulama sırası
- Dinleme adresinin iç olduğunu doğrulayın; önüne Oracle HTTP Server ya da bir proxy koyun.
- Temel ölçüleri kaydedin: bekleyen istekler, fazla tutulan iş parçacıkları, açık soketler.
- Complete Message Timeout ve bağlantı sınırlarını WLST ile ayarlayın.
- Kuyruğa alınan işi sınırlamak için bir capacity kısıtı ekleyin.
- Sunucunun asılmak yerine yükü atması için Overload Protection’ı yapılandırın.
- Post boyutu ve post zaman aşımı sınırlarını koyun; eklentinin istemci IP’sini ilettiğini doğrulayın.
- Çalışma zamanı sayaçlarını izlemeye bağlayın.
Birinci adım, sonucu yine en çok değiştiren karardır. WebLogic kontrolleri ikinci hattır ve ancak arkasında durdukları ilk hat kadar değerlidir.
Sık sorulan sorular
- WebLogic'te neden ayarlanacak bir maxThreads yok?
- Çünkü WebLogic yıllar önce sabit execute-queue modelini tek bir kendi kendini ayarlayan iş parçacığı havuzuyla değiştirdi. İş parçacıklarını doğrudan sınırlamak yerine, havuzun onları nasıl dağıttığını Work Manager'larla biçimlendirirsiniz. max-threads-constraint bir iş sınıfının kullanabileceği iş parçacığını sınırlar, min-threads-constraint bir kısmını garanti eder, capacity kısıtı ise WebLogic 503 döndürmeden önce kuyruktaki ve çalışan isteklerin toplamını sınırlar. Zihinsel değişim şudur: havuzu sınırlamaktan işi kısıtlamaya geçersiniz. DDoS için tek bir istek türünden gelen selin ne kadar tüketebileceğini sınırlayan şey capacity kısıtıdır.
- WebLogic'te Slowloris savunması hangi ayardır?
- Öncelikle Complete Message Timeout. Bağlantı açıldıktan sonra WebLogic'in tam bir istek mesajını almak için bekleyeceği toplam süreyi sınırlar. İsteğini bayt bayt sızdıran bir istemci, soketi süresiz tutmak yerine zaman aşımında düşürülür. Sunucu genelinde bir varsayılandır ve Web Server düzeyinde ezilebilir. Bunu, açılıp boşta bekleyen bir bağlantıyı kapatan Idle Connection Timeout ile ve istek gövdesi için makul bir Post Timeout ile birlikte kullanın. Eski bir domain'de bunların hiçbiri varsayılan olarak sıkı değildir.
- Overload Protection tam olarak ne yapar?
- Bir kaynak tükendiğinde WebLogic'in davranışını tanımlar; böylece sunucu çökmek yerine öngörülebilir biçimde başarısız olur. Work Manager'lar için Shared Capacity (sunucu genelinde yeni istekler reddedilmeden önce kuyruğa alınabilecek toplam), bir Max Stuck Thread Time ve bir Failure Action tetikleyen takılı iş parçacığı sayısı, bir de bellek yetersizliği için Panic Action ayarlarsınız. Bir DDoS altında bu, "sunucu asılır ve biri yeniden başlatır" durumunu "sunucu yükü 503 ile atar ve yönetilebilir kalır" durumuna çevirir. Aradaki fark, sınırlı bir olay ile bir kesinti arasındaki farktır.
- WLST mi Administration Console mu?
- Tekrarlanabilir ve incelenebilir olmasını istediğiniz her şey için WLST. Console keşif için uygundur, ama bu rehberdeki WLST komutları betiklenebilir, bir domain'deki yönetilen sunuculara aynı şekilde uygulanır ve sürüm denetimine alınabilir. config.xml'i elle düzenlemek çalışan bir domain için desteklenmez ve Admin Server tarafından üzerine yazılır. WLST'yi diğer sunuculardaki desteklenen CLI'ın karşılığı sayın. Onaylı arayüz odur, bir kaçamak yol değil.
- WebLogic yine de bir ön katmana ihtiyaç duyar mı?
- Evet. Standart Oracle tasarımı internet bağlantısını Oracle HTTP Server'da ya da başka sertleştirilmiş bir proxy'de sonlandırır. Bu katman TLS'i, statik içeriği ve ilk hat oran sınırlama ile yavaş bağlantı tahliyesini taşır, sonra iç ağ üzerinden WebLogic'e iletir. Buradaki WebLogic kontrolleri o katmanın arkasındaki ikinci hattır. Önemlidirler, çünkü bir ön katman iç ağda atlatılabilir ya da yakalayamadığı bir saldırıyı iletebilir. Ama WebLogic'i bir ön katmanın arkasına koymanın yerini tutmazlar.
- Bu ayarlar hacimsel bir saldırıyı durdurur mu?
- Hayır. Saldırı sunucuların önündeki hattı doldurursa ne ön katman ne de WebLogic isteği alır ve hiçbir MBean ayarı geçerli olmaz. Buradaki her şey uygulama katmanında iş doygunluğuna ve bağlantı tükenmesine karşıdır. Hat kapasitesinin üzerindeki hacim şebeke tarafının sorunudur ve bir WebLogic domain'inde çözülmez.
Yayım: Ağustos 2026
Bu rehber, üreticiler yeni modeller ve fiyatlandırma açıkladıkça güncellenir. Üreticileri nasıl karşılaştırıyoruz