# Telnet
Telnet, Internet ağı üzerindeki çok kullanıcılı bir makineye uzaktaki başka bir makineden bağlanmak için geliştirilen bir TCP/IP protokolü ve bu işi yapan programlara verilen genel isimdir. Telnet iki bileşenden oluşur: (1) iki tarafın nasıl iletişim kuracağını belirleyen protokolün kendisi ve (2) hizmeti sağlayan yazılım uygulaması.Kullanıcı verileri, İletim Kontrol Protokolü (TCP) üzerinden 8 bitlik bayt yönlendirmeli bir veri bağlantısında Telnet kontrol bilgisi ile bant içi serpiştirilir. Telnet, 1969'da RFC 15 ile başlayarak geliştirildi, RFC 855'te genişletildi ve ilk İnternet standartlarından biri olan İnternet Mühendisliği Görev Gücü (IETF) İnternet Standardı STD 8 olarak standartlaştırıldı. encryption sağlayan bazı Telnet eklentileri geliştirilmiştir. Bağlanılan makineye girebilmek (login) için orada bir kullanıcı isminizin (İng:"username") ve bağlantının gerçekleşebilmesi için bir telnet erişim programınızın olması gereklidir. Fakat bazı kütüphane ve herkese açık telnet bazlı web servisleri, bağlantı sırasında kullanıcı ismi (numarası) istemeyebilirler; ya da, kullanıcı isim ve parola olarak ne yazmanız gerektiği bağlandığınızda otomatik olarak karşınıza çıkar. Telnet, BBS ("Bulletin Board Systems") sistemlere İnternet üzerinden erişimde günümüzde yaygın olarak kullanılmaktadır. Telnet erişim programları, günümüzdeki işletim sistemlerinin çoğunda işletim sistemi ile birlikte gelmektedir. Çok kullanıcılı işletim sistemleri (UNIX ve VMS) genellikle kullanıcılara metin tabanlı bir arayüz sunar ve bu sistemlerde tüm işlemler klavye vasıtası ile komut isteminden ("command prompt") gerçekleştirilir.
Telnet programı ile sanal sunucunuza (virtual server) bağlandığınızda, uzaktan UNIX işletim sistemine bağlanmış olursunuz. Bu, UNIX komutları yazabileceğiniz, programları çalıştırabileceğiniz, sanki makinenin karşısında oturuyormuş gibi web sitenizi düzenleyebileceğiniz anlamına gelir.
Telnet güvensiz bir protokoldür. Tüm veriler şifrelenmemiş olarak gönderilir. Bu yüzden telnet oturumundan, sniffer yardımıyla kolaylıkla önemli bilgilere ulaşılabilir.
Telnet protokolü kullanıcı adı ("username") ve şifrenizi ("password") bağlı bulunduğunuz ağda kolaylıkla görebilecek bir format olan PLAIN TEXT (düz metin) düzeninde göndermektedir. Bu kullanıcı isminizin ve şifrenizin ağı dinleyen herhangi biri tarafından kolaylıkla görülebileceği anlamına gelir. Eğer ağınızdaki herkese güveniyorsanız Telnet kullanmanızda bir sakınca yoktur. Fakat güvenlik hakkında en ufak bir endişeniz bile varsa, hesabınıza bağlanırken telnet kullanmamanız yararınıza olacaktır. Veri alışverişini şifreleyen uzaktan bağlantı protokolü olarak SSH'ı örnek verebiliriz.


## Bileşenler.
Telnet iki bileşenden oluşur: (1) protokolün kendisi ve (2) servis bileşeni. Telnet protokolü, güvenilir bağlantı yönelimli taşımaya (reliable connection-oriented transport) dayalı bir istemci-sunucu protokolüdür. Bu protokol, bir Telnet sunucu uygulamasının dinleme yaptığı 23 veya 2323 numaralı TCP bağlantı noktasına bağlantı kurmak için kullanılır. Telnet, TCP/IP'den öncesinde de mevcuttu ve ilk tanıtıldığında Network Control Protocol (NCP) üzerinden çalışıyordu.


