Linux Sunucunuzu Güvenlik Açıklarına Karşı Nasıl Koruyabilirsiniz: Tam Bir Sertileştirme Kılavuzu
Linux, yaygın olarak mevcut olan en güvenli işletim sistemlerinden biri olarak kabul edilir — ancak “varsayılan olarak güvenli” “sonsuza kadar güvenli” anlamına gelmez. Yanlış yapılandırılmış SSH erişimi, yamalanmamış paketler, aşırı izinli dosya izinleri ve gereksiz açık portlar güçlü bir sunucuyu kolay bir hedefe dönüştürebilir. Kişisel bir proje veya üretim ortamı çalıştırıyor olsanız da, katmanlı bir güvenlik stratejisi uygulamak isteğe bağlı değildir — bu gereklidir.
Bu kılavuz, gerçek komutlar, yapılandırma örnekleri ve uzman önerileriyle birlikte on savaş-test edilmiş Linux sunucusu sertleştirme tekniğinde sizi yönlendirir. Altyapınız AlexHost’ta VPS Hosting veya Dedicated Servers üzerinde çalışıyorsa, bu uygulamalar baştan itibaren esnek, saldırıya dirençli bir ortam oluşturmanıza yardımcı olacaktır.
Linux Server Güvenliği Neden Sürekli Dikkat Gerektirir
Tehdit ortamı günlük olarak gelişir. Otomatik botlar, interneti sürekli olarak açık SSH portları, yamalanmamış CVE’ler ve varsayılan kimlik bilgileri için tarar. Tek bir gözden kaçan yapılandırma, yetkisiz erişim, veri hırsızlığı, fidye yazılımı dağıtımı veya sunucunuzun bir botnet’e dahil edilmesiyle sonuçlanabilir.
İyi haber: çoğu başarılı saldırı bilinen, önlenebilir güvenlik açıklarından yararlanır. Tutarlı sertleştirme, saldırı yüzeyinizin büyük çoğunluğunu ortadan kaldırır. O kaleyi inşa edelim.
1. Sistem Paketlerinizi Güncel Tutun
Güncel olmayan yazılım, Linux ortamlarında en çok istismar edilen saldırı vektörüdür. Satıcılar kritik güvenlik açıkları için düzenli olarak yamalar yayınlarlar — bunları uygulamıyorsanız, bilinen kapıları açık bırakıyorsunuz demektir.
Debian / Ubuntu:
sudo apt update
sudo apt upgrade -yCentOS / RHEL / AlmaLinux / Rocky Linux:
sudo dnf update -y
# or for older systems:
sudo yum update -yPro ipucu: Otomatik güvenlik güncellemelerini etkinleştirerek, yama yayınlanması ile dağıtılması arasındaki süreyi en aza indirin.
Debian/Ubuntu — unattended upgrades etkinleştirin:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgradesEn az haftalık olarak güncellemeleri kontrol etmeyi alışkanlık haline getirin. Kritik açıklamalardan haberdar olmak için dağıtımınızın güvenlik posta listelerine abone olun (örneğin, Ubuntu Security Notices).
2. SSH Erişimini Güçlendirin
SSH, Linux sunucunuza yönelik birincil yönetim ağ geçididir — ve sonuç olarak, internette en agresif şekilde hedeflenen hizmetlerden biridir. Varsayılan yapılandırmalar nadiren yeterlidir. Aşağıdaki her güçlendirme önlemini uygulayın.
Adım 1: Güçlü SSH Anahtar Çifti Oluşturun
Yerel makinenizde, 4096 bitlik RSA anahtar çifti oluşturun (veya daha modern Ed25519 algoritmasını kullanın):
# RSA (widely compatible)
ssh-keygen -t rsa -b 4096
# Ed25519 (recommended for modern systems)
ssh-keygen -t ed25519Adım 2: Genel Anahtarınızı Sunucuya Kopyalayın
ssh-copy-id user@your_server_ipAlternatif olarak, genel anahtarı sunucudaki ~/.ssh/authorized_keys dosyasına manuel olarak ekleyin.
Adım 3: /etc/ssh/sshd_config Dosyasını Güçlendirin
SSH daemon yapılandırma dosyasını açın:
sudo nano /etc/ssh/sshd_configAşağıdaki güçlendirilmiş ayarları uygulayın:
# Disable password-based authentication entirely
PasswordAuthentication no
# Prevent direct root login via SSH
PermitRootLogin no
# Change the default SSH port to reduce automated scan noise
Port 2222
# Limit authentication attempts
MaxAuthTries 3
# Disable unused authentication methods
ChallengeResponseAuthentication no
X11Forwarding no
AllowTcpForwarding no
# Restrict SSH access to specific users
AllowUsers yourusername
# Set idle session timeout (seconds)
ClientAliveInterval 300
ClientAliveCountMax 2Adım 4: SSH Hizmetini Yeniden Başlatın
sudo systemctl restart sshd> Önemli: Mevcut oturumunuzu kapatmadan önce, ikinci bir terminal açın ve yeni yapılandırmayı kullanarak bağlanabildiğinizi doğrulayın. Kendi sunucunuzun dışında kalmak yaygın ve önlenebilir bir hatadır.
3. Güvenlik Duvarını Yapılandırın
Düzgün şekilde yapılandırılmış bir güvenlik duvarı, yetkisiz ağ erişimine karşı ilk savunma hattınızdır. Katı bir beyaz liste uygular — yalnızca açıkça izin verilen trafik sunucunuza ulaşır.
UFW (Uncomplicated Firewall) — Ubuntu / Debian
# Set default policies
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow essential services
sudo ufw allow 2222/tcp # SSH on custom port
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# Enable the firewall
sudo ufw enable
# Verify rules
sudo ufw status verbosefirewalld — CentOS / RHEL / AlmaLinux
sudo systemctl enable --now firewalld
# Allow services
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# Reload to apply
sudo firewall-cmd --reloadGelişmiş Seçenek: iptables / nftables
Ayrıntılı kontrol için, deneyimli yöneticiler iptables veya modern nftables çerçevesini doğrudan kullanabilirler. Bu araçlar, UFW’nin sunduğunun ötesine geçen hız sınırlaması, bağlantı durumu izleme ve karmaşık kural zincirleri sağlar.
4. Saldırı Önleme ve Bütünlük İzleme Araçlarını Dağıtın
Reaktif güvenlik yeterli değildir. Şüpheli davranışları aktif olarak tespit eden ve yanıt veren araçlara ihtiyacınız vardır.
Fail2Ban — Otomatik Brute-Force Koruması
Fail2Ban, günlük dosyalarını izler ve kötü amaçlı desenleri sergileyen IP adreslerini otomatik olarak engeller (örneğin, tekrarlanan başarısız SSH girişleri).
sudo apt install fail2ban -y # Debian/Ubuntu
sudo dnf install fail2ban -y # CentOS/RHELGüncellemeler sırasında varsayılanları üzerine yazmaktan kaçınmak için yerel bir jail yapılandırması oluşturun:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.localÖnerilen SSH jail ayarları:
[sshd]
enabled = true
port = 2222
maxretry = 5
bantime = 3600
findtime = 600sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshdDosya Bütünlüğü İzleme
- AIDE (Advanced Intrusion Detection Environment): Dosya sisteminizin kriptografik bir temelini oluşturur ve yetkisiz değişiklikleri size bildirir.
- OSSEC / Wazuh: Günlük analizi, rootkit tespiti ve aktif yanıt yetenekleri ile açık kaynaklı host tabanlı saldırı tespit sistemi (HIDS).
sudo apt install aide -y
sudo aideinit
sudo aide --check5. Gereksiz Hizmetleri Devre Dışı Bırakın ve Kaldırın
Çalışan her hizmet potansiyel bir saldırı yüzeyidir. Kullanmadığınız hizmetler çalışmamalıdır — nokta.
Tüm etkin hizmetleri listeleyin:
sudo systemctl list-units --type=service --state=activeBir hizmeti devre dışı bırakın ve durdurun:
sudo systemctl disable service_name
sudo systemctl stop service_nameKullanılmayan paketleri tamamen kaldırın:
sudo apt purge package_name -y
sudo apt autoremove -yMinimal sunucularda kaldırılması için yaygın adaylar: telnet, rsh, finger, talk, avahi-daemon, cups (yazdırma) ve üretimde gerekli olmayan herhangi bir geliştirme aracı.
6. Güçlü Kimlik Doğrulama Politikalarını Uygulayın
Parolalar birçok hizmet için kritik bir kimlik doğrulama faktörü olmaya devam etmektedir. Zayıf veya yeniden kullanılan parolalar kolayca istismar edilir.
PAM Aracılığıyla Parola Karmaşıklığını Uygulayın
/etc/security/pwquality.conf dosyasını düzenleyin:
minlen = 14
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -1
maxrepeat = 3SSH için İki Faktörlü Kimlik Doğrulamayı (2FA) Etkinleştirin
google-authenticator kullanarak (Authy veya Aegis gibi herhangi bir TOTP uygulamasıyla da çalışır):
sudo apt install libpam-google-authenticator -y
google-authenticator/etc/pam.d/sshd dosyasını düzenleyerek şunu ekleyin:
auth required pam_google_authenticator.so/etc/ssh/sshd_config dosyasını güncelleyin:
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactivesudo systemctl restart sshd7. Günlükleri ve Sistem Etkinliğini İzleyin
Günlükler, adli tıp izinizdir. Düzenli günlük incelemesi, yetkisiz erişim denemelerini, yapılandırma hatalarını ve anormal davranışları yükselmeden önce tespit etmenizi sağlar.
Temel Günlük Dosyaları
# Authentication events (logins, sudo usage, SSH attempts)
sudo tail -f /var/log/auth.log # Debian/Ubuntu
sudo tail -f /var/log/secure # CentOS/RHEL
# General system messages
sudo tail -f /var/log/syslog
# Kernel messages
sudo dmesg | tail -50Gelişmiş Günlük Yönetimi ve İzleme
| Araç | Amaç |
|---|---|
| Logwatch | E-posta yoluyla günlük günlük özet raporları |
| GoAccess | Gerçek zamanlı web sunucusu günlüğü analizi |
| Prometheus + Grafana | Metrik toplama ve görselleştirme panoları |
| Wazuh | SIEM seviyesi günlük korelasyonu ve tehdit tespiti |
| Auditd | Çekirdek seviyesi sistem çağrısı denetimi |
Merkezi günlük gönderimi ayarlayın (örneğin, bir ELK yığınına veya uzak bir syslog sunucusuna), böylece birincil sunucu tehlikeye girerse bile günlüklere erişilebilir kalır.
8. Güvenli Web Uygulamaları ve Veritabanları
Sunucunuz web uygulamalarını veya veritabanlarını barındırıyorsa, bu bileşenler kendi sertleştirme katmanını gerektirir.
Web Sunucusu Sertleştirmesi (Nginx / Apache)
Parmak izi alma işlemini önlemek için sürüm bilgilerini gizleyin:
*Nginx — /etc/nginx/nginx.conf:*
server_tokens off;*Apache — /etc/apache2/conf-enabled/security.conf:*
ServerTokens Prod
ServerSignature OffHTTPS’yi her yerde zorunlu kılın Let’s Encrypt’ten ücretsiz bir SSL Sertifikası kullanarak:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.comWeb sunucusu yapılandırmanıza güvenlik başlıkları ekleyin:
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Referrer-Policy "strict-origin-when-cross-origin";Veritabanı Sertleştirmesi (MySQL / MariaDB / PostgreSQL)
# Run the MySQL secure installation wizard
sudo mysql_secure_installationTemel sertleştirme adımları:
- Localhost’a bağlayın uzaktan erişim açıkça gerekli olmadığı sürece:
/etc/mysql/mysql.conf.d/mysqld.cnfiçindebind-address = 127.0.0.1ayarlayın - Anonim kullanıcıları ve test veritabanını kaldırın
- Minimal ayrıcalıklara sahip adanmış veritabanı kullanıcıları kullanın — uygulamaları bağlamak için asla root hesabını kullanmayın
- Veritabanı yerel şifreleme özelliklerini kullanarak hassas verileri beklemede şifreleyin
9. Düzenli, Otomatik Yedeklemeler Uygulayın
Güvenlik sertleştirmesi riski azaltır — onu ortadan kaldırmaz. Donanım arızaları, sıfır gün açıkları ve insan hatası yine de veri kaybına neden olabilir. Güvenilir bir yedekleme stratejisi, nihai güvenlik ağınızdır.
rsync — Artımlı Dosya Senkronizasyonu
# Sync local directory to backup location
rsync -avz --delete /var/www/html/ /backup/www/
# Sync to a remote backup server
rsync -avz -e ssh /var/www/html/ backupuser@backup_server:/backup/www/tar — Sıkıştırılmış Arşivler
# Create a timestamped compressed archive
tar -czvf /backup/site-$(date +%Y%m%d).tar.gz /var/www/html/
# Verify archive integrity
tar -tzvf /backup/site-$(date +%Y%m%d).tar.gzCron ile Otomatikleştirin
crontab -e# Daily backup at 2:00 AM
0 2 * * * rsync -avz /var/www/html/ /backup/www/ >> /var/log/backup.log 2>&1
# Weekly full archive on Sunday at 3:00 AM
0 3 * * 0 tar -czvf /backup/full-$(date +%Y%m%d).tar.gz /var/www/ >> /var/log/backup.log 2>&1Yedekleme en iyi uygulamaları:
- 3-2-1 kuralını izleyin: 3 kopya, 2 farklı ortam türünde, 1 tanesi site dışında
- Geri yükleme işleminizi düzenli olarak test edin — test edilmemiş bir yedekleme yedekleme değildir
- Hassas veriler içeren yedeklemeleri GPG veya benzer araçları kullanarak şifreleyin
- Yedeklemeleri aynı makinede değil, ayrı bir sunucuda veya depolama hizmetinde saklayın
10. En Az Ayrıcalık İlkesini Uygulayın
Her kullanıcı, işlem ve uygulamanın yalnızca mutlak olarak ihtiyaç duyduğu kaynaklara erişimi olmalıdır — başka hiçbir şeye değil. Bu ilke, başarılı bir uzlaştırmanın etkisini sınırlandırır.
Dosya ve Dizin İzinleri
# Set ownership
sudo chown -R www-data:www-data /var/www/html/
# Set appropriate permissions
sudo chmod -R 755 /var/www/html/
sudo chmod -R 644 /var/www/html/*.html
# Find world-writable files (potential security risk)
find / -perm -0002 -type f 2>/dev/null
# Find SUID/SGID binaries (review carefully)
find / -perm /6000 -type f 2>/dev/nullKullanıcı Hesabı Yönetimi
# List all users with login shells
grep -v nologin /etc/passwd
# Lock unused accounts
sudo usermod -L username
# Restrict sudo access — edit with visudo
sudo visudosudo erişimini yalnızca gerçekten ihtiyaç duyan kullanıcılara verin. Genel ALL=(ALL) ALL girdileri yerine grup tabanlı sudo kurallarını kullanın.
Uygulamaları Root Olmayan Kullanıcılar Olarak Çalıştırma
Web sunucularını, veritabanlarını veya uygulama işlemlerini asla root olarak çalıştırmayın. Özel hizmet hesapları oluşturun:
sudo useradd --system --no-create-home --shell /bin/false appuser
sudo chown -R appuser:appuser /opt/myapp/Bonus: Uygulamaya Değer Ek Sertleştirme Önlemleri
| Önlem | Açıklama |
|---|---|
| IPv6’yı Devre Dışı Bırak (kullanılmıyorsa) | IPv6’ya ihtiyaç yoksa saldırı yüzeyini azaltır |
| sysctl aracılığıyla Kernel sertleştirmesi | IP yönlendirmesini devre dışı bırak, SYN çerezlerini etkinleştir, çekirdek dökümlerini kısıtla |
| AppArmor / SELinux | İşlem davranışını sınırlandıran zorunlu erişim denetimi çerçeveleri |
| ClamAV | Yüklenen dosyaları ve e-posta eklerini taramak için açık kaynaklı antivirus |
| Lynis | Linux sistemleri için kapsamlı güvenlik denetim aracı |
| rkhunter / chkrootkit | Rootkit algılama tarayıcıları |
| Ağ segmentasyonu | VLAN’lar veya ayrı ağ arayüzleri kullanarak hizmetleri izole et |
/etc/sysctl.conf aracılığıyla hızlı kernel sertleştirmesi:
# Disable IP forwarding
net.ipv4.ip_forward = 0
# Enable SYN flood protection
net.ipv4.tcp_syncookies = 1
# Disable ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# Ignore broadcast pings
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Restrict kernel pointer exposure
kernel.kptr_restrict = 2
# Restrict dmesg access
kernel.dmesg_restrict = 1Değişiklikleri hemen uygula:
sudo sysctl -pGüvenli Bir Sunucu İçin Doğru Hosting Temelini Seçmek
Güvenlik duruşunuz altyapı düzeyinde başlar. Size tam root erişimi, temiz ağ altyapısı ve güvenilir çalışma süresi sağlayan bir hosting sağlayıcısı, etkili sertleştirme için bir ön koşuldur.
AlexHost’un VPS Hosting planları tam root erişimi, SSD destekli performans ve esnek işletim sistemi seçenekleri sağlayarak bu kılavuzdaki her sertleştirme tekniğini uygulamak için size tam kontrol verir. Yüksek trafikli veya kaynak yoğun iş yükleri için, Dedicated Servers izole donanım ve maksimum performans sunar.
Yönetilen bir kontrol paneli ortamını tercih ederseniz, cPanel ile VPS sunucu yönetimini basitleştirirken güvenlik yapılandırmalarını uygulama yeteneğini korur. Ve sunucunuz bir web sitesi veya web uygulaması barındırıyorsa, bunu güvenilir bir SSL Certificate ile eşleştirmek, aktarım sırasındaki tüm verilerin şifrelendiğini garantiler — herhangi bir üretim dağıtımı için vazgeçilmez bir temel.
Sonuç: Güvenlik Bir Kerelik Olay Değil, Sürekli Bir Süreçtir
Bir Linux sunucusunun güvenliğini sağlamak, bir kez tamamladığınız ve unuttuğunuz bir görev değildir. Bu, düzenli dikkat, proaktif izleme ve tehdit ortamı geliştikçe uyum sağlamaya isteklilik gerektiren sürekli bir disiplindir.
İşte sertleştirme kontrol listeniz bir bakışta:
- ✅ Sistem güncellemelerini düzenli olarak uygulayın ve güvenlik yamaları otomatikleştirin
- ✅ SSH’yi sertleştirin: anahtar tabanlı kimlik doğrulama, root girişini devre dışı bırakın, varsayılan portu değiştirin
- ✅ Varsayılan olarak reddet ilkesiyle bir güvenlik duvarı yapılandırın
- ✅ Fail2Ban ve dosya bütünlüğü izlemesini dağıtın
- ✅ Gereksiz tüm hizmetleri ve paketleri devre dışı bırakın
- ✅ Güçlü parolaları zorunlu kılın ve 2FA’yı etkinleştirin
- ✅ Günlükleri izleyin ve anormal aktivite için uyarı ayarlayın
- ✅ Web sunucuları, uygulamalar ve veritabanlarının güvenliğini sağlayın
- ✅ 3-2-1 kuralını izleyerek yedeklemeleri otomatikleştirin ve test edin
- ✅ Kullanıcılar, dosyalar ve süreçler arasında en az ayrıcalık ilkesini uygulayın
En yüksek etkili öğelerle başlayın — SSH sertleştirme, güvenlik duvarı yapılandırması ve güncellemeler — ardından geri kalanını sistematik olarak tamamlayın. Eklediğiniz her katman, sunucunuzu tehlikeye atmayı katlanarak daha zor hale getirir.
Altyapınız yalnızca en zayıf yapılandırması kadar güçlüdür. Bugün kilitleyin.
tasarruf edin