← Tüm yazılar

Ubuntu 24.04 ve 26.04 Sunucu Kurulumu Sonrası Yapılması Gereken 15 İşlem

Yeni bir Ubuntu Server kurdunuz. Peki, işletim sistemi kurulumunun tamamlanması sunucunun kullanıma hazır olduğu anlamına gelir mi?

Aslında hayır. Varsayılan kurulum, temel hizmetlerin çalışması için yeterli olsa da özellikle internete açık veya üretim ortamında kullanılacak bir sunucunun güvenlik, erişim kontrolü, güncelleme ve izleme yapılandırmalarının gözden geçirilmesi gerekir.

Bu yazıda Ubuntu 24.04 LTS ve Ubuntu 26.04 LTS kurulumunun ardından uyguladığım veya kontrol edilmesini önerdiğim 15 temel işlemi, örnek komutlarla ele alacağız.

Hedef sistemler: Ubuntu Server 24.04 LTS / 26.04 LTS
Seviye: Başlangıç – Orta
Gereksinim: sudo yetkisine sahip kullanıcı
Son güncelleme: 11 Kasım 2026

Önemli: Özellikle SSH ve güvenlik duvarı yapılandırmaları sırasında mevcut bağlantınızı kaybetmemek için ikinci bir SSH oturumu veya sunucu konsol erişiminiz hazır olsun. Üretim sistemlerinde değişiklikler bakım penceresinde ve yedekleme sonrasında yapılmalıdır.


1. İşletim Sistemi ve Donanım Bilgilerini Kontrol Edin

İlk olarak hangi Ubuntu sürümünde çalıştığımızı ve sistemin mevcut kaynaklarını öğrenelim.

cat /etc/os-release
hostnamectl
uname -r

Bu komutlar sırasıyla işletim sistemi sürümünü, sistem bilgilerini ve kullanılan Linux çekirdeğini gösterir.

Ardından donanım kaynaklarını kontrol edelim:

lscpu
free -h
df -h
lsblk

Bu kontroller sayesinde CPU, RAM, disk bölümleri ve bağlı depolama aygıtları hakkında bilgi edinebiliriz.

Özellikle sanal sunucularda ayrılan kaynaklarla işletim sisteminin gördüğü kaynakların eşleştiğini doğrulamak faydalıdır.

2. Sistem Paketlerini Güncelleyin

Yeni kurulan bir sunucuda ilk yapılması gereken işlemlerden biri paketlerin güncellenmesidir.

sudo apt update
sudo apt upgrade -y

apt update, paket depolarındaki güncel paket bilgilerini indirir.

apt upgrade, mevcut paketleri uygun güncel sürümlere yükseltir.

Güncelleme sonrasında ihtiyaç duyulmayan bağımlılıkları önce kontrol edebiliriz:

sudo apt autoremove --dry-run

Kaldırılacak paketler uygun görünüyorsa:

sudo apt autoremove

Sistemin yeniden başlatılmasının gerekli olup olmadığını kontrol etmek için:

test -f /var/run/reboot-required && cat /var/run/reboot-required

Dosya mevcutsa uygun bakım zamanında sunucu yeniden başlatılmalıdır.

Not: apt upgrade işletim sistemini Ubuntu 24.04’ten 26.04’e yükseltmez. Dağıtım yükseltmesi ayrı bir süreçtir.

3. Hostname ve Saat Dilimini Yapılandırın

Sunuculara anlamlı hostname verilmesi, özellikle çok sayıda sistemin yönetildiği ortamlarda önemlidir.

Mevcut hostname:

hostnamectl

Örnek olarak sunucu adını değiştirelim:

sudo hostnamectl set-hostname ubuntu-srv01

Hostname değişikliğinden sonra /etc/hosts içerisindeki yerel isim eşleştirmelerinin de tutarlı olduğunu kontrol edin.

Saat dilimini görüntüleyelim:

timedatectl

Türkiye saat dilimini yapılandıralım:

sudo timedatectl set-timezone Europe/Istanbul

Doğrulama:

date
timedatectl status

