Linux Sunucu Güvenliği: 15 Temel Önlem
Linux sunucu güvenliği için SSH anahtarı, Fail2Ban, firewall, otomatik güncelleme ve root login kapatma gibi 15 temel önlemi adım adım anlatıyoruz.
Linux Sunucu Güvenliği Neden Kritik?
İnternete açık bir Linux sunucusu, botlar ve kötü niyetli aktörler tarafından sürekli taranmaktadır. Güvenlik açıkları; veri hırsızlığına, fidye yazılımı saldırılarına, kriptomine botnet'lerine veya e-posta spam gönderimlerine yol açabilir. Aşağıdaki 15 adım, sunucunuzun güvenliğini önemli ölçüde artıracaktır.
1. SSH Anahtar Tabanlı Kimlik Doğrulama
Parola tabanlı SSH yerine kriptografik anahtar çifti kullanmak çok daha güvenlidir. Kaba kuvvet (brute force) saldırılarını pratik olarak imkansız kılar.
# Yerel makinenizde SSH anahtar çifti oluşturun
ssh-keygen -t ed25519 -C "sunucu@email.com"
# Public key'i sunucuya kopyalayın
ssh-copy-id -i ~/.ssh/id_ed25519.pub kullanici@SUNUCU_IP
# Ardından parola girişini devre dışı bırakın
sudo nano /etc/ssh/sshd_config
# PasswordAuthentication no
# PubkeyAuthentication yes
sudo systemctl restart sshd
2. SSH Portunu Değiştirme
Varsayılan 22 numaralı SSH portu sürekli taranır. Farklı bir port kullanmak otomatik saldırıların büyük çoğunluğunu önler.
sudo nano /etc/ssh/sshd_config
# Port 22 → Port 2222 (veya başka bir port)
# Firewall'da yeni portu açın
sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp
sudo systemctl restart sshd
3. Root Login'i Kapatma
Root hesabına doğrudan SSH bağlantısı kesinlikle kapatılmalıdır. Önce sudo yetkili bir kullanıcı oluşturun:
adduser guvenli_kullanici
usermod -aG sudo guvenli_kullanici
# Root login'i kapat
sudo nano /etc/ssh/sshd_config
# PermitRootLogin no
sudo systemctl restart sshd
4. Fail2Ban Kurulumu
Fail2Ban, başarısız giriş denemelerini izleyerek belirli bir eşiği aşan IP adreslerini otomatik engeller.
sudo apt install fail2ban # Ubuntu/Debian
sudo dnf install fail2ban # AlmaLinux
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
ignoreip = 127.0.0.1/8 ::1 KENDI_IP_ADRESINIZ
[sshd]
enabled = true
port = 2222 # SSH portunuzu belirtin
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo fail2ban-client status sshd
5. UFW Firewall (Ubuntu) Yapılandırması
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
sudo ufw status verbose
6. Firewalld (AlmaLinux/RHEL) Yapılandırması
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --remove-service=ssh # 22 portunu kaldır
sudo firewall-cmd --reload
7. Otomatik Güvenlik Güncellemeleri
# Ubuntu/Debian
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
# "Yes" seçeneğini seçin
# AlmaLinux
sudo dnf install dnf-automatic
sudo nano /etc/dnf/automatic.conf
# apply_updates = yes
sudo systemctl enable --now dnf-automatic.timer
8. Gereksiz Servisleri Kapatma
# Çalışan servisleri listele
sudo systemctl list-units --type=service --state=running
# Gereksiz servisleri kapat
sudo systemctl disable --now avahi-daemon
sudo systemctl disable --now cups
sudo systemctl disable --now bluetooth
9. SSH İki Faktörlü Doğrulama (2FA)
sudo apt install libpam-google-authenticator
# Kullanıcı olarak çalıştırın
google-authenticator
# Y seçeneklerini onaylayın ve QR kodu telefona tarayın
sudo nano /etc/pam.d/sshd
# Şu satırı ekleyin:
# auth required pam_google_authenticator.so
sudo nano /etc/ssh/sshd_config
# ChallengeResponseAuthentication yes
# AuthenticationMethods publickey,keyboard-interactive
sudo systemctl restart sshd
10. Lynis ile Güvenlik Denetimi
sudo apt install lynis # veya dnf install lynis
sudo lynis audit system
# Rapor: /var/log/lynis.log
11. rkhunter ve chkrootkit
sudo apt install rkhunter chkrootkit
sudo rkhunter --update
sudo rkhunter --check
sudo chkrootkit
12. /tmp Dizinini noexec ile Bağlama
sudo nano /etc/fstab
# Şu satırı düzenleyin:
# tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev 0 0
sudo mount -o remount /tmp
13. Sistem Loglarını İzleme
# Başarısız SSH girişlerini görüntüle
sudo grep "Failed password" /var/log/auth.log
# Son giriş denemeleri
sudo lastb | head -20
# Canlı log izleme
sudo journalctl -f -u sshd
14. ModSecurity WAF (Apache/Nginx)
# Apache için ModSecurity
sudo apt install libapache2-mod-security2
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
sudo nano /etc/modsecurity/modsecurity.conf
# SecRuleEngine DetectionOnly → SecRuleEngine On
# OWASP Core Rule Set
sudo apt install modsecurity-crs
sudo systemctl restart apache2
15. Kernel Parametrelerini Sertleştirme
sudo nano /etc/sysctl.d/99-security.conf
# IP spoofing koruması
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# ICMP yönlendirme reddi
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# SYN flood koruması
net.ipv4.tcp_syncookies = 1
# Ping yanıtını kapat
net.ipv4.icmp_echo_ignore_broadcasts = 1
# IP yönlendirmeyi kapat (router değilseniz)
net.ipv4.ip_forward = 0
sudo sysctl -p /etc/sysctl.d/99-security.conf
Özet Güvenlik Kontrol Listesi
- SSH anahtar doğrulaması aktif, parola girişi kapalı
- SSH varsayılan 22 portu değiştirildi
- Root SSH girişi kapalı
- Fail2Ban kurulu ve aktif
- Firewall (UFW/firewalld) yapılandırıldı
- Otomatik güvenlik güncellemeleri aktif
- Gereksiz servisler kapatıldı
- SSH 2FA aktif
- Lynis denetimi yapıldı ve öneriler uygulandı
- Sistem logları izleniyor
Sonuç
Sunucu güvenliği tek seferlik bir işlem değil, sürekli bir süreçtir. Bu 15 adımı uygulamak, sunucunuzun güvenliğini temel düzeyde sağlam hale getirir. Ancak düzenli log incelemesi, güvenlik güncellemelerinin takibi ve periyodik denetimler de güvenlik rutinizin parçası olmalıdır.
Yorumlar
Henüz yorum yok. İlk yorumu siz yapın!