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)
- Ağ: 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.