Takip et

Yeni CentOS 7 Sunucuları İçin Ekstra Önerilen Adımlar

Yeni CentOS 7 Sunucuları İçin Ekstra Önerilen Adımlar CentOS 7, kararlılığı, güvenilirliği ve geniş topluluk desteği sayesinde kurumsal

Yeni CentOS 7 Sunucuları İçin Ekstra Önerilen Adımlar

CentOS 7, kararlılığı, güvenilirliği ve geniş topluluk desteği sayesinde kurumsal sunucu ortamlarında yaygın olarak kullanılan güçlü bir işletim sistemidir. Temel bir CentOS 7 kurulumu, bir sunucuyu çalışır duruma getirmek için yeterli olsa da, modern güvenlik tehditleri, performans gereksinimleri ve yönetim kolaylığı göz önüne alındığında, ilk kurulumdan sonra atılması gereken bir dizi ek adım bulunmaktadır. Bu adımlar, sunucunuzun daha güvenli, daha verimli ve yönetilebilir olmasını sağlayarak uzun vadede operasyonel maliyetleri düşürecek ve olası sorunların önüne geçecektir. Bu teknik makalede, yeni bir CentOS 7 sunucusunun devreye alınmasından sonra uygulanması gereken ek yapılandırmaları ve en iyi uygulamaları detaylı bir şekilde inceleyeceğiz.

İlk Kurulum Sonrası Temel Yapılandırmalar

Bir CentOS 7 sunucusunu kurduktan sonra, sistemin temel işlevselliğini ve kararlılığını sağlamak için bazı ilk yapılandırmaların yapılması kritik öneme sahiptir. Bu adımlar, sunucunuzun daha sağlam bir temel üzerine inşa edilmesine yardımcı olur.

Sistem Güncellemesi

Herhangi bir yeni sunucunun ilk adımı, tüm yüklü paketleri en son sürümlerine güncellemek olmalıdır. Bu, bilinen güvenlik açıklarını kapatır, hata düzeltmelerini uygular ve sistemin genel kararlılığını artırır.

sudo yum update -y
sudo yum upgrade -y

yum update komutu, mevcut paketleri güncellerken, yum upgrade komutu ise kernel dahil olmak üzere tüm sistem paketlerini güncelleyebilir. İki komutun da çalıştırılması genellikle en güvenli yaklaşımdır. Güncelleme işlemi tamamlandıktan sonra, özellikle kernel güncellendiyse, sistemin yeniden başlatılması önerilir:

sudo reboot

Hostname Ayarı

Sunucunuzun ağda kolayca tanımlanabilmesi için anlamlı bir ana bilgisayar adı (hostname) belirlemek önemlidir. Bu, özellikle birden fazla sunucu yönetirken karmaşıklığı azaltır.

sudo hostnamectl set-hostname your_server_hostname.your_domain.com

Bu komut, sunucunun kalıcı ana bilgisayar adını ayarlar. Değişikliğin hemen etkili olduğunu doğrulamak için hostname veya hostnamectl status komutlarını kullanabilirsiniz.

Zaman Dilimi ve NTP Ayarları

Doğru zaman dilimi ve senkronize edilmiş sistem saati, logların tutarlılığı, güvenlik sertifikalarının geçerliliği ve dağıtılmış sistemlerdeki işlemlerin doğru sıralanması için hayati öneme sahiptir.

Zaman dilimini ayarlamak için:

sudo timedatectl set-timezone Europe/Istanbul

Kendi coğrafi konumunuza uygun zaman dilimini timedatectl list-timezones komutu ile listeleyerek bulabilirsiniz.

Sistem saatini NTP (Network Time Protocol) sunucuları ile senkronize etmek, zamanın doğru kalmasını sağlar. CentOS 7’de chrony veya ntp servisi kullanılabilir. chrony, daha modern ve genellikle daha doğru bir seçenektir.

sudo yum install chrony -y
sudo systemctl enable chronyd
sudo systemctl start chronyd

chrony yapılandırmasını /etc/chrony.conf dosyasında kontrol edebilir ve gerekirse kendi NTP sunucularınızı ekleyebilirsiniz. Senkronizasyon durumunu kontrol etmek için:

chronyc tracking

SELinux Durumu

SELinux (Security-Enhanced Linux), Linux çekirdeğine entegre edilmiş bir güvenlik mekanizmasıdır ve zorunlu erişim kontrolü (MAC) sağlar. Varsayılan olarak CentOS 7’de “enforcing” modunda gelir ve bu, güvenlik için en iyi uygulamadır. Ancak, bazı özel uygulamaların veya yapılandırmaların SELinux ile çakışması durumunda sorunlar yaşanabilir.