Saat diliminin doğru olması log inceleme, olay korelasyonu ve zamanlanmış görevlerin takibi açısından önemlidir.

4. NTP ile Saat Senkronizasyonunu Kontrol Edin

Sunucular arasında saat farklılıkları kimlik doğrulama, sertifika kontrolü ve log analizlerinde sorun oluşturabilir.

Ubuntu 24.04 kurulumlarında systemd-timesyncd, Ubuntu 26.04’ün yeni kurulumlarında ise varsayılan olarak chrony kullanılmaktadır.

Öncelikle aktif zaman servislerini kontrol edelim:

timedatectl status
systemctl is-active chrony
systemctl is-active systemd-timesyncd

Chrony kullanılıyorsa:

chronyc tracking
chronyc sources -v

Burada saat senkronizasyonunun sağlıklı gerçekleştiğini ve erişilebilir zaman kaynakları bulunduğunu kontrol ediyoruz.

Kurumsal ortamlarda merkezi NTP sunucularının kullanılması tercih edilebilir.

Dikkat: Aktif ve düzgün çalışan bir zaman servisi varsa ikinci bir NTP servisini gereksiz yere devreye almayın.

5. Root Yerine Yönetici Kullanıcısı Oluşturun

Sunucuyu günlük olarak doğrudan root hesabıyla yönetmek yerine sudo yetkisine sahip ayrı bir kullanıcı kullanmak daha güvenli bir yaklaşımdır.

Örnek kullanıcı oluşturalım:

sudo adduser sysadmin

Kullanıcıya sudo yetkisi verelim:

sudo usermod -aG sudo sysadmin

Kontrol edelim:

id sysadmin
sudo -l -U sysadmin

Yeni kullanıcıyla oturum açıp sudo yetkisini test edin:

sudo whoami

Komutun root çıktısını vermesi, sudo yetkisinin çalıştığını gösterir.

Kullanıcı doğrulanmadan mevcut yönetici hesabını devre dışı bırakmayın.

6. SSH Key ile Güvenli Bağlantı Yapılandırın

SSH, Linux sunucuların uzaktan yönetiminde en sık kullanılan servislerden biridir.

Parola tabanlı giriş yerine SSH anahtarı kullanmak, özellikle internete açık sunucularda önemli bir güvenlik önlemidir.

İstemci bilgisayarınızda anahtar oluşturun:

ssh-keygen -t ed25519 -C "sysadmin"

Anahtara güçlü bir parola (passphrase) belirlemeniz önerilir.

Linux istemciden açık anahtarı sunucuya aktarabilirsiniz:

ssh-copy-id sysadmin@SUNUCU_IP

Windows üzerinde OpenSSH kullanıyorsanız public key dosyasının içeriğini sunucudaki ilgili kullanıcının ~/.ssh/authorized_keys dosyasına güvenli şekilde ekleyebilirsiniz.

Sonrasında bağlantıyı test edin:

ssh sysadmin@SUNUCU_IP

Bağlantının SSH key ile başarılı olduğunu doğrulamadan parola girişini kapatmayın.

7. SSH Servisini Güvenli Hale Getirin

SSH key doğrulaması tamamlandıktan sonra parola ile girişleri kapatabiliriz.

Ubuntu üzerinde yapılandırmayı ayrı bir dosyada tutmak, değişikliklerin yönetimini kolaylaştırır.

sudo nano /etc/ssh/sshd_config.d/00-hardening.conf

Dosya içeriği:

PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
X11Forwarding no

Buradaki ayarlar:

  • Public key kimlik doğrulamasını etkinleştirir.
  • Parola tabanlı SSH girişini kapatır.
  • Klavye etkileşimli kimlik doğrulamasını kapatır.
  • Root hesabının parola ile SSH bağlantısını engeller.
  • SSH üzerinden X11 yönlendirmesini devre dışı bırakır.

Root hesabıyla SSH erişimini tamamen kapatmak istiyorsanız ve alternatif yönetici erişimini doğruladıysanız PermitRootLogin no tercih edebilirsiniz.

