Sunucunun Internet'e yerleştirildiği bir istemci-sunucu uygulaması tasarlamak istiyorum. İstemci-sunucu bağlantısını VPN (IPSec kullanıyor mu?) Veya SSL bağlantısı (muhtemelen https) kullanarak kurabileceğimi varsayıyorum. İnternet üzerinden bir istemci sunucu bağlantısı sağlamak için VPN/IPsec ve SSL/https arasındaki farklar nelerdir?
VPN, "Sanal Özel Ağ" anlamına gelir. Daha büyük bir ağın (örn. Genel olarak Internet) donanım olmayan araçlarla mantıksal olarak izole edilen ("sanal" anlamı budur) bir kısmını belirleyen genel bir kavramdır: farklı kullandığımız bu değildir kablolar ve anahtarlar; daha ziyade, kriptografi kullanılarak izolasyon yapılır.
SSL (artık TLS olarak bilinir), çift yönlü bir taşıma ortamı alan ve güvenli çift yönlü bir ortam sağlayan bir teknolojidir. Altta yatan taşıma ortamının "çoğunlukla güvenilir" olmasını gerektirir (saldırıya uğramadığında, veri baytları gereken sırayla, kayıp ve tekrar olmadan aktarılır). SSL, gizlilik, bütünlük (etkin değişiklikler güvenilir bir şekilde algılanır) ve bazı kimlik doğrulama (genellikle sunucu kimlik doğrulaması, her iki tarafta sertifika kullanılıyorsa muhtemelen karşılıklı istemci-sunucu kimlik doğrulaması) sağlar.
VPN ve SSL aynı seviyeden değil. Bir VPN ygulama bir noktada bazı şifreleme gerektirir. Bazı VPN uygulamaları aslında SSL kullanır, bu da katmanlı bir sistemle sonuçlanır: VPN, IP paketlerini (sanal ağın) bir aktarım aracı olarak TCP kullanan bir SSL bağlantısı üzerinde serileştirerek aktarır, IPsec (fiziksel korumasız ağ üzerinde) IPsec, paketlere daha derinden entegre olan, bu katmanların bazılarını baskılayan ve dolayısıyla biraz daha verimli olan (daha az bant genişliği ek yükü) başka bir teknolojidir. IPsec'in işletim sistemi ağ kodu içinde oldukça derin yönetilmesi gerekirken, SSL tabanlı bir VPN gelen ve giden trafiği Hijack için sadece bir yol gerektirir; gerisi kullanıcı düzeyinde yazılımda olabilir.
Sorunuzu anladığım için, bazı makinelerin İnternet üzerinden iletişim kurması gereken bir uygulamanız var. Bazı güvenlik gereksinimleriniz var ve SSL (TCP) veya muhtemelen HTTPS (IP üzerinden TCP üzerinden SSL üzerinden HTTP) veya istemci ve sunucu arasında bir VPN kurmak ve "düz" TCP bu özel ağda kullanmak (VPN'in amacı, gizlilik konusunda artık endişelenmenize gerek kalmayacak güvenli bir ağ sağlamaktır) SSL ile, bağlantı kodunuzun güvenlikten haberdar olması gerekir; programlama açısından SSL bağlantısını "sadece bir soket "miş gibi açmazsınız.Bazı kütüphaneler göreceli olarak basitleştirir, ancak yine de, Öte yandan VPN, işletim sistemi düzeyinde yapılandırılır, bu nedenle güvenlik istemcideki uygulamanızla sunucudaki uygulamanız arasında değil, istemci işletim sistemi ile sunucu işletim sistemi arasındadır. : Bu aynı güvenlik modeli değildir, ancak çoğu durumda farkın ilgili olmadığı ortaya çıkmaktadır.
Uygulamada, bir VPN, istemci işletim sisteminde bazı yapılandırma adımlarının gerekli olduğu anlamına gelir. Oldukça invaziv. Aynı istemcide iki VPN tabanlı uygulama kullanmak sorunlu olabilir (güvenlik açısından akıllıca, çünkü istemci daha sonra, adresteki çarpışmalar nedeniyle nominal olarak birbirinden izole edilmesi gereken iki VPN'yi ve aynı zamanda pratikte birbirine bağlayan bir köprü görevi görür. Uzay). İstemci bir müşteriyse, bir VPN'yi düzgün yapılandırması imkansız bir görev gibi görünür. Ancak, bir VPN, uygulamaların güvenlikten haberdar olması gerekmediği anlamına gelir, bu nedenle üçüncü taraf yazılımları uygulamanıza entegre etmeyi çok daha kolay hale getirir.
Her ikisi de doğru yapılandırılmazsa güvenlik sorunları vardır. Ama önce bazı tanımlarla başlayalım:
Cisco'nun iyi bir VPN tanımı var:
VPN çeşitli şekillerde olabilir. Bir VPN iki uç sistem arasında olabilir veya iki veya daha fazla ağ arasında olabilir. VPN, tüneller veya şifreleme (esas olarak protokol yığınının herhangi bir katmanında) veya her ikisi kullanılarak veya alternatif olarak MPLS veya “sanal yönlendirici” yöntemlerinden biri kullanılarak oluşturulabilir. Bir VPN, bir servis sağlayıcının ağına kiralık hatlar, Çerçeve Geçişi veya ATM ile bağlı ağlardan oluşabilir veya VPN, merkezi hizmetlere veya diğer çevirmeli abonelere bağlanan çevirmeli abonelerden oluşabilir. https://www.Cisco.com/c/en_in/products/security/vpn-endpoint-security-clients/what-is-vpn.html
SSL gelince:
TLS (Aktarım Katmanı Güvenliği) olarak da bilinen SSL (Güvenli Yuva Katmanı), iki programın birbirleriyle güvenli bir şekilde iletişim kurmasını sağlayan bir protokoldür. TCP/IP gibi SSL de programların iletişim için "soketler" oluşturmasına ve bu soketler arasında bağlantı kurmasına izin verir. Ancak TCP'nin üzerine inşa edilen SSL, ek şifreleme yeteneği ekler. http://www.boutell.com/newfaq/definitions/ssl.html
Sorunuzla ilgili olarak, temel fark, SSL'nin genellikle son kullanıcı ve sunucu arasındaki verileri şifrelemek için tarayıcıyı kullanması ve web sitelerinin verilerin gizliliğinin ve bütünlüğünün korunmasını gerektiren alanlarda yaygın olarak kullanılmasıdır.
VPN/IPSEC belirli bir VPN İstemci yazılımı gerektirir ve genellikle sistemlere veya ağlara uzaktan erişim sağlamak içindir. Ayrıca IPSEC yerine L2TP veya L2F kullanma seçeneği de var.
Bununla birlikte, SSL VPN'leri, web tarayıcısı üzerinden ağlara/sistemlere erişim sağlama aracı olarak daha yaygın hale gelmektedir. Bu yaklaşımın, güvenli bağlantıyı sağlamak için ortak web tarayıcısını kullandığı için birçok faydası vardır. Bu yaklaşımın ayrıntı düzeyi, belirli uygulamalara erişimi kontrol etmek için de iyi bir yoldur.
Güvenlik konularına gelince -
SSL -
Zayıf güvenlik siberleri, son kullanıcıya karşı ortadaki adam tarzı saldırılar yapma yeteneğine yol açarak verilerin gizliliğinin/bütünlüğünün kaybolmasına neden olabilir.
IPSEC -
Potansiyel bir DoS koşulunun tanıtılması. Bunun bir örneği http://www.Cisco.com/en/US/products/products_security_advisory09186a0080b20ee5.shtml
Sistemlerin IPsec ilkelerini göz ardı etmesine ve ağ trafiğini düz metin olarak iletmesine neden olabilecek 2008 Microsoft sorunu gibi gizlilik kaybı sorunları. https://docs.Microsoft.com/en-us/security-updates/securitybulletins/2008/ms08-047
Burada çok iyi cevaplar, söylenenleri tekrar etmeyeceğim.
Ancak, eksik olduğum bir nokta var - özellikle istemci sertifikaları için bir gereksiniminiz yoksa SSL'nin geçici olarak kurulması çok daha kolay.
IPsec ise her zaman istemci sertifikaları gerektirir (normal, tipik bir kurulum varsayılırsa) ve ayrıca ilk kurulum ve dağıtımda başka zorluklar da vardır.
Bu nedenle, IPsec genellikle kontrollü bir ağ için daha uygun ve vahşi vahşi bilinmeyen İnternet üzerinde daha az uygundur. Bu diğer soru hakkında daha fazla bilgiye bakın: " IPsec (Internet Protokolü Güvenliği) gerçekler ".
Böylece, asıl sorunuza geri dönersek, sunucuyu internete koyduğunuz hemen hemen her durumda, kullanıcılarınızın bir VPN kullanarak bağlanmasını beklemezsiniz. (Elbette istisnalar vardır.)
Bunun yerine, sadece sunucunuzda SSL sertifikaları kurun, istemcilerinizi ona yönlendirin ve gitmeye hazırsınız (sadece hangi dil/teknoloji/kitaplığa bağlı olarak sertifikayı açıkça doğruladığınızdan emin olun ' kullanıyoruz ...)
Güvenli bir VPN oluşturmak için bu seçeneklere mi bakıyorsunuz? SSL'nin dağıtımı genellikle daha kolaydır ve masaüstünden ağa VPN türü için, örneğin evdeki bir çalışanın şirket ağına bağlanması gibi daha iyi desteklenir. Ağdan ağa şifrelenmiş VPN (ör. İki farklı kuruluş arasında) gibi daha karmaşık bir dağıtım yapıyorsanız, IPSEC daha iyi kontrol ve daha fazla özelleştirme seçeneği sunar.
Juniper Networks tarafından konuyla ilgili iyi bir teknik inceleme var, ancak ürünlerinin güçlü yönlerine eğilmiş olabilir.
Fark, bir daire ve bir kare arasındaki farka benzer (her ikisi de şekillerdir, ancak büyük ölçüde farklıdır). Her ikisi de iletişimi güvence altına alır, ancak bunu farklı düzeylerde ve farklı şekillerde yaparlar. IPSEC, kablolu şifreleme ve yetkilendirme iken SSL, uygulamaya özeldir.
IPSEC erişim kontrolüne sahiptir, ancak SSL yoktur.
Anlamaya çalıştığınız konuya daha açık olabilir misiniz?
Bu çok uzun bir cevap olabilir, ama kısa olanı deneyeceğim.
Https kullandığınızda, tarayıcınız (SSL istemcisi gibi davranır) yalnızca web sunucusuna olan bu bağlantıyı şifreler.
VPN kullandığınızda, özel bir istemciye ihtiyacınız vardır ve istemci ile sunucu arasında bir tünel oluşturmanız gerekir. Ardından tünelin içinden geçen trafiği yapılandırabilirsiniz. Bu her şey veya sadece http trafiğiniz olabilir.
Yalnızca http ile iletişim kurabilen bir istemci/sunucu uygulaması kurmak istediğinizde, şifrelenmesi gerektiğinde en kolay çözüm https trafiği olmalıdır. Bir VPN kurmak ve bakımını yapmak çok daha karmaşıktır.
Bu, tehdit modelinize, ihtiyacınız olan istemci sunucu protokolünün yapısına ve müşterilerinize bağlıdır.
Bu, deneyimsiz son kullanıcılara yönelik mi? Ardından SSL kullanın - bu noktada VPN karmaşıklığı çok sayıda potansiyel kullanıcıyı kapatacaktır.
İstemciyi bir tarayıcı uygulaması olarak (javascript ile perahlar) dağıtmak ister misiniz? Sonra tekrar https/ssl gitmek için bir yol gibi görünüyor.
Sunucunun istemciyi bir şey hakkında eşzamansız olarak bilgilendirmesi gerekiyor mu? O zaman HTTPS istediğiniz şey olmayabilir (ancak bunu yapmak için yapılabilir).
Kimlik avı riski ne kadar büyük? Saldırganların kendilerine MITM olarak hitap etmeleri kolay olacaksa, SSL her sunucuyu istemciye doğruladığı için muhtemelen daha iyidir. Tipik bir VPN, bir kez ayarlandığında, kullanıcının VPN'deki diğer ana bilgisayarlara giren bir saldırgandan kaçınmasına yardımcı olmaz. Bu muhtemelen büyük bir risk olmaz, ancak yine de ne yaptığınıza bağlıdır.
Bunu bulutta (hem istemci hem de sunucu) dağıtıyorsanız, çok rahat tehditlere yanıt verebilecek neredeyse ücretsiz bir VPN alabilirsiniz.
Bir güvenlik uzmanından çok uzakım, ancak ikisi arasındaki en önemli farkın diğer cevaplarda olmadığını düşünüyorum.
VPN ile iletişim şu şekilde gider:
HTTP client <-[raw]-> VPN client <-[encrypted]-> VPN server <-[raw]-> HTTP server
HTTP'ler ile şu şekilde gider:
HTTP client <-[encrypted]-> HTTP server
Böylece VPN tarafından korumasız veriler, istemcilerin yerel ağında ve sunucuların yerel ağında seyahat edebilir. Bu ağlara tamamen güvenmiyorsanız, HTTP'leri kullanmak akıllıca bir fikirdir. VPN ve HTTP istemci-istemci, sunucu-sunucu çiftlerinin aynı bilgisayarlarda (ör. yönlendiriciler VPN sunucuları veya istemcileri olarak yapılandırılabilir.
Bu teknolojiler farklı bir seviyede çalıştığından, birbirlerini dışlamazlar, bu nedenle hem başka bir koruma katmanı istiyorsanız hem de performans düşüşünün beraberinde gelmesi sakıncası yoksa ya da bunlardan birini kullanabilirsiniz. ihtiyaçlarınızı daha iyi karşılar. Bildiğim kadarıyla, her iki teknoloji de düzgün yapılandırıldıklarında güvenli kabul edilir.