Web

Linux Swap Oluşturma ve SSH Güvenliği: Hangi Ayarlar Gerekli?

Talha Aslan 16 dakikalık okuma 1 görüntülenme

Linux swap oluşturma nedir ve sunucuda neden gerekir?

Linux swap oluşturma, diskte RAM dolduğunda çekirdeğin az kullanılan bellek sayfalarını taşıyabileceği bir alan açmaktır. Bu alan RAM'in yerine geçmez; ani bellek sıçramalarında süreçlerin bellek yetersizliği nedeniyle kapanma riskini azaltır. Pratikte bir swap dosyası yaratır, biçimlendirir, etkinleştirir ve kalıcı yaparsınız.

Bu yazı iki konuyu bir arada ele alıyor, çünkü ikisi de yeni bir VPS'in ilk saatlerinde yapılan işlerdir. İlk bölümde swap dosyasını adım adım kuruyoruz. İkinci bölümde ise SSH erişimini anahtar tabanlı girişe, kısıtlı kullanıcıya ve test edilmiş bir yapılandırmaya taşıyoruz.

Biz bir dijital pazarlama ve web ekibiyiz, hosting firması değiliz. Bu nedenle anlattığımız komutları ve ayar adlarını resmi kaynaklara dayandırdık: swapon kılavuz sayfası, çekirdek belgeleri ve OpenSSH kılavuzu. Dağıtımınız farklıysa kendi resmi belgenizle karşılaştırın.

Swap RAM'in yerine geçer mi?

Hayır, geçmez. Disk, en hızlı NVMe olsa bile RAM'den çok daha yavaş çalışır. Dolayısıyla sistem sürekli swap kullanıyorsa sunucu yavaşlar, sayfa yanıt süreleri uzar ve veritabanı sorguları sıraya girer.

Swap'ın gerçek işi bir emniyet payı sağlamaktır. Örneğin gece çalışan bir yedekleme ya da kısa süreli bir trafik artışı belleği birkaç dakikalığına zorlayabilir. Swap yoksa çekirdeğin bellek yetersizliği mekanizması bir süreci sonlandırır ve bu süreç çoğu zaman en çok bellek kullanan veritabanı olur. Swap varsa sistem yavaşlar ama ayakta kalır.

Ayrıca swap, uzun süre boşta duran bellek sayfalarını diske taşıyarak RAM'i önbelleğe bırakır. Böylece aktif dosyalar bellekte daha uzun kalır. Ancak bu küçük kazanç, RAM yetersizliğini kapatmaz.

Kısacası swap'ı bir yedek lastik gibi düşünün. Yolda kalmanızı önler, ama onunla her gün otoyolda gitmezsiniz. Siteniz düzenli olarak swap kullanıyorsa asıl çözüm daha fazla RAM ya da daha verimli bir uygulama yapısıdır. Bunun için sunucu kaynaklı yavaşlık nedenleri yazımıza da göz atabilirsiniz.

Sunucunuzda swap olup olmadığını nasıl kontrol edersiniz?

İşe mevcut durumu görerek başlayın. Bazı VPS imajları hazır bir swap dosyasıyla gelir, bazıları hiç swap içermez. Üç komut size yeterli bilgiyi verir:

swapon --show
free -h
cat /proc/swaps

İlk komut etkin swap alanlarını, türlerini ve boyutlarını listeler. Çıktı boşsa sistemde etkin swap yok demektir. İkinci komut RAM ve swap kullanımını okunabilir birimlerle gösterir. Üçüncüsü ise çekirdeğin kendi kaydını okur; yani diğer iki komutun kaynağıdır.

Ardından kullanım eğilimine bakın. Swap satırında kullanım sürekli yüksekse ve RAM'in "available" sütunu düşükse sunucunuz bellek baskısı altındadır. Öte yandan swap'ta birkaç yüz megabaytlık sabit kullanım tek başına sorun değildir. Çekirdek boşta kalan sayfaları oraya taşımış olabilir.

Disk alanını da kontrol edin, çünkü swap dosyası diskte yer kaplar. df -h / komutu kök bölümdeki boş alanı gösterir. Disk zaten dolmak üzereyse önce gereksiz dosyaları temizleyin.

Swap alanı ne kadar olmalı?