SELinux durumunu kontrol etmek için:

sestatus

Eğer SELinux’u geçici olarak devre dışı bırakmanız gerekirse (yalnızca sorun giderme amaçlı ve kalıcı olarak önerilmez):

sudo setenforce 0

Kalıcı olarak değiştirmek için /etc/selinux/config dosyasını düzenlemeniz gerekir:

# Bu satırı bulun:

SELINUX=enforcing

Değişiklikler için:

SELINUX=permissive # Uyarı verir ama engellemez

SELINUX=disabled # Tamamen devre dışı bırakır (önerilmez)

Değişikliklerin etkili olması için sunucuyu yeniden başlatmanız gerekir. Güvenlik açısından, SELinux’un “enforcing” modunda kalması ve karşılaşılan sorunların SELinux politikaları ile çözülmesi en iyi yaklaşımdır.

Güvenlik Odaklı Adımlar

Sunucu güvenliği, herhangi bir sunucu yönetiminin en önemli yönlerinden biridir. Yeni bir CentOS 7 sunucusunu daha güvenli hale getirmek için atılması gereken adımlar şunlardır:

Yeni Kullanıcı Oluşturma ve Sudo Yetkilendirmesi

Root kullanıcısıyla doğrudan çalışmak, yanlış bir komutun tüm sisteme zarar vermesi riskini artırır. Bu nedenle, ayrıcalıklı işlemler için sudo yetkisine sahip standart bir kullanıcı oluşturmak en iyi uygulamadır.

Yeni bir kullanıcı oluşturun:

sudo adduser your_username
sudo passwd your_username

Oluşturulan kullanıcıya sudo yetkisi vermek için onu wheel grubuna ekleyin (CentOS’ta wheel grubu, sudo kullanma yetkisine sahiptir):

sudo usermod -aG wheel your_username

Bu adımlardan sonra, your_username ile giriş yapabilir ve ayrıcalıklı komutları sudo önekiyle çalıştırabilirsiniz.

Root Girişini Devre Dışı Bırakma

Root kullanıcısının doğrudan SSH üzerinden giriş yapmasını engellemek, kaba kuvvet saldırılarına karşı önemli bir savunma mekanizmasıdır.

SSH yapılandırma dosyasını düzenleyin:

sudo vi /etc/ssh/sshd_config

Aşağıdaki satırı bulun ve yes yerine no olarak değiştirin (veya yorum satırından çıkarın):

PermitRootLogin no

Değişiklikleri kaydettikten sonra SSH servisini yeniden başlatın:

sudo systemctl restart sshd

Artık root kullanıcısı doğrudan SSH ile giriş yapamayacak, yalnızca oluşturduğunuz standart kullanıcı üzerinden giriş yapıp sudo ile ayrıcalık kazanabilecektir.

SSH Güvenliğini Artırma

SSH, sunucuya uzaktan erişim için temel bir araçtır ve bu nedenle özel bir dikkatle korunmalıdır.

Port Değiştirme

SSH’nin varsayılan portu olan 22’yi değiştirmek, otomatik botların ve kaba kuvvet saldırılarının ilk dalgasını engellemeye yardımcı olabilir. Daha yüksek, standart olmayan bir port seçin (örneğin, 2222 veya 22022).

SSH yapılandırma dosyasını düzenleyin:

sudo vi /etc/ssh/sshd_config

Port 22 satırını bulun, yorum satırından çıkarın ve yeni bir port numarası ile değiştirin:

Port 22022

Yeni portu firewalld‘da açmanız ve SELinux’a tanıtmanız gerekir:

sudo firewall-cmd --permanent --add-port=22022/tcp
sudo firewall-cmd --reload
sudo semanage port -a -t ssh_port_t -p tcp 22022

SSH servisini yeniden başlatın:

sudo systemctl restart sshd

Artık SSH bağlantılarınız için yeni portu belirtmeniz gerekecek: ssh -p 22022 your_username@your_server_ip.

Şifre Kimlik Doğrulamasını Devre Dışı Bırakma (SSH Anahtarları Kullanımı)

SSH anahtarları, şifrelerden çok daha güvenlidir. Şifre kimlik doğrulamasını devre dışı bırakarak yalnızca anahtar tabanlı kimlik doğrulamanın kullanılması, sunucunuzu kaba kuvvet saldırılarına karşı neredeyse geçirimsiz hale getirir.

