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
/ scp
dosyaları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.