Rocky Linux Kurulumu ve İlk Yapılandırma

CentOS’un EOL (End of Life) sürecinin ardından Rocky Linux, kurumsal Linux dünyasında hızla benimsenen bir alternatif haline geldi. Red Hat Enterprise Linux ile tam uyumlu, topluluk destekli bu dağıtım; üretim ortamlarında güvenilirlik arayan sistem yöneticilerinin gözdesi olmaya başladı. Bu yazıda sıfırdan Rocky Linux kurulumu yapacak, ardından bir production sunucusunu çalışır hale getirmek için gereken tüm temel yapılandırmaları adım adım ele alacağız.

Rocky Linux Nedir ve Neden Tercih Edilmeli?

Rocky Linux, CentOS’un kurucularından Gregory Kurtzer tarafından hayata geçirildi. RHEL ile birebir uyumlu olması, mevcut CentOS iş yüklerini herhangi bir değişiklik gerektirmeden taşıyabileceğiniz anlamına geliyor. Ücretsiz, açık kaynaklı ve kurumsal sınıf destek seçenekleriyle birlikte geliyor.

Özellikle şu senaryolarda Rocky Linux tercih edilir:

  • Web sunucusu, veritabanı ve uygulama sunucusu ihtiyaçları
  • Uzun süreli stabilite gerektiren üretim ortamları
  • RHEL lisansı maliyetini optimize etmek isteyen işletmeler
  • CentOS 7/8 migrasyonu planlayan ekipler

Kurulum Öncesi Hazırlık

Kuruluma geçmeden önce birkaç kritik kararı vermemiz gerekiyor. Sunucu donanımı için minimum gereksinimler şunlar:

  • CPU: 1.4 GHz 64-bit işlemci
  • RAM: Minimum 1.5 GB (production için 4 GB ve üzeri önerilir)
  • Disk: Minimum 10 GB (gerçek ortamlar için 40 GB+ önerilir)
  • : En az bir adet ağ arayüzü

ISO dosyasını resmi Rocky Linux sitesinden indirin. Minimal install tercih ediyorsanız Rocky-9.x-x86_64-minimal.iso dosyasını kullanın. Production sunucularında her zaman minimal kurulumu öneririm; ihtiyaç duymadığınız paketleri baştan yüklememek, saldırı yüzeyini ciddi ölçüde daraltır.

Bootable USB oluşturmak için Linux üzerinde şu komutu kullanabilirsiniz:

# USB sürücünüzün adını tespit edin
lsblk

# ISO'yu USB'ye yazdırın (sdb yerine kendi disk adınızı yazın)
dd if=Rocky-9.4-x86_64-minimal.iso of=/dev/sdb bs=4M status=progress oflag=sync

Kurulum Adımları

Anaconda yükleyicisi açıldığında dili ve klavye düzenini seçtikten sonra “Installation Summary” ekranıyla karşılaşırsınız. Bu ekranda dikkat etmeniz gereken kritik noktaları ele alalım.

Disk Bölümlendirme

Production ortamları için manuel bölümlendirme şiddetle tavsiye edilir. Önerilen bölümlendirme şeması:

  • /boot: 1 GB, ext4 veya xfs
  • /boot/efi: 600 MB (UEFI sistemler için)
  • swap: RAM’in yarısı kadar (modern sistemlerde 4-8 GB genellikle yeterli)
  • /: 20 GB, xfs
  • /var: 30 GB+, xfs (log ve uygulama verisi için)
  • /home: Kalan alan, xfs

/var dizinini ayrı bir partition’a almak, log dosyalarının patlaması durumunda root filesystem’in dolmasını engeller. Bu basit tedbir, production’da pek çok kez hayat kurtarmıştır.

Software Selection

Minimal Install seçeneğini tercih edin. Grafik arayüz, oyun paketleri veya medya araçları sunucunuzda olmamalı. İhtiyaç duyduğunuz servisleri kurulumdan sonra tek tek ekleyeceksiniz.

Network ve Hostname

Kurulum sırasında hostname’i doğru ayarlamak önemli. Örnek olarak:

  • Hostname: web01.sirketiniz.com

Network kartını etkinleştirmeyi ve DHCP yerine statik IP kullanmayı unutmayın.

İlk Açılış Sonrası Temel Yapılandırma

Sisteme ilk kez root olarak girdiğinizde yapmanız gereken işlemler var. Bunları bir checklist gibi düşünebilirsiniz.

Sistem Güncellemesi

İlk iş sistem güncellemesi. Kurulum ISO’su her zaman en güncel paketlere sahip olmayabilir:

# Sistemi tamamen güncelleyin
dnf update -y

# Güncellemeden sonra yeniden başlatın
reboot

Hostname ve Zaman Dilimi Ayarı

# Hostname'i ayarlayın
hostnamectl set-hostname web01.sirketiniz.com

# Mevcut zaman dilimlerini listeleyin
timedatectl list-timezones | grep Istanbul

