Linux Sunucularda Temel Güvenlik Sıkılaştırma (Hardening) Rehberi: Ubuntu ve CentOS İçin Adım Adım Yaklaşım

 · 

Linux Sunucularda Temel Güvenlik Sıkılaştırma (Hardening) Rehberi: Ubuntu ve CentOS İçin Adım Adım Yaklaşım

Giriş: Neden Linux Sunucu Güvenliği Bu Kadar Önemli?

Günümüzün dijital dünyasında, sunucularınızın güvenliği iş sürekliliği ve veri bütünlüğü için hayati öneme sahiptir. Özellikle Linux tabanlı sunucular, esneklikleri ve performanslarıyla öne çıksa da, doğru yapılandırılmadığında siber saldırılara açık hale gelebilir. Bu blog yazısında, Gökhan Güngör olarak, Ubuntu ve CentOS işletim sistemleri üzerinde çalışan Linux sunucularınız için temel güvenlik sıkılaştırma (hardening) adımlarını adım adım ele alacağız. Amacımız, sunucularınızı potansiyel tehditlere karşı daha dirençli hale getirmektir.

1. İlk Kurulum ve Temel Güvenlik Ayarları

1.1 Güçlü Parolalar ve SSH Anahtar Tabanlı Kimlik Doğrulama

  • Güçlü Parola Politikası: Kullanıcılar için uzun, karmaşık (büyük/küçük harf, rakam, özel karakter) parolalar belirleyin ve düzenli parola değişikliklerini teşvik edin.
  • SSH Anahtar Tabanlı Kimlik Doğrulama: Parola tabanlı SSH erişimi yerine anahtar tabanlı kimlik doğrulamayı tercih edin. Bu, kaba kuvvet saldırılarına karşı çok daha güvenlidir.
# SSH anahtar çifti oluşturma (yerel makinenizde)
ssh-keygen -t rsa -b 4096

# Genel anahtarı sunucuya kopyalama (Ubuntu/CentOS)
ssh-copy-id kullanıcıadı@sunucu_ip_adresi

1.2 SSH Servisi Sıkılaştırması

SSH konfigürasyonunu düzenleyerek güvenliği artırın:

  • Varsayılan SSH Portunu Değiştirme: Bilinen 22 numaralı port yerine farklı bir port kullanın.
  • Root Girişini Devre Dışı Bırakma: Root kullanıcısının doğrudan SSH ile giriş yapmasını engelleyin.
  • Parola Tabanlı Kimlik Doğrulamayı Kapatma (Anahtar Kullanılıyorsa): Anahtar tabanlı kimlik doğrulamayı etkinleştirdikten sonra parola ile girişi kapatın.
# /etc/ssh/sshd_config dosyasını düzenleyin
sudo vi /etc/ssh/sshd_config

# Değiştirilecek satırlar:
Port 2222 # Farklı bir port numarası
PermitRootLogin no
PasswordAuthentication no

# Değişikliklerden sonra SSH servisini yeniden başlatın
sudo systemctl restart sshd # Ubuntu/CentOS 7+
sudo service ssh restart # CentOS 6/Ubuntu 14.04-

2. Kullanıcı ve Yetkilendirme Yönetimi

2.1 Root Kullanımı ve Sudo Yetkileri

  • Root Kullanımını Minimuma İndirin: Günlük işlemler için root kullanıcısı yerine sudo yetkilerine sahip standart bir kullanıcı kullanın.
  • Sudo Yetkilerini Doğru Yapılandırın: Sadece gerçekten ihtiyaç duyan kullanıcılara sudo yetkisi verin ve hangi komutları çalıştırabileceklerini kısıtlayın.
# Yeni bir kullanıcı oluşturma (Ubuntu)
sudo adduser yeni_kullanici
sudo usermod -aG sudo yeni_kullanici

# Yeni bir kullanıcı oluşturma (CentOS)
sudo adduser yeni_kullanici
sudo passwd yeni_kullanici
sudo usermod -aG wheel yeni_kullanici # wheel grubu sudo yetkisi sağlar

2.2 Kullanıcı Hesaplarını ve Grupları Denetleme

Gereksiz veya eski kullanıcı hesaplarını düzenli olarak kontrol edin ve silin.

# Sistemdeki kullanıcıları listeleme
cat /etc/passwd

# Sistemdeki grupları listeleme
cat /etc/group

3. Ağ Güvenliği: Güvenlik Duvarı (Firewall)

3.1 UFW (Ubuntu) veya Firewalld (CentOS) Kullanımı

Sunucunuzun güvenlik duvarını etkinleştirerek sadece gerekli portlara erişime izin verin.

  • Ubuntu için UFW (Uncomplicated Firewall):
# UFW'yi etkinleştirme
sudo ufw enable