Tek ve evrensel bir rakam yok. Uygun boyut RAM miktarına, iş yüküne ve hazırda bekletme (hibernation) kullanıp kullanmadığınıza göre değişir. Sunucularda hazırda bekletme neredeyse hiç kullanılmadığı için masaüstü kuralları buraya birebir uymaz.

Dağıtımların kendi önerileri vardır ve bunlar zamanla güncellenir. Örneğin Red Hat Enterprise Linux 9 belgesi RAM aralıklarına göre bir öneri tablosu yayımlıyor. Bu nedenle rakamı bir blog yazısından değil, kullandığınız dağıtımın güncel resmi belgesinden almanızı öneririz.

Yine de karar verirken şu soruları sorun:

  • Uygulamanız ani bellek sıçramaları yapıyor mu, yoksa kullanım sabit mi?
  • Veritabanı aynı sunucuda mı çalışıyor ve ona ne kadar bellek ayırdınız?
  • Diskte swap için ayırabileceğiniz boş alan ne kadar?
  • Sağlayıcınız disk yazma işlemlerinde bir sınır uyguluyor mu?

Küçük bir VPS'te makul bir başlangıç boyutu seçip free -h ile birkaç gün izlemek, büyük bir rakamla başlamaktan daha iyi sonuç verir. Swap dosyasının avantajı da budur: boyutu sonradan kolayca değiştirirsiniz.

Swap dosyası mı, swap bölümü mü kullanmalısınız?

Linux iki yöntemi de destekler. Swap bölümü (partition) diskte ayrı bir alan olarak durur; swap dosyası ise mevcut dosya sisteminde sıradan bir dosyadır. VPS'lerde disk bölümlerini sonradan değiştirmek zor olduğu için swap dosyası genellikle daha pratik seçenektir.

ÖlçütSwap dosyasıSwap bölümü
Kurulum zamanıSistem çalışırken eklersinizGenellikle kurulumda ya da disk düzenlemesiyle
Boyut değiştirmeKapatıp yeniden oluşturmak yeterliBölüm tablosunu değiştirmek gerekir
Dosya sistemi bağımlılığıVar; delikli dosya kabul etmez, Btrfs'te ek koşul isterYok, doğrudan blok aygıtı kullanır
VPS'te uygunlukÇoğu tam sanallaştırmada uygunDiski yeniden bölümlemek çoğu zaman pratik değil
Kaldırmaswapoff, fstab satırı, dosyayı silmeswapoff, fstab satırı, bölümü yeniden kullanma

Performans açısından modern çekirdeklerde ikisi arasındaki fark çoğu iş yükü için belirleyici değildir. Dolayısıyla seçimi esneklik belirler. Bu yazıdaki adımlar swap dosyası içindir.

Linux swap oluşturma adımları nelerdir?

Linux swap oluşturma dört temel adımdan oluşur: dosyayı ayırmak, izinleri kısıtlamak, swap imzası yazmak ve etkinleştirmek. Aşağıdaki örnek 2 GB'lık bir dosya kurar; boyutu kendi kararınıza göre değiştirin. Bu bir örnek değerdir, öneri değil.

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
swapon --show

İlk satır diskte 2 GB'lık bir dosya ayırır. İkinci satır dosyayı yalnızca root'un okuyup yazabileceği hale getirir. Bu adım önemlidir, çünkü swap dosyası bellekten taşınan verileri içerir ve başka kullanıcıların okuması güvenlik açığı yaratır.

Üçüncü satır dosyaya swap imzası yazar. Dördüncü satır ise swap alanını hemen devreye alır. Son komut sonucu doğrular; çıktıda /swapfile satırını görmelisiniz.

Bu noktada swap çalışıyor, ancak sunucu yeniden başladığında kaybolur. Kalıcı hale getirmek için bir sonraki bölümdeki fstab adımını uygulayın. Ayrıca fallocate komutu her dosya sisteminde sorunsuz çalışmayabilir; bunun nedenini hemen aşağıda açıklıyoruz.

fallocate mı, dd mi kullanmalısınız?

İki komut da dosyayı ayırır, ama farklı şekilde. fallocate alanı anında rezerve eder ve diske sıfır yazmaz, bu yüzden çok hızlıdır. dd ise dosyayı baştan sona gerçekten sıfırlarla doldurur ve büyük dosyalarda dakikalar sürebilir.