### Telnet Protokolü.
#### Tarihçe.
Telnet, 5 Mart 1973'e kadar resmi bir tanımı olmayan ad hoc bir protokol olmasına rağmen, aslında Telnet'te RFC 206 (NIC 7176) olarak Teletype Over Network Protocol olarak anılan ad, bağlantıyı netleştirir:
TELNET protokolü, 7 bitlik bir ASCII karakter seti kullanan sanal bir teletip kavramına dayanmaktadır. O halde bir Kullanıcı TELNET'inin birincil işlevi, kullanıcılarının o sanal teletip üzerindeki tüm tuşlara 'vurabileceği' araçları sağlamaktır.


#### Eklentiler.
Pazarlık edilebilir opsiyon protokol mimarisi nedeniyle Telnet için birçok uzantı yapılmıştır. Bu uzantılardan bazıları İnternet standartları olarak benimsenmiştir, IETF, STD 27'den STD 32'ye kadar belgeler. Bazı uzantılar yaygın olarak uygulanmıştır ve diğerleri, IETF standartları yolunda önerilen standartlardır.


### Telnet Servisi.
Telnet hizmeti, Telnet protokolü üzerinden hizmet sağlayan uygulamadır. Çoğu işletim sistemi, istemcilere Telnet hizmetleri sağlamak için kurulabilen veya etkinleştirilebilen bir hizmet sağlar.


## Kullanım.
### Tarihsel Kullanımı.
Tarihsel olarak Telnet, uzak bir ana bilgisayarda bir komut satırı arabirimine erişim sağlıyordu. Ancak Telnet'i İnternet gibi açık bir ağ üzerinden kullanırken ciddi güvenlik endişeleri nedeniyle, bu amaçla kullanımı SSH lehine önemli ölçüde azaldı.Telnet'in uzaktan yönetim için kullanımı, özellikle halka açık İnternet'te Secure Shell (SSH) protokolü lehine hızla azaldı. SSH, parolalar gibi hassas verilerin ele geçirilmesini önlemek için güçlü şifreleme ve uzak bilgisayarın gerçekten iddia ettiği kişi olduğundan emin olmak için ortak anahtar kimlik doğrulaması ile telnet işlevselliğinin çoğunu sağlar.


### Günümüzde Kullanımı.
Telnet, bir sunucuya komutlar vermek ve yanıtları incelemek için SMTP, IRC, HTTP, FTP veya POP3 gibi ağ hizmetlerinde hata ayıklamada kullanılabilir. Örneğin, Telnet istemci uygulamaları, Telnet sunucusu bağlantı noktası dışındaki bir bağlantı noktasına etkileşimli bir TCP oturumu kurabilir. Örneğin, bir komut satırı telnet istemcisi, TCP bağlantı noktası 80'deki bir web sunucusuna aşağıdaki gibi bir HTTP isteği yapabilir:
$ telnet www.example.com 80
GET /path/to/file.html HTTP/1.1
Host: www.example.com
Connection: close
Daha eski protokol, bugünlerde yalnızca nadir durumlarda, daha modern protokolleri desteklemeyen onlarca yıllık eski ekipmanlara erişmek için kullanılıyor. Örneğin, çok sayıda endüstriyel ve bilimsel cihaz, iletişim seçeneği olarak yalnızca Telnet'e sahiptir. Bazıları yalnızca standart bir RS-232 bağlantı noktası ile oluşturulmuştur ve TCP/Telnet verileri ile RS-232 seri verileri arasında çeviri sağlamak için bir seri sunucu donanım aracı kullanır. Bu gibi durumlarda, arayüz aracı SSH için yapılandırılmadığı sürece (veya destekleyen bir SSH ile değiştirilmedikçe) SSH bir seçenek değildir. Telnet, amatör telsiz operatörleri tarafından halka açık bilgi sağlamak için yaygın olarak kullanılır. Tavsiye edilmemesine rağmen, güvenlik araştırmacıları internete bağlı 7.096.465 cihazın Telnet kullanmaya devam ettiğini tahmin ediyor, ancak tahminlerin çoğu yalnızca 23 numaralı TCP bağlantı noktasını taradığı için genellikle çok daha azı tahmin ediliyor.