Yapılandırma dosyasını kontrol edelim:

sudo sshd -t

Etkin ayarları inceleyelim:

sudo sshd -T | grep -E \
'passwordauthentication|kbdinteractiveauthentication|permitrootlogin|pubkeyauthentication'

Her şey doğruysa:

sudo systemctl reload ssh

Önemli: Ubuntu’da SSH yapılandırma dosyalarının okuma sırası nedeniyle başka dosyalardaki ayarlar beklenmedik sonuçlara yol açabilir. Son durumu sshd -T ile doğrulayın. Mevcut SSH bağlantısını kapatmadan ikinci bir oturumla giriş testi yapın.

8. UFW Güvenlik Duvarını Yapılandırın

Ubuntu üzerinde temel güvenlik duvarı yönetimi için UFW kullanılabilir.

Önce durumunu kontrol edelim:

sudo ufw status verbose

Varsayılan politikaları belirleyelim:

sudo ufw default deny incoming
sudo ufw default allow outgoing

SSH erişimine izin verelim:

sudo ufw allow 22/tcp

Daha güvenli bir yaklaşım olarak yalnızca yönetim IP adresine izin verebiliriz:

sudo ufw allow from 192.0.2.10 to any port 22 proto tcp

Buradaki IP adresi örnektir; kendi yönetim IP adresinizle değiştirmelisiniz.

Ardından güvenlik duvarını etkinleştirelim:

sudo ufw enable

Kuralları kontrol edelim:

sudo ufw status numbered

Dikkat: UFW etkinleştirilmeden önce SSH bağlantısına izin veren kural mutlaka tanımlanmalıdır.

Docker, Kubernetes veya başka bir konteyner altyapısı kullanılacaksa UFW kurallarıyla konteyner ağ kurallarının etkileşimi ayrıca değerlendirilmelidir.

9. Fail2ban ile Giriş Denemelerini İzleyin

Fail2ban, tekrarlayan başarısız giriş denemelerini analiz ederek belirli koşullarda kaynak IP adreslerini geçici olarak engelleyebilen bir araçtır.

Kurulum:

sudo apt install fail2ban -y

SSH için basit bir yapılandırma hazırlayalım:

sudo nano /etc/fail2ban/jail.d/sshd.local

Örnek içerik:

[sshd]
enabled = true
backend = systemd
port = ssh
maxretry = 5
findtime = 10m
bantime = 1h

Servisi etkinleştirelim:

sudo systemctl enable --now fail2ban
sudo systemctl restart fail2ban

Kontrol:

sudo fail2ban-client status
sudo fail2ban-client status sshd

Bu yapılandırma, SSH loglarında belirlenen süre içerisinde çok sayıda başarısız giriş kaydı oluşturan IP adreslerinin geçici olarak engellenmesini sağlar.

Not: SSH key kullanımı, yönetim IP kısıtlaması ve güvenlik duvarı kuralları temel korumayı oluşturur. Fail2ban bunların yerine değil, ek güvenlik katmanı olarak düşünülmelidir.

10. Gereksiz Servisleri ve Açık Portları Kontrol Edin

Bir Linux sunucuda gereksiz çalışan her servis, potansiyel saldırı yüzeyini artırabilir.

Aktif servisleri görüntüleyelim:

systemctl list-units --type=service --state=running

Ağ üzerinde dinleyen portları kontrol edelim:

sudo ss -tulpen

Örneğin:

0.0.0.0:22     SSH
0.0.0.0:80     HTTP
0.0.0.0:443    HTTPS

Bu portların hepsinin kullanılması gerekli olmayabilir.

İhtiyaç duyulmayan bir servisi kapatmak için:

sudo systemctl disable --now SERVIS_ADI

Servisi kaldırmadan önce başka uygulamaların bu servise bağımlı olup olmadığını kontrol edin.

Özellikle internete açık sistemlerde yalnızca gerçekten ihtiyaç duyulan portların erişilebilir olması hedeflenmelidir.

11. Otomatik Güvenlik Güncellemelerini Kontrol Edin