# Varsayılan dışa giden trafiğe izin ver, içe gelen trafiği reddet
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Gerekli portlara izin verme (Örn: SSH yeni port, HTTP/S)
sudo ufw allow 2222/tcp # SSH için yeni port
sudo ufw allow http
sudo ufw allow https

# UFW durumunu kontrol etme
sudo ufw status verbose
  • CentOS için Firewalld:
# Firewalld'yi etkinleştirme ve başlatma
sudo systemctl enable firewalld
sudo systemctl start firewalld

# Gerekli servislere/portlara izin verme
sudo firewall-cmd --permanent --add-port=2222/tcp # SSH için yeni port
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# Değişiklikleri uygulamak için Firewalld'yi yeniden yükleme
sudo firewall-cmd --reload

# Firewalld durumunu kontrol etme
sudo firewall-cmd --list-all

4. Yazılım Güncellemeleri ve Yama Yönetimi

İşletim sistemi ve yüklü tüm yazılımları düzenli olarak güncel tutmak, bilinen güvenlik açıklarının kapatılması için kritik öneme sahiptir.

# Ubuntu için güncelleme
sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt autoremove -y

# CentOS için güncelleme
sudo yum update -y # veya dnf update -y

5. Sistem İzleme ve Log Yönetimi

  • Log Kayıtlarını Takip Edin: /var/log dizinindeki sistem loglarını (auth.log, syslog, secure vb.) düzenli olarak gözden geçirin.
  • Merkezi Log Yönetimi: Büyük altyapılarda ELK Stack (Elasticsearch, Logstash, Kibana) veya Splunk gibi merkezi log yönetimi çözümlerini değerlendirin.
  • Güvenlik Olayı İzleme (SIEM): Olası saldırıları tespit etmek için SIEM çözümlerinden faydalanın.

6. Ek Güvenlik Araçları ve İpuçları

6.1 Otomatik Güvenlik Güncellemeleri

  • Ubuntu: `unattended-upgrades` paketini kullanın.
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
  • CentOS: `yum-cron` veya `dnf-automatic` paketini kullanın.
sudo yum install yum-cron
sudo systemctl enable yum-cron
sudo systemctl start yum-cron

6.2 Fail2ban Kurulumu

Kaba kuvvet saldırılarına karşı otomatik koruma sağlar. Belirli sayıda başarısız giriş denemesinden sonra IP adreslerini bloke eder.

# Ubuntu
sudo apt install fail2ban

# CentOS
sudo yum install epel-release
sudo yum install fail2ban

# Servisi başlat ve etkinleştir
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Kendi yapılandırmanızı oluşturun (Örn: /etc/fail2ban/jail.local)
# [sshd]
# enabled = true
# port = 2222 # Yeni SSH portunuz
# maxretry = 3
# bantime = 1h

6.3 Rootkit Tespiti (Chkrootkit/Rkhunter)

Sisteminizde rootkit veya kötü amaçlı yazılım olup olmadığını kontrol edin.

# Chkrootkit kurulumu (Ubuntu/CentOS)
sudo apt install chkrootkit # Ubuntu
sudo yum install chkrootkit # CentOS
sudo chkrootkit

# Rkhunter kurulumu (Ubuntu/CentOS)
sudo apt install rkhunter # Ubuntu
sudo yum install rkhunter # CentOS
sudo rkhunter --update
sudo rkhunter --check

6.4 SELinux (CentOS) / AppArmor (Ubuntu) Kullanımı

Bu zorunlu erişim kontrolü sistemleri, uygulamaların ve kullanıcıların sistem kaynaklarına erişimini kısıtlayarak ek bir güvenlik katmanı sağlar. Genellikle varsayılan olarak etkindirler ve doğru yapılandırılmaları önemlidir.

6.5 Dosya ve Dizin İzinleri

Kritik sistem dosyaları ve dizinleri için doğru izinleri uygulayın. Genellikle 644 (dosyalar) ve 755 (dizinler) güvenli başlangıç noktalarıdır.

# Örnek: Bir dosya için izinleri ayarlama
sudo chmod 644 /path/to/file.txt

# Örnek: Bir dizin için izinleri ayarlama
sudo chmod 755 /path/to/directory

Sonuç: Sürekli Bir Süreç Olarak Güvenlik

Linux sunucularda güvenlik sıkılaştırma, tek seferlik bir işlemden ziyade sürekli devam eden bir süreçtir. Bu rehberde belirtilen temel adımları uygulayarak sunucularınızın güvenlik duruşunu önemli ölçüde artırabilirsiniz. Ancak unutmayın ki siber tehditler sürekli evrim geçirdiği için, sistemlerinizi düzenli olarak güncellemek, izlemek ve güvenlik politikalarınızı gözden geçirmek kritik öneme sahiptir. Güvenli bir altyapı, sağlam bir işin temelidir.

← Blog Listesine Dön