Ubuntu Server İlk Kurulum Sonrası Yapılacaklar: Güvenlik, Performans ve Yönetilebilirlik İçin Adım Adım Kılavuz
Yeni kurulmuş bir Ubuntu Server sistemini üretime (production) hazırlamak için atılması gereken kritik adımlar. Güvenlik, temel araçlar, zaman eşitleme ve ilk optimizasyonlar.
Caner Serbest
Sistem ve Altyapı
4 min read
Ubuntu Server İlk Kurulum Sonrası Yapılacaklar: Güvenlik, Performans ve Yönetilebilirlik İçin Adım Adım Kılavuz
Bir Ubuntu Server kurulumunu tamamlayıp karşınıza siyah ekran ve “login:” istemcisi geldiğinde işin en heyecanlı kısmı biter, sorumluluk kısmı başlar. Varsayılan ayarlarla gelen temiz bir işletim sistemi, dış dünyaya karşı savunmasızdır ve performans açısından potansiyelini tam olarak yansıtamaz. Bu rehberde, yeni kurduğunuz bir Ubuntu Server (özellikle 24.04 LTS ve sonrasını hedefleyerek) sistemini güvenli, kararlı ve yönetilebilir bir üretim ortamına dönüştürmek için atmanız gereken adımları pratik bir yaklaşımla ele alacağız.
Kurulum sihirbazı bittiğinde sunucunuz ayaktadır ancak bu, onun güvenli olduğu anlamına gelmez. İlk olarak yapılması gerekenler, sistemi dış tehditlerden izole etmek, yönetim kolaylığı sağlamak ve kaynakların doğru yapılandırıldığından emin olmaktır.
1. Sistem Güncellemelerini Tamamlama
Kurulum medyası ne kadar yeni olursa olsun, ISO imajının oluşturulduğu andan itibaren çekirdek (kernel) ve paketler için yeni güvenlik yamaları yayınlanmıştır. İlk iş olarak sistem paket listesini güncellemek ve mevcut paketleri en son kararlı sürümlerine yükseltmektir.
sudo apt update && sudo apt upgrade -y
Eğer çekirdek seviyesinde büyük bir güncelleme yapıldıysa, sistemin yeniden başlatılması gerekebilir. Bu aşamada reboot komutunu çalıştırmaktan çekinmeyin.
2. Yeni Bir Kullanıcı Oluşturma ve Yetkilendirme
Varsayılan olarak sunucuya kurucu kullanıcı adı ile giriş yapmış olabilirsiniz. Ancak güvenlik en iyi uygulamaları (best practices) gereği, doğrudan root kullanıcısı ile SSH üzerinden bağlanmayı tamamen kapatmalı ve kendi adınıza, sudo yetkilerine sahip yeni bir kullanıcı tanımlamalısınız.
# Yeni kullanıcı oluştur
sudo adduser caner
# Kullanıcıya sudo yetkisi ver
sudo usermod -aG sudo caner
Artık yeni oluşturduğunuz kullanıcı ile oturum açabilir, işlemlerinizi sudo öneki ile gerçekleştirebilirsiniz.
3. SSH Güvenliğini Sıkılaştırma
Sunucuya uzaktan erişimin ana kapısı SSH’dır. Varsayılan ayarlarla çalışan bir SSH servisi, brute-force (kaba kuvvet) saldırılarının ilk hedefi olur. Bu aşamada yapılması gerekenler şunlardır:
- Şifre ile girişleri kapatıp sadece SSH anahtarı (SSH Key) kullanımına geçmek.
- Root kullanıcısının uzaktan SSH ile girişini engellemek.
- Varsayılan 22 numaralı portu değiştirmek (isteğe bağlı ancak gürültüyü azaltır).
SSH yapılandırma dosyasını bir metin düzenleyici ile açın:
sudo nano /etc/ssh/sshd_config
İlgili satırları bulun ve şu şekilde güncelleyin:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Dosyayı kaydedip çıktıktan sonra SSH servisini yeniden başlatın:
sudo systemctl restart ssh
Not: Şifre girişini kapatmadan önce kendi bilgisayarınızdaki SSH public key’inizi (~/.ssh/id_rsa.pub) sunucudaki /home/kullaniciAdi/.ssh/authorized_keys dosyasından sisteme tanıttığınızdan kesinlikle emin olun, aksi takdirde sunucuya bir daha erişemezsiniz.
4. UFW (Uncomplicated Firewall) Yapılandırması
Linux çekirdeği varsayılan olarak paket filtreleme için iptables veya nftables kullanır ancak bunları yönetmek zahmetlidir. Ubuntu üzerinde bu süreci kolaylaştıran UFW aracı bulunur. Üretime almadan önce dışarıdan gelecek bağlantıları kısıtlamalı, yalnızca ihtiyaç duyulan portlara izin vermeliyiz.
Öncelikle dışarıdan SSH erişimine (varsayılan portu değiştirdiğinizi varsayarak veya standart 22 üzerinden) izin verelim:
sudo ufw allow OpenSSH
# Veya özel port kullandıysanız:
# sudo ufw allow 2222/tcp
Eğer bu sunucu bir web sunucusu olacaksa HTTP ve HTTPS portlarını da açalım:
sudo ufw allow http
sudo ufw allow https
Kuralları kontrol edip güvenlik duvarını aktif hale getirelim:
sudo ufw enable
sudo ufw status verbose
5. Zaman Senkronizasyonu (NTP)
Log yönetimi, veritabanı işlemleri, SSL sertifika geçerlilik süreleri ve cron görevleri için sunucu saatinin milisaniyelik hassasiyetle doğru olması hayati önem taşır. Modern Ubuntu sürümleri zaman senkronizasyonunu yönetmek için systemd-timesyncd servisini kullanır.
Servisin durumunu kontrol etmek için:
timedatectl status
Eğer zaman dilimi (Timezone) doğru değilse, aşağıdaki komutla bulunduğunuz bölgeye göre ayarlayabilirsiniz:
sudo timedatectl set-timezone Europe/Istanbul
NTP senkronizasyonunun aktif olduğundan emin olmak için:
sudo timedatectl set-ntp true
6. Swap Alanı (Takas Alanı) Kontrolü
Özellikle bulut sağlayıcılarından (DigitalOcean, AWS, Hetzner vb.) kiralanan düşük RAM’li sunucularda (1GB - 2GB), ani yük artışlarında uygulamanın Out of Memory (OOM) hatası alarak çökmesini önlemek için Swap alanı hayati kurtarıcıdır.
Sistemde aktif bir Swap alanı olup olmadığını kontrol edin:
sig -h
# Veya
free -h
Eğer Swap alanı yoksa veya yetersizse, 2GB’lık bir swap dosyası oluşturmak için şu adımları izleyebilirsiniz:
# 2GB boş alan tahsis et
sudo fallocate -l 2G /swapfile
# Yetkileri sınırlandır
sudo chmod 600 /swapfile
# Swap alanı olarak biçimlendir
sudo mkswap /swapfile
# Aktif et
sudo swapon /swapfile
# Kalıcı hale getirmek için /etc/fstab dosyasına ekle
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
7. Temel İzleme ve Yönetim Araçlarını Kurma
Sistemin anlık durumunu izlemek ve performans darboğazlarını tespit etmek için bazı temel komut satırı araçlarını kurmak iyi bir alışkanlıktır:
sudo apt install htop curl wget git ncdu ufw -y
- htop: Gelişmiş kaynak tüketimi izleme aracı.
- ncdu: Disk üzerinde hangi klasörün ne kadar yer kapladığını görsel olarak gösteren terminal tabanlı analiz aracı.
- curl / wget: Harici API istekleri ve dosya indirme işlemleri için temel araçlar.
8. Otomatik Güncellemeleri Yapılandırma
Güvenlik yamalarının elle takip edilmesi büyük yapılarda imkansızlaşır. Ubuntu, güvenlik güncellemelerinin arka planda otomatik olarak yapılmasını sağlayan unattended-upgrades paketini sunar. Kurulum sırasında bu seçeneği aktif etmediyseniz manuel olarak kurabilirsiniz:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
Bu yapılandırma, özellikle kritik güvenlik açıklarının (CVE) sunucuya siz müdahale etmeden önce kapatılmasını sağlar.
Sonuç
İlk kurulum sonrasında atılan bu adımlar, sunucunuzun ömrü boyunca karşılaşabileceğiniz birçok güvenlik açığının ve performans sorununun önüne geçecektir. Temel güvenlik önlemlerini tamamlamadan ve zaman senkronizasyonunu sağlamadan sunucuya herhangi bir uygulama (Docker, Nginx, PostgreSQL vb.) kurmak, ileride çözülmesi zor sorunlara zemin hazırlar.
Sistem yönetiminde başarı, detaylardaki disiplinle gelir. Sağlam temeller üzerine kurulmuş bir Ubuntu Server, uzun vadede size kesintisiz ve huzurlu bir çalışma ortamı sunacaktır.
Bu yazı Gemini ile otomatik oluşturulmuştur.