sshd Sunucu Ayarları
Bir önceki bölümde istemciyi nasıl kullanacağımızı ve nasıl ayarlayacağımızı gördük. Bu kısımda sunucu üzerinde OpenSSH ayarlamalarını nasıl yapacağımızı göreceğiz.
Genellikle sunucular üzerinde ssh sunucusu yüklü gelir, ancak bazı sistemlerde (örneğin masaüstü sistemlerde) gelmemesi halinde paket yöneticinizden edinebilirsiniz.
Örneğin Ubuntu masaüstü sistemler için aşağıdaki komut ilgili paketleri yükleyecektir.
apt-get install openssh-server
sshd_config
Dosyası
sshd_config
DosyasıSSH sunucusunun (sshd - SSH daemon) davranışını kontrol eden ana yapılandırma dosyası genellikle /etc/ssh/sshd_config
yolunda bulunur. Bu dosyada yapılan değişikliklerin geçerli olması için sshd
servisinin yeniden yüklenmesi (reload) veya yeniden başlatılması (restart) gerekir.
Buradaki seçenekler istemcide kullanılana benzerdir, ancak bazı noktaların üzerinden geçmekte fayda var.
sshd_config dosyası hakkında yardım dosyalarına erişmek için
Aşağıda sıkça değiştirilen veya güvenlik açısından önemli olan bazı seçenekler açıklanmıştır. Dosyadaki varsayılan değerler genellikle #
ile yorum satırı halindedir; değiştirmek için #
işaretini kaldırıp istediğiniz değeri yazmalısınız.
Port
SSH sunucusunun dinleyeceği port numarasını belirtir. Varsayılan değer 22'dir. Güvenlik amacıyla (otomatik saldırıları azaltmak için) bu portu standart olmayan bir porta (örn. 2222) değiştirmek yaygın bir pratiktir.
Portu değiştirirseniz, istemciden bağlanırken -p
seçeneği ile yeni portu belirtmeniz gerekir (ssh kullanici@sunucu -p 2222
) ve sunucu güvenlik duvarında (firewall) bu porta izin vermelisiniz.
Protocol
Kullanılacak SSH protokol sürümünü belirtir. SSHv1 güvensizdir ve kesinlikle kullanılmamalıdır.
Modern sistemlerde bu genellikle varsayılandır veya belirtilmese bile sadece v2 kullanılır.
Root Girişi (PermitRootLogin
)
PermitRootLogin
)root
kullanıcısının SSH üzerinden doğrudan bağlanıp bağlanamayacağını kontrol eder. Güvenlik açısından doğrudan root girişini engellemek şiddetle tavsiye edilir. Bunun yerine normal bir kullanıcı ile bağlanıp, sudo
veya su
komutları ile root yetkisi alınmalıdır.
Şifre ile Kimlik Doğrulama (PasswordAuthentication
)
PasswordAuthentication
)Şifre kullanarak SSH bağlantısına izin verilip verilmeyeceğini belirler. Anahtar tabanlı kimlik doğrulama (daha güvenli) kullanılıyorsa, şifre ile kimlik doğrulamayı kapatmak güvenliği artırır.
Not: Şifre ile girişi kapatmadan önce, en az bir kullanıcı için anahtar tabanlı girişin çalıştığından emin olun, aksi takdirde sunucuya erişiminizi kaybedebilirsiniz!
Boş Şifre Kullanımı (PermitEmptyPasswords
)
PermitEmptyPasswords
)Boş şifreye sahip kullanıcıların SSH ile bağlanıp bağlanamayacağını belirler. Güvenlik nedeniyle daima no
olarak ayarlanmalıdır.
Bağlantıyı Canlı Tutma (KeepAlive)
İstemci ile sunucu arasındaki bağlantı belirli süre sonra öldürülebilir. Bunun için sunucunuzda aşağıdaki parametreleri düzenleyebilirsiniz.
Yukarıdaki sunucu ayarında istemciden 5 dakikada bir (300 saniye) alive sinyali beklenir. Eğer bu sinyali 0 defa göndermezse bağlantı kesilir.
Bu ayarlamaya sahip bir sunucuya bağlanırken ssh istemcinizde
şeklinde bir kullanıma ihtiyaç duyarsınız. Tabii bu ayarları /etc/ssh/ssh_config
dosyanıza kaydedebilirsiniz de.
Bir diğer bağlantı canlılığı, şifre sorulduğu anda gerçekleşir. Şifre sorgu ekranının ne kadar süreyle aktif kalacağını LoginGraceTime
değeriyle düzenleyebilirsiniz.
Yukarıdaki ayar ile kullanıcı 1 dakika içerisinde giriş bilgilerini girmezse sunucudan bağlantısı kesilir. Sonsuza kadar bu süreyi uzatmak için 0 değeri girmek yeterlidir.
Dosya İzin Kontrolleri (StrictModes
)
StrictModes
)SSH sunucusunun, kullanıcının ev dizini, .ssh
dizini ve authorized_keys
dosyası gibi dosyaların izinlerini kontrol edip etmeyeceğini belirler. yes
olarak ayarlanması (varsayılan), bu dosyaların izinleri güvensizse (örn. başkaları tarafından yazılabilirse) anahtar tabanlı kimlik doğrulamayı reddeder. Güvenlik için yes
olarak kalması önerilir.
X11 Forwarding (X11Forwarding
)
X11Forwarding
)Uzak sunucudaki grafiksel uygulamaların (X11) arayüzünün, güvenli SSH tüneli üzerinden yerel makinenize yönlendirilip yönlendirilmeyeceğini belirler. Güvenlik riskleri oluşturabileceğinden, gerekmiyorsa no
olarak ayarlanabilir.
İstemcide bağlanırken -X
(güvenilir) veya -Y
(daha az güvenli ama bazı uygulamalar için gerekli olabilir) parametresi kullanılır.
Diğer Önemli Ayarlar
PubkeyAuthentication yes
: Açık anahtar ile kimlik doğrulamayı etkinleştirir (genellikle varsayılan).AllowUsers
/AllowGroups
: Sadece belirtilen kullanıcıların veya grupların SSH ile bağlanmasına izin verir. Güvenliği artırmak için kullanılabilir (örn.AllowUsers kullanici1 admin
).DenyUsers
/DenyGroups
: Belirtilen kullanıcıların veya grupların SSH ile bağlanmasını engeller.MaxAuthTries
: Bir bağlantı için izin verilen maksimum kimlik doğrulama denemesi sayısını sınırlar (örn.3
). Brute-force saldırılarını yavaşlatır.UsePAM yes
: Kimlik doğrulama için PAM (Pluggable Authentication Modules) kullanımını etkinleştirir. Çoğu sistemde varsayılan ve gereklidir (örn./etc/pam.d/sshd
yapılandırmasını kullanır).HostKey
: Sunucunun kimliğini doğrulamak için kullanacağı özel anahtar dosyalarının yollarını belirtir (örn./etc/ssh/ssh_host_ed25519_key
).HostKeyAlgorithms
/PubkeyAcceptedKeyTypes
/KexAlgorithms
/Ciphers
/MACs
: Güvenlik politikalarına göre izin verilen anahtar türlerini, anahtar değişim algoritmalarını, şifreleme algoritmalarını ve mesaj doğrulama kodlarını kısıtlamak için kullanılabilir. Modern ve güvenli algoritmaları (örn. Ed25519, ChaCha20-Poly1305) tercih edip eskileri (örn. DSA, SHA1, CBC) devre dışı bırakmak önerilir.
Ayarları Uygulama
/etc/ssh/sshd_config
dosyasında değişiklik yaptıktan sonra, yapılandırmanın geçerli olup olmadığını kontrol etmek ve servisi yeniden yüklemek/başlatmak gerekir:
Servis adı dağıtıma göre ssh
veya sshd
olabilir (systemctl status sshd
veya systemctl status ssh
ile kontrol edilebilir).
Last updated