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
- Başlamadan önce
- 1. adım: Sistemi güncelleyin
- 2. adım: sudo yetkili bir kullanıcı oluşturun
- 3. adım: SSH anahtarıyla giriş yapın
- 4. adım: Şifre ve root girişlerini kapatın
- 5. adım: Bir güvenlik duvarı açın
- 6. adım: Otomatik güvenlik güncellemelerini açın
- 7. adım: Saati ve dinleyen servisleri kontrol edin
- 8. adım: Yedek alın ve geri yüklemeyi test edin
- Sık yapılan hatalar
- Sorun giderme
- 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
rootolarak 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örev | Ubuntu ve Debian | RHEL ailesi |
|---|---|---|
| Güncellemeleri kurma | apt update ve apt full-upgrade | dnf upgrade |
| Yönetici grubu | sudo | wheel |
| SSH'yi yeniden başlatma | systemctl restart ssh | systemctl restart sshd |
| Güvenlik duvarı | UFW | firewalld |
| Otomatik güvenlik güncellemeleri | unattended-upgrades | dnf-automatic |
1. adım: Sistemi güncelleyin
Tüm güncellemeleri yüklenmiş bir sistemle başlayın:
apt update
apt full-upgradeRHEL 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:
adduser alex
usermod -aG sudo alexRHEL 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:
ssh-keygen -t ed25519
ssh-copy-id alex@203.0.113.10Windows'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:
sudo nano /etc/ssh/sshd_config.d/00-hardening.confPermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yesSözdizimini kontrol edin, gerçekten geçerli olan ayarları gösterin, ardından SSH'yi yeniden başlatın:
sudo sshd -t
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication'
sudo systemctl restart sshRHEL 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.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enableYalnı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:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgradesRHEL 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:
timedatectl
sudo ss -tulpntimedatectl çı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
- SSH'de bir adım öteye gidin: SSH sıkılaştırma.
- Tekrarlanan giriş denemelerini engelleyin: Fail2ban ve CrowdSec.
- Alan adınızı sunucuya yönlendirin: alan adını sunucunuza yönlendirin.
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.
Kaynaklar
- ubuntu.com/server/docs/how-to/security/openssh-server
- discourse.ubuntu.com/t/sshd-now-uses-socket-based-activation-ubuntu…
- man.openbsd.org/sshd_config
- coolify.io/docs/knowledge-base/server/openssh
- manpages.ubuntu.com/manpages/noble/man8/ufw.8.html
- wiki.debian.org/UnattendedUpgrades
- ubuntu.com/server/docs/how-to/software/automatic-updates
- firewalld.org/documentation
- freedesktop.org/software/systemd/man/latest/timedatectl.html