Hem güvenlik hem de uzaktan erişim için SSH'nin erdemlerini defalarca övdük. Sunucunun kendisine, bazı önemli "bakım" yönlerine ve başka türlü sorunsuz bir sürüşe türbülans ekleyebilecek bazı tuhaflıklara bir göz atalım.
Bu kılavuzu Linux'u göz önünde bulundurarak yazmış olsak da, bu aynı zamanda Mac OS X'teki OpenSSH için de geçerli olabilir ve Cygwin üzerinden Windows 7 .
Neden Güvenli
SSH'nin verileri bir noktadan diğerine güvenli bir şekilde bağlamanın ve tünellemenin harika bir yolu olduğundan defalarca bahsetmiştik. İşlerin nasıl işlediğine çok kısa bir göz atalım, böylece bazen işlerin neden tuhaf gidebileceğine dair daha iyi bir fikir edinebilirsiniz.
Başka bir bilgisayarla bağlantı kurmaya karar verdiğimizde, genellikle birlikte çalışması kolay protokoller kullanırız. Hem Telnet hem de FTP akla geliyor. Uzak bir sunucuya bilgi göndeririz ve ardından bağlantımızla ilgili onay alırız. Bir tür güvenlik oluşturmak için, bu protokoller genellikle kullanıcı adı ve şifre kombinasyonlarını kullanır. Bu tamamen güvenli oldukları anlamına gelir, değil mi? Yanlış!
Bağlanma sürecimizi posta olarak düşünürsek, FTP ve Telnet ve benzerlerini kullanmak standart posta zarfları kullanmak gibi değildir. Daha çok kartpostal kullanmaya benziyor. Birisi ortaya çıkarsa, hem muhabirlerin adresleri hem de gönderilen kullanıcı adı ve şifre dahil olmak üzere tüm bilgileri görebilir. Daha sonra mesajı değiştirebilir, bilgiyi aynı tutabilir ve bir muhabiri veya diğerini taklit edebilirler. Bu, "ortadaki adam" saldırısı olarak bilinir ve yalnızca hesabınızı tehlikeye atmakla kalmaz, gönderilen her iletiyi ve alınan her dosyayı sorgulamaya çağırır. Gönderenle konuşup konuşmadığınızdan emin olamazsınız ve konuşsanız bile, aradaki her şeye kimsenin bakmadığından emin olamazsınız.
Şimdi, HTTP'yi daha güvenli hale getiren SSL şifrelemesine bakalım. Burada, yazışmaları yöneten, alıcınızın iddia ettiği kişi olup olmadığını kontrol eden ve postanızın bakılmasını önleyen yasaları olan bir postanemiz var. Genel olarak daha güvenlidir ve merkezi otorite - HTTPS örneğimiz için Verisign biridir - posta gönderdiğiniz kişinin kontrol etmesini sağlar. Bunu, kartpostallara (şifrelenmemiş kimlik bilgileri) izin vermeyerek yaparlar; bunun yerine gerçek zarfları zorunlu kılarlar.
Son olarak, SSH'ye bakalım. Burada kurulum biraz farklı. Burada merkezi bir kimlik doğrulayıcımız yok, ancak işler hala güvende. Bunun nedeni, adresini zaten bildiğiniz birine mektuplar gönderiyor olmanız - diyelim ki, onlarla telefonda sohbet ederek - ve zarfınızı imzalamak için gerçekten havalı bir matematik kullanmanızdır. Adrese götürmek için kardeşinize, kız arkadaşınıza, babanıza veya kızınıza teslim edersiniz ve yalnızca alıcının havalı matematik eşleşmeleri olması gereken adresin bu olduğunu varsayarsınız. Ardından, bu harika matematikle meraklı gözlerden korunan bir mektup alırsınız. Son olarak, kimlik bilgilerinizi başka bir gizli algoritmik olarak büyülü zarf içinde hedefe gönderirsiniz. Matematik eşleşmezse, asıl alıcının taşındığını varsayabiliriz ve adresini tekrar onaylamamız gerekir.
Açıklamayla olduğu sürece orada keseceğimizi düşünüyoruz. Daha fazla fikriniz varsa, tabii ki yorumlarda sohbet etmekten çekinmeyin. Şimdilik, SSH'nin en alakalı özelliği olan ana bilgisayar kimlik doğrulamasına bakalım.
Ana Bilgisayar Anahtarları
Ana bilgisayar kimlik doğrulaması, esasen güvendiğiniz birinin zarfı aldığı (sihirli matematikle mühürlenmiş) ve alıcınızın adresini onayladığı kısımdır. Bu, adresin oldukça ayrıntılı bir açıklamasıdır ve hemen atlayacağımız bazı karmaşık matematiğe dayanmaktadır. Yine de bundan çıkarılması gereken birkaç önemli nokta var:
- Merkezi bir otorite olmadığı için, gerçek güvenlik ana bilgisayar anahtarında, genel anahtarlarda ve özel anahtarlarda yatmaktadır. (Bu son iki anahtar, sisteme erişiminiz olduğunda yapılandırılır.)
- Genellikle, SSH aracılığıyla başka bir bilgisayara bağlandığınızda, ana bilgisayar anahtarı saklanır. Bu, gelecekteki eylemleri daha hızlı (veya daha az ayrıntılı) yapar.
- Ana bilgisayar anahtarı değişirse, büyük olasılıkla uyarılırsınız ve dikkatli olmanız gerekir!
Ana bilgisayar anahtarı, SSH sunucusunun kimliğini oluşturmak için kimlik doğrulamadan önce kullanıldığından, bağlanmadan önce anahtarı kontrol ettiğinizden emin olmalısınız. Aşağıdaki gibi bir onay iletişim kutusu göreceksiniz.
Yine de endişelenmemelisin! Genellikle güvenlik bir endişe kaynağı olduğunda, ana bilgisayar anahtarının (yukarıdaki ECDSA parmak izi) onaylanabileceği özel bir yer olacaktır. Tamamen çevrimiçi girişimlerde, genellikle yalnızca güvenli bir oturum açma sitesinde olacaktır. Bu anahtarı telefonla onaylamak için BT departmanınızı aramanız (veya seçmeyi seçmeniz) gerekebilir. Hatta anahtarın iş rozetinizde veya özel "Acil Durum Numaraları" listesinde olduğu bazı yerleri duydum. Ve hedef makineye fiziksel erişiminiz varsa, kendiniz de kontrol edebilirsiniz!
Sisteminizin Ana Bilgisayar Anahtarını Kontrol Etme
Anahtar yapmak için kullanılan 4 tür şifreleme algoritması vardır, ancak bu yılın başlarında OpenSSH için varsayılan ECDSA'dır ( bazı iyi sebeplerle ). Bugün buna odaklanacağız. Erişiminizin olduğu SSH sunucusunda çalıştırabileceğiniz komut şu şekildedir:
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
Çıktınız şöyle bir şey döndürmelidir:
256 ца: 62: еа: :ц: еч: яй: 2е: аш: яч: 20: 11: дб: яц: 78: цз: чц /етц/сш/сш_хост_ецдса_кей.пуб
İlk sayı, anahtarın bit uzunluğudur, ardından anahtarın kendisidir ve son olarak, içinde depolandığı dosyaya sahip olursunuz. Bu orta bölümü, uzaktan oturum açmanız istendiğinde gördüğünüzle karşılaştırın. Eşleşmeli ve hazırsınız. Aksi takdirde, başka bir şey olabilir.
Bilinen hostlar dosyanıza bakarak SSH aracılığıyla bağladığınız tüm ana bilgisayarları görüntüleyebilirsiniz. Genellikle şu adreste bulunur:
~ / .ssh / bilinen_hosts
Bunu herhangi bir metin düzenleyicide açabilirsiniz. Bakarsanız, anahtarların nasıl saklandığına dikkat etmeye çalışın. Ana bilgisayarın adı (veya web adresi) ve IP adresiyle birlikte saklanırlar.
Ana Bilgisayar Anahtarlarını ve Sorunlarını Değiştirme
Ana makine anahtarlarının değişmesinin veya bilinen_hosts dosyanıza kaydedilenlerle eşleşmemesinin birkaç nedeni vardır.
- Sistem yeniden kuruldu / yeniden yapılandırıldı.
- Güvenlik protokolleri nedeniyle ana bilgisayar anahtarları manuel olarak değiştirildi.
- OpenSSH sunucusu güncellendi ve güvenlik sorunları nedeniyle farklı standartlar kullanıyor.
- IP veya DNS kiralama değişti. Bu genellikle farklı bir bilgisayara erişmeye çalıştığınız anlamına gelir.
- Sistem, ana bilgisayar anahtarının değişmesine neden olacak şekilde tehlikeye atıldı.
Büyük olasılıkla, sorun ilk üçten biridir ve değişikliği görmezden gelebilirsiniz. IP / DNS kirası değiştiyse, sunucuda bir sorun olabilir ve farklı bir makineye yönlendirilebilirsiniz. Değişikliğin nedeninin ne olduğundan emin değilseniz, muhtemelen listedeki sonuncusu olduğunu varsaymalısınız.
OpenSSH Bilinmeyen Ana Bilgisayarları Nasıl Yönetir?
OpenSSH, "StrictHostKeyChecking" değişkeninde (tırnak işaretleri olmadan) yansıtılan, bilinmeyen ana bilgisayarları nasıl işlediğine ilişkin bir ayara sahiptir.
Yapılandırmanıza bağlı olarak, bilinmeyen ana bilgisayarlarla (anahtarları bilinen_hosts dosyanızda bulunmayan) SSH bağlantıları üç yoldan gidebilir.
- StrictHostKeyChecking no olarak ayarlanmıştır; OpenSSH, ana bilgisayar anahtarının durumuna bakılmaksızın herhangi bir SSH sunucusuna otomatik olarak bağlanacaktır. Bu güvenli değildir ve işletim sisteminizi yeniden yükledikten sonra bir grup ana bilgisayar ekliyorsanız ve ardından onu eski haline getirmeniz dışında önerilmez.
- StrictHostKeyChecking soracak şekilde ayarlanmıştır; OpenSSH size yeni ana bilgisayar anahtarlarını gösterecek ve bunları eklemeden önce onay isteyecektir. Bağlantıların ana bilgisayar anahtarlarını değiştirmesini önleyecektir. Bu varsayılandır.
- StrictHostKeyChecking evet olarak ayarlanmıştır; "Hayır" ın tersi, bilinen_hosts dosyanızda halihazırda mevcut olmayan herhangi bir ana bilgisayara bağlanmanızı engeller.
Aşağıdaki paradigmayı kullanarak bu değişkeni komut satırında kolayca değiştirebilirsiniz:
ssh -o 'StrictHostKeyChecking [option]' user @ host
[option]'ü "hayır", "sor" veya "evet" ile değiştirin. Bu değişkeni ve ayarını çevreleyen tek düz tırnaklar olduğunu unutmayın. Ayrıca user @ host'u, bağlanmakta olduğunuz sunucunun kullanıcı adı ve ana bilgisayar adıyla değiştirin. Örneğin:
ssh -o 'StrictHostKeyChecking ask' [email protected]
Değiştirilen Anahtarlar Nedeniyle Engellenen Ana Makineler
Erişmeye çalıştığınız ve anahtarı zaten değiştirilmiş bir sunucunuz varsa, varsayılan OpenSSH yapılandırması ona erişmenizi engelleyecektir. Bu ana bilgisayar için StrictHostKeyChecking değerini değiştirebilirsiniz, ancak bu tamamen, tamamen, paranoyakça güvenli olmaz, değil mi? Bunun yerine, rahatsız edici değeri bilinen_hosts dosyamızdan kaldırabiliriz.
Bu kesinlikle ekranınızda olması çirkin bir şey. Neyse ki, bunun sebebimiz yeniden yüklenmiş bir işletim sistemiydi. Öyleyse, ihtiyacımız olan çizgiyi yakınlaştıralım.
Oraya gidiyoruz. Düzenlememiz gereken dosyadan nasıl alıntı yaptığını görüyor musunuz? Hatta bize satır numarasını bile veriyor! Şimdi o dosyayı Nano'da açalım:
İşte 1. satırdaki sorunlu anahtarımız. Tek yapmamız gereken Ctrl + K tuşlarına basarak tüm satırı kesmek.
Bu çok daha iyi! Şimdi, dosyayı yazmak (kaydetmek) için Ctrl + O tuşlarına, ardından çıkmak için Ctrl + X tuşlarına basıyoruz.
Şimdi bunun yerine basitçe "evet" olarak yanıtlayabileceğimiz güzel bir istem alıyoruz.
Yeni Ana Bilgisayar Anahtarları Oluşturma
Kayıt için, ana bilgisayar anahtarınızı değiştirmeniz için gerçekten çok fazla bir neden yok, ancak ihtiyacı bulursanız bunu kolayca yapabilirsiniz.
Önce uygun sistem dizinine geçin:
cd / etc / ssh /
Bu genellikle genel ana bilgisayar anahtarlarının bulunduğu yerdir, ancak bazı dağıtımlar bunları başka bir yere yerleştirir. Şüphe duyduğunuzda belgelerinizi kontrol edin!
Ardından, tüm eski anahtarları sileceğiz.
sudo rm / etc / ssh / ssh_host_ *
Alternatif olarak, bunları güvenli bir yedekleme dizinine taşımak isteyebilirsiniz. Sadece bir düşünce!
Ardından, OpenSSH sunucusuna kendisini yeniden yapılandırmasını söyleyebiliriz:
sudo dpkg-reconfigure openssh-server
Bilgisayarınız yeni anahtarlarını oluştururken bir istem göreceksiniz. Ta-da!
Artık SSH'nin nasıl biraz daha iyi çalıştığını bildiğinize göre, kendinizi zorlu noktalardan kurtarabilmelisiniz. "Uzak Ana Bilgisayar Kimliği Değişti" uyarısı / hatası, komut satırına aşina olanlar da dahil olmak üzere birçok kullanıcıyı uzaklaştıran bir şeydir.
Bonus puanlar için kontrol edebilirsiniz Parolanızı Girmeden Dosyaları SSH Üzerinden Uzaktan Kopyalama . Burada, diğer şifreleme algoritmaları türleri ve ek güvenlik için anahtar dosyaları nasıl kullanacağınız hakkında biraz daha fazla bilgi edineceksiniz.