Güvenlik duvarlarının arkasındaki linux bilgisayar kümesini yönetme


19

Şirketimin ürünü aslında başka birinin ağında yazılımımızı çalıştıran bir Linux kutusu (Ubuntu). Şimdiye kadar vahşi ortamda 25'ten az kutu vardı ve bunları yönetmek için TeamViewer kullandık.

Şimdi bu kutuların 1000'ini göndermek üzereyiz ve TeamViewer artık bir seçenek değil. Benim işim, bu kutulara erişmenin ve üzerlerindeki yazılımı güncellemenin bir yolunu bulmak . Bu çözüm, güvenlik duvarları ve size neler sunabiliyor olmalıdır.

Düşündüm:

1. Bulutta bir sunucuya bir SSH ters tüneli oluşturan, evde kullanılan bir çözüm (örneğin bir Linux hizmeti) ve bulutta bunları izleyen ve bunlara bağlanmanızı sağlayan başka bir hizmet.

Bu açıkça emek yoğundur ve açıkçası konuşmak gerekirse tekerleği yeniden icat etmek gibi geliyor çünkü birçok başka şirketin zaten bu problemle karşılaşmış olması gerekiyor. Yine de, bu konuda iyi bir iş yapacağımızdan emin değilim.

2. Kukla, şef veya OpenVPN gibi araçlar

Mümkün olduğu kadar okumaya çalıştım ama açık konuşmak için pazarlama konuşması ile yeterince nüfuz edemiyorum.

Bizden başka kimsenin bu kutulara bağlanmasına gerek yok. Alakalı deneyime sahip, bana bazı göstergeler sunabilecek biri var mı?


2
"Bizler => "Gemiye hakkında değiliz" şimdi gemiye hakkında"?
Bob

Yanıtlar:


23

Güncellemeleri çekin, zorlamayın

Ölçeklediğiniz gibi, bunu yapmak olanaksız hale gelecek itme tüm ürünlere güncellemeler.

  • Sen izlemek gerekecek her her biri farklı güvenlik duvarı yapılandırması olabilir tek müşteriyi.
  • Müşterinin güvenlik duvarı üzerinden, bağlantı noktası iletmeyi veya başka bir benzer mekanizmayı gerektirecek gelen bağlantılar oluşturmanız gerekir. Bu, müşterileriniz için bir güvenlik riskidir

Bunun yerine, ürünlerinizin güncellemelerini periyodik olarak 'çekmesini' sağlayın ve daha sonra büyüdükçe sunucu tarafında ekstra kapasite ekleyebilirsiniz.

Nasıl?

Bu sorun, önerdiğiniz gibi zaten çözüldü. İşte aklıma gelen birkaç yaklaşım.

  • apt kullanarak : Özel bir PPA ve kaynaklar listesiyle yerleşik apt sistemini kullanın. PPA'yı nasıl ayarlarım?
    • Con: Launchpad gibi halka açık bir barındırma hizmeti kullanmadığınız sürece, kendi uygun PPA + paketleme sisteminizi kurmak kalp zayıflığı için değildir.
  • ssh kullanarak : Her ürün için bir SSH genel anahtarı oluşturun ve ardından bu cihazın anahtarını güncelleme sunucularınıza ekleyin. Ardından, yazılımınızı rsync/ scpdosyalarınızı gerekli kılın.
    • Con: Gönderdiğiniz her ürün için tüm ortak anahtarları takip etmeli (ve yedeklemelisiniz!).
    • Profesyonel : Ham bir indirme işleminden daha güvenli, çünkü güncellemelere erişebilen tek cihaz genel anahtarın yüklü olduğu cihazlardır.
  • ham indirme + imza kontrolü :

    • İmzalı bir güncelleme dosyasını bir yere gönderin (Amazon S3, FTP sunucusu vb.)
    • Ürününüz, güncelleme dosyasının değiştirilmesini düzenli olarak denetler ve ardından imzayı indirir / doğrular.
    • Con : Bunu nasıl dağıttığınıza bağlı olarak, dosyalar herkese açık olarak erişilebilir olabilir (bu da ürününüzü tersine mühendislik ve kesmek için kolaylaştırabilir)
  • ansible : Ansible, sistem yapılandırmalarını yönetmek için harika bir araçtır. Bu kukla / şef diyarında, ama ajansız (python kullanır) ve idempotent olarak tasarlanmıştır. Yazılımınızı dağıtmak karmaşık bir bash betiği gerektiriyorsa, güncellemelerinizi gerçekleştirmek için daha az karmaşık hale getirmek için böyle bir araç kullanırım.

Tabii ki bunu yapmanın başka yolları da var .. Ama bu beni önemli bir noktaya getiriyor.

Güncellemelerinizi imzalayın / doğrulayın!

Ne yaparsanız yapın, güncellemenizin değiştirilmediğinden emin olmak için bir mekanizmanız olması zorunludur . Kötü amaçlı bir kullanıcı, yukarıdaki yapılandırmalardan herhangi birinde güncelleme sunucunuzu taklit edebilir. Güncellemenizi doğrulamazsanız, kutunuzu kesmek ve içeri girmek çok daha kolaydır.

