Sunucular, modern bilgi teknolojileri altyapısının temel taşlarıdır. İster bir web sitesi barındırıyor olun, ister bir veritabanı çalıştırıyor, isterse karmaşık bir kurumsal uygulama için destek sağlıyor olun, sunucuların doğru ve güvenli bir şekilde yapılandırılması kritik öneme sahiptir. Bu kılavuz, yeni bir sunucuyu devreye alırken yapılması gereken temel ayarlara odaklanmaktadır. Amacımız, sunucunuzun performanslı, güvenli ve stabil çalışmasını sağlayacak ilk adımları detaylandırmaktır.
1. İşletim Sistemi Seçimi ve Kurulumu
Sunucunuz için doğru işletim sistemini seçmek, yapacağınız ilk ve en önemli kararlardan biridir. Popüler seçenekler arasında Linux dağıtımları (Ubuntu Server, CentOS Stream, Debian), Windows Server ve FreeBSD bulunur. Her birinin kendine özgü avantajları ve dezavantajları vardır. Genellikle, web sunucuları ve uygulama sunucuları için Linux tabanlı sistemler tercih edilirken, Microsoft ürünleri ile derin entegrasyon gerektiren durumlar için Windows Server ideal olabilir. Kurulum sırasında, gereksiz servisleri yüklememeye özen göstermek, sunucunun kaynaklarını daha verimli kullanmasını ve potansiyel güvenlik açıklarını azaltmasını sağlar. Minimal kurulumlar genellikle en iyi uygulamadır.
2. Ağ Yapılandırması
Sunucunun ağda doğru şekilde iletişim kurabilmesi için IP adresi, alt ağ maskesi, varsayılan ağ geçidi ve DNS sunucuları gibi ağ ayarlarının yapılması şarttır. Çoğu modern sunucu ortamında DHCP yerine statik IP adresi kullanımı tercih edilir, bu da sunucunun ağ üzerindeki konumunun her zaman sabit olmasını garanti eder.
Ağ ayarlarını yaptıktan sonra, ağ bağlantısını test etmek önemlidir. Ping komutu veya traceroute gibi araçlar bu konuda size yardımcı olabilir.
3. Güvenlik Duvarı (Firewall) Ayarları
Bir sunucuyu internete açarken en önemli güvenlik adımlarından biri, bir güvenlik duvarı yapılandırmaktır. Güvenlik duvarı, sunucuya gelen ve sunucudan giden trafiği kontrol ederek yetkisiz erişimi engeller. Linux sistemlerinde `ufw` (Uncomplicated Firewall) veya `firewalld` sıkça kullanılır. Yalnızca ihtiyaç duyulan portları (örn. SSH için 22, HTTP için 80, HTTPS için 443) açık bırakmak, saldırı yüzeyini önemli ölçüde azaltır.
4. SSH Erişimi ve Güvenliği
Uzak sunucu yönetimi genellikle SSH (Secure Shell) üzerinden yapılır. SSH erişimini güvence altına almak hayati önem taşır.
5. Sistem Güncellemeleri
İşletim sistemi ve yüklü tüm yazılımların güncel tutulması, bilinen güvenlik açıklarının kapatılması ve performans iyileştirmelerinden faydalanılması için şarttır. Düzenli olarak paket yöneticinizi kullanarak güncelleme yapmak, sunucunuzu birçok potansiyel tehditten korur.
Bu komutları periyodik olarak çalıştırmak, sisteminizi en son güvenlik yamaları ve özelliklerle donatır.
6. Kullanıcı ve Yetkilendirme Yönetimi
Sunucuda sadece gerekli kullanıcı hesaplarını oluşturun ve her kullanıcıya sadece işini yapması için minimum yetkiyi verin (Least Privilege Prensibi). Kök kullanıcısı yerine, sudo yetkileri olan normal bir kullanıcı hesabı ile çalışmak, yanlışlıkla sistem dosyalarına zarar verme riskini azaltır.
Yeni kullanıcı ekleme ve sudo yetkisi verme:
Bu, yeni kullanıcının belirli komutları yönetici yetkileriyle çalıştırabilmesini sağlar.
7. Zaman Senkronizasyonu (NTP)
Sunucunun doğru zamanı göstermesi, log kayıtlarının tutarlılığı, kriptografik işlemler ve dağıtılmış sistemlerde senkronizasyon için kritik öneme sahiptir. NTP (Network Time Protocol) kullanarak sunucunuzu güvenilir zaman sunucuları ile senkronize etmek gereklidir.
Doğru zaman bilgisi, özellikle adli analiz ve hata ayıklama süreçlerinde büyük önem taşır.
8. Hostname ve DNS Ayarları
Sunucunuza anlamlı bir hostname vermek, ağ üzerindeki tanımlanabilirliğini artırır. Ayrıca, sunucunun kendisini doğru bir şekilde çözümleyebilmesi için `/etc/hosts` dosyasının veya DNS ayarlarının doğru yapıldığından emin olun.
DNS kayıtları (A kaydı, PTR kaydı) sunucunuzun IP adresine ve domain adına doğru şekilde eşleştiğinden emin olun.
9. Disk Yönetimi ve SWAP Alanı
Disk alanı yönetimi, sunucunun performans ve stabilitesi için önemlidir. Disk kullanımını düzenli olarak kontrol etmek ve gereksiz dosyaları temizlemek önemlidir. Ayrıca, fiziksel RAM'in yetersiz kaldığı durumlarda geçici depolama alanı olarak kullanılan SWAP alanının optimize edilmesi gerekebilir. SWAP alanı, genellikle fiziksel RAM'in 1.5 ila 2 katı kadar ayarlanır, ancak bu sunucunun kullanım amacına göre değişebilir.
SWAP alanının doğru yapılandırılması, özellikle bellek yoğun uygulamalar çalıştırıldığında sistemin çökmesini engelleyebilir.
10. Log Yönetimi ve İzleme
Sunucuda meydana gelen olayları takip etmek ve potansiyel sorunları erken teşhis etmek için log dosyalarını düzenli olarak incelemek gerekir. `/var/log` dizininde sistem, servis ve güvenlik logları bulunur. Log yönetimi araçları (örn. rsyslog, journalctl) bu süreci kolaylaştırır. Ayrıca, sunucu kaynaklarının (CPU, RAM, Disk I/O) kullanımını izlemek için `top`, `htop`, `nmon` gibi araçlar veya daha gelişmiş izleme sistemleri (Prometheus, Grafana, Zabbix) kullanılabilir.
Aktif log izleme, olası güvenlik ihlallerini veya performans sorunlarını hızla tespit etmenizi sağlar.
11. Yedekleme Stratejileri
Veri kaybı, bir felaket senaryosudur. Sunucunuzdaki verilerin düzenli olarak yedeklenmesi ve bu yedeklerin farklı bir konuma (uzak depolama, başka bir sunucu) kopyalanması hayati önem taşır. Yedekleme stratejinizin bir parçası olarak, yedeklerin geri yüklenebilirliğini periyodik olarak test etmek de önemlidir. `rsync`, `tar` veya daha gelişmiş yedekleme çözümleri (BorgBackup, Bacula) kullanılabilir.
Yedeklemeler, olağanüstü durumlarda iş sürekliliğini sağlamanın tek garantisidir.
12. Temel Servislerin Kurulumu (İhtiyaca Göre)
Sunucunuzun amacına bağlı olarak, çeşitli servisleri kurmanız gerekebilir:
13. Çekirdek Parametrelerinin Optimizasyonu (Sysctl)
Linux çekirdek parametreleri, `/etc/sysctl.conf` dosyası üzerinden yapılandırılabilir ve ağ performansı, bellek yönetimi ve güvenlik gibi çeşitli sistem davranışlarını etkiler. Yüksek trafikli sunucular veya özel uygulamalar için bu ayarların optimize edilmesi performansı artırabilir. Örneğin, açık dosya limiti veya TCP parametreleri ayarlanabilir.
Bu tür değişiklikler genellikle kapsamlı testler gerektirir.
14. Güvenlik Denetimleri ve Süreklilik
Sunucu temel ayarları tamamlandıktan sonra, düzenli güvenlik denetimleri yapmak önemlidir. `Lynis` veya `OpenVAS` gibi araçlar, potansiyel zayıflıkları tarayabilir. Ayrıca, sunucu güvenliği bir defalık bir işlem değil, sürekli bir süreçtir. Yama yönetimi, log incelemesi, güvenlik duvarı kurallarının gözden geçirilmesi ve kullanıcı yetkilerinin periyodik kontrolü sürekli yapılmalıdır.
OWASP (Open Web Application Security Project) gibi kaynaklar, web uygulama güvenliği konusunda değerli bilgiler sunar ve sunucu güvenliği için de genel prensipler uygulanabilir.
Sonuç
Yeni bir sunucunun temel ayarlarını yapmak, sağlam ve güvenli bir dijital altyapının temelini oluşturur. Bu adımlar, sunucunuzu potansiyel tehditlere karşı korurken, aynı zamanda yüksek performans ve güvenilirlik sunmasını sağlar. Unutmayın, sunucu yönetimi sürekli bir öğrenme ve adaptasyon sürecidir. En iyi uygulamaları takip etmek ve sektördeki gelişmeleri izlemek, sunucularınızın her zaman en iyi durumda kalmasını sağlar. Her adımda dikkatli olmak, doğru dökümantasyonu takip etmek ve değişiklikleri test etmek, başarılı bir sunucu yapılandırmasının anahtarıdır. Özellikle kritik sistemlerde, yapılan her değişikliğin bir geri alma planı (rollback plan) olması şiddetle tavsiye edilir. Deneme yanılma, sunucu yönetiminin bir parçası olsa da, üretim ortamlarında bu risk minimize edilmelidir. Güvenliğiniz için CIS Benchmarks for Linux gibi referanslara başvurmak faydalı olacaktır. Bu kapsamlı rehber, sunucunuzun güvenliğini artırmak için atabileceğiniz somut adımları detaylandırmaktadır.
1. İşletim Sistemi Seçimi ve Kurulumu
Sunucunuz için doğru işletim sistemini seçmek, yapacağınız ilk ve en önemli kararlardan biridir. Popüler seçenekler arasında Linux dağıtımları (Ubuntu Server, CentOS Stream, Debian), Windows Server ve FreeBSD bulunur. Her birinin kendine özgü avantajları ve dezavantajları vardır. Genellikle, web sunucuları ve uygulama sunucuları için Linux tabanlı sistemler tercih edilirken, Microsoft ürünleri ile derin entegrasyon gerektiren durumlar için Windows Server ideal olabilir. Kurulum sırasında, gereksiz servisleri yüklememeye özen göstermek, sunucunun kaynaklarını daha verimli kullanmasını ve potansiyel güvenlik açıklarını azaltmasını sağlar. Minimal kurulumlar genellikle en iyi uygulamadır.
2. Ağ Yapılandırması
Sunucunun ağda doğru şekilde iletişim kurabilmesi için IP adresi, alt ağ maskesi, varsayılan ağ geçidi ve DNS sunucuları gibi ağ ayarlarının yapılması şarttır. Çoğu modern sunucu ortamında DHCP yerine statik IP adresi kullanımı tercih edilir, bu da sunucunun ağ üzerindeki konumunun her zaman sabit olmasını garanti eder.
Kod:
# Örnek statik IP yapılandırması (Debian/Ubuntu için /etc/netplan/01-netcfg.yaml)
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
3. Güvenlik Duvarı (Firewall) Ayarları
Bir sunucuyu internete açarken en önemli güvenlik adımlarından biri, bir güvenlik duvarı yapılandırmaktır. Güvenlik duvarı, sunucuya gelen ve sunucudan giden trafiği kontrol ederek yetkisiz erişimi engeller. Linux sistemlerinde `ufw` (Uncomplicated Firewall) veya `firewalld` sıkça kullanılır. Yalnızca ihtiyaç duyulan portları (örn. SSH için 22, HTTP için 80, HTTPS için 443) açık bırakmak, saldırı yüzeyini önemli ölçüde azaltır.
Kod:
# UFW ile temel firewall kuralları
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
Bu prensip, sunucu güvenliğinde sürekli dikkat ve güncelleme gerekliliğini vurgular."Güvenlik, bir ürün değil, bir süreçtir." - Bruce Schneier
4. SSH Erişimi ve Güvenliği
Uzak sunucu yönetimi genellikle SSH (Secure Shell) üzerinden yapılır. SSH erişimini güvence altına almak hayati önem taşır.
- Varsayılan SSH portunu (22) değiştirmek.
- Parola tabanlı kimlik doğrulama yerine anahtar tabanlı kimlik doğrulama kullanmak.
- Kök (root) kullanıcısının doğrudan SSH erişimini devre dışı bırakmak.
- Başarısız oturum açma denemelerini izlemek ve engellemek için Fail2Ban gibi araçlar kullanmak.
5. Sistem Güncellemeleri
İşletim sistemi ve yüklü tüm yazılımların güncel tutulması, bilinen güvenlik açıklarının kapatılması ve performans iyileştirmelerinden faydalanılması için şarttır. Düzenli olarak paket yöneticinizi kullanarak güncelleme yapmak, sunucunuzu birçok potansiyel tehditten korur.
Kod:
# Ubuntu/Debian için güncelleme komutları
sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt autoremove -y
6. Kullanıcı ve Yetkilendirme Yönetimi
Sunucuda sadece gerekli kullanıcı hesaplarını oluşturun ve her kullanıcıya sadece işini yapması için minimum yetkiyi verin (Least Privilege Prensibi). Kök kullanıcısı yerine, sudo yetkileri olan normal bir kullanıcı hesabı ile çalışmak, yanlışlıkla sistem dosyalarına zarar verme riskini azaltır.
Yeni kullanıcı ekleme ve sudo yetkisi verme:
Kod:
sudo adduser [kullanıcı_adı]
sudo usermod -aG sudo [kullanıcı_adı]
7. Zaman Senkronizasyonu (NTP)
Sunucunun doğru zamanı göstermesi, log kayıtlarının tutarlılığı, kriptografik işlemler ve dağıtılmış sistemlerde senkronizasyon için kritik öneme sahiptir. NTP (Network Time Protocol) kullanarak sunucunuzu güvenilir zaman sunucuları ile senkronize etmek gereklidir.
Kod:
# Zaman senkronizasyonu için NTP (Ubuntu/Debian)
sudo apt install ntp -y
sudo systemctl enable ntp
sudo systemctl start ntp
8. Hostname ve DNS Ayarları
Sunucunuza anlamlı bir hostname vermek, ağ üzerindeki tanımlanabilirliğini artırır. Ayrıca, sunucunun kendisini doğru bir şekilde çözümleyebilmesi için `/etc/hosts` dosyasının veya DNS ayarlarının doğru yapıldığından emin olun.
Kod:
# Hostname değiştirme
sudo hostnamectl set-hostname your-server-name
9. Disk Yönetimi ve SWAP Alanı
Disk alanı yönetimi, sunucunun performans ve stabilitesi için önemlidir. Disk kullanımını düzenli olarak kontrol etmek ve gereksiz dosyaları temizlemek önemlidir. Ayrıca, fiziksel RAM'in yetersiz kaldığı durumlarda geçici depolama alanı olarak kullanılan SWAP alanının optimize edilmesi gerekebilir. SWAP alanı, genellikle fiziksel RAM'in 1.5 ila 2 katı kadar ayarlanır, ancak bu sunucunun kullanım amacına göre değişebilir.
Kod:
# Disk kullanımını kontrol etme
df -h
# SWAP kullanımını kontrol etme
swapon --show
10. Log Yönetimi ve İzleme
Sunucuda meydana gelen olayları takip etmek ve potansiyel sorunları erken teşhis etmek için log dosyalarını düzenli olarak incelemek gerekir. `/var/log` dizininde sistem, servis ve güvenlik logları bulunur. Log yönetimi araçları (örn. rsyslog, journalctl) bu süreci kolaylaştırır. Ayrıca, sunucu kaynaklarının (CPU, RAM, Disk I/O) kullanımını izlemek için `top`, `htop`, `nmon` gibi araçlar veya daha gelişmiş izleme sistemleri (Prometheus, Grafana, Zabbix) kullanılabilir.
Kod:
# Son 100 sistemi logunu görüntüle
journalctl -n 100
# Belirli bir servisin loglarını görüntüle (örn. sshd)
journalctl -u sshd
11. Yedekleme Stratejileri
Veri kaybı, bir felaket senaryosudur. Sunucunuzdaki verilerin düzenli olarak yedeklenmesi ve bu yedeklerin farklı bir konuma (uzak depolama, başka bir sunucu) kopyalanması hayati önem taşır. Yedekleme stratejinizin bir parçası olarak, yedeklerin geri yüklenebilirliğini periyodik olarak test etmek de önemlidir. `rsync`, `tar` veya daha gelişmiş yedekleme çözümleri (BorgBackup, Bacula) kullanılabilir.
Kod:
# Örnek rsync yedekleme komutu
rsync -avz --delete /var/www/html/ user@remote_server:/backups/web_data/
12. Temel Servislerin Kurulumu (İhtiyaca Göre)
Sunucunuzun amacına bağlı olarak, çeşitli servisleri kurmanız gerekebilir:
- Web Sunucusu: Apache, Nginx
- Veritabanı Sunucusu: MySQL/MariaDB, PostgreSQL
- DNS Sunucusu: Bind, PowerDNS
- Posta Sunucusu: Postfix, Dovecot
- FTP Sunucusu: Pure-FTPd, VSFTPD
13. Çekirdek Parametrelerinin Optimizasyonu (Sysctl)
Linux çekirdek parametreleri, `/etc/sysctl.conf` dosyası üzerinden yapılandırılabilir ve ağ performansı, bellek yönetimi ve güvenlik gibi çeşitli sistem davranışlarını etkiler. Yüksek trafikli sunucular veya özel uygulamalar için bu ayarların optimize edilmesi performansı artırabilir. Örneğin, açık dosya limiti veya TCP parametreleri ayarlanabilir.
Kod:
# Örnek sysctl ayarları (performans ve güvenlik için)
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
14. Güvenlik Denetimleri ve Süreklilik
Sunucu temel ayarları tamamlandıktan sonra, düzenli güvenlik denetimleri yapmak önemlidir. `Lynis` veya `OpenVAS` gibi araçlar, potansiyel zayıflıkları tarayabilir. Ayrıca, sunucu güvenliği bir defalık bir işlem değil, sürekli bir süreçtir. Yama yönetimi, log incelemesi, güvenlik duvarı kurallarının gözden geçirilmesi ve kullanıcı yetkilerinin periyodik kontrolü sürekli yapılmalıdır.
OWASP (Open Web Application Security Project) gibi kaynaklar, web uygulama güvenliği konusunda değerli bilgiler sunar ve sunucu güvenliği için de genel prensipler uygulanabilir.
Sonuç
Yeni bir sunucunun temel ayarlarını yapmak, sağlam ve güvenli bir dijital altyapının temelini oluşturur. Bu adımlar, sunucunuzu potansiyel tehditlere karşı korurken, aynı zamanda yüksek performans ve güvenilirlik sunmasını sağlar. Unutmayın, sunucu yönetimi sürekli bir öğrenme ve adaptasyon sürecidir. En iyi uygulamaları takip etmek ve sektördeki gelişmeleri izlemek, sunucularınızın her zaman en iyi durumda kalmasını sağlar. Her adımda dikkatli olmak, doğru dökümantasyonu takip etmek ve değişiklikleri test etmek, başarılı bir sunucu yapılandırmasının anahtarıdır. Özellikle kritik sistemlerde, yapılan her değişikliğin bir geri alma planı (rollback plan) olması şiddetle tavsiye edilir. Deneme yanılma, sunucu yönetiminin bir parçası olsa da, üretim ortamlarında bu risk minimize edilmelidir. Güvenliğiniz için CIS Benchmarks for Linux gibi referanslara başvurmak faydalı olacaktır. Bu kapsamlı rehber, sunucunuzun güvenliğini artırmak için atabileceğiniz somut adımları detaylandırmaktadır.