swapon kılavuz sayfası önemli bir uyarı yapıyor: çekirdek, swap dosyasına dosya sistemine danışmadan doğrudan yazmak ister. Bu nedenle "delikli" (hole içeren) dosyaları reddeder. Kılavuza göre fallocate ile önceden ayrılmış dosyalar, dosya sistemine bağlı olarak delikli dosya gibi algılanabilir. Kılavuzun en taşınabilir yöntem olarak gösterdiği yol dd ve /dev/zero kullanımıdır.

Öte yandan Red Hat belgesi ext4 ya da XFS gibi modern dosya sistemlerinde fallocate'i dd'ye tercih edilebilir buluyor. Pratik yaklaşımımız şu: önce fallocate deneyin. swapon "dosyada delik var" benzeri bir hata verirse dosyayı silin ve dd ile yeniden oluşturun.

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Btrfs kullanıyorsanız durum farklıdır. Kılavuza göre Btrfs üzerinde swap dosyası, nocow özniteliğine sahip dosyalarda desteklenir. Bu yüzden Btrfs'te dağıtımınızın belgesindeki özel adımları izleyin.

Swap'ı /etc/fstab ile nasıl kalıcı yaparsınız?

swapon komutu yalnızca o anki oturum için çalışır. Sunucu yeniden başladığında swap'ın otomatik devreye girmesi için /etc/fstab dosyasına bir satır eklersiniz. Önce dosyanın bir kopyasını alın, çünkü fstab'daki bir yazım hatası açılışı aksatabilir.

sudo cp /etc/fstab /etc/fstab.yedek
echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab

Satırın anlamı basittir: ilk alan dosyanın yolu, ikinci alan bağlama noktası (swap için none), üçüncü alan tür, dördüncü alan seçeneklerdir. Son iki sıfır yedekleme ve dosya sistemi denetimi sırasını kapatır. Bazı dağıtım belgeleri seçenek olarak "sw" yazar; ikisi de yaygın kullanımdır.

Ardından değişikliği yeniden başlatmadan test edin:

sudo swapoff /swapfile
sudo swapon -a
swapon --show

swapon -a fstab'daki tüm swap kayıtlarını etkinleştirir. Swap listede görünüyorsa satırınız doğrudur. Red Hat belgesi systemd kullanan sistemlerde fstab değişikliğinden sonra systemctl daemon-reload çalıştırmayı da öneriyor. Böylece systemd yeni kaydı hemen tanır.

Tek bir uyarı daha: aynı satırı iki kez eklemeyin. Komutu yanlışlıkla tekrar çalıştırdıysanız grep swap /etc/fstab ile kontrol edin.

Swappiness nedir ve nasıl ayarlanır?

Swappiness, çekirdeğin bellek baskısı altında swap'ı ne kadar istekli kullanacağını belirleyen bir ayardır. Linux çekirdek belgesine göre değer 0 ile 200 arasındadır ve varsayılan değer 60'tır. Düşük değer swap G/Ç'sinin pahalı olduğunu, yüksek değer ucuz olduğunu varsayar.

Belgeye göre 100'de çekirdek sayfa önbelleğine ve swap destekli sayfalara eşit baskı uygular. 0'da ise boş ve dosya destekli sayfalar belirli bir eşiğin altına düşene kadar swap başlatmaz. Yani 0 "swap'ı kapat" anlamına gelmez.

Mevcut değeri görmek ve geçici olarak değiştirmek için:

cat /proc/sys/vm/swappiness
sudo sysctl vm.swappiness=10

Buradaki 10 bir örnek değerdir. Değişikliği kalıcı yapmak için /etc/sysctl.d altında bir dosya oluşturursunuz:

echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system

Peki değeri düşürmeli misiniz? Veritabanı çalıştıran sunucularda daha düşük bir değer sık görülen bir tercihtir, çünkü sıcak verinin RAM'de kalması istenir. Ancak bunu bir kural olarak değil, ölçerek verin. Değişiklikten önce ve sonra birkaç gün free -h ve uygulama yanıt sürelerini izleyin. MySQL ayarları için MySQL kurulumu ve performans yazımıza bakabilirsiniz.

Swap nasıl kaldırılır ya da büyütülür?

Swap'ı kaldırmak, oluşturmanın tersidir. Önce swap'ı devre dışı bırakırsınız, sonra fstab kaydını silersiniz, en son dosyayı kaldırırsınız. Sıra önemlidir; etkin bir swap dosyasını silmeye çalışmayın.

  1. sudo swapoff /swapfile komutuyla swap'ı kapatın. Bu adım swap'taki sayfaları RAM'e geri taşır.
  2. /etc/fstab dosyasını bir metin düzenleyiciyle açın ve /swapfile satırını silin.
  3. sudo rm /swapfile ile dosyayı kaldırın.
  4. swapon --show ve free -h ile sonucu doğrulayın.