Bunu yapmanın iyi bir yolu güncelleme dosyalarınızı imzalamaktır. Sertifikayı korumanız (ya da bunu yapması için birine ödeme yapmanız gerekir), ancak kurcalamadığınız güncellemeleri reddedebilmeleri için göndermeden önce parmak izinizi cihazlarınızın her birine yükleyebilirsiniz.

Fiziksel güvenlik

Tabii ki, birisinin müşterinin dağıtımına fiziksel erişimi varsa, sunucuyu kolayca ele geçirebilir. Ama en azından diğer dağıtımlara saldıramazlar! Fiziksel güvenlik muhtemelen müşterinizin sorumluluğundadır.

Bir an için, güncellemeler için büyük bir OpenVPN ağı kullanırsanız ne olacağını hayal edin ... Daha sonra VPN'deki her örneğe saldırmak için güvenliği ihlal edilmiş sunucuyu kullanabilirler

Güvenlik

Ne yaparsanız yapın, güvenliğin baştan inşa edilmesi gerekir . Köşeleri burada kesmeyin - Sonunda pişman olacaksınız.

Bu güncelleme sisteminin tamamen güvenliğinin sağlanması bu yayının kapsamı dışındadır ve siz veya ekibinizdeki bir kişi bu alanda bilgili değilse bir danışman almanızı şiddetle tavsiye ederim. Her kuruşa değer.


2
Ansible kullanımını ikinci yapardım - kabuk komut dosyaları ile tam gelişmiş Kukla / Şef tarzı konfigürasyon yönetimi arasındaki karmaşıklığın ortasında ve yazılımı güncellemekten daha karmaşık şeyler yapmak için karmaşıklığa sahip (" ) "yönetmek.
RichVel

Ansible'ı kullanma yoluna giderseniz, 'localhost' üzerinde çalışacak şekilde yazabilirsiniz ve yönetilen makinelerin hiçbirine SSH erişimi gerektirmez. Bunu bir cronjob olarak yapılandırın ve altınsınız.
BobTuckerman

1
BTW: Kendi paket sunucusu çalıştırmak istiyorsanız fpmve aptlybunu yapı ve konak kendi paketleri çok daha kolay hale iki büyük araçlardır. Kısa süre önce bu süreçten geçti ve oldukça güzeldi.
BobTuckerman

10

Aslında onlara erişmeniz gerekiyor mu?

Yoksa sadece güncelleyin mi? Çünkü, kendi kendilerine uygun güncellemelerin kendi başına katılımsız olmasına benzer şekilde kendilerini güncellemelerini sağlayabilirsiniz.

Giriş yapmanız gerekiyorsa

Neden bir OpenSSH arka plan programı port yönlendirme yoluyla dinlemiyor? Her müşterinin güvenlik için ayrı bir anahtarı olabilir ve yalnızca gerektiğinde bağlanır.

Müşterilerinize kadar

Müşterinin de neyi kabul etmek istediğini dikkate almanız gerekir. Ağlarına uzaktan erişim konusunda rahat olmayabilir veya yalnızca belirli teknolojiler / yapılandırmalarla rahat olmayabilir.


4
bu. 1000 farklı müşteri gereksinimi ile en azından bazıları ofisinize kalıcı bir openvpn bağlantısı istemez. İdeal olarak, yeni bir sürümün mevcut olup olmadığını tespit ettiklerinde kendilerini güncellemelerini sağlamaya çalışacaksınız (AWS S3
grubundaki

@Sirex - S3 kovası kullanmanın bir dezavantajı, müşterinin bu sunucuyu kilitlemek için kullanabileceği basit bir IP beyaz listesi olmamasıdır, böylece yalnızca güncelleştirmeyi tutan gruba erişebilir. Müşterilerin bu sunucunun neyle konuşabileceğini kontrol etmek için IP filtrelerini kullanabilmesi için statik bir genel IP adresiyle bir güncelleme sunucusu kurmak zorunda kaldık. (AWS tüm IP bloklarını yayınlar, bu nedenle teorik olarak sadece AWS kaynaklarına erişime izin veren bir filtre oluşturmak mümkündür, ancak bu kullanım durumu için aşırı geniş)
Johnny

S3'te güncellemeler yok, ancak uygulama tarafından 'mevcut güncelleme' başlık mesajlarını sağlamak için kullanılan en son sürümün ne olduğunu ayrıntılarıyla gösteren bir metin dosyası var. Daha sonra müşteriler, bizim durumumuzda fetchapp adlı bir hizmetten en son sürümün indirilmesini (bizim durumumuzda manuel olarak) tetikleyebilir.
Sirex

9

Kukla veya Tuz gibi bir düzenleme aracı öneririm .

Tuz bir mesaj kuyruğudur ve cihazınızdan ana sunucuya kalıcı bir bağlantı kurabilir. Bunu cihazlarda rasgele komutlar çalıştırmak için kullanabilirsiniz apt-get.

Diğer seçenek, hala bir ana sunucunuz olduğu ve istemcilerin konumlarından giden bağlantılar kurduğu Kukla'dır.

Bu araçların her ikisini de güvenlik duvarında yönetici denetimine sahip olamayacağım benzer bir amaç için kullanıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.