İçeriğe geç

GüvenlikSunucu sıkılaştırma

Yeni bir Linux sunucuyu ilk saatte güvenli hale getirin

Yeni bir Linux sunucu için ilk saat listesi: güncellemeler, sudo kullanıcısı, SSH anahtarı, kapalı root ve şifre girişi, güvenlik duvarı ve yedekleme.

  • Başlangıç
  • 30 dk okuma
  • Güncellendi

Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13, AlmaLinux 10, Rocky Linux 10

Bu sayfada
  1. Başlamadan önce
  2. 1. adım: Sistemi güncelleyin
  3. 2. adım: sudo yetkili bir kullanıcı oluşturun
  4. 3. adım: SSH anahtarıyla giriş yapın
  5. 4. adım: Şifre ve root girişlerini kapatın
  6. 5. adım: Bir güvenlik duvarı açın
  7. 6. adım: Otomatik güvenlik güncellemelerini açın
  8. 7. adım: Saati ve dinleyen servisleri kontrol edin
  9. 8. adım: Yedek alın ve geri yüklemeyi test edin
  10. Sık yapılan hatalar
  11. Sorun giderme
  12. Sonraki adımlar

Yeni bir sunucu açıldığı anda internetten erişilebilir olur ve otomatik tarayıcılar onu dakikalar içinde bulur. Bu sekiz adım, başka bir şey kurmadan önce en yaygın açıkları kapatır. Komutlar Ubuntu ve Debian içindir; AlmaLinux, Rocky Linux ve diğer RHEL ailesi sistemler için notlar eklenmiştir. alex yerine kullanıcı adınızı, 203.0.113.10 yerine sunucunuzun adresini yazın.

Başlamadan önce

  • Hoş geldiniz e-postasındaki bilgilerle root olarak giriş yapın; bkz. Linux sunucunuza SSH ile bağlanın.
  • Bir SSH veya güvenlik duvarı değişikliği ters giderse diye, hizmet sayfanızda görünüyorsa web konsolu gibi ikinci bir giriş yolunu hazır tutun.
  • Adımları sırasıyla uygulayın. Her biri bir kontrolle biter.
GörevUbuntu ve DebianRHEL ailesi
Güncellemeleri kurmaapt update ve apt full-upgradednf upgrade
Yönetici grubusudowheel
SSH'yi yeniden başlatmasystemctl restart sshsystemctl restart sshd
Güvenlik duvarıUFWfirewalld
Otomatik güvenlik güncellemeleriunattended-upgradesdnf-automatic

1. adım: Sistemi güncelleyin

Tüm güncellemeleri yüklenmiş bir sistemle başlayın:

Bash
apt update
apt full-upgrade

RHEL ailesi sistemlerde dnf upgrade çalıştırın. Çekirdek güncellendiyse yeniden başlatın (reboot) ve tekrar giriş yapın.

Doğrulama: yükseltmeyi yeniden çalıştırmak, kurulacak bir şey kalmadığını bildirir.

2. adım: sudo yetkili bir kullanıcı oluşturun

root olarak çalışmak her yazım hatasını sistem çapında bir risk haline getirir. Kendi kullanıcınızı oluşturun ve yönetici yetkisi verin:

Bash
adduser alex
usermod -aG sudo alex

RHEL ailesi sistemlerde: useradd -m alex, passwd alex ve usermod -aG wheel alex.

Doğrulama: ikinci bir terminalde ssh [email protected], ardından sudo whoami çıktısı root olur.

3. adım: SSH anahtarıyla giriş yapın

Kendi bilgisayarınızda bir anahtar oluşturun ve yeni kullanıcıya kopyalayın:

Bash
ssh-keygen -t ed25519
ssh-copy-id alex@203.0.113.10

Windows'ta ssh-copy-id yerine PowerShell yöntemi için SSH anahtarları rehberine bakın.

Doğrulama: ssh [email protected] sizi anahtarla içeri alır (hesap şifresini değil, anahtarın parolasını sorar).

4. adım: Şifre ve root girişlerini kapatın

SSH ayarlarınızı ayrı bir dosyaya yazın. OpenSSH her seçenek için okuduğu ilk değeri kullanır ve güncel Ubuntu, Debian ve RHEL ailesi sürümleri /etc/ssh/sshd_config.d/ içindeki dosyaları ana yapılandırmanın geri kalanından önce okur; bu yüzden adı alfabede önce gelen dosya geçerli olur:

Bash
sudo nano /etc/ssh/sshd_config.d/00-hardening.conf
Text
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes

Sözdizimini kontrol edin, gerçekten geçerli olan ayarları gösterin, ardından SSH'yi yeniden başlatın:

Bash
sudo sshd -t
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication'
sudo systemctl restart ssh

RHEL ailesi sistemlerde sshd'yi yeniden başlatın. Mevcut oturumunuzu açık tutun ve ikinci bir terminalde yeni bir girişi test edin.

Doğrulama: ssh [email protected] reddedilir, ssh [email protected] hâlâ çalışır.

5. adım: Bir güvenlik duvarı açın

Kendi bağlantınızı kesmemek için önce SSH'ye izin verin, sonra güvenlik duvarını açın. UFW Ubuntu'da kuruludur; Debian'da sudo apt install ufw ile kurun.

Bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enable

Yalnızca gerçekten çalıştırdığınız servislerin portlarını açın; henüz web sunucusu yoksa 80,443/tcp satırını atlayın. RHEL ailesi sistemlerde genellikle firewalld kullanılır ve SSH varsayılan bölgesinde izinlidir: bir servisi sudo firewall-cmd --permanent --add-service=https ile ekleyip sudo firewall-cmd --reload ile uygulayın.