Dikkat edin: swapoff çalışırken swap'taki veriler RAM'e döner. RAM bunları alacak kadar boş değilse komut başarısız olur ya da sistem bellek baskısına girer. Bu yüzden swapoff'u trafiğin düşük olduğu bir saatte çalıştırın.

Boyutu büyütmek için aynı yolu izlersiniz: swap'ı kapatın, dosyayı yeni boyutla yeniden oluşturun, chmod, mkswap ve swapon adımlarını tekrarlayın. fstab satırı aynı yolu gösterdiği için değişmez. Alternatif olarak ikinci bir swap dosyası ekleyebilirsiniz, ama tek dosya yönetimi genellikle daha sadedir.

VPS'te swap oluşturamıyorsanız sebep ne olabilir?

Bazı VPS'lerde swapon komutu "işleme izin verilmedi" benzeri bir hata verir. Bunun en yaygın nedeni sanallaştırma türüdür. Konteyner tabanlı sanallaştırmalarda sunucunuz çekirdeği ana makineyle paylaşır. Dolayısıyla swap gibi çekirdek düzeyindeki ayarları siz değil, sağlayıcı yönetir.

Ayrıca bazı sağlayıcılar disk sağlığı ya da paylaşılan depolama performansı gerekçesiyle swap kullanımını sözleşmede kısıtlayabilir. Bu durumda teknik olarak swap açabilseniz bile kurallara aykırı düşebilirsiniz.

Ne yapmalısınız?

  • Sağlayıcınızın belgesinde sanallaştırma türünü ve swap politikasını kontrol edin.
  • Panelde hazır bir swap seçeneği olup olmadığına bakın.
  • Swap yasaksa ya da mümkün değilse RAM'i yükseltin veya uygulamanın bellek kullanımını azaltın.
  • Paket seçerken tam sanallaştırma sunan bir plan tercih edin.

VPS, VDS ve bulut sunucu arasındaki farkları VPS, VDS ve bulut sunucu karşılaştırması yazımızda ayrıntılı anlattık. Hosting seçerken sorulacak diğer sorular için de hosting nasıl seçilir rehberine bakabilirsiniz.

SSH güvenliği için hangi ayarlar öncelikli?

Swap bellek tarafını düzenler; SSH ise sunucunun ön kapısıdır. İnternete açık her SSH portu, kısa sürede otomatik parola deneme trafiği alır. Bu yüzden ilk iş, parolayla girişi gereksiz hale getirmek ve kapıyı daraltmaktır.

Öncelik sıramız şöyle:

  1. Kendi bilgisayarınızda bir SSH anahtar çifti oluşturun ve sunucuya yükleyin.
  2. Sudo yetkili, root olmayan bir kullanıcıyla anahtarla giriş yaptığınızı doğrulayın.
  3. Parola ve klavye etkileşimli kimlik doğrulamayı kapatın.
  4. Root'un doğrudan girişini kapatın.
  5. AllowUsers ile girişi belirli kullanıcılara sınırlayın.
  6. Yapılandırmayı sshd -t ile test edin ve ikinci bir oturumla deneyin.
  7. Güvenlik duvarı ve fail2ban gibi ek katmanları ekleyin.

Aşağıdaki tablo, değiştireceğimiz ayarların OpenSSH sshd_config kılavuzundaki varsayılan değerlerini ve önerdiğimiz hedefi özetliyor. Dağıtımınızın paketlediği yapılandırma bu varsayılanları değiştirmiş olabilir.

AyarOpenSSH varsayılanıHedef
PubkeyAuthenticationyesyes
PasswordAuthenticationyesno
KbdInteractiveAuthenticationyesno (2FA kullanmıyorsanız)
PermitRootLoginprohibit-passwordno
AllowUserstanımsız (herkes)yalnız yönetici kullanıcılar
MaxAuthTries6daha düşük bir değer, isteğe bağlı

SSH anahtarıyla giriş nasıl kurulur?

Anahtar tabanlı giriş, parolanın yerine bir anahtar çifti kullanır. Özel anahtar sizin bilgisayarınızda kalır, açık anahtar sunucudaki authorized_keys dosyasına girer. Böylece ağ üzerinden hiçbir zaman parola gitmez ve kaba kuvvet denemeleri anlamını yitirir.

