SSH Nedir ?

ssh -OpenSSH SSH istemcisi (uzaktan oturum açma aracı)

AÇIKLAMA;

Ssh (SSH istemci) uzaktaki bir makinada komut çalıştırmak için uzaktaki makinada bir kullanıcı oturumu açmayı sağlayan bir uygulamadır. rlogin ve rsh'ın yerini alması amaçlanmıştır. ssh güvenli olmayan bir ağ üzerindeki güvenilir olmayan iki sistemin şifreli dolayısı ile güvenli iletişim kurmalarını sağlar. X11 bağlantıları ve çeşitli TCP/IP bağlantı portları da güvenli kanal üzerinden iletilebilirler. Ssh, konakismi ile belirtilen makinaya bağlanır ve oturum açar. Şayet kullanıcı bir komut belirtmiş ise, kullanıcıya oturum kabuğu yerine komutun çalıştırıldıktan sonraki çıktısı döndürülür. Kullanıcı, uzaktaki sisteme kimliğini kanıtlamak zorundadır ve bunu kullanılan protokole bağlı olarak farklı yöntemlerle yapabilir:

SSH protokolünün 1. sürümü

İlk olarak eğer kullanıcının oturum açtığı sistemin ismi uzaktaki sistemin /etc/hosts.equiv veya /etc/ssh/shosts.equiv dosyalarında bulunuyorsa ve her iki taraftaki kullanıcı isimleri aynı ise, kullanıcın uzak sisteme erişmesine hemen izin verilir. İkinci olarak, eğer .rhosts veya .shosts dosyaları kullanıcının uzaktaki ev dizininde mevcut ise ve istemci makinanın adı ile bu makinadaki kullanıcı adı bu dosyalardan birinde var ise, yine kullanıcın erişmesine izin verilir. Güvenli olmaması nedeni ile bu çeşit kimlik denetiminin kullanmasına normalde sunucu tarafından izin verilmez.

İkinci kimlik denetim yöntemi ise rhosts veya hosts.equiv yöntemlerinin RSA tabanlı konak kimlik denetimi ile birlikte kullanılmasıdır. Bu şu anlama gelir: eğer erişime $HOME/.rhosts, $HOME/.shosts, /etc/hosts.equiv veya /etc/ssh/shosts.equiv tarafından izin verilmiş ve buna ek olarak sunucu da istemci anahtarını doğrulayabiliyorsa (DOSYALAR bölümündeki /etc/ssh/ssh_known_hosts ve $HOME/.ssh/known_hosts dosyalarının açıklamalarına bakınız ), ancak o zaman oturum açılmasına izin verilir. Bu kimlik denetimi yöntemi sayesinde IP kandırmaca, DNS kandırmaca ve yönlendirme kandırmacanın sebep olduğu güvenlik açıkları engellenmiş olur.

Sistem yöneticilerine bilgi:

/etc/hosts.equiv, $HOME/.rhosts ve rlogin/rsh protokolleri genel olarak güvenli değillerdir ve güvenliğin gerektiği durumlarda kullanılmamaları gerekir.