Ubuntu, güvenlik güncellemelerini otomatik uygulamak için unattended-upgrades mekanizmasını kullanır.

Paket kurulu değilse:

sudo apt install unattended-upgrades -y

Mevcut yapılandırmayı kontrol edelim:

cat /etc/apt/apt.conf.d/20auto-upgrades

Otomatik güncelleme servisini inceleyelim:

systemctl status apt-daily.timer
systemctl status apt-daily-upgrade.timer

Güncelleme kayıtları:

sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log

Güncellemeler sonrasında otomatik yeniden başlatma davranışı da kontrol edilmelidir.

Özellikle üretim sunucularında beklenmedik yeniden başlatmaların hizmet kesintisine yol açabileceğini unutmayın.

Güncelleme politikalarını ana dosyayı değiştirmek yerine ayrı bir APT yapılandırma dosyası üzerinden yönetmek daha sağlıklıdır.

12. Sistem Loglarını Kontrol Edin

Linux sistemlerde sorun analizi yaparken ilk başvurulan kaynaklardan biri sistem loglarıdır.

Son açılıştaki hata kayıtlarını inceleyelim:

sudo journalctl -b -p err

Son 100 log kaydını görüntüleyelim:

sudo journalctl -n 100

SSH servisine ait kayıtları inceleyelim:

sudo journalctl -u ssh --since "today"

Canlı log takibi:

sudo journalctl -f

Başarısız servisleri kontrol edelim:

systemctl --failed

Kernel mesajlarını incelemek için:

sudo journalctl -k -b

Ubuntu sürümüne ve rsyslog yapılandırmasına bağlı olarak /var/log/auth.log gibi klasik log dosyaları bulunmayabilir. Bu nedenle journalctl kullanımı daha taşınabilir bir yaklaşımdır.

Merkezi SIEM veya syslog altyapısı bulunan ortamlarda sunucu loglarının merkezi sisteme gönderilmesi ayrıca önerilir.

13. Disk Kullanımını ve Dosya Sistemini Kontrol Edin

Disk doluluğu, Linux sunucularda servis kesintilerine neden olan yaygın sorunlardan biridir.

Disk kullanımını görüntüleyelim:

df -hT

Inode kullanımını kontrol edelim:

df -i

Bağlı diskleri görüntüleyelim:

lsblk -f

Büyük dizinleri tespit etmek için:

sudo du -xhd1 /var 2>/dev/null | sort -h

Systemd journal tarafından kullanılan alanı inceleyelim:

journalctl --disk-usage

Gerektiğinde journal saklama sınırları yapılandırılabilir; ancak logları temizlemeden önce kurumun saklama ve denetim gereksinimleri değerlendirilmelidir.

Sunucunun kullanım amacına göre disk doluluk oranları için izleme eşikleri oluşturmak faydalıdır.

14. Swap ve Bellek Kullanımını İnceleyin

Swap, fiziksel belleğin desteklenmesi amacıyla disk üzerinde kullanılan bir bellek alanıdır.

Mevcut durumu kontrol edelim:

free -h
swapon --show

Bellek kullanımını daha ayrıntılı inceleyelim:

vmstat 1 5

Swap kullanımı tek başına performans sorunu anlamına gelmez.

Ancak yüksek swap giriş/çıkış trafiği ve bellek baskısı, uygulamalarda gecikmelere neden olabilir.

Sunucunun RAM kapasitesi, çalışan uygulamaları ve disk performansı değerlendirilmeden swap alanını artırmak veya devre dışı bırakmak doğru değildir.

Özellikle veritabanı, sanallaştırma ve konteyner sunucularında bellek yönetimi uygulamanın gereksinimlerine göre planlanmalıdır.

15. Yedekleme ve İzleme Altyapısını Hazırlayın

Son adım, sunucunun işletimsel sürekliliğini sağlayacak yapıların oluşturulmasıdır.

Bir sunucunun güvenli olması kadar, sorun yaşandığında ne kadar hızlı kurtarılabildiği de önemlidir.

