Security
Ağ proxy'si
OpenClaw, çalışma zamanı HTTP ve WebSocket trafiğini operatör tarafından yönetilen bir forward proxy üzerinden yönlendirebilir. Bu, merkezi çıkış kontrolü, daha güçlü SSRF koruması ve daha iyi ağ denetlenebilirliği isteyen dağıtımlar için isteğe bağlı bir derinlemesine savunma katmanıdır.
OpenClaw bir proxy göndermez, indirmez, başlatmaz, yapılandırmaz veya sertifikalandırmaz. Ortamınıza uyan proxy teknolojisini siz çalıştırırsınız; OpenClaw normal süreç yerelindeki HTTP ve WebSocket istemcilerini bunun üzerinden yönlendirir.
Neden proxy kullanılır?
Proxy, operatörlere dışa giden HTTP ve WebSocket trafiği için tek bir ağ kontrol noktası sağlar. Bu, SSRF sertleştirmesinin dışında da yararlı olabilir:
- Merkezi ilke: her uygulama HTTP çağrı noktasının ağ kurallarını doğru uygulamasına güvenmek yerine tek bir çıkış ilkesi yönetin.
- Bağlantı zamanı denetimleri: hedefi DNS çözümlemesinden sonra ve proxy yukarı akış bağlantısını açmadan hemen önce değerlendirin.
- DNS rebinding savunması: uygulama düzeyindeki DNS denetimi ile gerçek dışa giden bağlantı arasındaki boşluğu azaltın.
- Daha geniş JavaScript kapsamı: sıradan
fetch,node:http,node:https, WebSocket, axios, got, node-fetch ve benzer istemcileri aynı yol üzerinden yönlendirin. - Denetlenebilirlik: izin verilen ve reddedilen hedefleri çıkış sınırında kaydedin.
- Operasyonel kontrol: OpenClaw'u yeniden derlemeden hedef kurallarını, ağ segmentasyonunu, hız sınırlarını veya dışa giden allowlist'leri uygulayın.
Proxy yönlendirme, normal HTTP ve WebSocket çıkışı için süreç düzeyinde bir koruma rayıdır. Operatörlere desteklenen JavaScript HTTP istemcilerini kendi filtreleme proxy'leri üzerinden yönlendirmek için fail-closed bir yol sağlar, ancak OS düzeyinde bir ağ sandbox'ı değildir ve OpenClaw'un proxy'nin hedef ilkesini sertifikalandırmasını sağlamaz.
OpenClaw trafiği nasıl yönlendirir?
proxy.enabled=true olduğunda ve bir proxy URL'si yapılandırıldığında, openclaw gateway run, openclaw node run ve openclaw agent --local gibi korumalı çalışma zamanı süreçleri normal HTTP ve WebSocket çıkışını yapılandırılan proxy üzerinden yönlendirir:
OpenClaw process
fetch -> operator-managed filtering proxy -> public internet
node:http and https -> operator-managed filtering proxy -> public internet
WebSocket clients -> operator-managed filtering proxy -> public internet
Genel sözleşme, bunu uygulamak için kullanılan dahili Node hook'ları değil, yönlendirme davranışıdır. OpenClaw Gateway kontrol düzlemi WebSocket istemcileri, Gateway URL'si localhost veya 127.0.0.1 ya da [::1] gibi literal bir loopback IP kullandığında local loopback Gateway RPC trafiği için dar bir doğrudan yol kullanır. Operatör proxy'si loopback hedeflerini engellese bile bu kontrol düzlemi yolunun loopback Gateway'lere erişebilmesi gerekir. Normal çalışma zamanı HTTP ve WebSocket istekleri yine de yapılandırılan proxy'yi kullanır.
Dahili olarak OpenClaw, bu özellik için iki süreç düzeyinde yönlendirme hook'u kullanır:
- Undici dispatcher yönlendirmesi
fetch, undici destekli istemciler ve kendi undici dispatcher'ını sağlayan taşıyıcıları kapsar. global-agentyönlendirmesi,http.request,https.request,http.getvehttps.getüzerine kurulu birçok kitaplık dahil olmak üzere Node corenode:httpvenode:httpsçağıranlarını kapsar. Yönetilen proxy modu, açık Node HTTP agent'larının operatör proxy'sini yanlışlıkla atlamaması için bu global agent'ı zorunlu kılar.
Bazı plugin'ler, süreç düzeyinde yönlendirme olsa bile açık proxy bağlantısı gerektiren özel taşıyıcılara sahiptir. Örneğin, Telegram'ın Bot API taşıyıcısı kendi HTTP/1 undici dispatcher'ını kullanır ve bu nedenle süreç proxy env'sine ek olarak ilgili sahibe özgü taşıyıcı yolunda yönetilen OPENCLAW_PROXY_URL yedeğini dikkate alır.
Proxy URL'sinin kendisi http:// kullanmalıdır. HTTPS hedefleri yine de HTTP CONNECT ile proxy üzerinden desteklenir; bu yalnızca OpenClaw'un http://127.0.0.1:3128 gibi düz bir HTTP forward-proxy dinleyicisi beklediği anlamına gelir.
Proxy etkinken OpenClaw no_proxy, NO_PROXY ve GLOBAL_AGENT_NO_PROXY değerlerini temizler. Bu atlama listeleri hedef tabanlıdır; bu nedenle localhost veya 127.0.0.1 değerlerini orada bırakmak, yüksek riskli SSRF hedeflerinin filtreleme proxy'sini atlamasına izin verir.
Kapatma sırasında OpenClaw önceki proxy ortamını geri yükler ve önbelleğe alınmış süreç yönlendirme durumunu sıfırlar.
İlgili proxy terimleri
proxy.enabled/proxy.proxyUrl: OpenClaw çalışma zamanı çıkışı için dışa giden forward-proxy yönlendirmesi. Bu sayfa bu özelliği belgeler.gateway.auth.mode: "trusted-proxy": Gateway erişimi için içe gelen kimlik farkındalıklı reverse-proxy kimlik doğrulaması. Bkz. Güvenilen proxy kimlik doğrulaması.openclaw proxy: geliştirme ve destek için yerel hata ayıklama proxy'si ve yakalama denetleyicisi. Bkz. openclaw proxy.tools.web.fetch.useTrustedEnvProxy: varsayılan sıkı DNS pinning ve ana makine adı ilkesini korurken,web_fetchiçin operatör kontrollü bir HTTP(S) env proxy'sinin DNS çözümlemesine izin veren opt-in. Bkz. Web fetch.- Kanal veya sağlayıcıya özgü proxy ayarları: belirli bir taşıyıcı için sahibe özgü geçersiz kılmalar. Amaç çalışma zamanı genelinde merkezi çıkış kontrolüyse yönetilen ağ proxy'sini tercih edin.
Yapılandırma
proxy:
enabled: true
proxyUrl: http://127.0.0.1:3128
URL'yi ortam üzerinden de sağlayabilir, yapılandırmada proxy.enabled=true değerini koruyabilirsiniz:
OPENCLAW_PROXY_URL=http://127.0.0.1:3128 openclaw gateway run
proxy.proxyUrl, OPENCLAW_PROXY_URL değerine göre önceliklidir.
Gateway Loopback Modu
Yerel Gateway kontrol düzlemi istemcileri genellikle ws://127.0.0.1:18789 gibi bir loopback WebSocket'e bağlanır. Yönetilen proxy etkinken bu trafiğin nasıl davranacağını seçmek için proxy.loopbackMode kullanın:
proxy:
enabled: true
proxyUrl: http://127.0.0.1:3128
loopbackMode: gateway-only # gateway-only, proxy, or block
gateway-only(varsayılan): OpenClaw, yerel Gateway WebSocket trafiğinin doğrudan bağlanabilmesi için Gateway loopback authority'sini etkinglobal-agentNO_PROXYdenetleyicisine kaydeder. Özel loopback Gateway portları çalışır çünkü etkin Gateway URL'sinin host ve port'u kaydedilir.proxy: OpenClaw bir Gateway loopbackNO_PROXYauthority'si kaydetmez; bu nedenle yerel Gateway trafiği yönetilen proxy üzerinden gönderilir. Proxy uzaksa, OpenClaw host'unun loopback hizmeti için proxy tarafından erişilebilir bir host adına, IP'ye veya tünele eşleme gibi özel yönlendirme sağlamalıdır. Standart uzak proxy'ler127.0.0.1velocalhostdeğerlerini OpenClaw host'undan değil, proxy host'undan çözümler.block: OpenClaw, soket açmadan önce loopback Gateway kontrol düzlemi bağlantılarını reddeder.
enabled=true ise ancak geçerli bir proxy URL'si yapılandırılmamışsa, korumalı komutlar doğrudan ağ erişimine geri dönmek yerine başlatmada başarısız olur.
openclaw gateway start ile başlatılan yönetilen gateway hizmetleri için URL'yi yapılandırmada saklamayı tercih edin:
openclaw config set proxy.enabled true
openclaw config set proxy.proxyUrl http://127.0.0.1:3128
openclaw gateway install --force
openclaw gateway start
Ortam yedeği ön plan çalıştırmaları için en uygundur. Bunu kurulu bir hizmetle kullanırsanız, OPENCLAW_PROXY_URL değerini $OPENCLAW_STATE_DIR/.env veya ~/.openclaw/.env gibi hizmetin kalıcı ortamına koyun, ardından launchd, systemd veya Scheduled Tasks'ın gateway'i bu değerle başlatması için hizmeti yeniden kurun.
openclaw --container ... komutları için OpenClaw, ayarlandığında OPENCLAW_PROXY_URL değerini konteyner hedefli alt CLI'ye iletir. URL konteynerin içinden erişilebilir olmalıdır; 127.0.0.1 host'u değil, konteynerin kendisini ifade eder. OpenClaw, bu güvenlik denetimini açıkça geçersiz kılmadığınız sürece konteyner hedefli komutlar için loopback proxy URL'lerini reddeder.
Proxy Gereksinimleri
Proxy ilkesi güvenlik sınırıdır. OpenClaw proxy'nin doğru hedefleri engellediğini doğrulayamaz.
Proxy'yi şunları yapacak şekilde yapılandırın:
- Yalnızca loopback'e veya özel güvenilen bir arabirime bind edin.
- Erişimi yalnızca OpenClaw süreci, host'u, konteyneri veya hizmet hesabı kullanabilecek şekilde kısıtlayın.
- Hedefleri kendisi çözümlesin ve DNS çözümlemesinden sonra hedef IP'leri engellesin.
- Hem düz HTTP istekleri hem de HTTPS
CONNECTtünelleri için bağlantı zamanında ilke uygulasın. - Loopback, özel, link-local, metadata, multicast, ayrılmış veya dokümantasyon aralıkları için hedef tabanlı atlamaları reddetsin.
- DNS çözümleme yoluna tamamen güvenmediğiniz sürece host adı allowlist'lerinden kaçının.
- İstek gövdelerini, authorization başlıklarını, çerezleri veya diğer gizli bilgileri kaydetmeden hedefi, kararı, durumu ve nedeni kaydetsin.
- Proxy ilkesini sürüm kontrolünde tutun ve değişiklikleri güvenlik açısından hassas yapılandırma gibi gözden geçirin.
Önerilen engellenen hedefler
Bu denylist'i herhangi bir forward proxy, güvenlik duvarı veya çıkış ilkesi için başlangıç noktası olarak kullanın.
OpenClaw uygulama düzeyindeki sınıflandırıcı mantığı src/infra/net/ssrf.ts ve src/shared/net/ip.ts içinde bulunur. İlgili parity hook'ları BLOCKED_HOSTNAMES, BLOCKED_IPV4_SPECIAL_USE_RANGES, BLOCKED_IPV6_SPECIAL_USE_RANGES, RFC2544_BENCHMARK_PREFIX ve NAT64, 6to4, Teredo, ISATAP ve IPv4-mapped biçimleri için gömülü IPv4 sentinel işlemesidir. Bu dosyalar harici bir proxy ilkesini sürdürürken yararlı referanslardır, ancak OpenClaw bu kuralları proxy'nize otomatik olarak dışa aktarmaz veya orada uygulamaz.
| Aralık veya host | Neden engellenmeli |
|---|---|
127.0.0.0/8, localhost, localhost.localdomain |
IPv4 loopback |
::1/128 |
IPv6 loopback |
0.0.0.0/8, ::/128 |
Belirtilmemiş ve bu-ağ adresleri |
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 |
RFC1918 özel ağları |
169.254.0.0/16, fe80::/10 |
Link-local adresler ve yaygın bulut metadata yolları |
169.254.169.254, metadata.google.internal |
Bulut metadata hizmetleri |
100.64.0.0/10 |
Carrier-grade NAT paylaşımlı adres alanı |
198.18.0.0/15, 2001:2::/48 |
Benchmarking aralıkları |
192.0.0.0/24, 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24, 2001:db8::/32 |
Özel kullanım ve dokümantasyon aralıkları |
224.0.0.0/4, ff00::/8 |
Multicast |
240.0.0.0/4 |
Ayrılmış IPv4 |
fc00::/7, fec0::/10 |
IPv6 yerel/özel aralıkları |
100::/64, 2001:20::/28 |
IPv6 discard ve ORCHIDv2 aralıkları |
64:ff9b::/96, 64:ff9b:1::/48 |
Gömülü IPv4 içeren NAT64 önekleri |
2002::/16, 2001::/32 |
Gömülü IPv4 içeren 6to4 ve Teredo |
::/96, ::ffff:0:0/96 |
IPv4-compatible ve IPv4-mapped IPv6 |
Bulut sağlayıcınız veya ağ platformunuz ek metadata host'ları ya da ayrılmış aralıklar belgeliyorsa, bunları da ekleyin.
Doğrulama
Proxy'yi OpenClaw'u çalıştıran aynı host, konteyner veya hizmet hesabından doğrulayın:
openclaw proxy validate --proxy-url http://127.0.0.1:3128
Varsayılan olarak, özel hedefler sağlanmadığında komut https://example.com/ adresinin başarılı olduğunu denetler ve proxy’nin erişmemesi gereken geçici bir geri döngü kanaryası başlatır. Varsayılan reddedilen denetim, proxy 2xx olmayan bir ret yanıtı döndürdüğünde veya kanaryayı bir taşıma hatasıyla engellediğinde başarılı olur; başarılı bir yanıt kanaryaya ulaşırsa başarısız olur. Hiçbir proxy etkinleştirilmemiş ve yapılandırılmamışsa doğrulama bir yapılandırma sorunu bildirir; yapılandırmayı değiştirmeden önce tek seferlik ön kontrol için --proxy-url kullanın. Dağıtıma özgü beklentileri test etmek için --allowed-url ve --denied-url kullanın. Doğrudan APNs HTTP/2 tesliminin proxy üzerinden bir CONNECT tüneli açabildiğini ve sandbox APNs yanıtı alabildiğini de doğrulamak için --apns-reachable ekleyin; yoklama kasıtlı olarak geçersiz bir sağlayıcı belirteci kullanır, bu nedenle 403 InvalidProviderToken beklenir ve erişilebilir sayılır. Özel reddedilen hedefler kapalı hata davranışına sahiptir: herhangi bir HTTP yanıtı, hedefe proxy üzerinden erişilebildiği anlamına gelir ve herhangi bir taşıma hatası, OpenClaw proxy’nin erişilebilir bir kaynağı engellediğini kanıtlayamadığı için sonuçsuz olarak bildirilir. Doğrulama hatasında komut 1 koduyla çıkar.
Otomasyon için --json kullanın. JSON çıktısı genel sonucu, etkin proxy yapılandırma kaynağını, varsa yapılandırma hatalarını ve her hedef denetimini içerir. Proxy URL kimlik bilgileri metin ve JSON çıktısında gizlenir:
{
"ok": true,
"config": {
"enabled": true,
"proxyUrl": "http://127.0.0.1:3128/",
"source": "override",
"errors": []
},
"checks": [
{
"kind": "allowed",
"url": "https://example.com/",
"ok": true,
"status": 200
},
{
"kind": "apns",
"url": "https://api.sandbox.push.apple.com",
"ok": true,
"status": 403
}
]
}
curl ile elle de doğrulayabilirsiniz:
curl -x http://127.0.0.1:3128 https://example.com/
curl -x http://127.0.0.1:3128 http://127.0.0.1/
curl -x http://127.0.0.1:3128 http://169.254.169.254/
Genel istek başarılı olmalıdır. Geri döngü ve meta veri istekleri proxy tarafından engellenmelidir. openclaw proxy validate için yerleşik geri döngü kanaryası, bir proxy reddini erişilebilir bir kaynaktan ayırt edebilir. Özel --denied-url denetimlerinde bu kanarya yoktur, bu nedenle proxy’niz ayrıca doğrulayabileceğiniz dağıtıma özgü bir ret sinyali sunmadıkça hem HTTP yanıtlarını hem de belirsiz taşıma hatalarını doğrulama hataları olarak ele alın.
Ardından OpenClaw proxy yönlendirmesini etkinleştirin:
openclaw config set proxy.enabled true
openclaw config set proxy.proxyUrl http://127.0.0.1:3128
openclaw gateway run
veya şunu ayarlayın:
proxy:
enabled: true
proxyUrl: http://127.0.0.1:3128
Sınırlar
- Proxy, süreç yerelindeki JavaScript HTTP ve WebSocket istemcileri için kapsamı iyileştirir, ancak işletim sistemi düzeyinde bir ağ korumalı alanı değildir.
- Gateway geri döngü denetim düzlemi trafiği varsayılan olarak
proxy.loopbackMode: "gateway-only"aracılığıyla doğrudan yerel atlamayı kullanır. OpenClaw bu atlamayı, etkin Gateway geri döngü yetkilisini yönetilenglobal-agentNO_PROXYdenetleyicisine kaydederek uygular. Operatörler Gateway geri döngü trafiğini yönetilen proxy üzerinden göndermek içinproxy.loopbackMode: "proxy"veya geri döngü Gateway bağlantılarını reddetmek içinproxy.loopbackMode: "block"ayarlayabilir. Uzak proxy uyarısı için Gateway Geri Döngü Modu bölümüne bakın. - Ham
net,tlsvehttp2soketleri, yerel eklentiler ve OpenClaw dışı alt süreçler, proxy ortam değişkenlerini devralıp bunlara uymadıkları sürece Node düzeyinde proxy yönlendirmesini atlayabilir. Çatallanan OpenClaw alt CLI’ları yönetilen proxy URL’sini veproxy.loopbackModedurumunu devralır. - IRC, operatör tarafından yönetilen ileri proxy yönlendirmesinin dışında kalan ham bir TCP/TLS kanalıdır. Tüm çıkış trafiğinin bu ileri proxy üzerinden geçmesini gerektiren dağıtımlarda, doğrudan IRC çıkışı açıkça onaylanmadıkça
channels.irc.enabled=falseayarlayın. - Yerel hata ayıklama proxy’si tanılama aracıdır ve proxy istekleri ile CONNECT tünelleri için doğrudan üst akış iletimi, yönetilen proxy modu etkinken varsayılan olarak devre dışıdır; doğrudan iletimi yalnızca onaylanmış yerel tanılamalar için etkinleştirin.
- Kullanıcıya ait yerel WebUI’ler ve yerel model sunucuları gerektiğinde operatör proxy ilkesinde izin verilenler listesine eklenmelidir; OpenClaw bunlar için genel bir yerel ağ atlaması sunmaz.
- Gateway denetim düzlemi proxy atlaması kasıtlı olarak
localhostve değişmez geri döngü IP URL’leriyle sınırlıdır. Yerel doğrudan Gateway denetim düzlemi bağlantıları içinws://127.0.0.1:18789,ws://[::1]:18789veyaws://localhost:18789kullanın; diğer ana makine adları sıradan ana makine adına dayalı trafik gibi yönlendirilir. - OpenClaw proxy ilkenizi incelemez, test etmez veya sertifikalandırmaz.
- Proxy ilkesi değişikliklerini güvenlik açısından hassas operasyonel değişiklikler olarak ele alın.