Hosting Paketlerinde %80 indirim + Ücretsiz Domain & SSL!
Detaylar

Bilgi Bankası

Yeni sunucuda ilk güvenlik adımları: güncelleme, SSH anahtarı, güvenlik duvarı

Kısaca: Yeni sunucuda ilk iş sistemi güncelleyin, sudo yetkili bir kullanıcı açın, SSH anahtarıyla girişe geçip parolayla ve root olarak girişi kapatın, güvenlik duvarında yalnız gereken portları açın; ardından fail2ban ve otomatik güvenlik güncellemelerini kurun. Adımları bu sırayla uygulamak, kendinizi sunucunun dışında bırakmamanın en kolay yoludur.

Bilgi: Sanal ve bulut sunucular, aksi belirtilmedikçe yönetimsiz hizmettir: İşletim sistemi, güvenlik güncellemeleri, güvenlik duvarı, kurulu yazılımlar ve yedekleme sizin sorumluluğunuzdadır; Matrax sanallaştırma altyapısından ve ağdan sorumludur. İnternete açılan her sunucu dakikalar içinde otomatik parola denemeleri almaya başlar, bu yüzden aşağıdaki adımları ilk bağlantıda tamamlayın.

Komutları root olarak yazın; sudo yetkili bir kullanıcıyla çalışıyorsanız başlarına sudo ekleyin. Sunucuya nasıl bağlanacağınızı ilk bağlantı makalesinde bulabilirsiniz.

Güncelleme ve sudo kullanıcısı

1. Sistemi güncelleyin

apt update && apt upgrade -y
dnf update -y

Çekirdek (kernel) güncellendiyse sunucuyu reboot ile yeniden başlatın. Ubuntu'da /var/run/reboot-required dosyası varsa yeniden başlatma gerekiyor demektir.

2. sudo yetkili bir kullanıcı açın

Günlük işleri root yerine kendi kullanıcınızla yapmak, yanlış bir komutun etkisini sınırlar ve root girişini kapatmanızı mümkün kılar. Örnekte kullanıcı adı yonetici:

adduser yonetici
usermod -aG sudo yonetici
useradd -m yonetici
passwd yonetici
usermod -aG wheel yonetici

Yetkiyi sınamak için su - yonetici ile kullanıcıya geçip sudo whoami yazın; kullanıcının parolasını girdikten sonra yanıt root olmalı.

SSH anahtarı ve giriş ayarları

3. SSH anahtarıyla girişe geçin

Anahtar çifti kendi bilgisayarınızda üretilir: Gizli anahtar bilgisayarınızda kalır, sunucuya yalnız açık anahtar (.pub dosyası) kopyalanır. Windows 10/11 PowerShell'de, macOS ve Linux Terminalinde aynı komut çalışır:

ssh-keygen -t ed25519 -C "is-bilgisayarim"

Kayıt yeri sorusunu Enter ile geçin. Anahtara bir parola (passphrase) vermeniz, dosya çalınsa bile kullanılmasını zorlaştırır. Ardından açık anahtarı sunucuya kopyalayın:

ssh-copy-id [email protected]

Windows'ta ssh-copy-id bulunmaz; PowerShell'de şu komut aynı işi yapar:

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh [email protected] "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Şimdi yeni bir pencerede ssh [email protected] ile bağlanın. Sunucu parolası sorulmadan (en fazla anahtarınızın parolası sorularak) giriyorsanız anahtar çalışıyor demektir.

4. Parolayla ve root olarak girişi kapatın

Önemli: Bu adıma yalnız anahtarla girişi ve sudo yetkisini yeni bir pencerede sınadıktan sonra geçin. Açık oturumunuzu, değişiklikten sonra yeni bir pencerede yeniden giriş yapabildiğinizi görene kadar kapatmayın.