## Protokol detayları.
  - Telnet güvenli bağlantıya yönelik transfere dayanan bir istemci-sunucu protokolüdür. 
  - Genellikle bu protokol bir parola eşitleme programının dinlediği TCP port 23 te bağlantıyı tasdik etmek için kullanılır, bununla birlikte telnet TCP/IP'den daha eskidir ve ilk olarak NCP(Network Control Program) de çalışmıştır.
  - 5 Mart 1973'ten önce, Telnet'in resmî olmayan tanımı bir ad-hoc(router kullanmadan bilgisayarlar arasındaki direkt bağlantı kurma) protokolü olarak açıklanıyordu. Aslında Telnet 7 bitlik ASCII verisini göndermek için 8 bitlik kanal kullanıyordu.
  - Yüksek bit setiyle her byte özel bir Telnet karakteriydi. 5 Mart 1973 tarihli UCLA toplantısında "Yeni Telnet" iki NIC dokümanıyla tanımlandı:
  - Telnet Protocol Spesification NIC  15372 ve Telnet Option Spesifications, NIC  15373. Şu anda kullanılan protokol eski telnet protokolü değil bu yeni protokoldür. Bu protokolün İnternet protokolü olarak benimsenen birçok eklentisi vardır.


### Telnet Komutları.
Telnet komutları en az iki bayttan oluşur. İlk bayt, IAC kaçış karakteridir (tipik olarak bayt 255), ardından belirli bir komut için bayt kodu gelir.


## İlgili RFC'ler.
### Internet Standartları.
  - RFC 854, Telnet Protokol Spesifikasyonu
  - RFC 855, Telnet Seçeneği Spesifikasyonları
  - RFC 856, Telnet İkili İletim
  - RFC 857, Telnet Yankı Seçeneği
  - RFC 858, Telnet Devam Etme Seçeneğini Bastır
  - RFC 859, Telnet Durumu Opsiyonu
  - RFC 860, Telnet Zamanlama İşareti Opsiyonu
  - RFC 861, Telnet Genişletilmiş Opsiyonlar: Liste Opsiyonu


### Önerilen Standartlar.
  - RFC 885, Telnet Kayıt Sonu Seçeneği
  - RFC 1073, Telnet Pencere Boyutu Seçeneği
  - RFC 1079, Telnet Terminal Hızı Seçeneği
  - RFC 1091, Telnet Terminal Tipi Seçeneği
  - RFC 1096, Telnet X Görüntüleme Konumu Seçeneği
  - RFC 1123, İnternet Sunucuları, Uygulamalar ve Destek için gereksinimler
  - RFC 1184, Telnet Hat Modu Seçeneği
  - RFC 1372, Telnet Uzaktan Akış Kontrolü
  - RFC 1572, Telnet Ortamı Seçeneği
  - RFC 2941, Telnet Kimlik Doğrulama Seçeneği
  - RFC 2942, Telnet Kimlik Doğrulaması: Kerberos Sürüm 5
  - RFC 2943, DSA Kullanarak TELNET Kimlik Doğrulaması
  - RFC 2944, Telnet Kimlik Doğrulaması: SRP
  - RFC 2946, Telnet Veri Şifreleme Seçeneği
  - RFC 4248, telnet URI Şeması


### Deneysel.
  - RFC 1143, TELNET Seçenek Pazarlığını Uygulamanın Q Metodu
  - RFC 1571, Telnet Ortamı Seçeneği Birlikte Çalışabilirlik Sorunları


### Diğer RFC'ler.
  - RFC 1041, Telnet 3270 Rejim Seçeneği
  - RFC 1205, 5250 Telnet Arayüzü
  - RFC 2217, Telnet İletişim Bağlantı Noktası Kontrol Seçeneği
  - RFC 4777, IBM'in iSeries Telnet Geliştirmeleri