Öncelikle, istemci makinenizde bir SSH anahtar çifti oluşturduğunuzdan ve ortak anahtarınızı sunucudaki ~/.ssh/authorized_keys dosyasına kopyaladığınızdan emin olun.

Sunucuda SSH yapılandırma dosyasını düzenleyin:

sudo vi /etc/ssh/sshd_config

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

PasswordAuthentication no
ChallengeResponseAuthentication no

SSH servisini yeniden başlatın:

sudo systemctl restart sshd

Bu adımdan sonra, yalnızca SSH anahtarına sahip kullanıcılar sunucuya erişebilecektir.

Fail2ban Kurulumu ve Yapılandırması

Fail2ban, kaba kuvvet saldırılarını engelleyen bir intrusion prevention sistemidir. Belirli bir süre içinde çok sayıda başarısız giriş denemesi yapan IP adreslerini otomatik olarak yasaklar.

Kurulum:

sudo yum install epel-release -y
sudo yum install fail2ban -y

Fail2ban yapılandırması genellikle /etc/fail2ban/jail.conf dosyasında bulunur. Ancak, varsayılan yapılandırmayı doğrudan değiştirmek yerine, özel ayarlarınızı /etc/fail2ban/jail.local dosyasına eklemek daha iyidir.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vi /etc/fail2ban/jail.local

[DEFAULT] bölümünde, yasaklama süresini (bantime), deneme sayısını (maxretry) ve zaman dilimini (findtime) ayarlayabilirsiniz. Örneğin:

