Linux Sunucularda Temel Güvenlik Sıkılaştırma (Hardening) Rehberi: Ubuntu ve CentOS İçin Adım Adım Yaklaşım
Günümüzün dijital dünyasında, siber güvenlik tehditleri her geçen gün artmakta ve daha karmaşık hale gelmektedir. Sunucularımız, özellikle de internete açık olanlar, sürekli saldırı girişimlerine maruz kalmaktadır. Bu nedenle, Linux sunucularınızın güvenliğini en üst düzeye çıkarmak için proaktif adımlar atmak hayati önem taşır. Bu rehberde, Ubuntu ve CentOS tabanlı Linux sunucularınızda uygulayabileceğiniz temel güvenlik sıkılaştırma (hardening) adımlarını detaylı bir şekilde ele alacağız.
Neden Linux Sunucu Güvenliği Bu Kadar Kritik?
Linux, güvenilirliği ve esnekliği nedeniyle dünya genelinde sunucuların büyük çoğunluğunda tercih edilen bir işletim sistemidir. Ancak popülerliği, onu siber saldırganlar için de cazip bir hedef haline getirir. Bir sunucunun güvenliğinin ihlal edilmesi, veri kaybı, hizmet kesintisi, itibar zedelenmesi ve yasal sonuçlar gibi ciddi problemlere yol açabilir. Temel güvenlik sıkılaştırma pratikleri, bu riskleri minimize etmenin ilk ve en önemli adımıdır.
Temel Güvenlik Sıkılaştırma Adımları
1. Sistemi Güncel Tutun
Yazılım güncellemeleri, bilinen güvenlik açıklarını kapatan yamaları içerir. Sisteminizin ve tüm yüklü paketlerin güncel olması, olası saldırı vektörlerini önemli ölçüde azaltır.
- Ubuntu/Debian tabanlı sistemler için:
sudo apt update sudo apt upgrade -y sudo apt dist-upgrade -y sudo apt autoremove -y
- CentOS/RHEL tabanlı sistemler için:
sudo yum update -y sudo yum autoremove -y
2. SSH Güvenliğini Sıkılaştırın
SSH (Secure Shell), sunucunuza uzaktan güvenli erişim sağlamak için kullanılan temel protokoldür. SSH bağlantılarının güvenliğini sağlamak kritik öneme sahiptir.
- Varsayılan SSH Portunu Değiştirin: Varsayılan 22 numaralı portu değiştirmek, otomatik bot saldırılarını azaltır.
- Şifre Tabanlı Girişi Devre Dışı Bırakın (Anahtar Tabanlı Kimlik Doğrulama Kullanın): SSH anahtar çiftleri, şifrelerden çok daha güvenlidir.
- Root Kullanıcısının Doğrudan Girişini Engelleyin: Root kullanıcısı yerine sudo yetkilerine sahip normal bir kullanıcı ile giriş yapın.
- İzin Verilen Kullanıcıları Belirleyin: Sadece belirli kullanıcıların SSH ile bağlanmasına izin verin.
SSH yapılandırma dosyasını düzenleyin (/etc/ssh/sshd_config):
sudo nano /etc/ssh/sshd_config
Aşağıdaki satırları bulun ve düzenleyin:
# Port 22 yerine farklı bir port kullanın, örneğin 2222 Port 2222 # Root kullanıcısının doğrudan girişini engelle PermitRootLogin no # Şifre ile girişi devre dışı bırak, anahtar tabanlı kimlik doğrulamayı etkinleştir PasswordAuthentication no PubkeyAuthentication yes # Sadece belirli kullanıcılara izin ver (isteğe bağlı) AllowUsers your_username
Değişiklikleri kaydettikten sonra SSH servisini yeniden başlatın:
- Ubuntu/Debian:
sudo systemctl restart sshd
- CentOS/RHEL:
sudo systemctl restart sshd
Önemli: Yeni porttan bağlanabildiğinizden emin olmadan mevcut SSH oturumunuzu kapatmayın!
3. Güvenlik Duvarı (Firewall) Yapılandırması
Bir güvenlik duvarı, sunucunuza gelen ve giden ağ trafiğini kontrol ederek istenmeyen bağlantıları engeller.
- Ubuntu için UFW (Uncomplicated Firewall):
sudo ufw enable sudo ufw allow 2222/tcp # Yeni SSH portunuzu açın sudo ufw allow http # HTTP (80) trafiğine izin ver sudo ufw allow https # HTTPS (443) trafiğine izin ver sudo ufw status verbose
- CentOS için Firewalld:
sudo systemctl enable --now firewalld sudo firewall-cmd --add-port=2222/tcp --permanent # Yeni SSH portunuzu açın sudo firewall-cmd --add-service=http --permanent # HTTP (80) trafiğine izin ver sudo firewall-cmd --add-service=https --permanent # HTTPS (443) trafiğine izin ver sudo firewall-cmd --reload sudo firewall-cmd --list-all
4. Kullanıcı ve Yetki Yönetimi
Sunucudaki kullanıcı hesaplarını ve onların yetkilerini doğru yönetmek, güvenlik için temel bir adımdır.
- Güçlü Parola Politikaları: Tüm kullanıcılar için uzun, karmaşık parolalar zorunlu kılın. Parola yaşlandırma politikaları uygulayın.
- Minimum Yetki Prensibi: Kullanıcılara sadece işlerini yapmak için ihtiyaç duydukları minimum yetkileri verin. Root hesabı ile günlük işlemler yapmaktan kaçının.
- Gereksiz Kullanıcıları Silin: Kullanılmayan veya varsayılan hesapları (örneğin, test hesapları) silin veya devre dışı bırakın.
Yeni bir kullanıcı oluşturma ve sudo yetkisi verme:
sudo adduser newuser sudo usermod -aG sudo newuser # Ubuntu/Debian sudo usermod -aG wheel newuser # CentOS/RHEL
5. Gereksiz Servisleri Devre Dışı Bırakın
Sunucunuzda çalışmayan her servis, potansiyel bir güvenlik açığıdır. Yalnızca ihtiyaç duyduğunuz servisleri çalıştırın.
Çalışan servisleri listelemek için:
sudo systemctl list-units --type=service --state=running
Gereksiz bir servisi devre dışı bırakmak için:
sudo systemctl disable service_name sudo systemctl stop service_name
6. Log Yönetimi ve İzleme
Sistem günlükleri (loglar), güvenlik olaylarını tespit etmek ve sorun gidermek için kritik öneme sahiptir. Logları düzenli olarak inceleyin veya merkezi bir log yönetimi çözümü kullanın.
- Önemli Log Dosyaları:
/var/log/auth.log # Kimlik doğrulama girişimleri (Ubuntu) /var/log/secure # Kimlik doğrulama girişimleri (CentOS) /var/log/syslog # Genel sistem mesajları (Ubuntu) /var/log/messages # Genel sistem mesajları (CentOS)
- Fail2ban gibi araçlar, SSH brute-force saldırılarını otomatik olarak engelleyebilir.
7. SELinux (CentOS) veya AppArmor (Ubuntu) Etkinleştirme
Bu güvenlik modülleri, uygulamaların sistem kaynaklarına erişimini kısıtlayarak ek bir koruma katmanı sağlar.
- CentOS için SELinux: Genellikle varsayılan olarak etkindir. Durumunu kontrol edin:
sestatus
- Ubuntu için AppArmor: Genellikle varsayılan olarak etkindir. Durumunu kontrol edin:
sudo apparmor_status
8. Dosya İzinleri ve Sahiplikleri
Dosya ve dizin izinlerini doğru yapılandırmak, yetkisiz erişimi engeller. Özellikle web sunucusu kök dizinleri ve hassas yapılandırma dosyaları için dikkatli olun.
- Web sunucusu dosyaları için
644(dosyalar) ve755(dizinler) genellikle iyi bir başlangıçtır. - Hassas dosyaların sahipliğini
rootolarak ayarlayın ve sadecerootkullanıcısının yazma izni olduğundan emin olun.
sudo chmod 644 /path/to/file.txt sudo chmod 755 /path/to/directory sudo chown root:root /path/to/sensitive_file
9. Kötü Amaçlı Yazılım Tarayıcıları (Opsiyonel)
Sunucunuzda ClamAV gibi bir kötü amaçlı yazılım tarayıcısı bulundurmak, potansiyel tehditleri tespit etmeye yardımcı olabilir.
# Ubuntu için sudo apt install clamav clamav-daemon sudo freshclam sudo systemctl start clamav-freshclam sudo systemctl enable clamav-freshclam # CentOS için (EPEL deposunu etkinleştirmeniz gerekebilir) sudo yum install epel-release sudo yum install clamav clamd sudo freshclam sudo systemctl start clamd@scan sudo systemctl enable clamd@scan
Sonuç
Linux sunucularınızda güvenlik sıkılaştırma, tek seferlik bir işlem değildir. Sürekli bir çaba ve proaktif bir yaklaşımla devamlı olarak güncellenmesi ve izlenmesi gereken bir süreçtir. Bu rehberde belirtilen adımları uygulayarak sunucularınızın temel güvenlik duruşunu önemli ölçüde artırabilir ve potansiyel siber tehditlere karşı daha dirençli hale getirebilirsiniz. Unutmayın, güvenlik bir kültürdür ve sistemlerinizin her katmanında uygulanmalıdır.