# Türkiye zaman dilimini ayarlayın
timedatectl set-timezone Europe/Istanbul

# Zaman senkronizasyonunu aktifleştirin
timedatectl set-ntp true

# Ayarları doğrulayın
timedatectl status

Yeni Kullanıcı Oluşturma ve Sudo Yetkisi

Root ile doğrudan çalışmak kötü bir alışkanlık. Kendi kullanıcınızı oluşturun ve sudo yetkisi verin:

# Yeni kullanıcı oluşturun
useradd -m -s /bin/bash ahmet

# Şifre belirleyin
passwd ahmet

# Kullanıcıyı wheel grubuna ekleyin (sudo yetkisi için)
usermod -aG wheel ahmet

# Kullanıcının gruplarını doğrulayın
id ahmet

Rocky Linux’ta wheel grubu, varsayılan olarak sudo yetkisine sahiptir. /etc/sudoers dosyasına dokunmanıza gerek yok.

SSH Güvenlik Sertleştirmesi

Production sunucularının internete açık olduğunu düşünürsek, SSH güvenliği ihmal edilemez bir konu. Şu adımları uygulayın:

# SSH config dosyasını düzenleyin
vi /etc/ssh/sshd_config

Aşağıdaki parametreleri bulun ve düzenleyin:

  • Port 2222: Default 22 yerine farklı port (güvenlik obscurity önlemi)
  • PermitRootLogin no: Root ile direkt SSH bağlantısını engelle
  • PasswordAuthentication no: Şifre ile girişi kapat, sadece SSH key kullan
  • MaxAuthTries 3: Maksimum deneme sayısını sınırla
  • ClientAliveInterval 300: 5 dakika hareketsiz kalan bağlantıları kes
  • ClientAliveCountMax 2: Maksimum 2 kontrol yap

SSH anahtar çifti oluşturmak ve sunucuya kopyalamak için kendi makinenizden:

# Kendi makinenizde SSH key oluşturun
ssh-keygen -t ed25519 -C "ahmet@sirket"

# Public key'i sunucuya kopyalayın
ssh-copy-id -i ~/.ssh/id_ed25519.pub ahmet@sunucu_ip

# SSH servisini yeniden başlatın
systemctl restart sshd

PasswordAuthentication no yapmadan önce mutlaka SSH key ile girişin çalıştığını doğrulayın. Aksi takdirde sunucunuza erişiminizi kaybedebilirsiniz.

Firewall Yapılandırması

Rocky Linux, firewalld servisini varsayılan güvenlik duvarı olarak kullanır. Kurulumdan sonra aktif gelir, ancak kuralları ihtiyaca göre düzenlemeniz gerekir:

# Firewall durumunu kontrol edin
systemctl status firewalld

# Aktif zone'u görüntüleyin
firewall-cmd --get-active-zones

# Mevcut kuralları listeleyin
firewall-cmd --list-all

# HTTP ve HTTPS servislerine izin verin
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

# Özel SSH portuna izin verin (2222 kullanıyorsanız)
firewall-cmd --permanent --add-port=2222/tcp

# Varsayılan SSH portunu kaldırın
firewall-cmd --permanent --remove-service=ssh

# Kuralları uygulayın
firewall-cmd --reload

# Son durumu kontrol edin
firewall-cmd --list-all

Gerçek dünya senaryosunda bir e-ticaret firmasında çalışırken, firewall kurallarını yanlış sırayla uyguladığım için sunucuya erişimim kesilmişti. O günden bu yana her firewall değişikliği öncesinde bir backup bağlantı açık tutmayı alışkanlık edindim.

SELinux Yapılandırması

SELinux, Rocky Linux’un en güçlü güvenlik katmanlarından biri. Pek çok sistem yöneticisi performans veya karmaşıklık gerekçesiyle SELinux’u devre dışı bırakır; bu büyük bir hata. Doğru yönetildiğinde SELinux, sisteminizin güvenliğini dramatik biçimde artırır.

# SELinux durumunu kontrol edin
sestatus

# SELinux modunu geçici olarak değiştirin (test için)
setenforce 0   # Permissive mod
setenforce 1   # Enforcing mod

# Kalıcı mod değişikliği için config dosyasını düzenleyin
vi /etc/selinux/config

Config dosyasında şu satırı bulun:

SELINUX=enforcing

Bu değeri değiştirmek yerine, uygulamalarınızın SELinux ile uyumlu çalışmasını sağlayın. Örneğin, web sunucunuz için özel port kullanıyorsanız:

# Apache için 8080 portuna SELinux izni verin
semanage port -a -t http_port_t -p tcp 8080

# SELinux loglarını inceleyin
ausearch -m avc -ts recent

# Sorunlu politikaları otomatik oluşturun (development ortamı için)
audit2allow -a -M mymodule
semodule -i mymodule.pp

EPEL ve Gerekli Repository’lerin Eklenmesi

Minimal kurulumda bazı popüler araçlar bulunmaz. EPEL (Extra Packages for Enterprise Linux) deposunu ekleyerek erişilebilir paket havuzunu genişletin:

# EPEL deposunu ekleyin
dnf install -y epel-release

# PowerTools/CRB deposunu aktifleştirin
dnf config-manager --set-enabled crb

# Repo listesini güncelleyin
dnf repolist

# Bazı temel araçları yükleyin
dnf install -y vim wget curl net-tools bind-utils 
    htop iotop rsync tar unzip git 
    bash-completion policycoreutils-python-utils

Sistem Kaynaklarının İzlenmesi ve Log Yönetimi

Sunucu sağlığını takip etmek için temel araçları hazır edin:

# Sistem kaynaklarını anlık izleyin
htop

# Disk kullanımını kontrol edin
df -hT

# Inode kullanımını kontrol edin (gözden kaçan kritik bir nokta)
df -i

# En çok yer kaplayan dizinleri bulun
du -sh /var/* | sort -rh | head -20

# Açık dosyaları ve portları listeleyin
ss -tlnp

# Sistem loglarını takip edin
journalctl -f

# Son önyükleme loglarını görüntüleyin
journalctl -b -0 --priority=err

Log Rotation Yapılandırması

/var/log dizininin dolmaması için log rotation ayarlarını gözden geçirin:

# Logrotate konfigürasyonunu kontrol edin
cat /etc/logrotate.conf

# Uygulama bazlı logrotate ayarlarını görün
ls /etc/logrotate.d/

# Manuel olarak logrotate çalıştırın (test için)
logrotate -d /etc/logrotate.conf

Otomatik Güvenlik Güncellemeleri

Kritik güvenlik yamalarının otomatik uygulanması için dnf-automatic servisini yapılandırın:

# dnf-automatic paketini yükleyin
dnf install -y dnf-automatic

# Konfigürasyon dosyasını düzenleyin
vi /etc/dnf/automatic.conf

Dosyada şu ayarları yapın:

  • upgrade_type = security: Sadece güvenlik güncellemelerini uygula
  • apply_updates = yes: Güncellemeleri otomatik uygula
  • emit_via = email: Bildirim için email kullan (opsiyonel)
# Servisi aktifleştirin
systemctl enable --now dnf-automatic.timer

# Timer durumunu kontrol edin
systemctl status dnf-automatic.timer

Chrony ile NTP Senkronizasyonu

Zaman senkronizasyonu; log korelasyonu, sertifika doğrulama ve cluster yönetimi açısından kritik öneme sahip:

# Chrony durumunu kontrol edin
systemctl status chronyd

# Senkronizasyon durumunu görün
chronyc tracking

# NTP sunucularını listeleyin
chronyc sources -v

# Yerel NTP sunucusu eklemek için config düzenleyin
vi /etc/chrony.conf

Kurumsal ağlarda genellikle yerel NTP sunucuları bulunur. chrony.conf dosyasına şirket NTP sunucusunu ekleyin:

# Mevcut pool satırlarını yorum satırına alın, yerine ekleyin
server ntp.sirketiniz.com iburst

# Chrony'yi yeniden başlatın
systemctl restart chronyd

Disk ve Filesystem Performansı

Production sistemlerde disk I/O optimizasyonu göz ardı edilmemeli:

# Disk I/O istatistiklerini görüntüleyin
iostat -xz 1 5

# Scheduler türünü kontrol edin
cat /sys/block/sda/queue/scheduler

# SSD diskler için deadline veya none (nvme) önerilir
echo "mq-deadline" > /sys/block/sda/queue/scheduler

# Kalıcı hale getirmek için udev kuralı oluşturun
cat > /etc/udev/rules.d/60-scheduler.rules << 'EOF'
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
EOF

Sonuç

Rocky Linux kurulumu ve ilk yapılandırması, her adımın birbiriyle bağlantılı olduğu sistematik bir süreç. Minimal kurulumla başlamak, yalnızca ihtiyaç duyduğunuz servisleri eklemek ve güvenlik katmanlarını (SSH sertleştirme, firewall, SELinux) atlamadan uygulamak; sağlam bir altyapının temelini oluşturuyor.

Bu yazıda anlattıklarımı bir checklist olarak düşünürseniz:

  • Minimal kurulum + uygun disk bölümlendirmesi
  • Sistem güncellemesi ve hostname/timezone ayarı
  • Sudo yetkili kullanıcı oluşturma, root erişimini kısıtlama
  • SSH key tabanlı kimlik doğrulama, port değişikliği
  • Firewalld ile sadece gerekli portlara izin verme
  • SELinux’u enforcing modda tutma ve doğru yönetme
  • EPEL deposu ve temel araçların kurulumu
  • Otomatik güvenlik güncellemeleri ve NTP senkronizasyonu

Bir sonraki yazıda bu temel üzerine inşa edeceğimiz LAMP stack kurulumu ve Rocky Linux üzerinde containerization senaryolarını ele alacağız. Sorularınız veya farklı senaryolarınız varsa yorum bırakmaktan çekinmeyin.

Yorum yapın