[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
port = ssh,22022 # SSH portunuzu buraya ekleyin

Fail2ban servisini başlatın ve etkinleştirin:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Yasaklanan IP adreslerini kontrol etmek için:

sudo fail2ban-client status sshd

Firewall Yapılandırması (firewalld)

CentOS 7, varsayılan olarak firewalld adında dinamik bir güvenlik duvarı servisi kullanır. Sunucunuza yalnızca gerekli portlardan erişime izin vermek, ağ tabanlı saldırılara karşı ilk savunma hattını oluşturur.

Varsayılan olarak firewalld etkin olmalıdır. Durumunu kontrol edin:

sudo systemctl status firewalld
Gerekli Portları Açma/Kapatma

Yalnızca ihtiyacınız olan servislerin portlarını açın. Örneğin, web sunucusu (HTTP/HTTPS) ve SSH (varsayılan veya özel portunuz) için portları açmak:

# SSH (varsayılan 22 veya özel portunuz, örneğin 22022)
sudo firewall-cmd --permanent --add-port=22022/tcp

HTTP (web sunucusu)

sudo firewall-cmd --permanent --add-service=http

HTTPS (güvenli web sunucusu)

sudo firewall-cmd --permanent --add-service=https

Yapılan değişiklikleri etkinleştirin

sudo firewall-cmd --reload

Açık portları ve servisleri listelemek için:

sudo firewall-cmd --list-all

İhtiyaç duyulmayan portları kapatmak için remove-port veya remove-service komutlarını kullanabilirsiniz.

Ek Güvenlik Araçları

Sunucunuzun güvenliğini artırmak için ek araçlar ve kontroller de kullanılabilir.

Lynis ve Rkhunter

* Lynis: Bir güvenlik denetleme aracıdır. Sistem yapılandırmanızı tarar ve güvenlik açıklarını, yanlış yapılandırmaları ve iyileştirme önerilerini raporlar.

sudo yum install lynis -y
    sudo lynis audit system

* Rkhunter (Rootkit Hunter): Sunucunuzda rootkit’leri, arka kapıları ve diğer yerel istismarları arayan bir araçtır.

sudo yum install rkhunter -y
    sudo rkhunter --update
    sudo rkhunter --check

Bu araçlar, düzenli olarak çalıştırıldığında sunucunuzun güvenlik duruşunu izlemenize yardımcı olur.

Performans ve Yönetilebilirlik İçin Adımlar

Güvenliğin yanı sıra, sunucunun sorunsuz çalışması ve kolay yönetilebilmesi için de bazı adımlar atılmalıdır.

EPEL Deposunu Etkinleştirme

EPEL (Extra Packages for Enterprise Linux) deposu, CentOS için ek yazılım paketleri sağlar. Birçok kullanışlı araç ve uygulama bu depoda bulunur.

sudo yum install epel-release -y

EPEL etkinleştirildikten sonra, yum komutunu kullanarak bu depodan paketler yükleyebilirsiniz.

Disk Kullanımını İzleme

Disk alanının tükenmesi, sunucu kararsızlığına veya hizmet kesintilerine yol açabilir. Disk kullanımını düzenli olarak izlemek önemlidir.

* df -h: Dosya sistemi disk kullanımını okunabilir formatta gösterir.
* du -sh /path/to/directory: Belirli bir dizinin toplam boyutunu gösterir.

Otomatik izleme için cron işleri veya izleme sistemleri (Nagios, Zabbix vb.) kurulabilir.

Log Yönetimi (logrotate)

Sistem ve uygulama logları zamanla çok büyük boyutlara ulaşabilir ve disk alanını tüketebilir. logrotate, log dosyalarını otomatik olarak sıkıştırma, döndürme ve silme aracıdır. CentOS’ta varsayılan olarak yüklüdür ve /etc/logrotate.conf ana yapılandırma dosyası ile /etc/logrotate.d/ dizinindeki uygulama özel yapılandırma dosyalarını kullanır.

Varsayılan ayarlar çoğu zaman yeterli olsa da, belirli uygulamalar için özel logrotate kuralları eklemeniz gerekebilir. Örneğin, bir web sunucusu (Nginx/Apache) veya veritabanı (MySQL/PostgreSQL) logları için.

Sistem Kaynaklarını İzleme Araçları

Sistem kaynaklarının (CPU, RAM, Disk I/O, Ağ) anlık durumunu izlemek, performans sorunlarını teşhis etmek için önemlidir.

* htop: top komutunun daha gelişmiş ve etkileşimli bir versiyonudur. Renkli çıktısı ve kolay gezinme özellikleri ile süreçleri ve kaynak kullanımını izlemek için mükemmeldir.

sudo yum install htop -y
    htop

* glances: Çapraz platform, curses tabanlı bir sistem izleme aracıdır. CPU, bellek, disk I/O, ağ, süreçler, dosya sistemi ve sensörler gibi birçok bilgiyi tek bir ekranda gösterir.

sudo yum install python-pip -y
    sudo pip install glances
    glances

Bu araçlar, sunucunun mevcut durumunu hızlıca anlamanıza yardımcı olur.

Yum Temizliği ve Bakımı

Zamanla, yum önbelleğinde eski paketler ve meta veriler birikebilir. Bu, disk alanı kaplayabilir ve yum işlemlerini yavaşlatabilir. Düzenli olarak yum önbelleğini temizlemek iyi bir uygulamadır.

sudo yum clean all
sudo yum autoremove

yum clean all, tüm önbelleğe alınmış paketleri ve başlıkları temizler. yum autoremove ise artık ihtiyaç duyulmayan bağımlılıkları kaldırır.

Yedekleme Stratejileri

Herhangi bir sunucunun en kritik yönlerinden biri, veri kaybını önlemek için sağlam bir yedekleme stratejisine sahip olmaktır. Felaket durumlarında verilerinizi geri yükleyebilmek, iş sürekliliği için hayati öneme sahiptir.

Temel Yedekleme Yaklaşımları

* Rsync: Uzak veya yerel dizinleri senkronize etmek için kullanılan güçlü bir araçtır. Yalnızca değişen dosyaları kopyalayarak bant genişliğinden tasarruf sağlar.

# Yerel yedekleme örneği
    sudo rsync -avh --delete /var/www/html/ /backup/web_data/

    # Uzak yedekleme örneği
    sudo rsync -avh --delete -e "ssh -p 22022" /var/www/html/ user@remote_server:/backup/web_data/

--delete seçeneği, kaynakta olmayan dosyaları hedefte siler, bu da yedeğin kaynakla tam olarak eşleşmesini sağlar.
* Snapshotting: Sanal makinelerde veya LVM (Logical Volume Manager) kullanan fiziksel sunucularda disk anlık görüntüleri almak, hızlı geri yükleme noktaları oluşturmanın etkili bir yoludur. Bu yöntem, özellikle tüm sistem durumunu belirli bir zamanda yakalamak için kullanışlıdır.
* Tar: Dosyaları ve dizinleri tek bir arşiv dosyasına paketlemek için kullanılan geleneksel bir Linux aracıdır. Sıkıştırma seçenekleriyle birlikte kullanılabilir.

sudo tar -czvf /backup/full_backup_$(date +%F).tar.gz / --exclude=/backup --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/tmp --exclude=/run --exclude=/mnt --exclude=/media --exclude=/lost+found

Bu örnek, tüm sistemi yedeklerken belirli dizinleri hariç tutar.

Yedekleme Araçları

* dump/restore: Geleneksel Unix/Linux dosya sistemi yedekleme ve geri yükleme araçlarıdır.
* duplicity: Şifreli, artımlı ve bant genişliği dostu yedeklemeler yapmak için tasarlanmış bir araçtır.
* Bulut Yedekleme Çözümleri: Amazon S3, Google Cloud Storage, Azure Blob Storage gibi bulut depolama hizmetleri, verilerinizi off-site (uzak konumda) güvenli bir şekilde saklamak için ölçeklenebilir ve güvenilir çözümler sunar. Bu hizmetlere rclone gibi araçlarla erişilebilir.

Yedekleme stratejisi, yedekleme sıklığı, saklama süresi (retention policy) ve geri yükleme prosedürlerini içermelidir. Yedeklemelerin düzenli olarak test edilmesi, felaket anında gerçekten işe yaradığından emin olmak için kritik öneme sahiptir.

Ekstra İpuçları ve En İyi Uygulamalar

Sunucunuzun ömrü boyunca sağlıklı ve güvenli kalmasını sağlamak için bazı ek ipuçları ve en iyi uygulamalar mevcuttur.

Otomatik Güncellemeler (Dikkatli Yaklaşım)

Güncellemeler güvenlik için önemli olsa da, otomatik güncellemeler bazen uyumluluk sorunlarına yol açabilir. Özellikle üretim sunucularında, güncellemeleri manuel olarak veya test ortamında doğruladıktan sonra uygulamak daha güvenlidir. Ancak, kritik güvenlik yamaları için yum-cron gibi araçlarla otomatik güncellemeleri yapılandırabilirsiniz.

yum-cron kurulumu:

sudo yum install yum-cron -y
sudo vi /etc/yum/yum-cron.conf

Yapılandırma dosyasında apply_updates = yes olarak ayarlayarak otomatik güncellemeleri etkinleştirebilirsiniz. Ancak, bu adımı atmadan önce potansiyel riskleri değerlendirmeniz önemlidir.

Sistem Kaynaklarının Optimizasyonu

* Kernel Parametreleri: sysctl komutu ile çekirdek parametrelerini ayarlayarak ağ performansını, bellek yönetimini ve dosya sistemi davranışını optimize edebilirsiniz. Kalıcı değişiklikler için /etc/sysctl.d/ dizinindeki dosyalara eklemeler yapın.
* Swap Alanı: Sunucunuzda yeterli RAM varsa, swap (takas) alanının kullanımını en aza indirmek için swappiness değerini düşürebilirsiniz.

sudo sysctl vm.swappiness=10
    # Kalıcı yapmak için /etc/sysctl.conf dosyasına ekleyin:
    # vm.swappiness=10

* Disk G/Ç Scheduler: Disk performansını artırmak için G/Ç zamanlayıcısını (I/O scheduler) iş yükünüze uygun şekilde ayarlayabilirsiniz (örneğin, SSD’ler için noop veya deadline).

Dokümantasyon ve Denetim

Her sunucu yapılandırması ve yapılan değişiklikler detaylı bir şekilde belgelenmelidir. Bu, gelecekteki sorun giderme, bakım ve diğer ekip üyelerinin sunucuyu anlaması için hayati öneme sahiptir. Ayrıca, düzenli güvenlik denetimleri ve log incelemeleri, anormallikleri ve potansiyel güvenlik olaylarını tespit etmek için yapılmalıdır.

Sonuç

Yeni bir CentOS 7 sunucusunun temel kurulumundan sonra atılması gereken ek adımlar, sunucunuzun güvenliğini, performansını ve yönetilebilirliğini önemli ölçüde artırır. Bu makalede ele alınan sistem güncellemeleri, güvenlik odaklı yapılandırmalar (SSH sertleşmesi, firewall, Fail2ban), performans izleme araçları ve sağlam bir yedekleme stratejisi, modern sunucu yönetiminin temelini oluşturur. Bu adımları titizlikle uygulamak, sunucunuzun uzun vadede sorunsuz çalışmasını sağlayacak, potansiyel tehditlere karşı daha dirençli hale getirecek ve operasyonel maliyetleri azaltacaktır. Unutmayın ki güvenlik ve performans sürekli bir çaba gerektirir; bu nedenle, bu adımlar bir kerelik değil, sürekli bir bakım ve gözden geçirme sürecinin parçası olmalıdır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.