Üçüncü kimlik kanıtlama yöntemi olarak, ssh RSA tabanlı kimlik denetimini destekler. Bu senaryo açık anahtarlı kriptografiye dayanır: Şifrelemenin ve şifre çözmenin farklı anahtarlarla yapıldığı ve şifre çözme anahtarını şifreleme anahtarından türetmeniz mümkün olmadığı kripto sistemleri vardır. RSA böyle bir sistemdir. Burada amaç her kullanıcının kimlik denetimi için bir çift genel ve özel anahtar oluşturmasıdır. Sunucu genel anahtara sahip iken, özel anahtar sadece kullanıcının kendisinde bulunur. $HOME/.ssh/authorized_keys dosyası erişim hakkı olan genel anahtarları listeler. Kullanıcı oturum açmak istediği zaman, ssh kimlik denetimi için hangi anahtar çiftini kullanmak istediğini sunucuya bildirir. Sunucu bu anahtarın geçerli olup olmadığına bakar, şayet geçerli ise kullanıcıya ( aslında kullanıcı adına çalışan ssh'a ) kullanıcının genel anahtarı ile şifrelenmiş bir kimlik sorgusu, rasgele bir sayı gönderir. Şifreli kimlik sorgusu sadece uygun özel anahtar ile çözülebilir. Kullanıcının istemcisi bu kimlik sorgusunu kullanıcının özel anahtarı ile çözer, böylece uygun özel anahtarın varlığını ispatlar ( özel anahtarı sunucuya göstermeden ). Ssh RSA kimlik denetim protokolünü özverimli olarak gerçekleştirir. Kullanıcı kendi RSA anahtar çiftini ssh-keygen(1) komutunu çalıştırarak oluşturur. Bu işlem sayesinde özel anahtar $HOME/.ssh/identity dosyasında ve genel anahtar da $HOME/.ssh/identity.pub doyasında saklanır. Daha sonra kullanıcı identity.pub dosyasını uzak makinenin kullanıcının ev dizinideki $HOME/.ssh/authorized_keys dosyasına kopyalamalıdır. authorized_keys dosyası

geleneksel $HOME/.rhosts dosyasına karşılık gelir ve her satırı bir anahtar içerir (satırlar çok uzun olabilmektedir). Sonuçta kullanıcı parola girmeden oturum açmaya hak kazanmaktadır. RSA kimlik denetimi rhosts kimlik denetimine göre daha güvenlidir. RSA kimlik denetiminin en uygun kullanımı bir kimlik denetimi ajanı ile sağlanabilir. Daha fazla bilgi için ssh-gent(1)'a bakınız. Şayet bahsedilen kimlik denetimi yöntemleri hata verirler ise, bu sefer ssh kullanıcıya parola sorar. Parola ana makineye denetim için gönderilir. Fakat bütün iletişim şifrelendiği için parola ağı dinlemekte olan biri tarafından görülemez.


SSH protokolünün 2. sürümü

Kullanıcı protokolün 2. sürümünü kullanarak bağlantı kurduğunda benzer kimlik denetimi yöntemleri kullanılır. PreferredAuthentications ( tercih edilen kimlik kanıtlamaları ) için öntanımlı değerler kullanılarak, istemci öncelikle konak tabanlı kimlik denetimi ile uzaktaki makineye erişmeye çalışır; bu yöntemin başarısız olması durumunda, genel anahtarlı kimlik denetimi yöntemi denenir, bu yöntemin de başarısız olması durumunda son olarak

klavye etkileşimli ve parolalı kimlik denetimi yöntemine başvurulur. Genel anahtar yöntemi, bir önceki bölümde anlatılan RSA kimlik denetimi ile benzerdir ve RSA veya DSA algoritmalarının kullanılmasına izin verir: İstemci oturum tanıtıcısını özel anahtarı ($HOME/.ssh/id_dsa veya $HOME/.ssh/id_rsa ) ile imzalar ve sonucu sunucuya gönderir. Sunucu, bu imza ile eşleşen genel anahtarın $HOME/.ssh/authorized_keys dosyasında olup olmadığına bakar. Hem anahtarın listede bulunması hem de imzanın doğru olması

durumunda istemciye erişim izni verilir. Oturum tanıtıcı sadece sunucu ve istemci tarafından bilinen ortak Diffie-Hellman değerinden türetilir. Şayet genel anahtarlı kimlik denetimi başarısız olursa ya da desteklenmiyorsa, kullanıcının kimliğini ispatlamak için kullanıcının parolası şifrelenerek sunucuya gönderilebilir.Ssh bunlara ek olarak konak tabanlı ve kimlik sorma/yanıt verme kimlik denetimi yöntemlerini de destekler.

Protokol 2 gizlilik ve bütünlük ilkeleri için ek mekanizmalar sağlar. Gizlilik için veri trafiği 3DES, Blowfish, CAST128 veya Arcfour algoritmaları ile şifrelenir ve bütünlük ilkesi için ise hmac-md5 ya da hmac-sha1 algoritmaları kullanılır. Protokol 1'in bağlantının bütünlüğünü kesinlikle garanti eden bir mekanizmaya gereksinimi olduğu unutulmamalıdır.

Oturum ve Uzaktan Yürütme

Sunucu, kullanıcının kimliğini onayladığı takdirde ya kullanıcının belirttiği komutu yürütür ya da sistemde oturum açar ve uzak sistemde kullanıcının normal bir kabuğa erişmesini sağlar. Uzakta çalıştırılacak komut ya da kabukla gerçekleştirilen bütün iletişim şifrelenir.

Kullanıcı, sözde uçbirim ( normal oturum ) sağlanması durumunda aşağıdaki önceleme karakterlerini kullanabilir. Şayet bir uçbirim sağlanmazsa, oturum saydam olur ve ikili veri güvenilir şekilde aktarılabilir. Birçok sistemde önceleme karakterini ``none'' şeklinde ayarlamak tty kullanılsa bile oturumu saydam kılar. Uzak sistemdeki komut ya da kabuk sonlandığında oturum sonlanır ve bütün X11 ve TCP/IP bağlantıları kapatılır. Erişilen makinada çalıştırılan uygulamanın çıkış durumu ssh'ın çıkış durumu olarak döndürülür.

Önceleme Karakterleri

Sözde uçbirim istenmesi durumunda ssh birçok işlevi bir önceleme karakteri aracılığı ile desteker. Tek bir yaklaşık işareti (tilde) ~~ şeklinde ya da yaklaşık işaretini aşağıda belirtilen karakterlerin haricindeki bir karakterin takip etmesi şeklinde gönderilebilir. Önceleme karakterinin önceleme karakteri olarak yorumlanabilmesi karakterden hemen sonra bir satırsonu karakteri gelmelidir. Önceleme karakteri yapılandırma dosyasındaki EscapeChar yapılandırma seçeneği ile ya da komut satırında -e seçeneği ile değiştirilebilir.


Desteklenen öncelemler ( öntanımlının '~' olduğu kabulüyle ) şunlardır:




       ~.     Bağlantıyı kes

       ~^Z    ssh'ı artalanda çalıştır

       ~#     İletilen bağlantıları listele

       ~&     İletilen bağlantının ya da X11 oturumlarının sonlandırılmasını beklerken ssh'ı artalanda çalıştır
      ~?     Önceleme karakterlerinin listesini göster

       ~B     Uzak sisteme sonlandırma iletisi gönder  (sadece uzak sistemin de desteklemesi durumunda SSH protokolünün 2. sürümü için geçerlidir)

       ~C     Komut satırı  ( sadece -L ve -R seçeneklerini kullanarak port iletimi eklemek için yararlıdır )

       ~R     Bağlantının anahtarlarının yenilenmesini iste ( sadece uzak sistemin de desteklemesi durumunda SSH protokolünün 2. sürümü için geçerlidir )

X11 ve TCP İletimi

Şayet ForwardX11 değişkeni ``yes'' şeklinde ayarlı ise ( ya da aşağıdaki -X ve -x seçeneklerinin tanımlarına bakınız ) ve kullanıcı X11 ( DISPLAY çevre değişkeni atanmış ise) kullanıyorsa, X11 görüntüye olan bağlantı özdevinimli biçimde uzaktaki sisteme iletilir. Bu sayede kabuktan ( ya da komut ile ) çalıştırılan herhangi bir X11 programı şifreli kanal boyunca iletilir ve yerel sistemin gerçek X sunucusu ile bağlantısı gerçekleştirilmiş olur. Kullanıcı DISPLAY değişkenini el ile ayarlamamalıdır. X11 bağlantılarının iletilmesi komut satırında ya da yapılandırma dosyaları aracalığı ile ayarlanabilir. Ssh tarafından ayarlanan DISPLAY değeri (sıfırdan büyük bir sayı ) sunucu sistemi işaret eder. Bu normaldir ve sebebi de ssh'nın bağlantıları şifreli kanal üzerinden iletmek için sunucu sistemde 'vekil' X sunucusu oluşturmasıdır. Ssh yine sunucu makinede özdevinimli biçimde Xauthority verisini ayarlar. Bu amaçla rasgele yetkilendime çerezi üretilip sunucuda 'Xauthority' dosyasında saklanır ve iletilen bağlantıların bu çerezi taşıyıp taşımadıkları kontrol edilir ve bağlantı açıldığında bu çerez gerçek çerez ile değiştirilir. Gerçek kimlik denetimi çerezi sunucu sisteme hiçbir zaman gönderilmez ( ve hiçbir çerez düz metin olarak gönderilmez ). Şayet ForwardAgent değişkeni ``yes'' şeklinde ayarlandı ise ( aşağıda açıklanan -A ve -a seçeneklerine bakınız ) ve kullanıcı kimlik denetimi ajanı kullanılıyorsa, ajana olan bağlantı özdevinimli biçimde uzak tarafa iletilir. Keyfi TCP/IP bağlantılarının güvenli kanal üzerinden iletimi ya komut satırında ya da yapılandırma dosyasında belirtilebilir. TCP/IP iletimi uygulamalarına örnek olarak elektronik para çantasına güvenli bağlantı ya da güvenlik duvarı üzerinden iletişim verilebilir.

Sunucu kimlik denetimi

Ssh kullanılmış olan bütün ana sistemleri içeren bir veritabanını özdevinimli olarak oluşturur ve denetler. Ana sistem anahtarları kullanıcının ev dizinindeki $HOME/.ssh/known_hosts dosyasında tutulur. Buna ek olarak /etc/ssh/ssh_known_hosts dosyasına da bilinen sistemleri kontrol için özdevinimli olarak başvurulur.

Yeni sistemler özdevinimli olarak kullacının dosyasına eklenir. Şayet bir sistemin kimliği değişirse, ssh bu konuda uyarır ve truva atlarının kullanıcın parolasını çalmasını engellemek için parola kimlik denetimini edilgenleştirir. Bu mekanizmanın diğer bir amacı şifrelemeyi es geçebilen araya girme saldırılarına engel olmaktır. StrictHostKeyChecking seçeneği anahtarı bilinmeyen ya da değişmiş olan sistemlerde oturum açmayı engellemek

için kullanılabilir.

Seçenekler şunlardır:


-1 ssh'yı sadece protokolün 1. sürümünü kullanmaya zorlar.


-2 ssh'yı sadece protokolün 2. sürümünü kullanmaya zorlar.


-4 ssh'yı sadece IPv4 adreslerini kullanmaya zorlar.


-6 ssh'yı sadece IPv6 adreslerini kullanmaya zorlar.


-a Kimlik denetimi ajanı bağlantı iletimini iptal eder.


-A Kimlik denetimi ajanı bağlantı iletimini etkinleştirir. Bu ayrıca yapılandırma dosyasında da her bir konak için ayrı ayrı belirtilebilir.

Bu seçenek etkinleştirilirken dikkat edilmelidir. Uzak konaktaki (ajanın Unix-alan soketi için) dosya izinlerini atlayabilen kullanıcılar iletilen bağlantılar sayesinde yerel ajana erişebilirler. Saldırgan, ajandan

anahtarları alamaz ancak ajanda yüklü olan kimlikleri kullanarak kimlik denetimini geçmeyi başarabilir.


-b bağlantı_adresi Çoklu arayüzü olan ya da takma isimli adresler kullanan sistemlerde iletişimin yapılacağı arayüzü belirler.


-c blowfish | 3des | des Oturumu şifrelemekte kullanılacak şifreyi seçer. Öntanımlı değer 3des'dir. Güvenli olduğuna inanılır. 3des (üçlü-des) şifreleme-şifre çözme-şifreleme üçlüsünü 3 farklı anahtarla gerçekleştirir. blowfish hızlı bir blok şifresidir; çok güvenilirdir ve 3des'ten çok daha hızlıdır. des ise 3des şifrelemeyi desteklemeyen eski protokol 1 gerçeklemeleri ile işbirliktelik adına desteklenir. Şifreleme ile ilgili zayıflıklarından dolayı des'in kullanılmaması önemle tavsiye edilir.


-c şifre_belirtimi Ek olarak, protokol 2'de tercih sırasını belirtmek için virgülle ayrılmış şifreleme listesi verilebilir. Daha fazla bilgi için yapılandıma dosyaındaki Ciphers (Şifreler) satırına bakınız.

-C Bütün verilerin ( stdin, stdout, stderr, X11 verileri ve TCP/IP bağlantı verileri ) sıkıştırılmasını sağlar. Sıkıştırma algoritması gzip(1)'in kullandığı ile aynıdır. CompressionLevel (Sıkıştırma Seviyesi) seçeneği protokolün 1. sürümü için ``seviye'' yi belirler. Modem hatları ve diğer yavaş bağlantılar için sıkıştırma kullanılmalıdır, ancak hızlı ağlar için bu sadece yavaşlamaya neden olacaktır. Öntanımlı değer yapılandırma dosyalarında her konak için ayrı ayrı belirtilebilir. (Compression [Sıkıştırma] seçeneğine bakınız).


-D port Yerel "özdevimli" uygulama seviyesinde port iletimini belirtir. Yerel tarafta portu dinlemek üzere bir soket ayrılır. Bu port ile ne zaman bir bağlantı kurulsa, bağlantı güvenli kanal üzerinden iletilir ve uzak sistemde nereye bağlanılacağı uygulama protokolü kullanılarak belirlenir. Şu anda SOCKS4 ve SOCKS5 protokolleri desteklenmektedir.Ssh bir SOCKS sunucusu olarak davranır. Sadece yetkili kullanıcı (root) ayrıcalıklı portları iletebilir. Özdevimli port iletimleri yapılandırma dosyasında da belirtilebilir.

-e krk | ^krk | none pty'li bir oturum için önceleme karakterini ayarlar (öntanımlı: '~'). Önceleme karakteri sadece bir satırının başında ise tanınabilir. Önceleme karakterini nokta ('.') takip ederse bağlantı sonlandırılır; control-Z takip ederse bağlantı askıya alınır; '~' takip ederse önceleme karakteri bir kez gönderilir. Karakteri ``none'' şeklinde ayarlamak öncelemleri iptal eder ve oturumu tamamen saydam yapar.


-f Komut yürütülmeden hemen önce ssh'nın arkaplanda çalışmasını sağlar. Bu ssh'nın kullanıcı ya da anahtar parolası sorması gerektiği ancak kullanıcının bu işlemin arkaplanda yapılmasını istediği durumlarda yararlıdır. Bu seçenek -n seçeneğinin de uygulanmasını sağlar. X11 programları uzak konakta çalıştırırken komutun şöyle çağrılması tavsiye edilir: ssh -f konakismi xterm.


-F yapılandırma_dosyası Kullanıcının kendine özgü yapılandırma dosyasını belirtmek içindir. Şayet komut satırında bir yapılandırma_dosyası verilirse, sistemin yapılandırma dosyası (/etc/ssh/ssh_config) görmezden gelinir. $HOME/.ssh/config dosyası kullanıcının öntanımlı yapılandırma dosyasıdır.


-g Uzak konakların iletilen yerel portlara bağlanmasına izin verir.


-i kimlik_dosyası RSA ya da DSA kimlik doğrulamaları için kullanılacak olan kimlik dosyasını (dolayısıyla gizli anahtarı) belirtir. Protokolün 1. sürümü için varsayılan dosya $HOME/.ssh/identity dosyasıdır. $HOME/.ssh/id_rsa ve $HOME/.ssh/id_dsa ise protokolün 2. sürümü için öntanımlı dosyalardır. Kimlik dosyaları her bir konak için ayrı ayrı yapılandırma dosyasında da belirtilebilir. -i seçeneğinin birden fazla kullanılması mümkündür (ve yapılandırma dosyalarında birden fazla kimlik tanımlamak da ).


-I akıllıkart_aygıtı Kullanılacak olan akıllıkart aygıtını belirtir. Belirtilen aygıt kullanıcının RSA gizli anahtarının bulunduğu akıllıkart ile iletişim için kullanılan aygıt olmalıdır.


-k Kerberos biletlerinin ve AFS dizgeciklerinin iletimini iptal eder. Bu ayrıca yapılandırma dosyasında her konak için ayrı ayrı belirtilebilir.


-l kullanıcı_ismi Uzak sistemde oturum açmak için kullanılacak kullanıcı adını belirtir. Bu yine yapılandırma dosyasında her bir konak için ayrı ayrı belirtilebilir.


-L yerelport:uzakkonak:uzakkonakportu Belirtilen yerel portun uzak konaktaki porta iletilmesi için kullanılır. Bunu sağlamak için yerel sistemde bir soket yerelport portunu dinlemeye başlar ve bu porta bağlantı isteği geldiğinde, bağlantı güvenli kanaldan

iletilerek uzakkonak üzerindeki uzak konak portuna bir bağlantı gerçekleştirilir. Port iletimi, yapılandırma dosyasında da belirtilebilir. Sadece yetkili kullanıcı (root) ayrıcaklı portları iletebilir. IPv6 adresler için farklı bir sözdizimi kullanılır: erelport/uzakkonak/uzakkonakportu.


-m mac_belirtimi Protokolün 2. sürümünde ayrıca tercih sırasına göre virgüllerle ayrılmış MAC (message authentication code - ileti kimlik denetimi kodu) algoritmaları belirtilebilir. Daha fazla bilgi için MACs anahtar sözcüğüne bakınız.


-n /dev/null'u standart girdiye yöneltir (yani standart girdiden okuma yapılması engellenir). Ssh artalanda çalışıyorsa bu seçenek kullanılmak zorundadır. Uzak sistemde X11 programları çalıştırılırken bu seçenek çok kullanılır. Örneğin, ssh -n shadows.cs.hut.fi emacs & komutu shadows.cs.hut.fi konağında emacs uygulamasını başlatacaktır ve X11 bağlantısı özdevinimli olarak şifreli kanal üzerinden iletilecektir. Ssh artalana yerleştirilecektir. (Ancak ssh'nın kullanıcı ya da anahtar parolası gerektirmesi durumunda bu çalışmayacaktır; ayrıca -f seçeneğine de bakınız.)