Ubuntu'nun resmi OpenSSH sunucu belgesi Ed25519 türünde anahtar üretmeyi gösteriyor. Komutları kendi bilgisayarınızda çalıştırın:

ssh-keygen -t ed25519
ssh-copy-id deploy@203.0.113.10

İlk komut anahtar çiftini üretir ve bir parola ifadesi (passphrase) sorar. Bu ifadeyi boş bırakmayın, çünkü bilgisayarınız çalınırsa anahtarı korur. İkinci komut açık anahtarı sunucudaki kullanıcının authorized_keys dosyasına ekler. Örnekteki IP bir dokümantasyon adresidir; kendi sunucunuzun adresini yazın.

Ardından yeni bir terminalde ssh deploy@203.0.113.10 ile bağlanın. Parola sorulmadan, yalnızca anahtar parola ifadesiyle girebiliyorsanız adım tamamdır. Ubuntu belgesi ayrıca sunucudaki authorized_keys dosyasının başkaları tarafından yazılabilir olmamasını öneriyor; bunun için chmod go-w ~/.ssh/authorized_keys yeterlidir.

Özel anahtarınızı hiçbir zaman sunucuya, e-postaya ya da ortak klasöre koymayın. Ekip üyelerinin her biri kendi anahtarını üretmeli; böylece biri ayrıldığında yalnızca onun satırını silersiniz.

PasswordAuthentication ve PermitRootLogin nasıl kapatılır?

Anahtarla girişin çalıştığından emin olduktan sonra parolalı girişi kapatın. Ana yapılandırma dosyası /etc/ssh/sshd_config'tir. Ubuntu belgesine göre bu dosyanın en başında /etc/ssh/sshd_config.d altındaki .conf dosyalarını okuyan bir Include satırı bulunuyor.

Bu ayrıntı önemlidir. OpenSSH kılavuzuna göre her ayar için ilk okunan değer geçerli olur ve Include dosyaları sözlük sırasıyla işlenir. Dolayısıyla ana dosyada "no" yazsanız bile sshd_config.d içindeki daha önce okunan bir dosya "yes" diyorsa o kazanır. Bazı bulut imajları bu klasöre parolalı girişi açan bir dosya koyabilir.

Bu yüzden ayarlarınızı adı alfabetik olarak önce gelen ayrı bir dosyaya yazmanızı öneririz:

sudo nano /etc/ssh/sshd_config.d/00-sertlestirme.conf

PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes

PermitRootLogin için kılavuz dört değer tanımlar: yes, prohibit-password, forced-commands-only ve no. Varsayılan olan prohibit-password, root'un parolayla girmesini engeller ama anahtarla girmesine izin verir. "no" ise root'un doğrudan girişini tamamen kapatır; yönetim işlerini sudo ile yaparsınız.

Ayrıca sshd_config.d içindeki diğer dosyaları ls /etc/ssh/sshd_config.d/ ile listeleyin. Çakışan bir ayar görürseniz onu da düzeltin.

AllowUsers ile SSH erişimi nasıl sınırlandırılır?

AllowUsers, SSH ile kimlerin girebileceğini açıkça tanımlar. Kılavuza göre bu ayar tanımlandığında yalnızca listedeki kalıplarla eşleşen kullanıcı adları girebilir. Yani sunucuda başka kullanıcılar olsa bile SSH kapısı onlara kapanır.

Örneğin yalnızca deploy ve admin kullanıcılarına izin vermek için yapılandırma dosyanıza şu satırı eklersiniz:

AllowUsers deploy admin

Kalıplar kullanıcı@adres biçimini de destekler. Böylece belirli bir kullanıcıyı yalnızca belirli bir IP'den kabul edebilirsiniz, örneğin AllowUsers deploy@198.51.100.25. Ancak bu yöntemi yalnızca sabit IP'niz varsa kullanın. Ev ya da mobil bağlantınızın IP'si değişirse kendinizi dışarıda bırakırsınız. Mevcut IP'nizi IP adresim aracımızla görebilirsiniz.

AllowUsers'ı ilk kez eklerken en sık yapılan hata, kendi kullanıcı adınızı listeye yazmayı unutmaktır. Bu yüzden değişikliği yaptıktan sonra mevcut oturumu açık tutun ve yeni bir oturumla test edin. Grup bazında yönetmek isterseniz kılavuzdaki AllowGroups ayarı da aynı mantıkla çalışır.

