Güvenlik sertleştirme kontrol listesi
Bir YTCC sunucusu gerçek bir tesisi kumanda etmeden önce ve her yükseltmeden sonra bu listeyi baştan sona uygulayın.
Başlamadan önce
- Ana sayfada, her projenin kullanıcılarını yöneten sistem yöneticisi root olarak oturum açabilmelisiniz.
- Sunucuda bir yönetici hesabıyla oturum açabilmeli, kurulum programını çalıştırabilmeli ve YTCC servisini yeniden başlatabilmelisiniz. 4., 6. ve 7. adımlar kurulumun ayar dosyalarını denetler; bunlar kurulumun desteğine ait işlerdir.
Adımlar
1. Her projede kullanıcı girişini açın
Kullanıcı girişi kapalıyken arayüze ulaşan herkes her yetkiye sahiptir. Her projede açın. Bkz. Yetki modeli.
2. Varsayılan hesapları güvenceye alın
Kullanıcı girişi konfigürasyon editöründe açıldıysa YTCC her varsayılan profil için parolası kullanıcı adıyla aynı bir
kullanıcı oluşturmuştur, örneğin operator / operator. Bu kullanıcıları devre dışı bırakın ve
projeyi kullanan kişiler için kişisel hesaplar oluşturun. Bkz. Yetkiler ve varsayılan profiller. Önceki bir
sürümden yükseltilen sunucuda root hesabı root şifresiyle başlar; şifreyi ana sayfadan değiştirin (oturum düğmesi,
Change password, Şifre değiştir). Bkz. root şifresini değiştirme.
3. Güçlü bir PostgreSQL parolası kullanın
YTCC PostgreSQL parolasını boşsa, 1, 1234, postgres, admin ya da password gibi bilinen bir varsayılansa ya da
kullanıcı adıyla aynıysa zayıf sayar. Zayıf parola her açılışta uyarı üretir.
- PostgreSQL'de
postgreskullanıcısının parolasını değiştirin, örneğin pgAdmin'de:postgresoturum açma rolüne sağ tıklayın, Properties…'i seçin ve yeni parolayı Definition altında girin. - Kurulu sürümün kurulum programını yeniden çalıştırın, YTCC on this computer (Bu bilgisayardaki YTCC) sayfasında Repair'i (Onar) seçin, yeni parolayı Database (Veritabanı) sayfasında girip Test connection'a (Bağlantıyı dene) tıklayın. Onarımı tamamlayın. Kurulum programı parolayı yalnız yöneticilerin okuyabildiği bir ayar dosyasına yazar ve servisi yeniden başlatır. Bkz. Veritabanı şifresini girin.
YTCC dururken scada-manager db-password aynı işi tek komutla yapar: parolayı PostgreSQL'de değiştirir, denetler ve ayarları
günceller. Bkz. Veritabanı parolası.
Parola değiştirilene dek YTCC her açılışta zayıf parola uyarısı yazar. Destek, YTCC'nin zayıf parolayla açılmayı reddetmesini de sağlayabilir; bkz. scada-manager komutları.
4. Mesaj yolunu yerel tutun
Mesaj yolu (NATS, port 4222) sunucudaki süreçler içindir. Varsayılan olarak yalnız 127.0.0.1'de dinler. manager.toml
içindeki nats_bind ayarını boş bırakın. Bir ağ adresine ayarlarsanız YTCC güvenlik uyarısı yazar; 4222 portuna
güvenlik duvarında yalnız YTCC sürücülerini çalıştıran bilgisayarlardan izin verin.
5. Ağda dinleyen servisleri sınırlayın
Şu servisler bütün ağ arayüzlerinden bağlantı kabul eder. Portlarına Windows güvenlik duvarında yalnız ihtiyaç duyan bilgisayar ve cihazlardan izin verin:
| Port | Servis | Tek bir arayüze bağlanabilir mi |
|---|---|---|
| 8770 | Canlı veri sunucusu | Hayır (bütün arayüzlere ayarlı) |
| 162 (UDP) | SNMP trap alıcısı | Evet, cihazın trap dinleme adresiyle |
| 1883 | MQTT broker sürücüsü | Hayır |
| 4840 | OPC UA sunucu sürücüsü | Hayır |
| 20000 / 19999 | Dinleme modundaki DNP3 sürücüsü | Evet, dinleme adresiyle |
| 47808 (UDP) | BACnet/IP sürücüsü | Evet, yerel IP adresiyle |
Sürücü portları yalnız bir projede böyle bir sürücü çalışırken açıktır. Web arayüzü, config\ui-web.toml onu açana kadar yalnız
sunucunun kendisinde dinler; izinli ağları orada listeleyin. Bkz. Port tablosu ve
Arayüzü başka bilgisayarlardan açma.
6. Canlı veri sunucusuna yalnız bilinen bilgisayarları bağlayın (isteğe bağlı)
Bu adımı atlarsanız 8770 portuna ulaşan her bilgisayar eskisi gibi bağlanabilir. Canlı veri sunucusu bu portta /api'yi
ve canlı güncellemeleri (/ws) sunar; config\gateway.toml içindeki bir [access] bölümü orada hangi istemci
adreslerini kabul edeceğini sınırlar:
[access]
allow = ["10.0.0.0/24", "192.168.1.15"]
deny = ["10.0.0.66"]
| Kural | Anlamı |
|---|---|
| Bölüm yok ya da iki liste de boş | Her istemci kabul edilir. |
allow dolu | Yalnız eşleşen adresler kabul edilir. |
deny | allow ile eşleşseler de reddedilir. allow boşsa bunlar dışında herkes kabul edilir. |
Loopback (127.0.0.0/8, ::1) | Her zaman kabul edilir: sunucunun kendisindeki YTCC süreçleri bu yolla bağlanır. deny içindeki bir loopback girdisinin etkisi yoktur; canlı veri sunucusu açılışta uyarı yazar. |
| Girdiler | Tek adres (192.168.1.15) ya da CIDR gösteriminde bir ağ (10.0.0.0/24), IPv4 ya da IPv6. IPv6 olarak yazılmış bir IPv4 adresi (::ffff:10.0.0.5) IPv4 sayılır. |
| Geçersiz girdi | Canlı veri sunucusu başlamaz ve girdiyi adıyla yazar. 10.0.0.5/24 gibi konak bitleri dolu bir ağ da geçersizdir: 10.0.0.0/24 ya da 10.0.0.5 yazın. |
Denetim TCP bağlantısının adresine uygulanır. İletilen istemci adresi (X-Forwarded-For) yalnız bağlantı sunucunun
kendisindeki bir ters vekilden geliyorsa kullanılır. Reddedilen istemci access_forbidden koduyla HTTP 403 alır; canlı
veri sunucusu adres başına dakikada en çok bir uyarı yazar. Değişiklikler canlı veri sunucusu yeniden başlatılınca
geçerli olur: YTCC servisini Services (Hizmetler) içinde yeniden başlatın.
Web arayüzünü açan tarayıcılar canlı veri sunucusuna arayüz üzerinden, sunucunun kendisinden ulaşır; bu liste onlara
uygulanmaz. Onları config\ui-web.toml içindeki allow ile sınırlayın; bkz.
Arayüzü başka bilgisayarlardan açma.
Liste Windows güvenlik duvarının arkasında ikinci bir katmandır, onun yerine geçmez: 5. adımdaki güvenlik duvarı kurallarını koruyun. Ağa hangi cihazların bağlanabileceğini denetlemek için anahtarlarda port güvenliği ya da 802.1X kullanın.
7. Geliştirme anahtarlarını kapalı tutun
Bu anahtarlar geliştirme ve deneme içindir; hepsi varsayılan olarak kapalıdır. Saha sunucusunda hiçbirinin ayarlı olmadığını kontrol edin:
| Anahtar | Yeri | Açtığı |
|---|---|---|
YTCC_AUTO_LOGIN_USER | Proje sunucusunun ortamı | Sunucudaki tarayıcı için parolasız giriş. Bkz. Oturumlar. |
YTCC_GATEWAY_AUTH=off | Canlı veri sunucusunun ortamı | Girişsiz değer okuma, canlı güncelleme ve süreç kontrolü |
YTCC_WRITE_AUTH=off | Canlı veri sunucusunun ortamı | Girişsiz komut, anonymous olarak kaydedilir; yalnız YTCC_DEV=1 ile birlikte |
test_inject (ya da YTCC_TEST_INJECT) | Canlı veri sunucusu yapılandırması | API üzerinden sinyallere deneme değeri yazma |
ws_catch_all | Canlı veri sunucusu yapılandırması | Bütün sinyallere birden abone olma |
allow_writes | OPC UA sunucu sürücüsü | OPC UA istemcilerinden yazma kabulü; YTCC komut denetimleri, yetkiler ve komut kaydı olmadan |
YTCC açık olan her anahtar için açılışta uyarı ya da hata yazar.
8. YTCC'yi virüs programının silmesinden muaf tutun
Virüs programı YTCC programlarını silerse ya da engellerse kurulum programının Antivirus (Virüs koruması)
maddesinde adı geçen klasörü, <kurulum klasörü>\target\release, örneğin C:\ytcc\v15\target\release, dışlama
listesine ekleyin.