-N Bir uzak komut çalıştırmaz. Bu sadece port iletimi için yararlıdır (sadece protokolün 2. sürümünde).


-p port Uzak konaktaki bağlantı portu. Yapılandırma dosyasında her bir konak için ayrı ayrı belirtilebilir.


-q Sessizlik kipi. Bütün uyarı ve tanı iletilerinin gizlenmesini sağlar. Sadece onarılamaz hatalar gösterilir. Şayet ikinci bir -q verilirse onarılamaz hatalar da gösterilmez.


-R uzakport:yerelkonak:yerelkonakportu Belirtilen uzak portun yerel konaktaki porta iletilmesi için kullanılır. Bunu sağlamak için uzak sistemde bir soket uzakport portunu dinlemeye başlar ve bu porta bağlantı isteği geldiğinde, bağlantı güvenli kanaldan

iletilerek yerelkonak üzerindeki yerelkonakportuna bir bağlantı gerçekleştirilir. Port iletimi, yapılandırma dosyasında da belirtilebilir. Sadece yetkili kullanıcı (root) ayrıcaklı portları iletebilir. IPv6 adresler için farklı bir sözdizimi kullanılır: uzakport/yerelkonak/yerelkonakportu.


-s Uzak konakta bir altsistemi çağırmak amacıyla kullanılabilir. Altsistemler, diğer uygulamaların (örn. sftp) güvenli taşınmasını sağlayan SSH2 protokolünün bir özelliğidir. Alt sistem uzak komut olarak belirtilir.


