CentOS ile İlk Sunucu Kurulumu: Güvenli ve Verimli Bir Başlangıç
Bir sunucuyu sıfırdan kurmak, herhangi bir IT altyapısının temelini oluşturur. Bu süreç, sadece işletim sistemini kurmaktan çok daha fazlasını içerir; güvenlik, performans ve yönetilebilirlik açısından doğru temelleri atmak kritik öneme sahiptir. CentOS, kararlılığı, güvenilirliği ve geniş topluluk desteği sayesinde sunucu ortamlarında en çok tercih edilen Linux dağıtımlarından biridir. Bu makalede, CentOS tabanlı bir sunucunun ilk kurulumundan, temel güvenlik ayarlarına ve başlangıç yapılandırmalarına kadar adım adım bir rehber sunulacaktır. Amacımız, sunucunuzu hem güvenli hem de gelecekteki uygulamalarınız için sağlam bir zemin oluşturacak şekilde yapılandırmanıza yardımcı olmaktır.
Neden CentOS?
CentOS (Community ENTerprise Operating System), Red Hat Enterprise Linux (RHEL) kaynak kodundan türetilmiş ücretsiz ve açık kaynaklı bir işletim sistemidir. RHEL ile ikili uyumluluğu sayesinde, kurumsal düzeyde kararlılık ve güvenlik sunarken, ticari bir lisans maliyeti gerektirmez. Uzun süreli destek (LTS), geniş yazılım havuzları ve güçlü bir topluluk desteği, CentOS’u sunucu ortamları için ideal bir seçim haline getirir. Özellikle CentOS 7 ve CentOS 8 (CentOS Stream’e geçişiyle ilgili tartışmalar olsa da, mevcut kurumsal ortamların çoğu hala bu sürümleri kullanmaktadır) sürümleri, sistem yöneticileri arasında popülerliğini korumaktadır. Bu makalede genel olarak CentOS 7/8 yaklaşımları ele alınacaktır.
Kuruluma Başlamadan Önce Gerekli Hazırlıklar
CentOS kurulumuna başlamadan önce bazı ön hazırlıklar yapmak, sürecin sorunsuz ilerlemesini sağlayacaktır.
Donanım Gereksinimleri
Sunucunuzun CentOS’u ve üzerine kurmayı planladığınız hizmetleri çalıştırabilecek yeterli donanıma sahip olduğundan emin olun. Minimum gereksinimler genellikle şunları içerir:
* İşlemci (CPU): 64-bit mimariye sahip bir işlemci (Intel veya AMD).
* Bellek (RAM): Minimum 2 GB RAM (daha fazla bellek, özellikle veritabanları veya sanallaştırma için önerilir).
* Depolama (Disk): Minimum 20 GB boş disk alanı (üzerine kurulacak uygulamalara göre bu miktar artırılmalıdır).
* Ağ Kartı: Çalışır durumda bir Ethernet kartı.
Kurulum Ortamı
CentOS’u kurmak için bir kurulum medyasına ihtiyacınız olacak.
* ISO Dosyası: CentOS resmi web sitesinden (centos.org) işletim sisteminin ISO dosyasını indirin. “Minimal Install” sürümü, sunucu ortamları için genellikle en uygun seçenektir çünkü sadece temel bileşenleri içerir ve gereksiz paketlerin kurulumunu engeller.
* Önyüklenebilir USB Sürücü veya DVD: İndirdiğiniz ISO dosyasını bir DVD’ye yazabilir veya Rufus (Windows için), Etcher (Çapraz platform) gibi araçlarla önyüklenebilir bir USB sürücü oluşturabilirsiniz.
* Ağ Bağlantısı: Kurulum sırasında veya sonrasında paket güncellemeleri ve ek yazılımların indirilmesi için aktif bir internet bağlantısı önerilir.
Planlama
* IP Adresleme: Sunucunuza statik bir IP adresi atamayı planlıyorsanız, ağ yöneticinizden veya kendi ağ yapılandırmanızdan uygun bir IP adresi, alt ağ maskesi, ağ geçidi ve DNS sunucusu bilgileri alın.
* Disk Bölümlendirme: Disklerinizi nasıl bölümlendireceğinize karar verin. Otomatik bölümlendirme çoğu zaman yeterli olsa da, manuel bölümlendirme (örneğin, ayrı /boot, /, /var, /home, swap bölümleri oluşturmak) daha fazla esneklik ve güvenlik sağlayabilir. LVM (Logical Volume Manager) kullanımı, gelecekte disk alanını yönetmek için büyük avantajlar sunar.
* Kullanıcı Hesapları: Root parolası ve ilk sudo kullanıcısı için güvenli parolalar belirleyin.
CentOS Kurulum Adımları
Artık hazırlıklar tamamlandığına göre, CentOS kurulum sürecine başlayabiliriz.
1. Kurulum Medyasından Önyükleme
Hazırladığınız önyüklenebilir USB sürücüyü veya DVD’yi sunucuya takın ve sunucuyu başlatın. BIOS/UEFI ayarlarından, sunucunun kurulum medyasından önyükleme yapacak şekilde ayarlandığından emin olun. Karşınıza CentOS önyükleme menüsü gelecektir. Genellikle “Install CentOS Linux” seçeneğini seçerek devam edebilirsiniz.
2. Dil Seçimi
Kurulum sihirbazı başladığında, ilk adım kurulum için kullanmak istediğiniz dili seçmektir. Bu, klavye düzenini ve sistemin varsayılan dilini etkileyecektir. Türkçe’yi seçip “Devam Et” butonuna tıklayın.
3. Kurulum Özeti Ekranı
Bu ekran, kurulumun tüm önemli ayarlarını tek bir yerden yapmanızı sağlar. Burada sırasıyla şu adımları tamamlamanız gerekecek:
KLAVYE ve DİL DESTEĞİ
Daha önce seçtiğiniz dil ve klavye düzeni burada listelenir. Gerekirse buradan değiştirebilirsiniz.
ZAMAN & TARİH
Sunucunuzun doğru zaman dilimini ayarlayın. Türkiye için “İstanbul” seçeneğini seçebilirsiniz. Ağ üzerinden zaman senkronizasyonunu (NTP) etkinleştirmek, sunucunuzun zamanının her zaman doğru olmasını sağlar.
KURULUM KAYNAĞI
Eğer ISO dosyasını bir USB sürücüden veya DVD’den kuruyorsanız, bu seçenek genellikle “Yerel Medya” olarak otomatik olarak algılanır ve doğru olur.
YAZILIM SEÇİMİ
Bu, sunucu kurulumu için en kritik adımlardan biridir.
* “Minimal Install” (Minimum Kurulum): Sunucu ortamları için kesinlikle önerilen seçenektir. Yalnızca temel işletim sistemi bileşenlerini kurar. Bu, gereksiz hizmetlerin ve paketlerin kurulmasını engelleyerek güvenlik açıklarını azaltır ve disk alanı ile kaynak tüketimini minimize eder.
* Diğer seçenekler (Server with GUI, Workstation vb.) daha fazla önceden yüklenmiş yazılım ve hizmet içerir ancak sunucular için genellikle gereksizdir.
Sağ taraftaki “Eklentiler” bölümünden ihtiyacınız olabilecek ek araçları (örneğin, “Development Tools”, “System Administration Tools”) seçebilirsiniz, ancak bunları kurulumdan sonra da kolayca ekleyebilirsiniz.
KURULUM HEDEFİ (Disk Bölümlendirme)
Bu adımda CentOS’un nereye kurulacağını ve disklerin nasıl bölümlendirileceğini ayarlarsınız.
* Otomatik Bölümlendirme: Eğer diski manuel olarak yapılandırmak istemiyorsanız, “Otomatik olarak yapılandır” seçeneğini seçebilirsiniz. Kurulum sihirbazı sizin için varsayılan bir bölümlendirme şeması oluşturacaktır.
* Manuel Bölümlendirme (Önerilen): “Kendim yapılandıracağım” seçeneğini seçerek daha fazla kontrol sahibi olursunuz. LVM (Logical Volume Manager) kullanmak, gelecekte disk alanını yönetmek ve genişletmek için büyük esneklik sağlar. Tipik bir manuel bölümlendirme şeması şunları içerebilir:
* /boot (Standart Bölüm): 500 MB – 1 GB (çekirdek dosyaları için).
* / (LVM Mantıksal Birim): Kalan alanın büyük bir kısmı (işletim sistemi ve uygulamalar için).
* swap (LVM Mantıksal Birim): RAM miktarınıza bağlı olarak (genellikle 2 GB – 8 GB arası, RAM’in 1-2 katı).
* Gerektiğinde /var, /home gibi dizinler için de ayrı LVM mantıksal birimleri oluşturabilirsiniz.
Disk bölümlendirmeyi tamamladıktan sonra “Bitti” butonuna tıklayın ve değişiklikleri onaylayın.
AĞ & HOST ADI
Bu adımda sunucunuzun ağ ayarlarını ve ana bilgisayar adını yapılandırırsınız.
* Ana Bilgisayar Adı (Hostname): Sunucunuza benzersiz bir ad verin (örneğin, webserver.example.com veya prod-db-01).
* Ağ Adaptörleri: Ağ arayüzünüzü (örneğin, enp0s3) seçin ve “Açık” konumuna getirin. DHCP ile otomatik IP adresi alabilir veya “Yapılandır” butonuna tıklayarak manuel (statik) IP adresi, alt ağ maskesi, ağ geçidi ve DNS sunucularını girebilirsiniz. Sunucular için statik IP adresi kullanmak genellikle daha kararlıdır ve önerilir.
4. ROOT PAROLASI ve KULLANICI OLUŞTURMA
Kurulum özeti ekranındaki tüm ayarları tamamladıktan sonra “KURULUMA BAŞLA” butonuna tıklayın. Bu sırada sizden Root parolası belirlemeniz ve isteğe bağlı olarak yeni bir kullanıcı hesabı oluşturmanız istenecektir.
* Root Parolası: Güçlü ve karmaşık bir Root parolası belirleyin. Root kullanıcısı, sistem üzerinde tam yetkiye sahiptir.
* Kullanıcı Oluşturma: Root kullanıcısı ile doğrudan çalışmak yerine, günlük yönetim görevleri için sudo yetkilerine sahip standart bir kullanıcı oluşturmak iyi bir güvenlik uygulamasıdır. Kullanıcı adı, tam ad ve güçlü bir parola belirleyin. “Bu kullanıcıyı yönetici yap” seçeneğini işaretleyerek sudo yetkileri verebilirsiniz.
5. Kurulumun Tamamlanması ve Yeniden Başlatma
Root parolası ve kullanıcı oluşturma adımlarını tamamladıktan sonra, CentOS kurulumu başlayacak ve seçtiğiniz paketleri kuracaktır. Bu işlem, donanım hızınıza ve seçtiğiniz yazılım miktarına bağlı olarak biraz zaman alabilir. Kurulum tamamlandığında, “Yeniden Başlat” butonuna tıklayarak sunucuyu yeniden başlatın. Kurulum medyasını çıkarmayı unutmayın.
Kurulum Sonrası Temel Yapılandırmalar
Sunucu yeniden başladıktan sonra, ilk açılışta komut satırı arayüzü ile karşılaşacaksınız (Minimal Install seçeneğini seçtiyseniz). Root kullanıcısı veya oluşturduğunuz standart kullanıcı ile giriş yapabilirsiniz.
1. Sistem Güncellemesi
Kurulumdan sonra yapmanız gereken ilk şey, sisteminizi güncel tutmaktır. Bu, güvenlik açıklarını kapatır ve yazılım kararlılığını artırır.
sudo yum update -y
CentOS 8 kullanıyorsanız yum yerine dnf kullanın:
sudo dnf update -y
Bu komut, tüm yüklü paketleri en son sürümlerine güncelleyecektir. Güncelleme tamamlandıktan sonra, çekirdek güncellemeleri varsa sunucuyu yeniden başlatmak iyi bir uygulamadır:
sudo reboot
2. Ağ Yapılandırmasının Kontrolü ve Ayarlanması
Eğer kurulum sırasında ağ ayarlarını yapmadıysanız veya değiştirmek istiyorsanız, bunu komut satırından yapabilirsiniz.
* Mevcut Ağ Bilgilerini Kontrol Etme:
ip a
veya
ifconfig
(ifconfig yüklü değilse sudo yum install net-tools -y ile kurabilirsiniz.)
* Statik IP Ayarlama (CentOS 7/8):
Ağ arayüzü yapılandırma dosyalarını düzenlemeniz gerekir. nmcli veya doğrudan /etc/sysconfig/network-scripts/ifcfg-eth0 (veya ifcfg-enp0s3 gibi) dosyasını düzenleyerek yapabilirsiniz.
Örnek ifcfg-enp0s3 dosyası içeriği:
TYPE=Ethernet
BOOTPROTO=static
NAME=enp0s3
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
Değişiklikleri kaydettikten sonra ağ hizmetini yeniden başlatın:
sudo systemctl restart network
veya
sudo nmcli connection reload
sudo nmcli connection up enp0s3
3. Hostname Ayarlama
Sunucunuzun ana bilgisayar adını (hostname) ayarlamak veya değiştirmek için:
sudo hostnamectl set-hostname your_hostname.example.com
Değişikliğin etkili olup olmadığını kontrol etmek için:
hostnamectl
4. Zaman Senkronizasyonu (NTP ile Chrony)
Sunucunuzun zamanının doğru olması, log analizi, güvenlik ve diğer hizmetler için kritik öneme sahiptir. CentOS 7 ve 8’de chrony varsayılan NTP istemcisidir.
* Chrony Durumunu Kontrol Etme:
sudo systemctl status chronyd
* Chrony’yi Etkinleştirme ve Başlatma:
sudo systemctl enable chronyd
sudo systemctl start chronyd
* NTP Sunucularını Yapılandırma:
/etc/chrony.conf dosyasını düzenleyerek NTP sunucularını ayarlayabilirsiniz. Genellikle varsayılan sunucular yeterlidir, ancak dilerseniz kendi yerel NTP sunucularınızı ekleyebilirsiniz.
sudo vi /etc/chrony.conf
Dosyayı kaydettikten sonra chronyd hizmetini yeniden başlatın.
Güvenlik İyileştirmeleri
Sunucu kurulumunun en önemli aşamalarından biri güvenlik yapılandırmasıdır.
1. SSH Güvenliği
SSH (Secure Shell), sunucunuza uzaktan güvenli erişim sağlamak için kullanılır. Varsayılan ayarları değiştirmek güvenliği artırır.
a. Root Kullanıcısı ile SSH Erişimi Devre Dışı Bırakma
Root kullanıcısı ile doğrudan SSH erişimi, potansiyel bir saldırganın brute-force saldırılarıyla tahmin etmeye çalışacağı en yaygın kullanıcı adlarından biri olduğu için risklidir. Bunun yerine, sudo yetkilerine sahip standart bir kullanıcı ile giriş yapıp gerektiğinde sudo kullanmak daha güvenlidir.
/etc/ssh/sshd_config dosyasını düzenleyin:
sudo vi /etc/ssh/sshd_config
PermitRootLogin satırını bulun ve yes yerine no olarak değiştirin:
PermitRootLogin no
Değişikliği kaydettikten sonra SSH hizmetini yeniden başlatın:
sudo systemctl restart sshd
b. Varsayılan SSH Portunu Değiştirme
SSH’nin varsayılan portu 22’dir. Bu portu değiştirmek, otomatik botların ve basit taramaların sunucunuza ulaşmasını zorlaştırır. 1024’ten büyük, kullanılmayan bir port numarası seçin (örneğin, 2222).
/etc/ssh/sshd_config dosyasını düzenleyin:
sudo vi /etc/ssh/sshd_config
Port 22 satırını bulun (veya ekleyin) ve istediğiniz yeni port numarasıyla değiştirin:
Port 2222
SSH hizmetini yeniden başlatmadan önce, yeni portu firewalld üzerinde açmanız gerekir. (Aşağıdaki Firewall bölümüne bakınız.)
SELinux için Port Ayarı: Eğer SELinux etkinse, yeni SSH portunu SELinux’a tanıtmanız gerekir:
sudo semanage port -a -t ssh_port_t -p tcp 2222
Ardından SSH hizmetini yeniden başlatın:
sudo systemctl restart sshd
Artık sunucunuza ssh -p 2222 user@your_server_ip komutuyla bağlanmanız gerekecek.
c. SSH Anahtar Tabanlı Kimlik Doğrulama
Parola tabanlı kimlik doğrulaması yerine SSH anahtar çifti kullanmak, çok daha güvenli bir yöntemdir.
* Anahtar Çifti Oluşturma (Yerel Makinenizde):
ssh-keygen -t rsa -b 4096
Bu komut, genel (public) ve özel (private) bir anahtar çifti oluşturacaktır. Özel anahtarınızı güvende tutun.
* Genel Anahtarı Sunucuya Kopyalama:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@your_server_ip
Eğer SSH portunu değiştirdiyseniz:
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 2222 user@your_server_ip"
Bu komut, genel anahtarınızı sunucudaki ~/.ssh/authorized_keys dosyasına ekleyecektir.
* Parola Tabanlı Kimlik Doğrulamayı Devre Dışı Bırakma (İsteğe Bağlı):
Anahtar tabanlı kimlik doğrulamanın çalıştığından emin olduktan sonra, /etc/ssh/sshd_config dosyasında PasswordAuthentication no ayarını yaparak parola tabanlı girişi tamamen kapatabilirsiniz.
2. Güvenlik Duvarı (Firewalld)
CentOS’ta varsayılan güvenlik duvarı firewalld‘dır. Gelen ve giden trafiği kontrol etmek için kullanılır.
* Firewalld Durumunu Kontrol Etme:
sudo systemctl status firewalld
* Firewalld’u Etkinleştirme ve Başlatma:
sudo systemctl enable firewalld
sudo systemctl start firewalld
* Açık Portları veya Hizmetleri Listeleme:
sudo firewall-cmd --list-all
* SSH Portunu Açma (Eğer değiştirdiyseniz):
Eğer SSH portunu 2222 olarak değiştirdiyseniz:
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
Varsayılan 22 portunu kapatmak için:
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
* Diğer Hizmetler İçin Port Açma:
Örneğin, HTTP (80) ve HTTPS (443) portlarını açmak için:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Sadece belirli bir portu açmak için:
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
3. SELinux (Security-Enhanced Linux)
SELinux, erişim kontrolü mekanizması sağlayan çekirdek düzeyinde bir güvenlik özelliğidir. Varsayılan olarak CentOS’ta “enforcing” modunda çalışır.
* SELinux Durumunu Kontrol Etme:
sestatus
Çıktı Current mode: enforcing ise etkin demektir.
* SELinux Modlarını Anlama:
* enforcing: SELinux politikalarını uygular ve erişimi reddeder.
* permissive: SELinux politikalarını uygular ancak erişimi reddetmez, sadece uyarılar loglar.
* disabled: SELinux tamamen kapalıdır.
* Modu Değiştirme (Geçici):
sudo setenforce 0 # Permissive moda geçer
sudo setenforce 1 # Enforcing moda geçer
* Modu Değiştirme (Kalıcı):
/etc/selinux/config dosyasını düzenleyin:
sudo vi /etc/selinux/config
SELINUX=enforcing satırını SELINUX=permissive veya SELINUX=disabled olarak değiştirin. Değişiklikler sunucu yeniden başlatıldığında etkili olur.
Önemli Not: SELinux’u devre dışı bırakmak genellikle önerilmez, çünkü önemli bir güvenlik katmanını kaldırırsınız. Eğer bir uygulama SELinux nedeniyle sorun çıkarıyorsa, sorunu gidermek için SELinux politikalarını doğru şekilde yapılandırmak veya permissive modda test etmek daha iyi bir yaklaşımdır.
4. Fail2ban Kurulumu (Brute-Force Koruması)
Fail2ban, sunucu loglarını izleyerek başarısız giriş denemelerini algılar ve belirli bir süre için saldırgan IP adreslerini güvenlik duvarında engeller.
* Kurulum:
sudo yum install epel-release -y
sudo yum install fail2ban -y
(CentOS 8 için dnf kullanın)
* Yapılandırma:
Fail2ban’ın ana yapılandırma dosyası /etc/fail2ban/jail.conf‘tur. Bu dosyayı doğrudan düzenlemek yerine, jail.local adında bir kopya oluşturup onu düzenlemek daha iyi bir uygulamadır:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vi /etc/fail2ban/jail.local
[DEFAULT] bölümünde bantime, findtime, maxretry gibi parametreleri ayarlayabilirsiniz.
Örneğin:
bantime = 1h # IP'yi 1 saat engelle
findtime = 10m # Son 10 dakika içindeki başarısız denemeleri say
maxretry = 5 # 5 başarısız denemede engelle
[sshd] bölümünde enabled = true yaparak SSH korumasını etkinleştirin. Eğer SSH portunu değiştirdiyseniz, port = 2222 olarak ayarlayın.
* Fail2ban’ı Başlatma ve Etkinleştirme:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
* Engellenen IP’leri Kontrol Etme:
sudo fail2ban-client status sshd
Temel Araçlar ve Hizmetler
Sunucunuzu daha verimli yönetmek için bazı temel araçları kurmak faydalı olacaktır.
1. Sudo Kurulumu (Eğer Kurulmadıysa)
Kurulum sırasında kullanıcı oluştururken “Bu kullanıcıyı yönetici yap” seçeneğini işaretlediyseniz, sudo zaten yüklü ve yapılandırılmıştır. Değilse, sudo paketini kurup kullanıcınıza yetki vermeniz gerekebilir.
sudo yum install sudo -y
Kullanıcıyı wheel grubuna ekleyerek sudo yetkisi verebilirsiniz:
sudo usermod -aG wheel your_username
Ardından, /etc/sudoers dosyasında wheel grubunun sudo kullanmasına izin veren satırın (%wheel ALL=(ALL) ALL) yorum satırı olmadığından emin olun (bu genellikle varsayılan olarak etkindir). Bu dosyayı visudo komutu ile güvenli bir şekilde düzenleyebilirsiniz.
2. Yardımcı Programlar
* wget ve curl: Dosya indirmek veya web istekleri yapmak için kullanışlı araçlar.
sudo yum install wget curl -y
* htop: Gelişmiş bir süreç görüntüleyici (top’ın daha kullanıcı dostu versiyonu).
sudo yum install htop -y
* vim/nano: Metin düzenleyiciler. Minimal kurulumda genellikle vi bulunur, vim veya nano daha fazla özellik sunar.
sudo yum install vim nano -y
* Git: Versiyon kontrol sistemi.
sudo yum install git -y
Sonuç
Bu makalede, CentOS tabanlı bir sunucunun ilk kurulumundan, temel güvenlik ayarlarına ve başlangıç yapılandırmalarına kadar kapsamlı bir rehber sunulmuştur. Güvenli ve verimli bir sunucu ortamı oluşturmak için doğru temelleri atmak kritik öneme sahiptir. CentOS’un kararlılığı ve esnekliği, bu temelleri sağlam bir şekilde inşa etmenize olanak tanır.
Unutmayın ki sunucu yönetimi sürekli bir süreçtir. Sistemi düzenli olarak güncellemek, güvenlik loglarını izlemek, yedekleme stratejileri oluşturmak ve performansı optimize etmek, sunucunuzun uzun ömürlü ve güvenilir kalmasını sağlayacaktır. Bu ilk kurulum adımları, sunucunuzu bir sonraki aşamaya taşımak için sağlam bir başlangıç noktasıdır; artık web sunucuları, veritabanları, uygulama sunucuları veya diğer hizmetleri kurmaya hazırsınız. Her zaman güncel kalmaya ve en iyi güvenlik uygulamalarını takip etmeye özen gösterin.