Ekip büyüdükçe kimin hangi sunucuya eriştiğini belgelemek de önem kazanır. Bu, teknik bir ayar kadar bir yönetim alışkanlığıdır.

SSH portunu değiştirmek güvenliği artırır mı?

Sınırlı ölçüde. Portu 22'den başka bir numaraya taşımak, internetteki otomatik tarayıcıların büyük bölümünü uzak tutar ve log dosyalarınızdaki gürültüyü azaltır. Ancak hedefli bir saldırgan port taramasıyla yeni portu kısa sürede bulur. Dolayısıyla port değişikliği bir güvenlik önlemi değil, bir gürültü azaltma yöntemidir.

Gerçek koruma anahtar tabanlı giriş, kapalı parola girişi ve AllowUsers'tan gelir. Bu üçü yerindeyse port değiştirmek ek bir konfor sağlar, eksiklerse hiçbir şeyi kurtarmaz.

Yine de değiştirmek isterseniz şu sırayı izleyin:

  • Önce güvenlik duvarında yeni portu açın; aksi halde bağlantınız kesilir.
  • Yapılandırmada Port satırını yeni değerle güncelleyin.
  • Ubuntu'nun güncel sürümlerinde SSH, systemd soket etkinleştirmesiyle çalışabilir. Ubuntu belgesi port değişikliklerinde ssh.socket'in de dikkate alınması gerektiğini belirtiyor; bu adımı kendi sürümünüzün belgesine göre yapın.
  • Yeni portla ikinci bir oturum açın ve çalıştığını doğrulayın.
  • Son olarak güvenlik duvarında eski portu kapatın.

Bulut sağlayıcınızın panelinde ayrı bir ağ güvenlik duvarı varsa yeni portu orada da açmayı unutmayın.

SSH ayarlarını kilitlenmeden nasıl test edersiniz?

SSH yapılandırmasındaki tek bir hata sizi sunucunun dışında bırakabilir. Bu yüzden her değişiklikte aynı güvenli sırayı izleyin. Ubuntu belgesi önce orijinal dosyanın yazmaya kapalı bir kopyasını almayı öneriyor:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
sudo chmod a-w /etc/ssh/sshd_config.original

Değişiklikten sonra sözdizimini test edin. sudo sshd -t yapılandırmayı ve anahtarları kontrol eder; hata yoksa hiçbir çıktı vermez. sudo sshd -T ise geçerli yapılandırmanın tamamını yazdırır. Böylece Include dosyalarından sonra hangi değerin kazandığını görürsünüz.

sudo sshd -t
sudo sshd -T | grep -i passwordauthentication
sudo systemctl restart ssh.service

Ubuntu'da servis adı ssh.service'tir. RHEL tabanlı dağıtımlarda ise servis genellikle sshd adını taşır; kendi dağıtımınızın belgesine bakın.

En önemli kural şudur: mevcut SSH oturumunuzu kapatmayın. Yeniden başlatma açık oturumları genellikle düşürmez. Yeni bir terminal penceresinde ikinci bir oturum açın ve girişin çalıştığını doğrulayın. Ancak ondan sonra ilk oturumu kapatın. Bir şey ters giderse açık oturumdan yedek dosyaya geri dönersiniz. Son çare olarak sağlayıcınızın web konsolunu ya da kurtarma modunu bilmek de iyi bir alışkanlıktır.

Fail2ban, 2FA ve güvenlik duvarı nereye oturur?

Bu üç katman, yukarıdaki temel ayarların üzerine eklenir. Hiçbiri anahtar tabanlı girişin yerini tutmaz, ama her biri saldırı yüzeyini biraz daha daraltır.

Güvenlik duvarı ilk katmandır. Ubuntu'da ufw ile önce SSH'ye izin verir, sonra duvarı etkinleştirirsiniz. Sıra kritik; tersini yaparsanız bağlantınız kopar.

sudo ufw allow ssh
sudo ufw enable
sudo ufw status

Portu değiştirdiyseniz "ssh" yerine yeni port numarasını yazın. cPanel kullanan sunucularda ufw yerine CSF tercih edilir; ayrıntıları CSF Firewall rehberimizde bulabilirsiniz.

