Sunucu Güvenlik Sertleştirme: Kapsamlı Checklist
Linux sunucu güvenlik sertleştirme rehberi: SSH hardening, root girişini devre dışı bırakma, Fail2Ban, otomatik güncellemeler, firewall kuralları, gereksiz servisler ve dosya izinleri.
İçindekiler
Sunucu Güvenlik Sertleştirme: Kapsamlı Checklist
Yeni bir Linux sunucusu kurduğunuzda, varsayılan yapılandırma güvenlik açısından optimize edilmemiştir. Sunucu sertleştirme (hardening), saldırı yüzeyini azaltmak ve güvenlik açıklarını kapatmak için yapılan sistematik yapılandırma değişikliklerini kapsar. Bu rehber, REXE sunucularınız için kapsamlı bir güvenlik checklist'i sunar.
Neden Sunucu Sertleştirme?
Varsayılan Linux kurulumları:
- Gereksiz servisler çalışıyor olabilir
- SSH şifre ile erişime açık
- Root girişi etkin
- Firewall kuralları minimal
- Otomatik güncellemeler kapalı
Sertleştirme işlemlerini yaparken mevcut SSH bağlantınızı kapatmayın. Her adımdan sonra yeni bir terminal ile bağlantıyı test edin.
✅ Checklist 1: Sistem Güncellemeleri
# Sistemi güncelle
sudo apt update && sudo apt upgrade -y
# Güvenlik güncellemelerini otomatik kur
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
# Yapılandırmayı kontrol et
cat /etc/apt/apt.conf.d/50unattended-upgrades
# /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";
✅ Checklist 2: SSH Sertleştirme
# SSH yapılandırma dosyasını düzenle
sudo nano /etc/ssh/sshd_config
# SSH Güvenlik Ayarları
# Root girişini devre dışı bırak
PermitRootLogin no
# Şifre ile girişi devre dışı bırak (SSH anahtarı kurulduktan sonra)
PasswordAuthentication no
# Boş şifrelere izin verme
PermitEmptyPasswords no
# X11 yönlendirmeyi devre dışı bırak
X11Forwarding no
# Maksimum giriş denemesi
MaxAuthTries 3
# Maksimum eş zamanlı bağlantı
MaxSessions 5
# Giriş zaman aşımı (saniye)
LoginGraceTime 30
# Protokol sürümü
Protocol 2
# Belirli kullanıcılara izin ver
AllowUsers yonetici deploy
# SSH portunu değiştir (isteğe bağlı)
# Port 2222
# Güçlü şifreleme algoritmaları
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
KexAlgorithms curve25519-sha256,diffie-hellman-group14-sha256
# SSH yapılandırmasını test et
sudo sshd -t
# SSH servisini yeniden başlat
sudo systemctl restart sshd
✅ Checklist 3: Firewall Yapılandırması
# UFW kur ve yapılandır
sudo apt install ufw -y
# Varsayılan politikalar
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH'a izin ver (önce bunu yapın!)
sudo ufw allow ssh
# veya özel port için:
# sudo ufw allow 2222/tcp
# Web servisleri
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Belirli IP'den erişime izin ver
sudo ufw allow from 192.168.1.0/24 to any port 3306
# UFW'yi etkinleştir
sudo ufw enable
# Durumu kontrol et
sudo ufw status verbose
Gelişmiş UFW Kuralları
# Brute force koruması (SSH için rate limiting)
sudo ufw limit ssh
# Belirli IP'yi engelle
sudo ufw deny from 1.2.3.4
# Kural sil
sudo ufw delete allow 80/tcp
# Kuralları numaralandırılmış göster
sudo ufw status numbered
# Numaralı kuralı sil
sudo ufw delete 3
✅ Checklist 4: Fail2Ban Kurulumu
Fail2Ban, başarısız giriş denemelerini izler ve tekrarlayan saldırıları otomatik olarak engeller.
# Fail2Ban kur
sudo apt install fail2ban -y
# Yerel yapılandırma dosyası oluştur
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# /etc/fail2ban/jail.local
[DEFAULT]
# Engelleme süresi (saniye)
bantime = 3600
# Deneme penceresi (saniye)
findtime = 600
# Maksimum başarısız deneme
maxretry = 5
# E-posta bildirimi
destemail = admin@example.com
sender = fail2ban@example.com
mta = sendmail
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
[nginx-limit-req]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 10
# Fail2Ban'ı başlat
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
# Durumu kontrol et
sudo fail2ban-client status
sudo fail2ban-client status sshd
# Engellenen IP'leri görüntüle
sudo fail2ban-client status sshd | grep "Banned IP"
# IP'yi engelden çıkar
sudo fail2ban-client set sshd unbanip 1.2.3.4
✅ Checklist 5: Gereksiz Servisleri Devre Dışı Bırakma
# Çalışan servisleri listele
sudo systemctl list-units --type=service --state=running
# Gereksiz servisleri devre dışı bırak
sudo systemctl disable --now avahi-daemon
sudo systemctl disable --now cups
sudo systemctl disable --now bluetooth
sudo systemctl disable --now rpcbind
# Açık portları kontrol et
sudo ss -tlnp
sudo netstat -tlnp
# Hangi servisin hangi portu kullandığını bul
sudo lsof -i :80
✅ Checklist 6: Dosya Sistemi Güvenliği
# SUID/SGID dosyalarını bul
find / -perm /4000 -type f 2>/dev/null
find / -perm /2000 -type f 2>/dev/null
# Dünya tarafından yazılabilir dosyaları bul
find / -perm -0002 -type f 2>/dev/null
# Sahipsiz dosyaları bul
find / -nouser -o -nogroup 2>/dev/null
# /tmp dizinini güvenli bağla
# /etc/fstab'a ekle:
# tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev 0 0
# Kritik dosyaları değiştirilemez yap
sudo chattr +i /etc/passwd
sudo chattr +i /etc/shadow
sudo chattr +i /etc/gshadow
# Değiştirilemez özelliği kaldır
sudo chattr -i /etc/passwd
✅ Checklist 7: Kernel Güvenlik Parametreleri
# sysctl yapılandırmasını düzenle
sudo nano /etc/sysctl.d/99-security.conf
# Ağ güvenliği
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
# IPv6 yönlendirme
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
# Bellek koruması
kernel.randomize_va_space = 2
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
# Core dump devre dışı
fs.suid_dumpable = 0
# Değişiklikleri uygula
sudo sysctl -p /etc/sysctl.d/99-security.conf
✅ Checklist 8: Log İzleme
# Önemli log dosyaları
tail -f /var/log/auth.log # Kimlik doğrulama
tail -f /var/log/syslog # Sistem logları
tail -f /var/log/fail2ban.log # Fail2Ban
tail -f /var/log/ufw.log # Firewall
# Başarısız SSH girişlerini say
grep "Failed password" /var/log/auth.log | wc -l
# Son başarılı girişler
grep "Accepted" /var/log/auth.log | tail -20
# Logwatch kur (günlük özet)
sudo apt install logwatch -y
sudo logwatch --output stdout --format text --range today
✅ Checklist 9: Kullanıcı Hesabı Güvenliği
# Boş şifreli hesapları bul
awk -F: '($2 == "") {print}' /etc/shadow
# Şifre politikasını yapılandır
sudo apt install libpam-pwquality -y
sudo nano /etc/security/pwquality.conf
# Şifre kalitesi gereksinimleri
minlen = 12
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -1
minclass = 3
# Hesap kilitleme politikası
sudo nano /etc/pam.d/common-auth
# Ekle: auth required pam_tally2.so onerr=fail audit silent deny=5 unlock_time=900
✅ Checklist 10: Güvenlik Taraması
# Lynis ile güvenlik denetimi
sudo apt install lynis -y
sudo lynis audit system
# Rkhunter ile rootkit taraması
sudo apt install rkhunter -y
sudo rkhunter --update
sudo rkhunter --check
# ClamAV ile virüs taraması
sudo apt install clamav -y
sudo freshclam
sudo clamscan -r /home
Lynis güvenlik skoru 70+ olmalıdır. Düşük skor, iyileştirme gerektiren alanları gösterir. Düzenli olarak (aylık) çalıştırın.
Hızlı Referans Checklist
- Sistem güncellemeleri yapıldı
- Otomatik güvenlik güncellemeleri etkin
- SSH root girişi devre dışı
- SSH şifre girişi devre dışı (anahtar kuruldu)
- SSH MaxAuthTries 3 olarak ayarlandı
- UFW firewall etkin ve yapılandırıldı
- Fail2Ban kuruldu ve çalışıyor
- Gereksiz servisler devre dışı
- Kernel güvenlik parametreleri ayarlandı
- Log izleme yapılandırıldı
- Güçlü şifre politikası uygulandı
- Lynis güvenlik denetimi yapıldı
Sonuç
Sunucu sertleştirme tek seferlik bir işlem değil, sürekli bir süreçtir. Bu checklist'i yeni sunucu kurulumlarında uygulayın ve düzenli güvenlik denetimleri yapın. REXE sunucularınızı bu adımlarla önemli ölçüde daha güvenli hale getirebilirsiniz.
İlgili Makaleler
VDS Sunucuya SSH ile Bağlanma Rehberi (PuTTY & Terminal)
Linux VDS sunucunuza SSH ile bağlanma adımları: PuTTY, Terminal, anahtar tabanlı kimlik doğrulama, Path Panel firewall kuralı ve güvenlik ipuçları.
Windows VDS'e RDP ile Bağlanma ve Güvenlik Rehberi
Windows Server VDS sunucunuza Uzak Masaüstü (RDP) ile bağlanma adımları, NLA güvenlik ayarları, Path Panel firewall kuralı ve sorun giderme rehberi.
VDS Sunucu İşletim Sistemi Değiştirme Rehberi (Reinstall)
REXE panel üzerinden VDS sunucunuzun işletim sistemini değiştirme adımları, yedekleme önerileri, desteklenen Linux ve Windows Server sürümleri.