/etc/ssh/sshd_config dosyasının başında Include /etc/ssh/sshd_config.d/*.conf satırı varsa (Ubuntu 22.04 ve sonrası, Debian 12, AlmaLinux/Rocky 9), ayarları ayrı bir dosyaya yazın. SSH sunucusu bir ayar için ilk okuduğu değeri geçerli sayar; dosya adını 00- ile başlatmak, bazı imajlarda bulunan 50-cloud-init.conf gibi dosyaların ayarınızı ezmesini önler. Include satırı yoksa (ör. AlmaLinux/Rocky 8) aynı iki satırı doğrudan /etc/ssh/sshd_config içinde düzenleyin.

PermitRootLogin no
PasswordAuthentication no

Kaydettikten sonra yapılandırmayı sınayın, geçerli değerleri görün ve servisi yeniden yükleyin:

sshd -t
sshd -T | grep -Ei '^(permitrootlogin|passwordauthentication)'
systemctl reload ssh     # Ubuntu / Debian
systemctl reload sshd    # AlmaLinux / Rocky

sshd -t hiçbir şey yazmıyorsa dosyada hata yoktur. sshd -T çıktısında permitrootlogin no ve passwordauthentication no görmelisiniz. Root ile yalnız anahtarla girmeye devam etmek istiyorsanız no yerine PermitRootLogin prohibit-password kullanabilirsiniz.

Güvenlik duvarı ve fail2ban

5. Güvenlik duvarını açın

Dikkat: Güvenlik duvarını etkinleştirmeden önce SSH portuna izin verin; aksi hâlde etkinleştirdiğiniz anda bağlantınız kesilir ve sunucuya SSH ile ulaşamazsınız. SSH portunu değiştirdiyseniz izni yeni port için verin.

Ubuntu (ufw): SSH ve web portlarına izin verip duvarı açın; diğer gelen bağlantılar varsayılan olarak reddedilir. Debian'da önce apt install -y ufw ile kurun.

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status verbose

AlmaLinux / Rocky (firewalld): Varsayılan public bölgesinde ssh hizmeti açıktır; web için HTTP ve HTTPS'i ekleyin. SSH portunu değiştirdiyseniz --add-port=2222/tcp ile yeni portu da ekleyin.

dnf install -y firewalld
systemctl enable --now firewalld
firewall-cmd --permanent --add-service=http --add-service=https
firewall-cmd --reload
firewall-cmd --list-all

Yalnız kullandığınız portları açın. Veritabanı (3306) gibi servisleri internete açmak yerine yalnız sunucu içinden ya da belirli bir IP adresinden erişilebilir bırakın.

6. fail2ban ile parola denemelerini engelleyin

fail2ban günlükleri izler ve kısa sürede çok sayıda başarısız giriş deneyen IP adreslerini bir süre engeller. Parolayla girişi kapatmış olsanız bile günlük kirliliğini ve gereksiz yükü azaltır.

# Ubuntu / Debian
apt install -y fail2ban python3-systemd

# AlmaLinux / Rocky (EPEL deposundan)
dnf install -y epel-release
dnf install -y fail2ban python3-systemd
[sshd]
enabled  = true
backend  = systemd
maxretry = 5
findtime = 10m
bantime  = 1h
systemctl enable fail2ban
systemctl restart fail2ban
fail2ban-client status sshd

Kendi IP adresinizi yanlışlıkla engellerseniz başka bir bağlantıdan girip fail2ban-client set sshd unbanip 198.51.100.7 komutuyla engeli kaldırabilirsiniz.

Otomatik güvenlik güncellemeleri

apt install -y unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades

Açılan soruya Yes (Evet) deyin. Ubuntu'da varsayılan ayar yalnız güvenlik güncellemelerini kurar.

dnf install -y dnf-automatic

/etc/dnf/automatic.conf dosyasında upgrade_type = security ve apply_updates = yes değerlerini ayarlayın, ardından zamanlayıcıyı açın: systemctl enable --now dnf-automatic.timer. İki yöntem de sunucuyu kendiliğinden yeniden başlatmaz; çekirdek güncellemelerinden sonra uygun bir saatte yeniden başlatmayı unutmayın.

Kendinizi dışarıda bıraktıysanız

Güvenlik duvarı veya SSH ayarı yüzünden bağlantınız kesildiyse destek talebi açın. Talebe sunucunun IP adresini ve son yaptığınız değişikliği (ör. ufw enable, PasswordAuthentication no) yazın. Windows sunucularda da aynı mantık geçerlidir: Windows Update'i güncel tutun, güçlü bir Administrator parolası kullanın ve Windows Defender Güvenlik Duvarı'nda Uzak Masaüstü kuralını mümkünse yalnız kendi IP adreslerinize sınırlayın.

Aradığınızı bulamadınız mı?

Destek ekibimiz yardımcı olsun; taleplere en geç 24 saat içinde ilk yanıt veriyoruz.

Destek talebi oluşturun
Bu makale işinize yaradı mı?

0 defa görüntülendi | 0 kişi faydalı buldu

0850 532 67 10 908505326710