Telefonu HMI'ye Şarj İçin Taktı, Air-Gap Delindi
Bir operatör kişisel telefonunu HMI'nin USB portuna şarj için taktı, tethering otomatik açıldı, 'hava kesintili' ağ saniyeler içinde internete bağlandı. O tek bağlantıyı nasıl bulduk ve masada 30 dakikanın sahada neden 3 hafta sürdüğünü anlatıyorum.

Geçen kış, Kocaeli’de bir tesiste. Tesisin ağ mimarisi klasikti: OT tarafı “hava kesintili” — yani fiziksel olarak enterprise ağdan kopuk, 10.20.0.0/24’te kendine yeten, firewallerıyla değil, “kablosu yok” mantığıyla izole edilmiş bir dünya. Beş yıldır tek bir güvenlik olayı yoktu. Taş gibi.
O günde operatör bir şikayet getirdi: “Telefonum şarj olmadı HMI’den, sonra HMI’de internet simgesi belirdi.”
Operatörün gözünde olayın sırası buydu: önce telefon, sonra simge. Ağ ekibinin gözüne ilk çarpan şey de buydu. Ama gerçekte olay çok daha basit bir yoldan açılmıştı. Bir USB portu, bir “kişisel şarj ihtiyacı” ve iki saniyelik bir tethering. Bu yazı o iki saniyeyi ve onu kapatmamızın neden üç hafta sürdüğünü anlatıyor.
Telefon Gerçekten mi Tethering Açtı?
Açtı. Ve bu bir komplo değil, telefonun kendi davranışı.
İşin teknik tarafı şu: Android bir telefonu USB’ye taktığında cihaz iki mod arasından birini seçer — ya “şarj”, ya “veri”. Operatörün telefonu, fabrika duvarındaki prizlerin zayıflığından biliyordu ki şarj akımı yetersiz gelir, otomatik olarak “kişisel hotspot / USB tethering” moduna geçmiş. Tethering kapalıyken bile, telefona veri modunda takılan USB hattı üzerinden bir yol arar; telefon, “internete başka yoldan çıkış var mı?” diye bakar.
Otobüse binip pencereyi açmak gibi düşünün. Pencereyi operatör açmadı, telefon açtı. Operatör sadece kabloyu takmıştı.
Sahanın gerçeği şu: HMI panellerinin (PanelView, Comfort Panel, Touchflex) USB portu “şarj” tanımıyla değil, “şarj + veri” tanımıyla gelir. Yani port, telefonun istediği protokolü sorar ve cevap verir. Tethering de o protokollerden biri.
10.20.0.0/24 Neden Anında Açıldı?
Bu, benim ilk gözlemimde “imkansız” olarak gördüğüm kısım.
10.20.0.0/24 OT ağı kendi DNS’i yoktu. Kendi DHCP’i vardı ama scope’u sadece 10.20.0.10–10.20.0.50 arasıydı. Telefon tethering açtığında, HMI portu üzerinden 3G/4G hattı aktif hale geldi. HMI tarafında, o an “internete çıkabilirim” diyen tek cihaz o telefondu.
Ama asıl mesele şu: tesisin PLC tarafında “internet” diye bir kavram yoktu. S7-1500 CPU 10.20.0.x’te, OT ağı dışarıya açan tek rota o telefonun tethering hattıydı. Ağda “dışarı” diyebilen bir cihaz yoktu — ta o an kadar. İşte o “dışarı” kelimesi, beş yıllık hava kesintisini bitiren kelimeydi.
Bana “beş yıldır olay yoktu” demişlerdi. Olay yoktu, ama portlar açıktı. Beş yıl “şansı”ydı. Beşinci yılın sonunda şarj kablosu geldi.
Tespit Ne Kadar Sürdü — ve Neden Masada 30 Dakika Burada 3 Hafta?
Tesbit süresi: iki gün. Kapatma süresi: üç hafta.
Bu iki sayıyı yan yana koyduğunuzda mesele ortaya çıkıyor. Masada, yani laboratuvarda, aynısını üretmek 30 dakika:
- Panel’in USB portuna bir telefon takın.
- Ağı bir aynaya (port mirror) bağlanmış bir PC’den izleyin.
- 30–60 saniye içinde ARP paketi görürsünüz.
Sahada bu üç adımı yapmamız üç gün sürdü. Çünkü:
- Port’ı kim takmıştı? Tesis, üç vardiya çalışıyordu. Log’da “USB connect” olayı vardı ama kullanıcısını bağlayacak bir kayıt mekanizması yoktu.
- Hangi porttu? HMI’de iki USB portu vardı — biri operatör kullanan port, biri yedek/teknik. Log’lar “USB1” yazıyordu, ama “USB1” hangisiydi, panelin kapağının arkasında, kablo etiketinin altında bir etiket vardı. O etiketten önce üç gün.
- Air-gap’ı ne zaman delmek gerekiyor? Bu sorunun cevabı “acil” olacaktı ama “acil”in tanımı OT tarafında “hat durmazsa”. Hat durduğunda air-gap’ı kapatır mısınız? Cevabımız — ve buraya dikkat — “hat durdurur, sonra air-gap’ı kapatır” şeklindeydi. Bu, yanlış. Doğrusu: “air-gap’ı kapat, sonra hatı denetle.” Ama bunu değiştirmek, üç haftalık bir prosedür değişikliği istedi.
Yani, kapatma süresi teknik değil, prosedür süresiydi. Masada 30 dakikanın sahada 3 hafta sürmesinin sebebi, teknik değil, prosedür ve prosedürün kimin masasından geçtiğiydi.
Neden “USB’yi Kapatayım” Tek Başına Yeterli Değil?
En yaygın ilk tepki bu: “USB’yi kapatalım.” Kapattım. Üç ayda iki tekrar oldu.
Sebebi şu: USB’yi kapatma kararı tek bir karar gibi görür. Ama sahadaki USB, tek bir karar değil:
- Operatör şarj.
- Bakım, driver yükleme.
- Üretici, tanılama.
- Müşteri, demo amaçlı USB.
- Denetimci, rapor alımı.
Her biri “USB lazım” der. Tek bir “USB kapalı” kararı, altı farklı ihtiyacı kapatır. Ve her biri bir başka kapıdan gelir. Kapıyı kapatırsınız, altı kapıdan geçilen tek bir koridor kalır. Üç ay sonraki tekrar da o koridordan geçti.
Benim uyguladığım çözüm şu sırayla:
- USB’yi fiziksel olarak kilitli kapla (kapağı, tek anahtar).
- Sadece bakım vardiyasında, yalnızca teknik USB portundan izinli erişim.
- Her erişim, kayıt. “Kim, hangi saat aralığında, hangi porttan.”
- Ağ tarafında, OT ağındaki her cihazın “dışarı çıkış” deneti. Port kilitse bile, “dışarı” diyecek bir cihaz varsa, ağ onu keser.
Dördüncü madde kritik. Birinci, ikinci ve üçüncü madde “portu koru”. Dördüncü madde “port açıldıysa bile, dışarıya açılmaz” demektir. Beş yıllık hava kesintisi, birinci maddenin beş yıl çalıştığı bir tesisti. Beş yıl sonunda, birinci madde değil, dördüncü madde bizi kurtardı.
Bir Daha Olmasa Ne Yapmalıyım?
Sadece bir “kontrol listesi” değil, şu üç cümle:
- Hava kesintili diye yazılan her tesisin, “dışarı çıkış” denetimi vardır ya da yoktur. Varsa, air-gap’ınız o denetimin gücü kadardır.
- USB portları, kilitli kapı değil, kilidi unutulmuş kapıdır. Kilitli kapı, “açmayın” mesajıdır. Kilidi unutulmuş kapı, “açılır, ben de fark etmem” demektir.
- Her “ben sadece şarj ediyorum” ifadesi, bir “ben sadece bir okuma yapıyorum” ifadesiyle aynı kalırdadır. İkisi de otomatik olarak “veri taşıma” modu açar. Fark etmez, fark etmez.
Gelecek yazıda NIS2 geliyor — 56 proje bütçesi, tek güvenlik satırı yok. Orada da “prosedür” kelimesini çok kullanacağım.