Linux Sunucu Güvenliği: Kapsamlı Sıkılaştırma Rehberi

Linux sunucu güvenliği, saldırı yüzeyini azaltmak ve savunmaları güçlendirmek için sistematik bir yaklaşım gerektirir. Bu rehberde, sunucunuzu...

Güvenlik
Linux Sunucu Güvenliği: Kapsamlı Sıkılaştırma Rehberi

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ı.

Celil Uyanikoglu

Yazan Celil Uyanikoglu

25 yıldır bilgi işlem piyasasında farklı dallarda uzmanlaşan bir Bilgisayar Mühendisi

Yorum

Henüz yorum yok.

Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.

Yorum yap

E-posta adresin yayınlanmaz. Yorumlar moderasyondan sonra yayınlanır.

Sırada

İlgili notlar