Komutları üretim sunucusunda çalıştırmadan önce yedek alın ve mümkünse bir test ortamında deneyin. Yönetim erişiminizi (SSH, panel) kaybetmemek için ayar değişikliklerinde açık bir ikinci oturum bulundurun.
Bu rehberde ne yapacağız?
Bu rehberde yeni kurulmuş bir Linux sunucuyu canlıya almadan önce Linux sunucu sertleştirme adımlarından geçireceksiniz: güncelleme, yönetici kullanıcı, SSH, güvenlik duvarı, otomatik güvenlik yamaları, zaman eşitleme, açık servis denetimi ve birkaç güvenli çekirdek ayarı. Hosting ve uygulama sunucusu hazırlayan yöneticiler içindir.
Tahmini süre: 40-60 dakika. SSH ve güvenlik duvarı değişikliklerinde erişim kaybına karşı ikinci bir oturumu açık tutun.
Gereksinimler
- Yeni kurulmuş Debian/Ubuntu veya AlmaLinux/Rocky sunucu ve root ya da sudo yetkisi
- Sunucuya konsoldan (bulut paneli veya IPMI) erişim imkanı
- Hangi servislerin (web, veritabanı, posta) çalışacağı bilgisi; açılacak portları buna göre planlayın
- Canlı sunucuda değişiklik yapıyorsanız önce yedek alın
Adım adım Linux sunucu sertleştirme
1. Sistemi güncelleyin
# Debian/Ubuntu
sudo apt update && sudo apt upgrade
# AlmaLinux/Rocky
sudo dnf upgradeÇekirdek güncellendiyse bakım penceresinde sunucuyu yeniden başlatın.
2. Yönetici kullanıcı oluşturun
Günlük yönetim için root yerine ayrı bir kullanıcı kullanın. Ayrıntılar için kullanıcı ve sudo yönetimi konusuna bakabilirsiniz.
# Debian/Ubuntu
sudo adduser yonetici
sudo usermod -aG sudo yonetici
# AlmaLinux/Rocky
sudo useradd -m yonetici && sudo passwd yonetici
sudo usermod -aG wheel yonetici3. SSH’ı sertleştirin
Yönetici kullanıcıya anahtarınızı ekledikten ve yeni oturumda girişi doğruladıktan sonra root ve parola girişini kapatın. Ayarı ayrı bir dosyaya yazın ve sözdizimini denetleyin; mevcut oturumu kapatmayın.
sudo tee /etc/ssh/sshd_config.d/01-guvenlik.conf > /dev/null <<'EOF'
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
MaxAuthTries 3
EOF
sudo sshd -t && sudo systemctl reload sshRHEL tabanlı sistemlerde servis adı sshd’dir. sshd_config.d içinde ilk okunan değer geçerli olduğundan dosya adını düşük numarayla başlatın ve etkin değerleri sshd -T ile doğrulayın.
4. Güvenlik duvarını yapılandırın
Varsayılan olarak gelen bağlantıları reddedip yalnızca gerekenlere izin verin. Uyarı: SSH portuna izin vermeden güvenlik duvarını etkinleştirmeyin, aksi halde erişiminiz kesilir.
# Debian/Ubuntu (UFW; Debian’da önce kurulmalıdır)
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose# AlmaLinux/Rocky (firewalld)
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-all5. Otomatik güvenlik güncellemelerini açın
# Debian/Ubuntu
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
# AlmaLinux/Rocky
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timerRHEL tabanlı sistemlerde /etc/dnf/automatic.conf dosyasında apply_updates ayarının istediğiniz biçimde olduğunu kontrol edin; yalnızca güvenlik güncellemelerini uygulamak için dosyadaki upgrade_type seçeneğine bakın. Otomatik güncellemelerin üretimde servislerinizi etkilememesi için uygulamaya özel kararınızı verin.
6. Zaman eşitlemesini doğrulayın
Doğru saat, günlük analizi ve sertifika doğrulaması için gereklidir.
sudo timedatectl set-timezone Europe/Istanbul
timedatectl statusÇıktıda System clock synchronized: yes görünmelidir. Görünmüyorsa chrony (RHEL) veya systemd-timesyncd (Debian/Ubuntu) servisini kontrol edin.
7. Açık portları ve çalışan servisleri gözden geçirin
sudo ss -tulpn
systemctl list-unit-files --state=enabledGerekmeyen servisleri durdurup devre dışı bırakın: sudo systemctl disable --now servis-adi. Bir servisin ne işe yaradığından emin değilseniz kapatmadan önce araştırın.
8. Güvenli çekirdek ağ ayarlarını uygulayın
Aşağıdaki ayarlar yaygın ve genellikle güvenlidir. Yönlendirici veya VPN sunucusu gibi özel görevi olan makinede bazıları uygun olmayabilir; uygulamadan önce rolünüzü düşünün.
sudo tee /etc/sysctl.d/99-guvenlik.conf > /dev/null <<'EOF'
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
EOF
sudo sysctl --systemDoğrulama
sudo sshd -T | grep -Ei 'permitrootlogin|passwordauthentication'
sudo ufw status verbose
# RHEL tabanlı sistemlerde: sudo firewall-cmd --list-all
sudo ss -tulpn
sysctl net.ipv4.tcp_syncookies
timedatectl status
systemctl list-timers | grep -Ei 'apt|dnf'- SSH’ta root ve parola girişi kapalı olmalı
- Güvenlik duvarı etkin ve yalnızca planlanan portlara izin veriyor olmalı
- ss çıktısında beklenmedik dinleyen servis bulunmamalı
- Otomatik güncelleme servisi/zamanlayıcısı etkin olmalı
Sık karşılaşılan sorunlar
- Güvenlik duvarı sonrası SSH kesildi: Konsoldan girip kuralı ekleyin (ufw allow 22/tcp) veya güvenlik duvarını geçici kapatın.
- SSH ayarı sonrası giriş yapılamıyor: Anahtarın doğru kullanıcıda olduğunu ve sshd -t çıktısını kontrol edin; konsol erişimiyle düzeltin.
- Otomatik güncelleme servisleri yeniden başlattı: Kritik servisler için bakım penceresi tanımlayın veya yalnızca güvenlik güncellemelerini otomatikleştirin.
- sysctl ayarı uygulanmıyor: Dosya adının .conf ile bittiğini ve sysctl --system çıktısındaki hataları kontrol edin.
- Saat senkron değil: Ağ çıkışında NTP (UDP 123) engellenmiş olabilir; zaman servisinin durumunu inceleyin.
Güvenlik ve bakım notları
- Sertleştirme sonrası yapılandırmayı belgeleyin ve yedekleyin
- En az yetki ilkesine uyun; paylaşılan hesap kullanmayın
- Düzenli güncelleme, günlük inceleme ve yedek geri yükleme testi yapın
- Fail2ban benzeri bir kaba kuvvet koruması ekleyin
- Gereksiz yazılım kurmayın; her paket saldırı yüzeyini büyütür
- SELinux veya AppArmor’ı etkin tutun
Sık sorulan sorular
Sertleştirme için hazır bir standart var mı?
CIS Benchmarks gibi yayımlanmış kılavuzlar ayrıntılı kontrol listeleri sunar. Bu rehber temel adımları kapsar; kurumsal gereksinimlerde ilgili kılavuzu ayrıca inceleyin.
Otomatik güncellemeyi her sunucuda açmalı mıyım?
Güvenlik güncellemeleri için çoğu sunucuda açmak iyi bir yaklaşımdır. Kritik üretim sunucularında ise önce test ortamında denemek ve bakım pencereleri belirlemek daha güvenlidir.
Güvenlik duvarı varken Fail2ban’a gerek var mı?
Evet. Güvenlik duvarı hangi portların erişilebileceğini belirler; Fail2ban ise açık olan SSH gibi servislere yönelik tekrarlı başarısız girişleri engeller. İkisi birbirini tamamlar.
İlgili sözlük terimleri
Bu kategorideki diğer rehberler
- Linux’ta disk doluluk sorunu giderme (df, du, inode, silinmiş-açık dosyalar)Linux’ta disk doluluk sorununu adım adım giderin: df ve du ile büyük dizinleri bulun, inode tükenmesini ve silinmiş ama açık dosyaları tespit edip güvenle alan açın.
- auditd ile denetim kaydı: kritik dosya ve komutları izlemeauditd ile Linux sunucuda denetim kaydı tutun: kritik dosya değişikliklerini ve komutları izleyen kurallar yazın, ausearch ve aureport ile kayıtları sorgulayın.
- systemd servis birimi yazma ve sertleştirme seçenekleriKendi uygulamanız için systemd servis birimi yazın: Unit, Service ve Install bölümleri, otomatik yeniden başlatma, ortam dosyası ve sertleştirme seçenekleri.
- LVM ile disk yönetimi: birim oluşturma, büyütme ve anlık görüntüLVM ile disk yönetimini öğrenin: fiziksel birim, birim grubu ve mantıksal birim oluşturma, çalışırken büyütme, yeni disk ekleme ve anlık görüntü (snapshot) alma.