Linux VDS Sunucu Güvenliği Nasıl Sağlanır? Sıkılaştırma Rehberi
Linux VDS sunucularda güvenliği sağlamak için SSH anahtarı kullanımı, root girişini kapatma, UFW güvenlik duvarı ve Fail2ban kurulumu adımları.
İçindekiler
İnternete açılan bir Linux sanal sunucu, kurulumun tamamlandığı ilk dakikalardan itibaren otomatik kaba kuvvet (brute-force) denemeleri ve port tarama botlarının hedefi haline gelir. Sunucu güvenliğini sağlamak tek bir ayara bağlı değildir; işletim sistemi düzeyinde yetkisiz erişimi önlemek, servisleri sınırlandırmak ve ağ katmanında trafiği denetlemekten oluşan katmanlı bir yaklaşım gerektirir. Doğrudan root erişimini kapatmak, parola yerine SSH anahtarı kullanmak, Fail2ban ile tekrarlayan saldırgan IP adreslerini yasaklamak ve UFW ile gereksiz portları kapatmak bu savunmanın temel adımlarıdır.
Güvenlik yapılandırması öncesinde snapshot alma
Güvenlik duvarı kurallarında yapılacak küçük bir sıra hatası veya SSH yapılandırmasındaki sözdizimi yanlışı, sunucu ile olan terminal bağlantınızın anında kesilmesine ve sunucuya erişememenize yol açabilir. Bu nedenle yapılandırma adımlarına geçmeden önce sunucunuzun anlık durumunu kaydetmeniz önerilir.
TREAS altyapısında her VPS ve VDS için 1 adet ücretsiz snapshot hakkı sunulur. İşletim sistemi ayarlarını değiştirmeden önce müşteri panelinizden bir anlık görüntü oluşturduğunuzda, olası bir kilitlenme veya kural hatası durumunda sunucunuzu tek işlemle çalışan durumuna geri döndürebilirsiniz.
1. Ayrıcalıksız sudo kullanıcısı oluşturma
Linux dağıtımlarında root kullanıcısı sistemdeki tüm yetkilere sahiptir. Otomatik saldırı yazılımları da sunucularda varsayılan olarak var olduğunu bildikleri root kullanıcı adı üzerinden parola denemeleri yapar. İlk yapılması gereken işlem, günlük işlemler ve sunucu yönetimi için sudo yetkisine sahip ayrıcalıksız yeni bir kullanıcı oluşturmaktır.
Aşağıdaki komutlarla yeni bir sistem kullanıcısı oluşturabilir ve bu kullanıcının SSH anahtarı dizin izinlerini ayarlayabilirsiniz:
useradd -m -s /bin/bash -G sudo yonetici
mkdir -p /home/yonetici/.ssh
chmod 700 /home/yonetici/.ssh
touch /home/yonetici/.ssh/authorized_keys
chmod 600 /home/yonetici/.ssh/authorized_keys
chown -R yonetici:yonetici /home/yonetici/.ssh
Kullanıcı oluşturulduktan sonra kendi bilgisayarınızda bir SSH anahtar çifti oluşturup açık anahtarınızı sunucuya aktarmanız gerekir. TREAS müşteri panelinde Linux sunucular için sunulan SSH anahtarı ekleme özelliğini kullanarak anahtarınızı hizmetinize tanımlayabilir veya terminalinizden doğrudan anahtar kopyalama komutunu çalıştırabilirsiniz:
# örnek, çalıştırma
ssh-keygen -t ed25519 -C "vds-anahtari"
ssh-copy-id -i ~/.ssh/id_ed25519.pub yonetici@SUNUCU_IP_ADRESI
ssh -i ~/.ssh/id_ed25519 yonetici@SUNUCU_IP_ADRESI
Yeni kullanıcı ile sunucuya anahtar kullanarak bağlanabildiğinizi teyit etmeden mevcut oturumunuzu kapatmayın.
2. SSH sıkılaştırma: Root erişimini kapatma ve anahtar doğrulaması
SSH servisi uzaktan yönetim kapınızdır. Parola tabanlı oturum açma açık kaldığı sürece saldırganlar sözlük ve kaba kuvvet yöntemleriyle parolanızı tahmin etmeye çalışır. Parola doğrulamasını kapatıp yalnızca açık anahtarla girişe izin verdiğinizde parola denemeleri doğrudan engellenir.
Sunucunuzda OpenSSH paketlerinin kurulu ve güncel olduğundan emin olmak için paket listesini güncelleyebilir ve servisi doğrulayabilirsiniz. Modern Linux dağıtımlarında doğrudan /etc/ssh/sshd_config dosyasını düzenlemek yerine, paket güncellemelerinden etkilenmeyen /etc/ssh/sshd_config.d/ dizini altına özel bir yapılandırma dosyası eklemek daha temiz bir yöntemdir:
DEBIAN_FRONTEND=noninteractive apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-server
mkdir -p /run/sshd /etc/ssh/sshd_config.d
cat <<'EOF' > /etc/ssh/sshd_config.d/99-guvenlik.conf
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
X11Forwarding no
MaxAuthTries 3
EOF
sshd -t
Burada çalıştırılan sshd -t komutu, yapılandırma dosyalarında herhangi bir sözdizimi veya yetki hatası olup olmadığını denetler. Komut çıktı vermeden başarılı biterse ayarlar geçerlidir. Sözdizimi testinden geçen yapılandırmayı devreye almak için SSH servisini yeniden başlatabilirsiniz:
systemctl restart ssh
Yapılandırmayı test etmek için mevcut terminal oturumunuzu açık tutarak yeni bir terminal penceresinden sunucuya bağlanmayı deneyin.
3. Fail2ban ile kaba kuvvet saldırılarını engelleme
SSH portuna gelen istekleri tamamen durdurmak istemciler açısından mümkün olmasa da, art arda hatalı giriş denemesi yapan IP adreslerini geçici veya kalıcı olarak engellemek sunucu kaynaklarını korur. Fail2ban, kimlik doğrulama günlüklerini izleyerek belirlenen eşiği aşan IP adreslerine güvenlik duvarı seviyesinde erişim yasağı koyar.
Kurulumu tamamlayıp yerel kural dosyasını oluşturmak için aşağıdaki adımları uygulayın:
DEBIAN_FRONTEND=noninteractive apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y fail2ban
cat <<'EOF' > /etc/fail2ban/jail.local
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 3
[sshd]
enabled = true
port = 22
mode = aggressive
EOF
fail2ban-client -t
Yapılandırmada yer alan parametrelerin işlevleri şunlardır:
- bantime = 1h: Hatalı giriş sınırına ulaşan IP adresi 1 saat boyunca engellenir.
- findtime = 10m: Başarısız denemelerin sayılacağı zaman aralığı 10 dakikadır.
- maxretry = 3: 10 dakika içinde 3 kez başarısız deneme yapan IP engellenir.
- mode = aggressive: SSH bağlantı günlüklerinde şüpheli tarama ve exploit denemelerini de kural kapsamına alır.
Sözdizimi denetimi fail2ban-client -t ile doğrulandıktan sonra servis etkinleştirilir:
systemctl restart fail2ban
systemctl enable fail2ban
Aktif yasakları ve engellenen IP adreslerini incelemek için fail2ban-client status sshd komutunu kullanabilirsiniz.
4. UFW ile güvenlik duvarı sıkılaştırma ve güvenli kural sırası
Güvenlik duvarı yapılandırırken yapılan en yaygın hata, gelen tüm bağlantıları engelleyen politikayı SSH portuna izin vermeden önce devreye almaktır. Bu durum yönetici oturumunun anında düşmesine neden olur.
Güvenli kural sıralaması; önce SSH portuna (ve varsa çalışan web servislerine) izin vermek, ardından gelen trafiği varsayılan olarak reddedip giden trafiği serbest bırakmak ve en son güvenlik duvarını etkinleştirmektir:
DEBIAN_FRONTEND=noninteractive apt-get install -y ufw
ufw allow 22/tcp
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose
Komut çalıştırıldığında aktif güvenlik duvarı durumu ve izin verilen portlar listelenir:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
Web sunucusu veya veritabanı gibi ek servisler çalıştıracaksanız, yalnızca ilgili servislerin portlarını (ufw allow 80/tcp, ufw allow 443/tcp) açarak saldırı yüzeyini daraltmalısınız.
Ağ seviyesinde güvenlik ve donanım altyapısı
İşletim sistemi içinde aldığınız önlemler servis düzeyindeki yetkisiz erişimleri ve kaba kuvvet saldırılarını engeller. Ancak yüz binlerce sahte paketle yapılan dağıtık hizmet engelleme (DDoS) saldırıları, sunucu işletim sistemine ve UFW katmanına ulaştığında sunucunun ağ hattını ve işlemci çekirdeklerini tüketebilir. Bu tür hacimli saldırıların sunucuya ulaşmadan veri merkezi ve ağ seviyesinde karşılanması gerekir.
TREAS altyapısında sunulan Performans VPS ve Ekstrem VDS paketlerinin tamamı Mars İstanbul Veri Merkezi altyapısında barındırılır ve 12 Tbps kapasiteli TRSHIELD DDoS koruması ile korunur. Çok çekirdekli web ve uygulama iş yüklerinde AMD Ryzen 9 7950X işlemcili ve paylaşımlı vCore kaynaklı Performans VPS serisini, tek çekirdek performansının ve ayrılmış (dedicated) vCore gücünün kritik olduğu projelerde ise AMD Ryzen 9 9950X işlemcili Ekstrem VDS serisini tercih edebilirsiniz. Tüm donanım üzerinde yüksek okuma ve yazma hızları sağlayan Samsung 990 Pro Gen4 NVMe depolama birimleri kullanılır; tam donanım yalıtımı gerektiren yüksek ölçekli projeler için ise fiziksel sunucu seçenekleri değerlendirilebilir.
Sık sorulan sorular
SSH portunu değiştirmek sunucu güvenliği için yeterli midir?
SSH portunu varsayılan 22 değerinden farklı bir porta taşımak otomatik tarama botlarının gürültüsünü azaltır; ancak tek başına bir güvenlik çözümü değildir. Asıl koruma doğrudan root girişinin kapatılması, parola ile oturum açmanın engellenmesi ve anahtarla doğrulama kullanılmasıyla sağlanır.
SSH anahtarı ile giriş aktif edildiğinde mevcut parolalar geçersiz mi olur?
Yapılandırma dosyasında parola doğrulaması kapatıldığında sunucu artık SSH üzerinden parola kabul etmez; yalnızca tanımlı özel anahtara sahip istemcilerin bağlantısına izin verir. Bu sayede kaba kuvvet parola denemeleri tamamen etkisiz hale gelir.
Fail2ban ile engellenen bir IP adresinin yasağı nasıl kaldırılır?
Engellenen bir IP adresinin yasağını kaldırmak için sunucu terminalinde fail2ban-client set sshd unbanip IP_ADRESI komutunu çalıştırabilirsiniz.
Güvenlik ayarlarını yapmadan önce neden snapshot alınmalıdır?
Güvenlik duvarı veya SSH yapılandırmasındaki hatalı bir kural sunucuya erişiminizi kaybetmenize yol açabilir. İşlemlere başlamadan önce snapshot almak, olası bir kilitlenme durumunda sunucuyu çalışan haline geri döndürmenizi sağlar.