Linux ­Kurulu­m ve Y­onetim­i
  • Döküman Hakkında
  • Linux ve GNU'nun Geçmişi
    • CentOS, Debian ve FreeBSD Ana Sürümlerin Farkları
  • Temel Komutlar
    • Temel Terminal Komutları
    • Yardım Dosyaları
    • Dosya İzinleri, Yetkiler, Kullanıcılar ve Gruplar
    • Dosya Düzenleme Araçları
      • nano ve pico
      • vi
    • Sıkıştırılmış Dosyalar
  • Standart Girdi ve Çıktı
    • Standart Çıktı
    • Standart Girdi
    • UNIX Pipeline
    • Olmazsa Olmaz: stdio.h
    • Standart Hata ve File Descriptor
    • Forkbomb
    • Named Pipe
  • Gelişmiş Terminal Komutları
    • Tarih ve Saat Ayarlama
    • Sistem Yükünü İzleme
    • patch ve diff
    • xargs
    • awk ve sed
    • egrep ve Regular Expressions
    • rename
    • Imagemagick ve Görüntü Dosyaları
    • wget
    • Python ile Dosya Sunuculuğu
  • Temel Dağıtımlar
    • RHEL Tabanlı (CentOS, Rocky, Alma)
      • rpm Paketleri
      • DNF Paket Yöneticisi
      • Repo Ayarları
      • Network Ayarları
    • Debian
      • deb Paketleri
      • apt Paket Yöneticisi
      • Repo Ayarları
      • Network Ayarları
    • FreeBSD
      • Ports ve pkg Yönetimi
      • Güncelleme Teknikleri
      • Network Ayarları
    • Arch Linux
      • pacman ve AUR
      • Network Ayarları
    • Ortak Network Dosyaları
  • SSH
    • Uzak Sunucuya Bağlanma
    • sshd Sunucu Ayarları
    • Private ve Public Anahtarlar
    • Güvenli Dosya Aktarımı
    • sshfs
  • Kernel Boot
    • Sunucu Başlangıcına Genel Bakış
    • Çekirdeğin Yüklenmesi ve Boot Seçenekleri
    • Çekirdek Parametreleri
    • Bootloader Nedir?
  • User Space
    • Başlangıç: Init
    • Init Versiyonunu Belirlemek
    • System V
      • Servislerin Yönetimi
      • Çalışma Seviyeleri (Run Levels)
      • Örnek System V Servis Oluşturma
    • systemd
      • Servislerin Yönetimi
      • Birimler ve Birim Tipleri
      • Örnek systemd Servis Oluşturma
    • Acil Durumlar ve Tek Kullanıcı Modu
  • BASH Programlama
    • Döngüler ve Diğer Kontrol Yöntemleri
    • Menüler
  • Log Dosyaları
    • Log İnceleme ve Filtreleme
  • İnternet Servisleri
    • Bir sayfanın İnternetteki Serüveni
    • Nameserver Servisleri
    • Apache
    • PHP-FPM
    • FTP/FTPS/SFTP
      • vsftpd
      • ProFTPD
      • SFTP
      • Komut Satırından ftp Kullanımı
  • Zamanlanmış Görevler
    • crontab
    • at
  • Veritabanı
    • MySQL
      • MySQL Kurulumu
      • MySQL Servisini Çalıştırmak
      • Veritabanı ve Tablo oluşturmak
      • SQL Tablosuna Veri Eklemek
      • Temel SQL Sorgularına Giriş
        • Birinci bölüm
      • mysqldump ile yedekleme
      • Replikasyon teknikleri
      • Yedekleri içeri alma
    • PostgreSQL
      • PostgreSQL Kurulumu
      • Temel Yapılandırma
      • Temel Kullanım
    • MongoDB
      • MongoDB Kurulumu
      • Temel Yapılandırma
      • Temel Kullanım
    • Redis
      • Redis Kurulumu
      • Temel Yapılandırma
      • Temel Kullanım
  • Temel Network Yapılandırması
  • Gelişmiş Network Komutları
    • ip
    • ifconfig
    • route
    • ping
    • traceroute
    • dig
    • nslookup
    • netcat
    • nmap
    • tcpdump
    • Wireshark (Giriş)
    • Bantgenişliği Ölçümü
  • Güvenlik
    • Firewalld
    • IPTables
      • Temel İzinler
      • IP ve Port Engelleme
    • selinux
  • Disk Sistemleri
    • ext
    • zfs
    • lvm
  • RAID
    • RAID Biçimleri
    • Verinin Disklere Yayılması
    • Cache
    • Terimler ve Tavsiyeler
  • Örnek Kurulumlar ve Modern Yaklaşımlar
    • CentOS 7 Tam Sistem Kurulumu (Arşiv)
    • AlmaLinux ile Hosting Ortamı Kurulumu
    • Ubuntu ile Hosting Ortamı Kurulumu
    • Modern Hosting Yaklaşımları (PaaS, Coolify vb.)
  • Konteynerleştirme (Docker / Podman)
  • Yapılandırma Yönetimi (Ansible)
  • İzleme ve Uyarı (Prometheus / Grafana)
  • Nginx Web Sunucusu
  • Kubernetes (Giriş)
  • PCI-DSS ve Linux Sistemleri
  • İndeks
  • Kaynaklar
Powered by GitBook
On this page
  • sshd_config Dosyası
  • Port
  • Protocol
  • Root Girişi (PermitRootLogin)
  • Şifre ile Kimlik Doğrulama (PasswordAuthentication)
  • Boş Şifre Kullanımı (PermitEmptyPasswords)
  • Bağlantıyı Canlı Tutma (KeepAlive)
  • Dosya İzin Kontrolleri (StrictModes)
  • X11 Forwarding (X11Forwarding)
  • Diğer Önemli Ayarlar
  • Ayarları Uygulama
  1. SSH

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ı

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

man 5 sshd_config

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.

Port 2222 

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.

Protocol 2

Modern sistemlerde bu genellikle varsayılandır veya belirtilmese bile sadece v2 kullanılır.

Root Girişi (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.

# En güvenli seçenek: Root girişini tamamen engelle
PermitRootLogin no

# Sadece anahtar tabanlı root girişine izin ver, şifre ile girişi engelle
# PermitRootLogin prohibit-password 
# (veya eski sürümlerde: PermitRootLogin without-password)

# Hem şifre hem anahtarla root girişine izin ver (TAVSİYE EDİLMEZ!)
# PermitRootLogin yes 

Şifre ile Kimlik Doğrulama (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.

# Şifre ile girişi kapat (Anahtar kullanılmalı)
PasswordAuthentication no

# Şifre ile girişe izin ver (Anahtar yoksa veya tercih edilirse)
# PasswordAuthentication yes 

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)

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.

PermitEmptyPasswords no

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.

ClientAliveInterval 300
ClientAliveCountMax 0

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

ssh -o ServerAliveInterval=300 -o ServerAliveCountMax=0 sunucu-adi

ş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.

LoginGraceTime 60

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)

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.

StrictModes yes

X11 Forwarding (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.

X11Forwarding yes

İ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:

# Yapılandırma dosyasının sözdizimini kontrol et
sudo sshd -t

# Eğer hata yoksa, sshd servisini yeniden yükle (genellikle yeterlidir)
sudo systemctl reload sshd
# veya yeniden başlat (gerekirse)
# sudo systemctl restart sshd 

Servis adı dağıtıma göre ssh veya sshd olabilir (systemctl status sshd veya systemctl status ssh ile kontrol edilebilir).

PreviousUzak Sunucuya BağlanmaNextPrivate ve Public Anahtarlar

Last updated 1 month ago