-t Sözde-tty ayırmayı zorlar. Bu uzak sistemde ekran tabanlı herhangi bir uygulamaların çalıştırılmasında kullanılabilir. Örnek olarak menü hizmetlerinin gerçekleştirilmesinde bu çok yararlı olabilir. Çok sayıda -t seçeneği ssh'nın yerel tty'si olmasa bile bir tty ayrılmasını sağlar.


-T Sözde-tty ayırmayı iptal eder.


-v Ayrıntı kipi. ssh'nın çalışması esnasındaki hata ayıklama iletilerinin gösterilmesini sağlar. Bağlantı, kimlik denetimi ve yapılandırma sorunlarındaki hataları ayıklamada bu seçenek çok faydalıdır. Çok sayıda -v seçeneği ayrıntı seviyesini artırır. En fazla üç tane olabilir.


-V Sürüm numarasını gösterir ve çıkar.


-x X11 iletimini iptal eder.


-X X11 iletimini etkinleştirir. Bu her bir konak için ayrı ayrı yapılandırma dosyasında belirtilebilir. Bu seçenek etkinleştirilirken dikkat edilmelidir. Uzak sistemdeki dosya izinlerini atlayabilen kullanıcılar (kullanıcının X yetkilendirme veritabanı için) iletilen bağlantılar sayesinde yerel X11 görüntüye erişebilirler. Saldırgan, tuş vuruşlarını izlenmek gibi etkinliklerde bulunabilir.


-Y Güvenilir X11 iletimini etkinleştirir.


ÇEVİREN
Emin İslam Tatlı <eminislam (at) web.de>, Ağustos 2004






2 görüntüleme

Son Paylaşımlar

Hepsini Gör