Fail2ban log dosyalarını izler ve tekrarlı başarısız denemeleri yapan IP'leri geçici olarak engeller. Parola girişini kapattıysanız işi daha çok log gürültüsünü azaltmaktır. Kurulumu burada tekrar anlatmıyoruz; Fail2ban nedir, nasıl kurulur yazımızda adım adım var.

İki faktörlü doğrulama (2FA) ise anahtarın yanına ikinci bir kanıt ekler. OpenSSH'nin AuthenticationMethods ayarı birden fazla yöntemin birlikte tamamlanmasını şart koşabilir. Genellikle PAM üzerinden çalışan TOTP modülleriyle kurulur. Ancak yanlış kurulumda kilitlenme riski yüksektir, bu yüzden test ortamında deneyin.

Swap ve SSH ayarlarını ne zaman kendiniz yapmamalısınız?

Her sunucu ayarını kendiniz yapmak zorunda değilsiniz. Yönetilen (managed) hosting ya da paylaşımlı hosting kullanıyorsanız swap ve SSH yapılandırması zaten sağlayıcının sorumluluğundadır. Bu durumda ayarları değiştirmeye çalışmak destek kapsamınızı bozabilir.

Şu durumlarda işi hosting sağlayıcınıza ya da deneyimli bir sistem yöneticisine bırakmanızı öneririz:

  • Sunucuya web konsolu ya da kurtarma modu ile erişmeyi bilmiyorsanız.
  • Sunucuda canlı bir e-ticaret sitesi çalışıyor ve kesinti kabul edilemiyorsa.
  • Konteyner tabanlı bir VPS'te swap izni yoksa.
  • Kurumsal uyum kuralları belirli bir SSH politikası şart koşuyorsa.
  • Komutların ne yaptığını anlamadan kopyalıyorsanız.

Öte yandan kendi VPS'inizi yönetiyor ve terminalde rahat çalışıyorsanız bu yazıdaki adımlar standart işlerdir. Önemli olan her değişiklikten önce yedek almak ve bir geri dönüş yolu bırakmaktır. Yedekleme planınızı web sitesi yedekleme stratejisi yazımızla gözden geçirebilirsiniz.

Ekibimiz web tasarım ve yazılım projelerinde sunucu hazırlığını da planın içine katar. Sunucu tarafını sağlayıcıyla nasıl paylaştırdığımızı web tasarım hizmetimizde ve özel yazılım geliştirme sayfamızda anlatıyoruz.

Uygulama katmanı güvenliği için başka neye bakmalısınız?

SSH'yi sağlamlaştırmak sunucunun ön kapısını kilitler. Ancak sitenizin kendisi de ayrı bir kapıdır. Web uygulamasındaki bir açık, SSH'ye hiç dokunmadan sunucuya erişim sağlayabilir.

Bu yüzden altyapı ayarlarını uygulama güvenliğiyle birlikte düşünün. Güncel olmayan eklentiler, zayıf yönetici parolaları ve hatalı dosya izinleri en sık karşılaşılan risklerdir. Web uygulamalarındaki yaygın açıkları OWASP Top 10 rehberimizde özetledik.

Ayrıca sistem paketlerini düzenli güncelleyin. OpenSSH dahil her paket zaman zaman güvenlik yaması alır. Ubuntu'da otomatik güvenlik güncellemelerini açmak, bu işi unutma riskini azaltır. Ancak otomatik güncellemenin bir servisi yeniden başlatabileceğini de hesaba katın.

Kısacası sunucu güvenliği tek bir ayar değil, katmanlardan oluşan bir düzendir. Swap kararlılığı, SSH ise erişimi korur; uygulama güvenliği ve yedekleme de resmi tamamlar.

Linux swap oluşturma ve SSH sıkılaştırma için kontrol listesi

Yazıdaki adımları tek bir listede topladık. Yeni bir sunucu kurarken bu sırayı izleyebilirsiniz:

  1. swapon --show ve free -h ile mevcut durumu kontrol edin.
  2. Swap dosyası boyutuna dağıtımınızın resmi belgesine ve iş yükünüze bakarak karar verin.
  3. Dosyayı fallocate ya da dd ile oluşturun, chmod 600, mkswap ve swapon adımlarını uygulayın.
  4. fstab satırını ekleyin ve swapon -a ile test edin.
  5. Swappiness'ı yalnızca ölçüme dayanarak değiştirin.
  6. Kendi bilgisayarınızda Ed25519 anahtarı üretin ve ssh-copy-id ile yükleyin.
  7. sshd_config.d altında ayrı bir dosyada parola ve root girişini kapatın.
  8. AllowUsers ile girişi sınırlayın.
  9. sshd -t ile test edin, ikinci oturumla doğrulayın, sonra servisi yeniden başlatın.
  10. Güvenlik duvarını açın ve fail2ban gibi ek katmanları ekleyin.

