SSH Nedir?
SSH (Secure Shell), bilgisayarlar ve sunucular arasında güvenli uzaktan bağlantı kurmak, komut çalıştırmak ve veri aktarımı gerçekleştirmek için kullanılan bir ağ protokolüdür. Güvenilmeyen ağlar üzerinden yapılan iletişimde verilerin gizliliğini ve bütünlüğünü korumak amacıyla şifreleme ve kimlik doğrulama mekanizmalarından yararlanır.
SSH, sistem yöneticilerinin uzak sunuculara komut satırı üzerinden erişmesini, sunucu yapılandırmalarını yönetmesini, dosya aktarmasını ve belirli ağ bağlantılarını güvenli bir tünel üzerinden yönlendirmesini sağlar. Genellikle TCP üzerinden çalışır ve varsayılan olarak 22 numaralı portu kullanır. SSH bir protokol standardıdır; OpenSSH gibi yazılımlar bu protokolün uygulanmasını sağlar.
SSH'nin geliştirilmesi, internet üzerinden uzaktaki bilgisayarlara güvenli erişim ihtiyacının artmasıyla başlamıştır. Daha önce kullanılan Telnet ve Rlogin gibi protokollerin şifrelenmemiş iletişim yapısı, kullanıcı bilgileri ve veri trafiği açısından önemli güvenlik riskleri oluşturuyordu.
▬ Telnet ve Rlogin Dönemi: SSH öncesinde uzak sistemlere erişmek için Telnet, Rlogin ve RSH gibi protokoller kullanılıyordu. Bu protokollerde kullanıcı adı, parola ve iletişim verileri çoğunlukla şifrelenmeden aktarılıyordu. Ağ trafiğini izleyebilen kişiler bu bilgileri ele geçirebildiğinden güvenli uzaktan erişim önemli bir ihtiyaç haline geldi.
▬ SSH'nin Geliştirilmesi (1995): Finlandiyalı bilgisayar mühendisi Tatu Ylönen, 1995 yılında güvenli uzaktan bağlantı ihtiyacına çözüm üretmek amacıyla SSH protokolünü geliştirdi. İlk sürüm, güvenli oturum açma ve veri aktarımı için tasarlanmıştı. Protokolün ilk sürümü aynı yıl yayımlandı.
▬ SSH-1 ve SSH-2: İlk sürüm olan SSH-1, zaman içerisinde tespit edilen güvenlik sorunları nedeniyle yerini daha gelişmiş bir mimariye sahip SSH-2'ye bıraktı. SSH-2, güvenlik ve protokol tasarımı bakımından önemli iyileştirmeler içerir. SSH-1 artık güvenli kabul edilmez ve kullanılmamalıdır.
▬ OpenSSH'nin Geliştirilmesi: 1999 yılında OpenBSD geliştiricileri, özgürce kullanılabilen ve sürdürülebilir bir SSH uygulaması oluşturmak amacıyla OpenSSH projesini başlattı. OpenSSH, günümüzde Linux, Unix ve diğer işletim sistemlerinde yaygın olarak kullanılan açık kaynaklı SSH uygulamalarından biridir.
▬ SSH'nin Standartlaşması: SSH-2 protokol mimarisi, IETF tarafından yayımlanan RFC 4251 ve ilgili standart belgeleriyle tanımlandı. Bu standartlar; güvenli iletişim, kimlik doğrulama ve bağlantı yönetimi gibi temel bileşenleri ayrı katmanlar halinde açıklar.
▬ Günümüzde SSH: SSH, günümüzde sunucu yönetimi, bulut altyapıları, ağ cihazlarının yönetimi, güvenli dosya transferi ve uzaktan yazılım geliştirme süreçlerinde yaygın olarak kullanılmaktadır. Linux ve Unix sistemlerinin yanı sıra Windows işletim sistemlerinde de SSH istemcisi ve sunucu uygulamaları kullanılabilir.
SSH, uzak sistemlere güvenli erişim sağlamanın yanı sıra dosya aktarımı, komut yürütme ve ağ trafiğini güvenli kanallar üzerinden yönlendirme gibi farklı işlemlerde kullanılır. Şifreleme ve kimlik doğrulama mekanizmaları sayesinde sistem yöneticileri, yazılım geliştiriciler ve teknik ekipler uzak altyapıları daha güvenli şekilde yönetebilir.
SSH, kullanıcının uzaktaki bir bilgisayara veya sunucuya komut satırı üzerinden güvenli şekilde bağlanmasını sağlar. Bağlantı kurulduktan sonra kullanıcı yetkileri dahilinde dosyaları yönetebilir, sistem komutlarını çalıştırabilir, servisleri kontrol edebilir ve sunucu yapılandırmalarını değiştirebilir.
SSH altyapısı, dosyaların uzak sistemler arasında şifreli bağlantı üzerinden aktarılmasını sağlayan SCP ve SFTP gibi yöntemleri destekler. SFTP, SSH üzerinden çalışan ayrı bir dosya aktarım protokolüdür. SCP ise güvenli kopyalama amacıyla kullanılan bir aktarım yöntemidir. Bu araçlar sunucuya dosya yükleme, sunucudan dosya indirme ve uzak sistemler arasında veri taşıma işlemlerinde kullanılabilir.
SSH üzerinden uzak sunucuda etkileşimli bir terminal oturumu açmadan da komut çalıştırılabilir. Bu özellik; sistem güncellemeleri, servis yönetimi, yedekleme, bakım ve otomasyon işlemlerinde kullanılır. Komutların çalıştırılması, bağlanan kullanıcının sunucudaki yetkileriyle sınırlıdır.
SSH tünelleme, belirli ağ bağlantılarının şifrelenmiş SSH oturumu üzerinden taşınmasını sağlar. Yerel port yönlendirme (Local Forwarding), uzak port yönlendirme (Remote Forwarding) ve dinamik port yönlendirme (Dynamic Forwarding) gibi yöntemlerle farklı ağ servislerine güvenli erişim sağlanabilir. Bu yöntemler yalnızca gerekli yetkilendirme ve ağ güvenliği kuralları çerçevesinde kullanılmalıdır.
SSH, kullanıcıların parola veya açık anahtar tabanlı kimlik doğrulama gibi yöntemlerle sisteme erişmesini sağlar. Sunucu kimliğinin doğrulanması, güvenli anahtar değişimi ve şifrelenmiş oturum mekanizmaları sayesinde bağlantı sırasında yetkisiz erişim ve veri manipülasyonu riskleri azaltılır.
SSH; Linux sunucuları, bulut sistemleri, güvenlik duvarları, yönlendiriciler ve anahtarlar gibi ağ cihazlarının uzaktan yönetiminde kullanılabilir. Destekleyen cihazlarda yapılandırma, izleme, bakım ve sorun giderme işlemleri güvenli bir bağlantı üzerinden gerçekleştirilebilir.
Yazılım geliştiriciler SSH üzerinden uzak geliştirme ortamlarına bağlanabilir, sürüm kontrol sistemleriyle çalışabilir ve dağıtım süreçlerini yönetebilir. Otomasyon araçları da yetkilendirilmiş SSH bağlantıları aracılığıyla sunucularda tekrarlanan bakım ve yönetim görevlerini gerçekleştirebilir.
SSH, verileri şifreleyerek iletişim güvenliğini artırır ancak tek başına bütün sistem güvenliğini garanti etmez. Zayıf parolalar, ele geçirilmiş özel anahtarlar, yanlış sunucu yapılandırmaları veya güncel olmayan yazılımlar SSH bağlantılarını da riskli hale getirebilir.
Güvenli bir SSH altyapısı için aşağıdaki uygulamalar dikkate alınmalıdır:
▬ SSH-2 protokolü kullanılmalı, SSH-1 devre dışı bırakılmalıdır.
▬ Güçlü ve güncel şifreleme algoritmaları tercih edilmelidir.
▬ Mümkün olduğunda açık anahtar tabanlı kimlik doğrulama kullanılmalıdır.
▬ Özel anahtarlar güvenli biçimde saklanmalı ve yetkisiz kişilerle paylaşılmamalıdır.
▬ Sunucuya ilk bağlantıda görülen ana bilgisayar anahtarı parmak izi (host key fingerprint) doğrulanmalıdır.
▬ Gereksiz kullanıcı hesapları ve erişim yetkileri sınırlandırılmalıdır.
▬ SSH erişimi güvenlik duvarı kurallarıyla yalnızca gerekli IP adresleri veya ağlarla sınırlandırılmalıdır.
▬ Başarısız oturum açma denemeleri izlenmeli ve gerektiğinde ek koruma mekanizmaları uygulanmalıdır.
▬ SSH sunucu ve istemci yazılımları güncel tutulmalıdır.
SSH, istemci (client) ve sunucu (server) arasında şifrelenmiş bir iletişim kanalı oluşturarak çalışır. Bağlantı kurulurken taraflar destekledikleri algoritmalar üzerinde anlaşır, güvenli anahtar değişimi gerçekleştirir ve sunucunun kimliği doğrulanır. Ardından kullanıcı kimlik doğrulaması yapılır. Başarılı bağlantı sonrasında komut çalıştırma, dosya aktarımı veya tünelleme işlemleri güvenli oturum üzerinden yürütülür.
✦ Kullanıcı, bilgisayarında bulunan SSH istemcisi aracılığıyla uzak sunucuya bağlanmak ister.
✦ Bağlantı için sunucunun IP adresi veya alan adı, kullanıcı adı ve gerekirse port numarası belirtilir. SSH'nin varsayılan portu TCP 22'dir; sunucu yapılandırmasına göre farklı bir port da kullanılabilir.
✦ SSH istemcisi, belirtilen sunucuya TCP bağlantı isteği gönderir.
✦ Sunucuda çalışan SSH hizmeti (çoğunlukla OpenSSH Server), gelen bağlantıyı kabul eder ve istemciyle protokol sürümü ile desteklenen algoritmalara ilişkin bilgileri paylaşır.
✦ İstemci ve sunucu, destekledikleri anahtar değişimi, şifreleme ve veri bütünlüğü algoritmaları arasından ortak bir yapı üzerinde anlaşır.
✦ Anahtar değişimi sürecinde oturumda kullanılacak simetrik şifreleme anahtarları güvenli biçimde türetilir. Bu işlem, veri aktarımının gizliliğini ve bütünlüğünü koruyan şifreli kanalın oluşturulmasını sağlar.
✦ Sunucu, kendisine ait ana bilgisayar anahtarını (host key) istemciye sunar ve bu anahtar anahtar değişimi sürecinde sunucu kimliğinin doğrulanmasında kullanılır.
✦ İstemci, sunucunun anahtarını daha önce kaydedilmiş bir anahtarla karşılaştırabilir. İlk bağlantıda anahtar parmak izinin güvenilir bir kaynaktan doğrulanması önemlidir. Beklenmeyen anahtar değişiklikleri, olası bir güvenlik sorununun işareti olabilir.
✦ Güvenli taşıma kanalı oluşturulduktan sonra kullanıcı, sunucuya karşı kimliğini doğrular.
✦ Parola tabanlı kimlik doğrulamada kullanıcı hesabına ait parolayı girer. Anahtar tabanlı kimlik doğrulamada ise kullanıcının özel anahtarıyla oluşturulan kriptografik imza doğrulanır.
✦ Açık anahtar (public key) sunucuda yetkilendirilmiş anahtarlar arasında bulunur. Özel anahtar (private key) ise kullanıcının kontrolündeki cihazda güvenli biçimde saklanır ve başka kişilerle paylaşılmaz.
✦ Sunucu ve kullanıcı kimlik doğrulama süreçleri başarıyla tamamlandığında SSH bağlantısı üzerinden güvenli oturum başlatılır.
✦ Komutlar, dosya aktarımı ve diğer bağlantı işlemleri, görüşme sırasında oluşturulan oturum anahtarları kullanılarak şifrelenmiş kanal üzerinden gerçekleştirilir.
✦ Kullanıcı, yetkileri kapsamında uzak sunucuda komut çalıştırabilir, etkileşimli terminal oturumu açabilir veya dosya transferi gerçekleştirebilir.
✦ SSH bağlantısı, aynı şifrelenmiş oturum üzerinde birden fazla mantıksal kanalın kullanılmasına da imkan tanır. Böylece farklı iletişim işlemleri tek bir güvenli bağlantı üzerinden yürütülebilir.
✦ Kullanıcı oturumu kapattığında veya bağlantı sonlandırıldığında SSH iletişimi sona erer.
✦ Oturumun kapatılmasıyla ilgili bağlantı kanalları sonlandırılır ve mevcut oturuma ait geçici iletişim anahtarları artık kullanılmaz.
SSH-2 mimarisi, güvenli iletişimi üç temel protokol bileşeni üzerinden yönetir. Bu yapı; veri aktarımının korunmasını, kullanıcı kimliğinin doğrulanmasını ve farklı iletişim işlemlerinin aynı bağlantı üzerinde yürütülmesini sağlar.
Taşıma katmanı; sunucu kimlik doğrulaması, anahtar değişimi, şifreleme ve veri bütünlüğü korumasından sorumludur. İstemci ile sunucu arasında güvenli iletişim kanalını oluşturur. Genellikle TCP bağlantısı üzerinde çalışır.
Kullanıcı kimlik doğrulama katmanı, istemciden gelen kullanıcının sunucuya erişim yetkisini doğrular. Parola, açık anahtar ve sunucunun desteklediği diğer kimlik doğrulama yöntemleri bu katmanda değerlendirilir.
Bağlantı katmanı, şifrelenmiş SSH oturumu üzerinde birden fazla mantıksal kanal oluşturulmasını ve yönetilmesini sağlar. Etkileşimli terminal, uzak komut çalıştırma, TCP port yönlendirme ve dosya aktarımı gibi işlemler bu mimari üzerinden yürütülebilir.
SSH varsayılan olarak TCP 22 numaralı port üzerinden çalışır. Ancak sunucu yöneticisi yapılandırma dosyası üzerinden farklı bir port belirleyebilir. Güvenlik duvarı kurallarında da kullanılan portun doğru şekilde tanımlanması gerekir.
SSH, güvenli uzaktan bağlantı ve iletişim için kullanılan temel protokoldür. SFTP ise dosya aktarımı için tasarlanmış ve SSH bağlantısı üzerinden çalışan ayrı bir protokoldür. SFTP, FTP'nin yalnızca şifrelenmiş bir sürümü değildir; farklı bir protokol mimarisine sahiptir.
FTP, standart yapılandırmasında iletişimi şifrelemeden gerçekleştirebilir. SSH ise bağlantı ve veri trafiğini şifreleyerek güvenli uzaktan erişim sağlar. Güvenli dosya aktarımı için SSH üzerinden çalışan SFTP kullanılabilir.
SSH bağlantısı kurmak için bir SSH istemcisi gerekir. Linux ve macOS sistemlerinde genellikle komut satırı üzerinden SSH istemcisi kullanılabilir. Güncel Windows sürümlerinde de OpenSSH istemcisi yerleşik olarak bulunabilir. İhtiyaca göre PuTTY gibi farklı istemciler de tercih edilebilir.
SSH anahtarları, kullanıcı veya sunucu kimliğinin kriptografik yöntemlerle doğrulanmasını sağlar. Açık anahtar sunucuda yetkilendirilirken özel anahtar kullanıcının cihazında korunur. Özel anahtarın güvenliği, anahtar tabanlı erişimin temel koşullarındandır.
SSH güçlü şifreleme ve kimlik doğrulama mekanizmaları sağlar ancak güvenliği doğru yapılandırmaya bağlıdır. Zayıf parolalar, ele geçirilmiş özel anahtarlar, güvenilmeyen sunucu anahtarları ve güncel olmayan yazılımlar güvenlik riskleri oluşturabilir. Bu nedenle SSH erişimi düzenli olarak denetlenmeli ve güvenlik politikalarıyla desteklenmelidir.
SSH tünelleme, belirli ağ trafiğini şifrelenmiş SSH bağlantısı üzerinden iletmek için kullanılır. Uzak ağlardaki yetkilendirilmiş servislere güvenli erişim sağlamak, yerel bağlantıları korumak ve port yönlendirme işlemlerini gerçekleştirmek başlıca kullanım alanlarıdır.
SSH, internet ve yerel ağlar üzerinden gerçekleştirilen uzaktan erişim işlemlerinde gizlilik, kimlik doğrulama ve veri bütünlüğü sağlayan temel güvenlik protokollerinden biridir. Uzak sunucu yönetimi, güvenli dosya transferi, komut çalıştırma, ağ tünelleme ve yazılım dağıtımı gibi birçok teknik süreçte kullanılır.
SSH'nin sağladığı güvenlik seviyesinden yararlanabilmek için güncel protokol sürümlerinin tercih edilmesi, güçlü kimlik doğrulama yöntemlerinin kullanılması, anahtarların güvenli saklanması ve sunucu erişimlerinin düzenli olarak kontrol edilmesi gerekir. Doğru yapılandırılmış bir SSH altyapısı, sistem yönetimi ve ağ operasyonlarının güvenli şekilde yürütülmesine katkı sağlar.
Sunucu yönetimi, web hosting, uzaktan erişim ve web altyapısı güvenliği hakkında teknik destek almak için birNC iletişim sayfasını ziyaret edebilirsiniz.
Pzt - Cum: 09:00 - 18:00
info@birnc.com.tr
+90 (212) 912 2155 Pbx
Beşi̇ktaş - İstanbul | Türkiye