## Güvenlik.
Telnet 1969'da geliştirilmeye başlandığında, bir ağa bağlı olan bilgisayar kullanan kullanıcıların büyük kısmı, akademik kurumların bilgisayar departmanlarında ya da yüksek gizlilikteki devlet binalarındaydı. Bu ortamda güvenlik konusunda, İnternet kullanımının patlama yaptığı 90'lı yıllarda oldugu gibi endişe uyandıran bir şey değildi. İnternet kullanan insan sayısındaki büyük artış, kişilerin başka kişilere ait bilgilere, sunuculara ulaşma girişimlerini beraberinde getirdi ve bu durum şifrelenmiş alternatifler kullanma gereksinimi doğurdu.
SANS Institute ve comp.os.linux.security haber grubu üyeleri gibi bilgisayar güvenliği uzmanları aşağıdaki sebeplerden dolayı normal koşullarda, uzak oturumlarda Telnet kullanılmasına son verilmesini tavsiye etmişlerdir.
 
  - Telnet varsayılan olarak, bilgileri şifrelemeden gönderir (parolalar buna dahildir). Bu durum iletişimin dinlenilebilmesine ve bu verilerin kötü amaçlar için kullanılmasına ortam sağlar. Ağ üzerinde router, switch veya gateway'e ulaşabilen herhangi birisi, tcpdump ve Wireshark gibi, piyasadaki birçok programı kullanarak, Telnetle iletişim kuran iki istemci arasında gönderilen bütün paketleri yakalayabilir, kullanıcı adı ve parola bilgileri dahil olmak üzere ağda gönderilen bütün veriye ulaşabilir.
  - Telnet uygulamalarının çoğu bilginin iletişimin istenen iki host arasında doğru bir şekilde sağlandığını ve arada iletişimi dinleyen bir istemci olmadığını doğrulayacak bir yapıya sahip değildi. 
  - Sıkça kullanılan Telnet programlarının yıllar içinde birçok zayıf noktası tespit edildi. 
Bu güvenlikle alakalı yetersizlikler, ssh protokolünün de 1995 yılında yayınlanması ve tutulmasıyla birlikte, özellikle İnternet üzerinde Telnet protokolü kullanımının hızla azalmasına sebep oldu.


## Telnet Clientlar.
  - PuTTY ve plink komut satırı, Windows, Linux ve Unix için ücretsiz, açık kaynaklı bir SSH, Telnet, rlogin ve ham TCP istemcisidir.
  - AbsoluteTelnet, Windows için bir telnet istemcisidir. Ayrıca SSH ve SFTP'yi destekler,
  - RUMBA (Terminal Emülatörü)
  - Line Mode Browser, bir komut satırı web tarayıcısı
  - NCSA Telnet
  - TeraTerm
  - Van Dyke Software'den SecureCRT
  - ZOC Terminal
  - Telnet, SSHv2, RLogin, Serial, Windows,  nix ve Mac OS X platformlarını, X/Y/ZMODEM'i ve çeşitli BBS terminal öykünmelerini destekleyen SyncTERM BBS terminal programı
  - Rtelnet, Telnet'in bir SOCKS istemci sürümüdür ve güvenlik duvarı ve NAT'ın arkasındaki ana bilgisayarlara benzer telnet işlevselliği sağlar.
  - Inetutils bir telnet istemcisi ve sunucusu içerir ve birçok Linux dağıtımında varsayılan olarak kurulur.
  - telnet.exe komut satırı yardımcı programı, Microsoft Windows'un birçok sürümünün varsayılan kurulumunda bulunur.


## Güncel durum.
2000'lerin ortalarına geldiğimizde Telnet protokolünün uzak oturum amaçlı kullanımı büyük oranda yürürlükten kalktı. Fakat hâlen nadiren de olsa bazı zorunlu durumlarda kullanılabilmektedir. Örneğin, sunucuya komut yollamanın ve gelen cevapları sınamanın kolay bir yolu oldugundan SMTP, IRC, HTTP, FTP veya POP3 gibi servislerdeki sorunları tespit ederken kullanılabilmektedir.