Linux swap oluşturma birkaç dakikalık bir iştir; SSH sıkılaştırma ise dikkat isteyen ama bir kez doğru yapıldığında uzun süre koruyan bir adımdır. Linux swap oluşturma ve SSH ayarlarında ortak kural aynıdır: değişiklikten önce yedek alın, sonra test edin.

Sıkça Sorulan Sorular

Linux sunucuda swap olmadan çalışmak sorun olur mu?
Her zaman değil, ama risklidir. RAM'iniz iş yükünüze bolca yetiyorsa swap'sız sunucu sorunsuz çalışabilir. Ancak ani bir bellek sıçramasında çekirdek bir süreci sonlandırır ve bu genellikle veritabanı olur. Bu yüzden küçük VPS'lerde makul boyutta bir swap dosyası emniyet payı olarak işe yarar.
Swap dosyasının izni neden 600 olmalı?
Çünkü swap dosyası bellekten taşınan verileri içerir. Bu veriler arasında oturum bilgileri ya da parolalar bulunabilir. chmod 600 dosyayı yalnızca root'un okuyup yazabileceği hale getirir. Daha geniş izinler, sunucudaki diğer kullanıcıların bu verilere erişmesine yol açabilir; mkswap da bu durumda genellikle uyarı verir.
Swappiness değerini 0 yapmak swap'ı kapatır mı?
Hayır, kapatmaz. Linux çekirdek belgesine göre 0 değerinde çekirdek, boş ve dosya destekli sayfalar belirli bir eşiğin altına düşene kadar swap başlatmaz. Yani bellek baskısı yeterince artarsa swap yine kullanılır. Swap'ı tamamen kapatmak istiyorsanız swapoff komutunu kullanır ve fstab satırını silersiniz.
SSH parola girişini kapatınca anahtarımı kaybedersem ne olur?
Sunucuya SSH ile giremezsiniz, ama genellikle tamamen kilitli kalmazsınız. Çoğu sağlayıcı web konsolu ya da kurtarma modu sunar. Oradan yeni açık anahtarınızı authorized_keys dosyasına eklersiniz. Bu yüzden anahtarınızın güvenli bir yedeğini tutun ve sağlayıcınızın konsol erişimini sorun çıkmadan önce mutlaka deneyin.
PermitRootLogin no mu, prohibit-password mı daha iyi?
Çoğu sunucu için no daha temiz bir tercihtir. prohibit-password root'un yalnızca anahtarla girmesine izin verir, no ise doğrudan root girişini tamamen kapatır. Yönetim işlerini sudo yetkili kişisel kullanıcılarla yaparsanız kimin ne yaptığı da loglarda daha net görünür. Otomasyon araçlarınız root istiyorsa önce onları uyarlayın.
SSH portunu değiştirince fail2ban'a gerek kalır mı?
Kalır, ama rolü değişir. Port değişikliği otomatik tarayıcıların çoğunu uzaklaştırır, fakat hedefli bir saldırgan yeni portu bulabilir. Fail2ban tekrarlı başarısız denemeleri engeller ve log gürültüsünü azaltır. Parola girişi kapalıysa asıl korumayı anahtar sağlar; fail2ban ve port değişikliği yalnızca ek katman olarak çalışır.
  • linux swap oluşturma
  • swap dosyası
  • swappiness
  • ssh güvenliği
  • sshd_config
  • vps yönetimi
  • sunucu güvenliği
Paylaş:
Talha Aslan

Google Partner dijital pazarlama uzmanı. 2012’den beri SEO, Google Ads, web tasarım ve e-ticaret projelerinde sahada; bu blogda gördüğünüz her yazı o deneyimden çıkar.

Sıradaki proje

Projenizi konuşalım.

Talebiniz doğrudan Talha Aslan ve ekibine ulaşır: stratejiyi Talha kurar, uygulamayı deneyimli ekip yürütür. İlk istişare ücretsizdir; hedefinizi dinler, net bir yol haritasıyla döneriz.