Temel OS Kurulumu 🖥️
Yeni bir Ubuntu/Debian sunucusuna ilk giriş yaptıktan sonra yapılması gereken temel ayarlar ve güvenlik önlemleri.
1. İlk Bağlantı (SSH)
Root ile İlk Giriş
# Varsayılan SSH portu (22)
ssh root@SUNUCU_IP
# Özel port kullanıyorsanız
ssh -p 2222 root@SUNUCU_IP
# SSH key ile bağlanma
ssh -i ~/.ssh/id_rsa root@SUNUCU_IP
[!WARNING] > Güvenlik: Root ile SSH bağlantısını mümkün olan en kısa sürede kapatmalısınız. Önce sudo yetkili kullanıcı oluşturun.
2. Sistem Güncellemeleri
# Paket listesini güncelle
apt update
# Tüm paketleri yükselt
apt upgrade -y
# Tam yükseltme (kernel dahil)
apt full-upgrade -y
# Gereksiz paketleri temizle
apt autoremove -y
apt autoclean
3. Yönetici Kullanıcı Oluşturma
Root yerine sudo yetkili kullanıcı kullanın:
# Yeni kullanıcı oluştur
adduser deploy
# Sudo grubuna ekle
usermod -aG sudo deploy
# Kullanıcıyı kontrol et
id deploy
groups deploy
SSH Key Kopyalama (Önemli!)
Root'tan yeni kullanıcıya SSH key'i kopyalayın:
# Root'un SSH key'ini kopyala
mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys
Test Edin:
# Yeni terminalde test et (root oturumunu KAPATMAYIN!)
ssh deploy@SUNUCU_IP
sudo whoami # "root" çıktısı vermeli
4. SSH Port Değiştirme (Güvenlik)
Varsayılan 22 portu yerine özel port kullanın (bot saldırılarını azaltır):
Değiştirilecek satırlar:
# Port değiştir (örn: 2222)
Port 2222
# Root girişini kapat
PermitRootLogin no
# Şifre ile girişi kapat (sadece SSH key)
PasswordAuthentication no
# Boş şifreleri engelle
PermitEmptyPasswords no
SSH'yi yeniden başlat:
Firewall'da portu aç:
[!CAUTION] > Dikkat: Yeni port ile bağlantıyı test etmeden eski oturumu KAPATMAYIN! Aksi halde sunucuya erişiminizi kaybedebilirsiniz.
Yeni port ile bağlanma:
5. Hostname ve Timezone Ayarları
Hostname Değiştirme
# Hostname ayarla
sudo hostnamectl set-hostname production-server
# Kontrol et
hostnamectl
# /etc/hosts dosyasını güncelle
sudo nano /etc/hosts
/etc/hosts içeriği:
Timezone Ayarlama
# Mevcut timezone
timedatectl
# Timezone listesi
timedatectl list-timezones | grep Istanbul
# Timezone ayarla
sudo timedatectl set-timezone Europe/Istanbul
# Zaman senkronizasyonu aktif et
sudo systemctl enable --now systemd-timesyncd
# Kontrol et
timedatectl status
6. Temel Araçlar Kurulumu 🧰
sudo apt install -y \
curl \
wget \
git \
htop \
btop \
jq \
dialog \
net-tools \
vim \
nano \
unzip \
zip \
tree \
ncdu \
tmux \
screen
Araçların Kullanım Alanları
| Araç | Kullanım |
|---|---|
curl, wget |
Dosya indirme, API testleri |
git |
Kod ve config yönetimi |
htop, btop |
Sistem kaynak izleme (CPU/RAM) |
jq |
JSON parse etme |
dialog |
Terminal UI scriptleri |
net-tools |
Network komutları (ifconfig, netstat) |
vim, nano |
Metin editörleri |
tree |
Dizin yapısını görselleştirme |
ncdu |
Disk kullanımı analizi |
tmux, screen |
Terminal multiplexer |
7. Düşük Kaynaklı Sistemler İçin Optimizasyon 🐌
A. Swappiness Ayarı
Düşük RAM'li sistemlerde swap kullanımını optimize edin:
# Mevcut değer (varsayılan: 60)
cat /proc/sys/vm/swappiness
# Düşük RAM için önerilen: 10
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
B. Gereksiz Servisleri Devre Dışı Bırakma
# Çalışan servisleri listele
systemctl list-unit-files --state=enabled
# Gereksiz servisleri durdur (örnekler)
sudo systemctl disable --now bluetooth.service
sudo systemctl disable --now cups.service
sudo systemctl disable --now avahi-daemon.service
C. Minimal Kernel Parametreleri
/etc/sysctl.conf dosyasına ekleyin:
# Düşük RAM için
vm.vfs_cache_pressure=50
vm.dirty_ratio=10
vm.dirty_background_ratio=5
# Network buffer'ları küçült
net.core.rmem_max=8388608
net.core.wmem_max=8388608
Uygula:
D. Hafif Alternatifler
| Standart | Hafif Alternatif |
|---|---|
htop |
btop (daha hafif) |
systemd-journald |
Log boyutunu sınırla |
snapd |
Kaldır (gereksizse) |
snapd kaldırma (isteğe bağlı):
journald log boyutu sınırlama:
8. Otomatik Güvenlik Güncellemeleri
# Unattended-upgrades kur
sudo apt install unattended-upgrades -y
# Aktif et
sudo dpkg-reconfigure --priority=low unattended-upgrades
# Konfigürasyon
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Önerilen ayarlar:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
};
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::MinimalSteps "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";
9. Sistem Bilgilerini Görüntüleme
# OS versiyonu
lsb_release -a
# Kernel versiyonu
uname -r
# CPU bilgisi
lscpu
# RAM bilgisi
free -h
# Disk bilgisi
df -h
# Çalışma süresi
uptime
# Sistem yükü
top
htop
10. Doğrulama Checklist ✅
Kurulumu tamamladıktan sonra kontrol edin:
- [ ] Sistem güncel (
apt update && apt upgrade) - [ ] Sudo yetkili kullanıcı oluşturuldu (
deploy) - [ ] SSH key ile bağlanılabiliyor
- [ ] SSH portu değiştirildi (varsayılan 22 değil)
- [ ] Root SSH girişi kapatıldı (
PermitRootLogin no) - [ ] Hostname ayarlandı (
hostnamectl) - [ ] Timezone ayarlandı (
timedatectl) - [ ] Temel araçlar kuruldu (
htop,git,curl) - [ ] Otomatik güvenlik güncellemeleri aktif
- [ ] Firewall yapılandırıldı (UFW)
🔗 Sonraki Adımlar
- Kullanıcı Yönetimi - Ek kullanıcılar ve SSH key yönetimi
- Güvenlik - SSH Hardening - SSH'yi daha da güvenli hale getirin
- Güvenlik - Firewall - UFW ile firewall kurulumu
- Docker Kurulumu - Container altyapısını kurun