Web sunucularının büyük çoğunluğu Linux üzerinde çalışıyor. Ücretsiz olması, esnekliği ve güvenilirliği Linux'u sunucu ortamlarında vazgeçilmez kıldı. Bu rehberde Linux sunucu yönetiminin temellerini ele alacağız.
SSH ile Uzak Bağlantı
SSH (Secure Shell), sunuculara güvenli uzak erişim sağlayan protokoldür. Tüm iletişimi şifreler, dışarıdan dinlemelere karşı korur.
Temel Bağlantı
ssh kullanici@sunucu_ip
Farklı port kullanıyorsanız:
ssh -p 2222 kullanici@sunucu_ip
Anahtar Tabanlı Kimlik Doğrulama
Şifreler kaba kuvvet saldırılarına karşı savunmasız. SSH anahtarları çok daha güvenli.
Anahtar çifti oluşturma:
ssh-keygen -t ed25519 -C "[email protected]"
Ed25519 modern ve güvenli algoritma. RSA da hâlâ yaygın kullanılıyor.
Açık anahtarı sunucuya kopyalama:
ssh-copy-id kullanici@sunucu_ip
Artık şifre girmeden bağlanabilirsiniz.
SSH Güvenlik Ayarları
/etc/ssh/sshd_config dosyasını düzenleyin:
Port değiştirme: Varsayılan 22 yerine farklı port kullanın. Otomatik saldırıları azaltır.
Port 2222
Root girişini kapatma: Root kullanıcıyla doğrudan SSH bağlantısını engelleyin.
PermitRootLogin no
Şifre girişini kapatma: Sadece anahtar tabanlı kimlik doğrulamaya izin verin.
PasswordAuthentication no
Boş şifreleri engelleme:
PermitEmptyPasswords no
Değişikliklerden sonra SSH servisini yeniden başlatın:
sudo systemctl restart sshd
Kullanıcı ve Yetki Yönetimi
Kullanıcı İşlemleri
Yeni kullanıcı oluşturma:
sudo adduser yeni_kullanici
Kullanıcıyı sudo grubuna ekleme:
sudo usermod -aG sudo yeni_kullanici
Kullanıcı silme:
sudo deluser kullanici_adi
Şifre değiştirme:
sudo passwd kullanici_adi
Dosya İzinleri
Linux'ta üç izin türü var: okuma (r=4), yazma (w=2), çalıştırma (x=1).
Üç kullanıcı kategorisi: sahip (owner), grup (group), diğerleri (others).
chmod 755 dosya: rwxr-xr-x (sahip tam yetki, diğerleri oku-çalıştır) chmod 644 dosya: rw-r--r-- (sahip oku-yaz, diğerleri sadece oku) chmod 600 dosya: rw------- (sadece sahip erişebilir)
Sahiplik değiştirme:
sudo chown kullanici:grup dosya
Servis Yönetimi (systemd)
Modern Linux dağıtımları systemd kullanır. Servisleri kontrol etmek için systemctl komutu.
Temel Komutlar
Servis başlatma: sudo systemctl start nginx Servis durdurma: sudo systemctl stop nginx Servis yeniden başlatma: sudo systemctl restart nginx Servis durumu: sudo systemctl status nginx Açılışta otomatik başlatma: sudo systemctl enable nginx Otomatik başlatmayı kaldırma: sudo systemctl disable nginx
Tüm servisleri listeleme:
systemctl list-units --type=service
Başarısız servisleri görme:
systemctl --failed
Servis Logları
journalctl -u nginx: Nginx logları journalctl -u nginx -f: Canlı log takibi journalctl --since "1 hour ago": Son 1 saatin logları
Güvenlik Duvarı (Firewall)
UFW (Uncomplicated Firewall)
Ubuntu'nun varsayılan güvenlik duvarı aracı. Kullanımı basit.
UFW'yi etkinleştirme:
sudo ufw enable
Durum kontrolü:
sudo ufw status verbose
Port açma:
sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow 22
Belirli IP'ye izin verme:
sudo ufw allow from 192.168.1.100
Port kapatma:
sudo ufw deny 3306
Kural silme:
sudo ufw delete allow 80
Varsayılan politikalar:
sudo ufw default deny incoming sudo ufw default allow outgoing
Firewalld
CentOS, Fedora ve RHEL'de yaygın.
Zone tabanlı yapılandırma, kalıcı ve geçici kurallar desteği.
Fail2ban
Log dosyalarını izleyerek şüpheli aktiviteleri tespit eder ve saldırgan IP'leri otomatik engeller.
Kurulum:
sudo apt install fail2ban
SSH koruması için /etc/fail2ban/jail.local oluşturun:
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 5 bantime = 3600 findtime = 600
5 başarısız deneme sonrası IP 1 saat engellenir.
Fail2ban durumu:
sudo fail2ban-client status sudo fail2ban-client status sshd
Engeli kaldırma:
sudo fail2ban-client set sshd unbanip 192.168.1.100
Sistem İzleme
Kaynak Kullanımı
top: Gerçek zamanlı işlem izleme. htop: Gelişmiş, renkli arayüz (kurulum gerekebilir). free -h: Bellek kullanımı. df -h: Disk kullanımı. du -sh /var/*: Dizin boyutları.
Disk ve Bellek Kontrolü
Disk doluluk oranı kritik. Yüzde 80'in üzerine çıkmadan önlem alın.
df -h | grep -E '^/dev'
En çok yer kaplayan dizinler:
du -h --max-depth=1 / | sort -hr | head -20
İşlem Yönetimi
ps aux: Tüm işlemler. ps aux | grep nginx: Belirli işlem ara. kill PID: İşlem sonlandır. kill -9 PID: Zorla sonlandır.
Ağ İzleme
Açık portları görme:
ss -tuln netstat -tuln
Aktif bağlantılar:
ss -tun
Log Yönetimi
/var/log dizininde sistem logları bulunur.
Önemli log dosyaları:
/var/log/syslog veya /var/log/messages: Genel sistem logları /var/log/auth.log: Kimlik doğrulama logları /var/log/nginx/access.log: Web sunucu erişim logları
Log izleme:
tail -f /var/log/syslog journalctl -f
Yedekleme
Düzenli yedekleme kritik. Farklı lokasyona yedek alın.
rsync ile Yedekleme
rsync -avz /kaynak/ /hedef/
Uzak sunucuya:
rsync -avz -e ssh /kaynak/ kullanici@sunucu:/hedef/
Otomatik Yedekleme (cron)
crontab -e ile zamanlanmış görev ekleyin:
0 2 * rsync -avz /var/www/ /backup/www/
Her gece 02:00'de yedekleme yapar.
Veritabanı Yedekleme
MySQL/MariaDB:
mysqldump -u root -p veritabani > yedek.sql
PostgreSQL:
pg_dump veritabani > yedek.sql
Sistem Güncellemeleri
Güncel tutmak güvenlik için kritik.
Debian/Ubuntu:
sudo apt update sudo apt upgrade
CentOS/RHEL:
sudo yum update
veya
sudo dnf update
Otomatik güvenlik güncellemeleri için unattended-upgrades (Debian/Ubuntu) yapılandırılabilir.
Performans Optimizasyonu
Swap Ayarları
Yetersiz RAM durumunda swap kullanılır.
Swap kullanımını kontrol:
free -h swapon --show
Swappiness değeri (ne kadar agresif swap kullanılacağı):
cat /proc/sys/vm/swappiness
Sunucularda düşük değer (10-20) önerilir:
sudo sysctl vm.swappiness=10
Kalıcı yapmak için /etc/sysctl.conf dosyasına ekleyin.
Gereksiz Servisleri Kapatma
Kullanılmayan servisleri devre dışı bırakın:
sudo systemctl disable bluetooth sudo systemctl stop bluetooth
Güvenlik Kontrol Listesi
Düzenli güncellemeler yapın. Güçlü şifreler ve SSH anahtarları kullanın. Root SSH girişini kapatın. Güvenlik duvarı yapılandırın. Fail2ban ile brute-force koruması sağlayın. Gereksiz servisleri kapatın. Log dosyalarını izleyin. Düzenli yedekleme yapın ve test edin. Minimum yetki prensibi uygulayın. SSL/TLS sertifikalarını güncel tutun.
Sonuç
Linux sunucu yönetimi geniş bir alan. Bu rehber temel konuları kapsıyor. SSH güvenliği, güvenlik duvarı, servis yönetimi ve izleme en kritik konular.
Her sunucu ortamı farklı gereksinimler barındırır. Web sunucusu, veritabanı sunucusu, mail sunucusu için ek yapılandırmalar gerekir.
Öğrenmeye devam edin, logları düzenli inceleyin ve güvenliği asla ihmal etmeyin. Güncel kalmak bu işin ayrılmaz parçası.
0 Yorum
Yorum Yaz