Linux sunucu güvenliği, saldırı yüzeyini azaltmak ve savunmaları güçlendirmek için sistematik bir yaklaşım gerektirir. Bu rehberde, sunucunuzu sıkılaştırmak için izlemeniz gereken adımları kapsamlı şekilde ele alacağız.
Sıkılaştırma Nedir?
Sıkılaştırma (hardening), sistemin saldırı yüzeyini azaltarak güvenlik risklerini minimize etme sürecidir. Gereksiz bileşenleri kaldırarak, yapılandırmaları güçlendirerek ve güvenlik standartlarına uyum sağlayarak gerçekleştirilir.
Saldırı Yüzeyini Azaltma
Gereksiz Paketleri Kaldırın
Yüklü paketleri listeleyin:
dpkg --list rpm -qa
Kullanılmayanları kaldırın:
sudo apt remove --purge paket-adi sudo dnf remove paket-adi
Gereksiz Servisleri Devre Dışı Bırakın
Çalışan servisleri listeleyin:
systemctl list-units --type=service --state=running
Gereksizleri durdurun ve devre dışı bırakın:
sudo systemctl stop servis sudo systemctl disable servis
Tamamen engellemek için mask kullanın:
sudo systemctl mask servis
Kullanıcı ve Erişim Yönetimi
Root Girişini Devre Dışı Bırakın
/etc/ssh/sshd_config dosyasında:
PermitRootLogin no
Root yerine sudo kullanın.
Kullanılmayan Hesapları Kilitleyin
passwd -l kullanici_adi
Hesapları düzenli denetleyin:
cat /etc/passwd | grep -v nologin
Güçlü Parola Politikası
/etc/security/pwquality.conf:
minlen = 12 minclass = 3 dcredit = -1 ucredit = -1 lcredit = -1
Parola geçmişi için /etc/pam.d/common-password:
password required pam_pwhistory.so remember=5
Parola yaşlanma:
sudo chage -M 90 -W 7 kullanici
Sudo Yetkilerini Sınırlayın
visudo ile düzenleyin. Minimum yetki prensibi:
kullanici ALL=(ALL) /usr/bin/systemctl restart nginx
SSH Sıkılaştırma
SSH sunucu güvenliği kritiktir. /etc/ssh/sshd_config:
# Root girişini kapat PermitRootLogin no
# Parola ile girişi kapat (anahtar kullan) PasswordAuthentication no
# Boş parola engelle PermitEmptyPasswords no
# X11 forwarding kapat X11Forwarding no
# Sadece belirli kullanıcılara izin AllowUsers admin deploy
# Maksimum deneme MaxAuthTries 3
# Oturum zaman aşımı ClientAliveInterval 300 ClientAliveCountMax 2
# Protokol 2 Protocol 2
Port Değişikliği (opsiyonel):
Port 2222
Servisi yeniden başlatın:
sudo systemctl restart sshd
SSH Anahtar Güvenliği
Güçlü anahtar oluşturun:
ssh-keygen -t ed25519
Anahtar izinleri:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Fail2Ban Kurulumu
SSH brute force koruması:
sudo apt install fail2ban
/etc/fail2ban/jail.local:
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 86400 findtime = 600
Güvenlik Duvarı
ufw ile Temel Kurulum
# Varsayılanları ayarla sudo ufw default deny incoming sudo ufw default allow outgoing
# Gerekli portları aç sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp
# Rate limiting sudo ufw limit ssh
# Etkinleştir sudo ufw enable
IP Kısıtlaması
SSH'yi sadece belirli IP'lerden:
sudo ufw allow from 192.168.1.0/24 to any port 22
Sistem Güncellemeleri
Düzenli Güncelleme
sudo apt update && sudo apt upgrade -y
Otomatik Güvenlik Güncellemeleri
sudo apt install unattended-upgrades sudo dpkg-reconfigure unattended-upgrades
/etc/apt/apt.conf.d/50unattended-upgrades:
Unattended-Upgrade::Automatic-Reboot "false";
Dosya Sistemi Güvenliği
Kritik Dosya İzinleri
chmod 600 /etc/shadow chmod 600 /etc/gshadow chmod 644 /etc/passwd chmod 644 /etc/group
SUID/SGID Dosyaları Denetleme
find / -perm -4000 -type f 2>/dev/null find / -perm -2000 -type f 2>/dev/null
Gereksiz SUID bitlerini kaldırın:
chmod u-s /path/to/file
/tmp Bölümü Güvenliği
/etc/fstab'da:
tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev 0 0
Çekirdek Sıkılaştırma
/etc/sysctl.conf veya /etc/sysctl.d/99-security.conf:
# IP forwarding kapat net.ipv4.ip_forward = 0
# ICMP redirect'leri reddet net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0
# Source routing kapat net.ipv4.conf.all.accept_source_route = 0
# SYN flood koruması net.ipv4.tcp_syncookies = 1
# Spoofed packet koruması net.ipv4.conf.all.rp_filter = 1
# ICMP broadcast'e yanıt verme net.ipv4.icmp_echo_ignore_broadcasts = 1
# Core dump kısıtla fs.suid_dumpable = 0
Uygula:
sudo sysctl -p
SELinux / AppArmor
SELinux (RHEL/CentOS)
Durumu kontrol:
getenforce
Enforcing moda geç:
sudo setenforce 1
Kalıcı ayar (/etc/selinux/config):
SELINUX=enforcing
AppArmor (Ubuntu/Debian)
Durumu kontrol:
sudo aa-status
Profil oluşturma:
sudo aa-genprof /path/to/program
Denetim ve İzleme
auditd Kurulumu
sudo apt install auditd
Kritik dosyaları izle (/etc/audit/rules.d/audit.rules):
-w /etc/passwd -p wa -k passwd_changes -w /etc/shadow -p wa -k shadow_changes -w /etc/sudoers -p wa -k sudoers_changes -w /var/log/auth.log -p wa -k auth_log
Log İzleme
Düzenli log kontrolü:
tail -f /var/log/auth.log journalctl -f
Logwatch kurulumu:
sudo apt install logwatch sudo logwatch --detail High
Güvenlik Taraması
Lynis
Kapsamlı güvenlik denetimi:
sudo apt install lynis sudo lynis audit system
Raporları inceleyin ve önerileri uygulayın.
CIS Benchmark Kontrolü
OpenSCAP ile CIS benchmark taraması:
sudo apt install openscap-scanner oscap xccdf eval --profile cis /path/to/benchmark.xml
Rootkit Taraması
sudo apt install rkhunter chkrootkit sudo rkhunter --check sudo chkrootkit
Ağ Güvenliği
Açık Portları Kontrol
ss -tuln netstat -tuln
Gereksiz portları kapatın veya güvenlik duvarıyla engelleyin.
Şifreleme
Veri aktarımında şifreleme kullanın:
- HTTPS (TLS 1.2+)
- SFTP/SCP (SSH)
- VPN (özel ağlar arası)
Yedekleme
3-2-1 Kuralı
3 kopya, 2 farklı ortam, 1 uzak konum.
Düzenli yedekleme yapın ve test edin:
# rsync ile yedekleme rsync -avz /important/data backup-server:/backup/
# Yedekleri test edin sudo tar -tvf backup.tar.gz
Fiziksel Güvenlik
BIOS parolası ayarlayın USB boot'u devre dışı bırakın Sunucu odasına erişimi kısıtlayın Disk şifreleme (LUKS) kullanın
Güvenlik Kontrol Listesi
- [ ] Gereksiz paketler ve servisler kaldırıldı
- [ ] Root SSH girişi kapalı
- [ ] Parola yerine SSH anahtarı kullanılıyor
- [ ] Fail2Ban aktif
- [ ] Güvenlik duvarı yapılandırıldı
- [ ] Otomatik güvenlik güncellemeleri açık
- [ ] Güçlü parola politikası uygulanıyor
- [ ] Kritik dosya izinleri kontrol edildi
- [ ] SELinux/AppArmor etkin
- [ ] Düzenli log izleme yapılıyor
- [ ] Yedekleme planı mevcut ve test edilmiş
- [ ] Lynis/CIS benchmark taraması yapıldı
Sonuç
Sunucu güvenliği tek seferlik bir iş değil, sürekli bir süreçtir. Bu rehberdeki adımları uygulayın, düzenli denetim yapın ve güncel tehditleri takip edin.
Minimum yetki prensibini uygulayın, saldırı yüzeyini azaltın, katmanlı güvenlik oluşturun. Güvenlik, en zayıf halkası kadar güçlüdür.
Düzenli güncelleme, log izleme ve güvenlik taramaları rutininizin parçası olmalı.
Henüz yorum yok.
Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.