DokümantasyonÖzel lokasyon (ağınızda ajan)

Dokümantasyon 16 / 19

Özel lokasyon (ağınızda ajan)

Özellik sayfası: Özel lokasyon

Özel lokasyon, İşletme izleme ajanını kendi ağınızdaki bir Linux sunucuda çalıştırarak internete açık olmayan servislerinizi (intranet, veritabanı, iç API'ler, iç IP adresleri) izlemenizi sağlar. Kontroller sizin ağınızdan yapılır; sonuçlar, kesintiler, bildirimler ve status sayfaları diğer monitörlerle aynı şekilde çalışır.

Nasıl çalışır?

  • Ajan hiçbir gelen bağlantı kabul etmez. Yalnızca https://isletme.net.tr adresine giden HTTPS (443) bağlantısı açar: iş kiralar, kontrolü ağınızın içinden yapar ve sonucu imzalı istekle geri gönderir.
  • Her istek ajana özel bir secret ile HMAC-SHA256 imzalıdır; zaman damgası ve tek kullanımlık nonce ile yeniden oynatma engellenir.
  • Ajan yalnızca organizasyonunuzun, o lokasyona atanmış monitörlerinin işlerini alır. Platformun genel ajanları özel lokasyon işlerini, özel ajanınız da başka organizasyonların veya genel lokasyonların işlerini hiçbir zaman almaz.
  • Monitörün kimlik bilgileri (Basic/Bearer, özel başlıklar, istek gövdesi) yalnızca o monitörün işini alan ajana, iş süresince bellekte kalacak şekilde gönderilir.

Paketler

Paket Özel lokasyon
Free —
Pro Beta 1
Business Beta 3
Kurumsal 10

Özel lokasyon monitörleri paketinizin monitör sayısına ve en kısa kontrol aralığına dahildir.

Gereksinimler

  • Linux, x86_64 (amd64) veya ARM64 (aarch64), systemd. 1 vCPU ve 256 MB bellek yeterlidir.
  • Giden 443/tcp → https://isletme.net.tr. İzleyeceğiniz iç servislere erişim (ör. 10.0.0.0/8).
  • Saat senkronizasyonu zorunludur (chrony/systemd-timesyncd). Saat farkı 5 dakikayı aşarsa istekler reddedilir.
  • Kurulum için root/sudo, curl ve sha256sum.

Kurulum

  1. Panelde Özel lokasyonlar → Yeni özel lokasyon'a tıklayın, lokasyona bir ad verin (ör. "İstanbul ofis").
  2. Açılan pencerede ajan kimliği ve secret yalnızca bir kez gösterilir. Secret'ı güvenli bir yere kaydedin; sohbet, e-posta veya bilet sistemlerine yapıştırmayın. Kaybederseniz "Secret yenile" ile yenisini üretin.
  3. Ajanı çalıştıracağınız sunucuda pencerede gösterilen komutları çalıştırın:
curl -fsSLo kur.sh https://isletme.net.tr/indir/ajan/kur.sh
echo "<paneldeki SHA-256>  kur.sh" | sha256sum -c -
sudo bash kur.sh --agent-id <ajan kimliği>

Betik önce kendi SHA-256 özetiyle doğrulanır (panelde gösterilir). Başka hiçbir betik indirip çalıştırmaz; yaptıkları:

  • ajan ikilisini HTTPS ile indirir ve betiğe gömülü SHA-256 özetiyle doğrular (uyuşmazsa hiçbir şey kurulmaz),
  • isletme-agent sistem kullanıcısını oluşturur (giriş kabuğu yok),
  • /usr/local/bin/isletme-agent, /etc/isletme-agent/agent.env (sır içermez) ve yalnızca ajan kullanıcısının okuyabildiği /etc/isletme-agent/secret (0400) dosyalarını yazar,
  • sertleştirilmiş systemd birimini kurar (ayrı kullanıcı, yetkisiz, salt okunur sistem, bellek sınırı) ve servisi başlatır.

Secret komut satırından alınmaz (işlem listesine ve kabuk geçmişine düşmesin): betik gizli girişle sorar. Otomasyon için --secret-file /yol/secret (yalnızca sahibinin okuyabildiği dosya) kullanabilirsiniz. Diğer seçenekler: --private-cidrs 10.20.0.0/16,192.168.10.0/24 (iç hedefleri bu aralıklarla sınırla), --allow-loopback (ajan makinesindeki servisler, aşağıya bakın), --dry-run (yalnızca ne yapacağını göster).

  1. Birkaç saniye içinde lokasyon panelde Çevrimiçi görünür. Sunucuda kontrol için: systemctl status isletme-agent ve journalctl -u isletme-agent -f.
  2. Monitör oluştururken Kontrol lokasyonu → Özel lokasyon'u ve lokasyonu seçin.

İndirme bağlantıları, her ikilinin SHA-256 özeti ve SHA256SUMS dosyası Özel lokasyonlar sayfasındadır. İkiliyi elle kurmak isterseniz /etc/isletme-agent/agent.env içeriği:

ISLETME_AGENT_SERVER_URL=https://isletme.net.tr
ISLETME_AGENT_ID=<ajan kimliği>
ISLETME_AGENT_SECRET_FILE=/etc/isletme-agent/secret
ISLETME_AGENT_ALLOW_PRIVATE_TARGETS=true

Neleri izleyebilirsiniz?

Özel lokasyonda çalışan monitörlerde hedef sahipliği doğrulaması istenmez (trafik sizin ağınızdan çıkar) ve iç hedefler kabul edilir:

  • iç IP adresleri: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 100.64.0.0/10 (CGNAT), fc00::/7 (ULA),
  • tek etiketli ve iç son ekli adlar: db01, intranet.local, app.corp, vault.internal (ajan makinesinin DNS'iyle çözülür),
  • genel adresler (ağınızın içinden bakış açısıyla).

HTTP(S), TCP, UDP, DNS (iç DNS sunucusu dahil), SSL, SSH, FTP/FTPS, NTP, WebSocket, e-posta sunucusu ve ICMP türleri iç hedeflerle çalışır. Alan adı süresi ve kara liste türleri genel alan adı/IP ister.

Hiçbir zaman izlenemeyenler (hem panel hem ajan reddeder):

  • link-local ve bulut metadata adresleri: 169.254.0.0/16 (ör. 169.254.169.254), fe80::/10, fd00:ec2::254, metadata.google.internal,
  • 0.0.0.0/8, ::, çoklu yayın, ayrılmış ve belgeleme aralıkları, IPv4 gömülü IPv6 biçimleri,
  • loopback (127.0.0.0/8, ::1, localhost) — varsayılan olarak.

Ajan makinesindeki servisler (loopback)

Panel loopback adreslerini hedef olarak kabul etmez. Ajanın çalıştığı makinedeki (yalnızca 127.0.0.1'de dinleyen) bir servisi izlemeniz gerekiyorsa bu yalnızca sizin açık tercihinizle mümkündür:

  1. Ajan makinesinde /etc/hosts dosyasına bir ad ekleyin: 127.0.0.1 ajan-yerel
  2. /etc/isletme-agent/agent.env içine ISLETME_AGENT_ALLOW_LOOPBACK=true ekleyin (veya kurulumda --allow-loopback) ve sudo systemctl restart isletme-agent.
  3. Monitör hedefi olarak http://ajan-yerel:8080/saglik kullanın.

Güvenlik notları

  • Ajanı güvendiğiniz bir makineye kurun ve güncel tutun. Ajan root olarak çalışmaz; ek yetki gerektirmez.
  • Organizasyonunuzda monitör oluşturabilen herkes (operatör ve üzeri roller) özel lokasyon ajanını ağınızdaki erişilebilir adreslere yönlendirebilir ve başarısız kontrollerde yanıtın ilk 2 KB'ı (temizlenmiş) hata kanıtında görünebilir. Ajanı yalnızca izlenecek servislere erişen bir ağ bölümüne koyun veya ISLETME_AGENT_PRIVATE_CIDRS ile izin verilen iç aralıkları daraltın. Özel lokasyon oluşturma/silme ve secret yenileme yalnızca yönetici ve sahip rolündedir.
  • Ajan sunucusunda gelen port açmanıza gerek yoktur. Giden trafiği kısıtlıyorsanız https://isletme.net.tr:443 ve izlenecek iç adresler yeterlidir.
  • Ele geçirilme şüphesinde: panelde Secret yenile → "Eski secret'ı hemen geçersiz kıl" veya lokasyonu devre dışı bırakın; ardından sunucuyu yeniden kurun.

Lokasyon politikası

Monitörün kesinti onay politikası (tek lokasyon / doğrulama / çoğunluk) seçtiğiniz özel lokasyonlar üzerinde uygulanır. Tek özel lokasyon seçtiyseniz kesintiler "tek lokasyondan tespit" olarak işaretlenir. Kesintiyi başka bir ağ noktasından doğrulamak için farklı ağlarda iki özel lokasyon kurup monitöre ikisini birden atayın. Ajan çevrimdışıyken monitör "veri yok" durumuna geçer; bu hedefinizin kesintisi sayılmaz.

Yönetim

  • Secret yenile: yeni secret bir kez gösterilir; eskisi 24 saat daha geçerlidir (kesintisiz geçiş için). Sunucuda /etc/isletme-agent/secret dosyasını güncelleyin (kurulum betiğini yeniden çalıştırmak da olur) ve servisi yeniden başlatın.
  • Devre dışı bırak: ajan yeni iş almaz; istediğiniz zaman yeniden etkinleştirebilirsiniz.
  • Sil: ajan kaydı silinir, ajan bir daha bağlanamaz. Bu lokasyondan başka özel lokasyonu olmayan monitörler duraklatılır; iç hedefler genel lokasyonlara hiçbir zaman aktarılmaz. Monitörü yeniden çalıştırmak için düzenleyip başka bir özel lokasyon seçin.
  • Güncelleme: panel eski sürümlü ajanlar için "güncelleme var" gösterir. Kurulum betiğini aynı komutla yeniden çalıştırmanız yeterlidir (yapılandırma ve secret korunur; secret sorulduğunda boş bırakın).
  • Platform yöneticisi kötüye kullanım durumunda bir özel lokasyonu askıya alabilir; askıdaki lokasyonu yalnızca destek ekibi açabilir.

Docker

Hazır imaj yayınlamıyoruz; imajı indirip SHA-256 ile doğruladığınız ikiliden oluşturun:

curl -fsSLO https://isletme.net.tr/indir/ajan/<sürüm>/isletme-agent-linux-amd64
echo "<paneldeki SHA-256>  isletme-agent-linux-amd64" | sha256sum -c -
chmod 0755 isletme-agent-linux-amd64
cat > Dockerfile <<'DOCKERFILE'
FROM gcr.io/distroless/static-debian12:nonroot
COPY isletme-agent-linux-amd64 /usr/local/bin/isletme-agent
USER 65532:65532
ENTRYPOINT ["/usr/local/bin/isletme-agent"]
DOCKERFILE
docker build -t isletme-agent:<sürüm> .

Secret dosyası imajdaki ajan kullanıcısına (65532) ait ve 0600 olmalıdır:

install -m 600 /dev/null isletme-secret && vi isletme-secret
sudo chown 65532:65532 isletme-secret

docker-compose.yml örneği:

services:
  isletme-agent:
    image: isletme-agent:<sürüm>
    restart: unless-stopped
    read_only: true
    cap_drop: [ALL]
    security_opt: ["no-new-privileges:true"]
    environment:
      ISLETME_AGENT_SERVER_URL: https://isletme.net.tr
      ISLETME_AGENT_ID: <ajan kimliği>
      ISLETME_AGENT_SECRET_FILE: /run/secrets/isletme
      ISLETME_AGENT_ALLOW_PRIVATE_TARGETS: "true"
    volumes:
      - ./isletme-secret:/run/secrets/isletme:ro
    tmpfs:
      - /var/lib/isletme-agent:uid=65532,gid=65532,mode=0700

Docker köprü ağında ana makine, köprü ağ geçidi adresinden (ör. 172.17.0.1, RFC1918) erişilebilir; bunu istemiyorsanız ISLETME_AGENT_PRIVATE_CIDRS ile izin verilen aralıkları daraltın.

Sorun giderme

Belirti Neden / çözüm
Lokasyon "Ajan bekleniyor" Servis çalışmıyor veya panele ulaşamıyor: journalctl -u isletme-agent -n 50
sunucu isteği reddetti … status 401 Yanlış ajan kimliği/secret, saat farkı ya da yenilenmiş secret
agent_disabled Lokasyon devre dışı, askıda veya organizasyon askıda
Kontrollerde "özel ağ hedefi engellendi" ISLETME_AGENT_ALLOW_PRIVATE_TARGETS=true eksik (panelde "Özel hedefler: Kapalı")
"loopback; … ISLETME_AGENT_ALLOW_LOOPBACK=true gerekir" Hedef ajan makinesinin kendisine çözülüyor (yukarıdaki "Ajan makinesindeki servisler")
"ISLETME_AGENT_PRIVATE_CIDRS dışında" Hedef, izin verdiğiniz iç aralıkların dışında
saat farkı 30 sn'yi aşıyor NTP/chrony çalışmıyor

Kaldırma

sudo systemctl disable --now isletme-agent
sudo rm -f /etc/systemd/system/isletme-agent.service /usr/local/bin/isletme-agent
sudo rm -rf /etc/isletme-agent /var/lib/isletme-agent
sudo systemctl daemon-reload && sudo userdel isletme-agent

Ardından panelde lokasyonu silin.

Sınırlar

  • Bir özel lokasyon bir ajandır; yedeklilik için ayrı makinelerde iki lokasyon oluşturup monitörlere ikisini atayın.
  • Özel lokasyonlarda başarısız bağlantılarda yol izleme (traceroute) yapılmaz.
  • İndirmeler yalnızca Linux içindir (amd64, arm64).

Bu belge ürünün mevcut davranışını anlatır. Bir tutarsızlık görürseniz lütfen bize bildirin.