# Güvenlik

> Proxus kurulumunu sağlamlaştırın: şifreleme, açılacak ve kapatılacak portlar, HTTPS, varsayılan kimlik bilgileri, Edge Gateway güveni, MCP erişimi.

Kaynak: https://proxus.io/tr/docs/operate/security

Bu kılavuzu tamamladığınızda Proxus kurulumunda varsayılan parola kalmaz, dışarıdan yalnızca gereken portlara
erişilir ve kullanıcılar merkez sunucuya HTTPS ile bağlanır. Merkez sunucuyu üretimde kullanmaya başlamadan önce
[kontrol listesindeki](#sağlamlaştırma-kontrol-listesi) her maddeyi uygulayın. Kurulumu yeni bir makineye
taşıdığınızda listeyi yeniden gözden geçirin.

## Başlamadan önce

- Merkez sunucu Docker (bkz. [Docker](https://proxus.io/tr/docs/operate/docker)) ya da Kubernetes üzerinde çalışıyor olmalıdır.
- **Admin** olarak oturum açabilmeniz, `docker-compose.yml` dosyasını ve
  [yapılandırma dosyasını](https://proxus.io/tr/docs/administer/configuration) düzenleyebilmeniz, makinenin güvenlik duvarını
  değiştirebilmeniz gerekir.
- Güncel bir [yedek](https://proxus.io/tr/docs/operate/backup-and-restore) alın. Aşağıdaki adımların bazıları kimlik bilgilerini
  değiştirir.

## Neler şifrelenir

Proxus 2.0.0, açtığı ve kabul ettiği her bağlantıda TLS kullanır. Sertifikalar
[Sertifika deposundan](https://proxus.io/tr/docs/administer/certificates) gelir. Sertifika deposu, platformun kendi sertifika
yetkilisini (**Proxus Platform CA**) ya da seçtiyseniz kurumsal CA'nızı kullanır.

| Bağlantı | Koruma |
| --- | --- |
| Tarayıcılar ve API istemcilerinden merkez sunucuya | `8443` portunda HTTPS, varsayılan olarak açık. `8080` portundaki HTTP yerel erişim için açık kalır. Bkz. [HTTPS](#https). |
| Merkez sunucu süreçlerinden ve Edge Gateway'lerden merkez sunucunun NATS sunucusuna | Tüm portlarda TLS: `4222`, `7422` ve Kubernetes HA kurulumunda `6222`. Her bağlantı sunucunun sertifikasını platform CA'sına göre doğrular. |
| Edge Gateway kurulum komutu | HTTPS ile indirilir ve merkez sunucunun HTTPS anahtarına sabitlenir. Böylece betik ya da Edge Gateway'in kimliği yolda değiştirilemez. Bkz. [Edge Gateway kurma](https://proxus.io/tr/docs/connect/edge-gateways/install-a-gateway). |
| MQTT cihazlarından ve abonelerden bir Edge Gateway'in MQTT sunucusuna | Edge Gateway'in kendi sertifikasıyla `8883` portunda TLS. `1883` portu, TLS kullanamayan cihazlar için açık kalır. Bkz. [MQTT sunucusu](#mqtt-sunucusu). |
| Edge Gateway'lerden veri hedeflerine | Sunucu her zaman doğrulanır: adı bağlanılan adresle eşleşmeli, sertifikası güvenilen bir kök sertifikaya bağlanmalıdır. Bkz. [Veri hedefleri](https://proxus.io/tr/docs/connect/outbound-targets). |
| Edge Gateway'lerden OPC UA sunucularına | Yalnızca sertifikası Sertifika deposunda güvenilir olarak işaretlenmiş sunuculara bağlanılır. Bkz. [Sertifikalar](https://proxus.io/tr/docs/administer/certificates#bir-opc-ua-sunucu-sertifikasına-güvenin-ya-da-reddedin). |

Bu sertifikaların özel anahtarları şifreli olarak saklanır. Bunları çözen anahtar yapılandırma klasöründe
(`keys/STORE/certificate-store.key`) ya da `PROXUS_CERTIFICATE_STORE_KEY` ortam değişkeninde bulunur. Bu anahtarı
yapılandırma klasörüyle birlikte yedekleyin.

**Kullanıcılar**, **Roller** ve **Sertifika deposu** ekranları **Güvenlik** menüsündedir.

## Ağ portları

Hazır compose yığınının merkez sunucu makinesinde açtığı portlar:

| Port | Hizmet | Kimin erişmesi gerekir |
| --- | --- | --- |
| `8443` (TCP) | HTTPS ile merkez sunucu: web arayüzü, REST API, MCP sunucusu, Edge Gateway kurulum komutları | Kullanıcılar, API istemcileri, yapay zekâ ajanları ve kurulum sırasında Edge Gateway makineleri |
| `8080` (TCP) | HTTP ile merkez sunucu | Yalnızca yerel erişim ya da ters proxy (reverse proxy). Herkes HTTPS kullanmaya başlayınca diğer makinelere kapatın. |
| `7422` (TCP, TLS) | NATS sunucusu, Edge Gateway bağlantıları | Tüm uzak Edge Gateway makineleri |
| `1883` (TCP) | **SYSTEM** Edge Gateway'inin TLS'siz MQTT sunucusu | Yalnızca Proxus'a veri gönderen ve TLS kullanamayan MQTT istemcileri ve cihazlar |
| `8083` (TCP) | **SYSTEM** Edge Gateway'i: çalışma durumu denetimi, HTTP ile telemetri girişi, metrikler | Yalnızca HTTP ile veri gönderen cihazlar ve izleme sisteminiz |
| `4222` (TCP, TLS) | NATS sunucusu, istemci portu | Makine dışından kimse. Merkez sunucu ve SYSTEM Edge Gateway'i bu portu compose ağı içinden kullanır. |
| `8222` (TCP) | NATS sunucusu, izleme portu | Yalnızca izleme sisteminiz ya da hiç kimse |
| `5442` (TCP) | PostgreSQL | Makine dışından kimse |
| `8123`, `9000`, `9004`, `9005` (TCP) | ClickHouse | Makine dışından kimse |

Edge Gateway makinesi merkez sunucuya yalnızca dışarı doğru, `7422` portundan bağlanır (kurulum sırasında `8443`
portundan da). Kendi ağındaki cihazlar ona veri gönderiyorsa `8883`, `1883` ve `8083` portlarında bağlantı kabul
eder.

Hazır compose dosyası **SYSTEM** Edge Gateway'i için `8883` portunu dışa açar. Böylece merkez sunucunun ağındaki
cihazlar hiçbir değişiklik yapmadan TLS ile MQTT kullanabilir.

Hazır compose dosyası bu portların hepsini tüm ağ arayüzlerinde dışa açar. Makine dışından kimsenin ihtiyaç duymadığı
portları kapatın. Bunu makinenin güvenlik duvarında yapabilir ya da portları `docker-compose.yml` dosyasında geri
döngü adresine bağlayabilirsiniz, örneğin `"127.0.0.1:5442:5442"`. Hizmetler birbirine iç compose ağı üzerinden
ulaştığı için bu değişiklik Proxus'u etkilemez. Tüm portların ve uç noktaların listesi
[Portlar](https://proxus.io/tr/docs/reference/ports) sayfasındadır.

## HTTPS

Merkez sunucu varsayılan olarak `8443` portunda HTTPS sunar. TLS 1.2 ya da 1.3 kullanır ve
[Sertifika deposundaki](https://proxus.io/tr/docs/administer/certificates) varsayılan sertifikayı sunar. Yeni bir kurulumda bu
sertifikayı platform CA'sı verir. Sertifika makinenin adını, IP adreslerini, `localhost` adını ve `[Service]`
`PublicHostNames` ayarındaki adları kapsar. Tarayıcıların sertifikaya güvenmesi için platform CA'sını kullanıcıların
bilgisayarlarına yükleyin (Sertifika deposunda **CA'yı indir**) ya da platformun sertifikalarını kurumsal CA'nıza
imzalatın.

1. Kullanıcıların merkez sunucuya ulaşmak için yazdığı tüm adları ve adresleri `PublicHostNames` ayarına ekleyin,
   örneğin `PublicHostNames = "proxus.lyonfoods.local, 203.0.113.10"`.
2. Yükseltilmiş bir kurulumda merkez sunucunun eski, kendinden imzalı sertifikasını yenileyin.
   **Güvenlik > Sertifika deposu** ekranında **Proxus (Self-Signed)** sertifikasını seçin ve **Yenile**'ye tıklayın.
3. Platform CA'sını kullanıcıların bilgisayarlarına yükleyin ya da
   [kurumsal CA'nızı kullanın](https://proxus.io/tr/docs/administer/certificates#kurumsal-canızı-kullanın).

HTTPS'i şu `[Service]` anahtarları belirler:

| Anahtar | Varsayılan | Görevi |
| --- | --- | --- |
| `UI-HTTPS-Port` | `"8443"` | HTTPS portu. Boş bırakılırsa HTTPS kapanır. |
| `RedirectHttpToHttps` | `"false"` | `"true"` olursa tüm HTTP istekleri HTTPS'e yönlendirilir ve HSTS açılır. |
| `PublicHttpsPort` | tanımlı değil | HTTPS makinenin başka bir portundan dışa açıldığında, dışarıdan bağlanılan port. |
| `PublicHostNames` | tanımlı değil | Merkez sunucunun sertifikalarına eklenecek adlar ve adresler, virgülle ayrılmış. |

`8080` portundaki HTTP yerel erişim için açık kalır. `RedirectHttpToHttps` varsayılan olarak kapalıdır. Bunun
nedeni HSTS'nin, tarayıcıların makinedeki tüm portlarda HTTPS kullanmasını zorunlu kılmasıdır. Bu kural aynı
makinedeki diğer hizmetleri de etkiler. Makinede yalnızca merkez sunucu çalışıyorsa bu ayarı açın.

Hazır compose dosyası `8443` portunu dışa açar. HTTPS'i makinenin başka bir portundan açarsanız, örneğin
`"443:8443"`, `PublicHttpsPort = "443"` değerini de girin. Merkez sunucu böylece dışarıdan hangi porttan
erişildiğini bilir.

Merkez sunucuyu elinizdeki bir sertifikayla kendi alan adınız altında, doğrudan ya da Cloudflare arkasından
internete açmak için [Merkez sunucuyu alan adınızla sunun](https://proxus.io/tr/docs/operate/custom-domain) kılavuzunu izleyin.

**Ters proxy arkasında.** TLS'i şirketinizin ters proxy'sine ya da yük dengeleyicisine bırakabilir, istekleri
oradan merkez sunucuya iletebilirsiniz. Web arayüzü sürekli açık bir bağlantı kullanır. Bu yüzden proxy'nin
WebSocket bağlantılarına ve uzun zaman aşımlarına izin vermesi gerekir (Kubernetes ingress bir saat kullanır).
Ardından merkez sunucunun portlarını yalnızca proxy'ye açın.

## Değiştirilmesi gereken varsayılan kimlik bilgileri

| Kimlik bilgisi | Hazır değer | Nasıl değiştirilir |
| --- | --- | --- |
| Merkez sunucu kullanıcısı **Admin** | Boş parola | **Admin** olarak oturum açın, **Yönetim > Profilim** ekranında **Parolamı değiştir**'e tıklayın. |
| Merkez sunucu kullanıcısı **APIAdmin** (yalnızca önceki bir sürümden yükseltilen merkez sunucularda) | Tüm kurulumlarda aynı olan sabit bir parola | **Güvenlik > Kullanıcılar** ekranında kullanıcıyı açın ve **Parolayı sıfırla**'ya tıklayın. Kullanıcıya ihtiyacınız yoksa **Etkin** seçeneğini kaldırın. Bu yapılana kadar merkez sunucu her başlatmada **Sistem günlükleri** ekranına bir uyarı yazar. |
| PostgreSQL | Kullanıcı adı, parola ve veritabanı adı `proxus` | İlk başlatmadan önce compose dosyasındaki `POSTGRES_PASSWORD` değerini ve `[Database]` `ConnectionString` içindeki parolayı değiştirin. Çalışan bir kurulumda önce veritabanındaki parolayı (`ALTER USER`), sonra bağlantı dizesindeki parolayı değiştirin. |
| ClickHouse | Kullanıcı `admin`, parola `proxus` | Compose dosyasındaki `CLICKHOUSE_ADMIN_PASSWORD` değerini ve çalışma durumu denetimini, `[ClickHouse]` bölümündeki `ClickHousePassword` değerini değiştirin. Bu değişikliği planlı yapın; parolalar farklı olduğu sürece Proxus değer saklayamaz. |

API erişim anahtarları varsayılan olarak bir yıl geçerlidir (`TokenExpireTime = "1y"`). Şirket politikanız
gerektiriyorsa bu süreyi kısaltın.

`POSTGRES_PASSWORD` ile verilen veritabanı parolası yalnızca veritabanı birimi ilk oluşturulurken uygulanır.
Veritabanı portlarını kapalı tutun (yukarıya bakın). Böylece parola varsayılan değerde kalsa bile veritabanına
dışarıdan erişilemez.

## Edge Gateway güveni

Edge Gateway'ler ve merkez sunucu, NATS sunucusu üzerinden TLS ile haberleşir. Ortak bir parola kullanılmaz:

- İlk başlatmada merkez sunucu, NATS sunucusunun kök kimlik bilgilerini `config` biriminde (`nats/`
  klasörü) oluşturur. Bu bilgileri yalnızca merkez sunucu okur.
- Bir Edge Gateway kurulurken Edge Gateway makinesi kendi anahtarını üretir ve merkez sunucuya yalnızca açık anahtarı
  gönderir. Merkez sunucu bu anahtarı yalnızca o Edge Gateway'e ait izinlerle imzalar. Elde edilen kimlik bilgileri
  yalnızca `7422` portundaki Edge Gateway bağlantısında çalışır. Bir kopyası ele geçse bile sıradan bir NATS
  istemcisi olarak kullanılamaz.
- Edge Gateway'in merkez sunucuyla bağlantısı şifrelidir ve platform CA'sına göre doğrulanır. Her Edge Gateway, HTTPS portu
  ve MQTT sunucusu için Sertifika deposundan kendine ait bir sertifika da alır. Bir Edge Gateway yalnızca kendi
  sertifikasını alabilir.
- Kurulum bağlantısı tek kullanımlıktır ve bir saat geçerlidir. Kurulum komutu merkez sunucunun HTTPS anahtarına
  sabitlenir.
- Bir Edge Gateway kaldırıldığında ya da yeniden kurulduğunda eski kimlik bilgileri hemen geçersiz olur.

`config` birimini bir parola kasası gibi koruyun ve her yedeğe ekleyin. Sertifika deposu anahtarı da bu birimdedir.
Ayrıntılar için [Edge Gateway kurma](https://proxus.io/tr/docs/connect/edge-gateways/install-a-gateway) sayfasına bakın.

## MQTT sunucusu

**SYSTEM** Edge Gateway'inin MQTT sunucusu, kimlik bilgisi vermeyen istemcileri reddeder (`[MQTTBroker]`
`AllowAnonymous = false`). Bu ayarı değiştirmeyin.

Her Edge Gateway'in MQTT sunucusu, Edge Gateway'in kendi sertifikasıyla `8883` portunda TLS bağlantılarını da kabul eder.
Cihazlar MQTT sunucusunun sertifikasını platform CA'sına göre doğrular (Sertifika deposunda **CA'yı indir**).
Cihazların bağlandığı sunucu adı, Edge Gateway'in sertifikasında bulunmalıdır. Tüm cihazlar TLS'e geçtiğinde
`[MQTTBroker]` `PlainEnabled = false` ayarını yapın; MQTT sunucusu bundan sonra yalnızca TLS bağlantısı kabul eder.
`TlsPort = 0` ayarı TLS'i kapatır. `MasterToken` tanımlarsanız uzun ve rastgele bir değer seçin ve bu değeri parola
gibi koruyun. Rollere verilen [UNS izinleri](https://proxus.io/tr/docs/administer/uns-permissions) MQTT istemcilerine uygulanmaz.
Ayrıntılar için [MQTT](https://proxus.io/tr/docs/develop/mqtt) sayfasına bakın.

## Yapay zekâ ajanları için MCP erişimi

Merkez sunucunun `/mcp` adresindeki MCP sunucusu, yapay zekâ ajanlarının Proxus verisini bir kullanıcının
izinleriyle okumasını ve değiştirmesini sağlar. Her ajan bir Proxus kullanıcısı olarak oturum açar ve yalnızca o
kullanıcının rollerinin izin verdiği işlemleri yapabilir. `[MCP]` bölümü bunlara ek sınırlar getirir:

| Anahtar | Hazır değer | Öneri |
| --- | --- | --- |
| `Enabled` | `true` | Yapay zekâ ajanı kullanmıyorsanız `false` yapın. |
| `AdminOnly` | `false` | `true` olursa MCP'yi yalnızca yönetici rolündeki kullanıcılar kullanabilir. |
| `AllowedMethods` | `"GET,POST,PATCH,PUT"` | Yalnızca okuma yapacak ajanlar için `"GET"`. |
| `BlockDelete` | `true` | Değiştirmeyin. |
| `IPWhitelist` | `[]` (tüm adresler) | Ajanların çalıştığı makinelerin adreslerini yazın, örneğin `["10.20.0.0/24"]`. |
| `ServerBaseUrl` | `""` | Ajanlar başka makinelerden bağlanıyorsa merkez sunucunun dış adresini yazın, örneğin `"https://proxus.lyonfoods.local:8443"`. |
| `AnonymousDiscoveryMode` | `"ToolsAndOverview"` | `"Disabled"` olursa oturum açmamış istemciler araç listesini göremez. |
| `AuditLogging` | `true` | Değiştirmeyin. |

Her ajan için ayrı bir Proxus kullanıcısı ve o ajana özel bir rol tanımlayın. Bu rolü
[UNS izinleriyle](https://proxus.io/tr/docs/administer/uns-permissions) sınırlayın. Kurulumun tamamı için [MCP](https://proxus.io/tr/docs/develop/mcp)
sayfasına bakın.

## Sağlamlaştırma kontrol listesi

- **Admin** kullanıcısının parolası güçlü. Yükseltilmiş bir merkez sunucuda **APIAdmin** kullanıcısının parolası
  değiştirilmiş ya da kullanıcı devre dışı bırakılmış.
- API erişim anahtarlarını imzalayan anahtarın bulunduğu ortak yapılandırma klasörünü yalnızca merkez sunucudan
  sorumlu kişiler okuyabiliyor.
- Herkesin kendi kullanıcısı var. Günlük işlerde kimse **Admin** kullanıcısıyla çalışmıyor.
- Roller **Varsayılan olarak tümünü reddet** ile başlıyor ve yalnızca gereken izinleri veriyor. Bkz.
  [Kullanıcılar ve roller](https://proxus.io/tr/docs/administer/users-and-roles).
- `[Security.Password]` bölümündeki parola kuralları şirket politikasına uygun. Yeni kullanıcılarda
  **Parola değişikliğini zorla** işaretli.
- Hesap kilitleme açık (`[Security]` `Lockout.Enabled = true`).
- REST API imzalama anahtarı yeni ve rastgele bir değerle değiştirilmiş.
- PostgreSQL ve ClickHouse parolaları değiştirilmiş ya da bu veritabanlarının portlarına yalnızca makinenin
  kendisinden erişilebiliyor.
- Diğer makinelerden yalnızca `8443` ve `7422` portlarına, gerekiyorsa `8883`, `1883` ve `8083` portlarına
  erişilebiliyor.
- Kullanıcılar merkez sunucuya HTTPS ile bağlanıyor. Platform CA'sı (ya da kurumsal CA'nız) kullanıcıların
  bilgisayarlarında güvenilir olarak tanımlı.
- Sertifika deposu anahtarı (`keys/STORE/certificate-store.key` ya da `PROXUS_CERTIFICATE_STORE_KEY`), yapılandırma
  klasörüyle birlikte yedekleniyor.
- MQTT cihazları `8883` portunu kullanıyor. `1883` portuna ihtiyaç kalmadığında `PlainEnabled = false` yapılmış.
- MCP kapalı ya da `AdminOnly`, `AllowedMethods` ve `IPWhitelist` ile sınırlanmış.
- Metrikler kapalı ya da `8080`/`8443` ve `8083` portlarına yalnızca izleme sisteminiz erişebiliyor.
- `config` birimi ve veritabanları yedekleniyor; yedekler makineden ayrı bir yerde saklanıyor.
- Makineye yalnızca yöneticiler erişebiliyor. Bunun nedeni, merkez sunucu konteynerinin bağlı Docker soketi
  üzerinden Docker'ı yönetebilmesidir.

## Sonraki adımlar

- [Kullanıcılar ve roller](https://proxus.io/tr/docs/administer/users-and-roles): herkese yalnızca gereken izinleri verme.
- [Sertifikalar](https://proxus.io/tr/docs/administer/certificates): platform CA'sını, sunucu sertifikalarını ve güveni yönetme.
- [İzleme](https://proxus.io/tr/docs/operate/monitoring): kurulumun çalışma durumunu ve kapasitesini takip etme.