Doğrulama: sudo ufw status verbose kurallarınızı listeler ve yeni bir SSH girişi hâlâ çalışır. Daha fazla seçenek: UFW güvenlik duvarı.

6. adım: Otomatik güvenlik güncellemelerini açın

Ubuntu unattended-upgrades paketini varsayılan olarak kurar ve güvenlik güncellemelerini otomatik uygular. Debian'da önce kurun. İkisinde de etkin olduğunu doğrulayın:

Bash
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

RHEL ailesi sistemlerde dnf-automatic paketini kurun, /etc/dnf/automatic.conf içinde apply_updates = yes ayarlayın ve sudo systemctl enable --now dnf-automatic.timer ile etkinleştirin. Yeni bir çekirdek gibi bazı güncellemeler yalnızca yeniden başlatmadan sonra etkili olur. Ayrıntılar: otomatik güncellemeler.

Doğrulama: sudo unattended-upgrade --dry-run --debug hatasız çalışır.

7. adım: Saati ve dinleyen servisleri kontrol edin

Kayıtlar, sertifikalar ve iki aşamalı doğrulama kodları doğru bir saate bağlıdır; dinleyen her servis de bir kapıdır:

Bash
timedatectl
sudo ss -tulpn

timedatectl çıktısı System clock synchronized: yes göstermelidir. ss -tulpn dinleyen her servisi listeler; ihtiyacınız olmayanları sudo systemctl disable --now ve servis adıyla durdurup devre dışı bırakın. Şifre kabul etmesi gereken servisler için Fail2ban veya CrowdSec kullanmayı düşünün.

8. adım: Yedek alın ve geri yüklemeyi test edin

Bir yedek ancak geri yüklendiğinde kanıtlanmış olur. 3-2-1 fikrini izleyin: verilerinizin üç kopyası, iki farklı depolama türünde, biri sunucudan uzakta. Planınız sunuyorsa riskli değişikliklerden önce snapshot alın, veritabanı ve dosya yedeklerini başka bir konuma zamanlayın ve düzenli olarak birini bir test sistemine geri yükleyin. Bkz. yedekleme stratejisi.

Sık yapılan hatalar

  • Kendinizi dışarıda bırakmak. Her SSH veya güvenlik duvarı değişikliğini ilkini kapatmadan önce ikinci bir oturumda test edin.
  • Şifreyle girişi açık bırakmak. Otomatik betikler internetteki her sunucuda yaygın şifreleri dener.
  • Her şeyi root olarak çalıştırmak. Her uygulamaya yalnızca ihtiyaç duyduğu yetkilere sahip kendi kullanıcısını verin.
  • Test portlarını açık bırakmak. İşiniz bittiğinde geçici portları ve yönetim panellerini kapatın ya da IP adresinizle sınırlayın.
  • Test edilmemiş yedekler. Geri yüklenemeyen bir yedek sizi korumaz.

Sorun giderme

4. adımdan sonra Permission denied (publickey). Anahtar kullanıcının ~/.ssh/authorized_keys dosyasında değil ya da izinler yanlış. Hâlâ açık olan oturumunuzla düzeltin; bkz. SSH bağlantı sorunları.

ufw enable sonrasında SSH oturumu dondu. SSH'ye izin verilmemişti. Konsolu kullanın ve güvenlik duvarı değişikliğinden sonra erişimi kaybetmek rehberini izleyin.

sudo: alex is not in the sudoers file. Kullanıcı sudo (veya wheel) grubunda değil. root olarak usermod -aG sudo alex çalıştırın ve yeniden giriş yapın.

Sonraki adımlar

Sık sorulan sorular

SSH portunu değiştirmeli miyim?

Kayıtlarınızdaki otomatik gürültüyü azaltır, ama hedefli bir saldırganı durdurmaz. Sunucuyu yalnızca anahtarla kimlik doğrulama, kapalı root girişi ve bir güvenlik duvarı korur. Portu değiştirirseniz önce yeni porta güvenlik duvarında izin verin.

Yalnızca SSH ve bir web sunucusu çalışıyorsa güvenlik duvarına ihtiyacım var mı?

Evet. Varsayılan olarak reddeden bir güvenlik duvarı sizi sonradan kuracağınız veya unuttuğunuz servislerden korur ve erişilebilen şeyleri seçtiğiniz portlarla sınırlı tutar.

SSH anahtarımı kaybedersem ne olur?

Hizmet sayfanızda görünüyorsa web konsoluyla giriş yapın ya da bir destek bildirimi açın. Ardından yeni bir açık anahtar ekleyin ve kaybolanı authorized_keys dosyasından kaldırın.

Hangi Linux dağıtımını seçmeliyim?

Zaten bildiğiniz birini ya da Ubuntu LTS, Debian veya AlmaLinux gibi uzun destekli bir sürümü. Sipariş formu her plan için kullanılabilen imajları listeler.

Sunucuma kimlerin giriş yapmaya çalıştığını nasıl görürüm?

SSH servisinin kaydını okuyun: Ubuntu ve Debian'da journalctl -u ssh, RHEL ailesi sistemlerde journalctl -u sshd. Birçok adresten gelen başarısız denemeler olağan arka plan gürültüsüdür; bunun yerine tanımadığınız başarılı girişlere dikkat edin.

Sunucumu ne sıklıkla güncellemeliyim?

Güvenlik düzeltmelerini çıktıkları anda otomatik güncellemeler kursun; yeniden başlatmalar ve diğer güncellemeler için örneğin ayda bir düzenli bir bakım aralığı planlayın. Büyük yükseltmelerden önce snapshot veya yedek alın.

Şifre Oluştur

Lütfen onaylayın