En azından aşağıdaki bileşenler değerlendirilmelidir:

  • Düzenli dosya ve yapılandırma yedekleri
  • Uygulamaya uygun veritabanı yedekleri
  • CPU, RAM, disk ve ağ kullanımının izlenmesi
  • Servis erişilebilirliği kontrolleri
  • Merkezi log toplama
  • Güncelleme ve sertifika sürelerinin takibi
  • Yedekten geri dönüş testleri

Örneğin, Zabbix veya Prometheus gibi çözümlerle sistem kaynakları izlenebilir.

Sunucular sanal ortamda çalışıyorsa sanallaştırma platformu üzerinden yedekleme çözümleri kullanılabilir.

Ancak sanal makine snapshot’larının tek başına bir yedekleme stratejisi olarak değerlendirilmemesi gerektiğini unutmayın.

Yedeklerin farklı bir ortamda saklanması ve düzenli olarak geri yükleme testlerinin yapılması önemlidir.


Son Kontrol: Sunucu Kullanıma Hazır mı?

Yapılandırmaları tamamladıktan sonra aşağıdaki komutlarla temel durum kontrolünü gerçekleştirebiliriz:

# İşletim sistemi
cat /etc/os-release

# Çekirdek
uname -r

# Sistem kaynakları
free -h
df -h

# Saat senkronizasyonu
timedatectl status

# SSH etkin yapılandırması
sudo sshd -T | grep -E \
'passwordauthentication|permitrootlogin'

# Firewall durumu
sudo ufw status verbose

# Dinleyen portlar
sudo ss -tulpen

# Başarısız servisler
systemctl --failed

# Son açılıştaki hatalar
sudo journalctl -b -p err

Bu kontrollerde beklenmeyen bir durum bulunmuyorsa ve SSH erişimi, güncelleme, yedekleme ve izleme testleri başarıyla tamamlandıysa sunucu kullanım amacına göre devreye alınabilir.

Ubuntu 24.04 ve 26.04 Arasındaki Önemli Farklar

İki sürümdeki temel yönetim komutları büyük ölçüde benzer olsa da bazı değişiklikler dikkat çekmektedir.

ÖzellikUbuntu 24.04 LTSUbuntu 26.04 LTS
Kod adıNoble NumbatResolute Raccoon
Yayın tarihiNisan 2024Nisan 2026
Standart destek2029’a kadar2031’e kadar
Varsayılan zaman servisisystemd-timesyncdchrony
OpenSSH9.6 tabanlı10.2 tabanlı (ilk sürüm)
Paket ve çekirdek nesliDaha eski LTS tabanıDaha yeni LTS tabanı

Ubuntu 26.04, özellikle paket ve güvenlik bileşenlerinde güncellemeler sunmaktadır. Bununla birlikte yalnızca daha yeni olduğu için her sunucunun hemen yükseltilmesi gerektiği düşünülmemelidir.

Uygulama uyumluluğu, üretici desteği ve mevcut altyapının gereksinimleri sürüm seçiminde belirleyici olmalıdır.

Sonuç

Ubuntu Server kurulumu, sunucu yönetiminin yalnızca başlangıç aşamasıdır.

Güncel paketler, güvenli SSH erişimi, uygun firewall kuralları, doğru zaman senkronizasyonu ve merkezi izleme gibi işlemler bir arada değerlendirildiğinde daha güvenli ve yönetilebilir bir sistem oluşturulabilir.

Burada ele aldığımız 15 işlem, yeni kurulan bir Ubuntu sunucusu için temel bir kontrol listesi niteliğindedir. Sunucunun kullanım amacına göre ilave güvenlik önlemleri ve servis yapılandırmaları gerekebilir.

Unutmayın: Güvenli bir sunucu, yalnızca kurulum sırasında yapılandırılan değil, yaşam döngüsü boyunca düzenli olarak güncellenen, izlenen ve test edilen sunucudur.

Bir sonraki teknik notta, Ubuntu üzerinde SSH key doğrulaması, erişim kısıtlamaları ve UFW yapılandırmasını daha ayrıntılı ele alabiliriz.


Kaynaklar

Salih Solmaz / Teknik notlar