Bir VPS (Virtual Private Server) satın aldınız ve üzerinde Ubuntu işletim sistemi yüklü. Harika! Ancak VPS’inizi güvenli hale getirmek için bazı önemli adımları atmanız gerekiyor. Bu yazıda, hiçbir teknik bilgiye sahip olmayan biri bile anlayıp uygulayabilsin diye detaylı ve açıklayıcı şekilde Ubuntu VPS’inizin güvenliğini artırmanın yollarını anlatacağım.
1. Güvenli Bağlantı: SSH Anahtarlarıyla Sunucuya Bağlanmak
Neden Önemli?
Sunucuya giriş için genellikle kullanıcı adı ve şifre kullanılır. Ancak kötü niyetli kişiler bu şifreleri tahmin etmeye çalışabilir (brute-force saldırı). Şifreler kırılırsa sunucunuz tehlikeye girer. Bunun yerine SSH anahtarı denilen bir dijital anahtarla bağlanmak çok daha güvenlidir.
Nasıl Yapılır?
- Bilgisayarınızda bir SSH anahtarı oluşturun:
- Windows için: PuTTYgen kullanabilirsiniz.
- MacOS/Linux için terminal açıp şu komutu yazın:
ssh-keygen -t ed25519 -C "[email protected]"Bu komut size iki dosya oluşturur:
~/.ssh/id_ed25519→ özel anahtar (bunu kimseye vermeyin)/.ssh/id_ed25519.pub→ genel anahtar (bunu sunucuya vereceğiz)
- Oluşturduğunuz genel anahtarı sunucuya kopyalayın:
ssh-copy-id kullanıcı_adı@sunucu_ip_adresiEğer
ssh-copy-idyoksa,/.ssh/id_ed25519.pubiçeriğini açıp kopyalayın ve sunucuda~/.ssh/authorized_keysdosyasına yapıştırın. - SSH şifreli girişleri kapatmak için:
- Sunucuya bağlanıp şu dosyayı açın:
sudo nano /etc/ssh/sshd_config - Şu satırları bulun ve değiştirin ya da ekleyin:
PasswordAuthentication no PermitRootLogin no - Dosyayı kaydedip kapatın (nano için Ctrl+O, sonra Ctrl+X).
- SSH servisini yeniden başlatın:
sudo systemctl restart sshd
- Sunucuya bağlanıp şu dosyayı açın:
- Artık sunucunuza sadece SSH anahtarınız ile bağlanabilirsiniz. Deneyin!
2. Root Kullanıcıya Doğrudan Girişi Engelleyin
Neden?
Root kullanıcısı sistemde en yetkili kişidir. Direkt root girişi, hackerların işini kolaylaştırır.
Nasıl Yapılır?
Aynı /etc/ssh/sshd_config dosyasında şu satırı ekleyin ya da değiştirin:
PermitRootLogin no
SSH servisini yeniden başlatın:
sudo systemctl restart sshd
3. Sunucunuzda Bir Güvenlik Duvarı (Firewall) Kurun
Neden?
Firewall, sunucunuza hangi trafiklerin (portlar ve protokoller) girebileceğini kontrol eder. Sadece ihtiyacınız olan servisleri açarak saldırı yüzeyinizi küçültürsünüz.
Nasıl Yapılır?
- UFW’yi etkinleştirin:
sudo ufw enable - Gerekli portları açın (örnek):
- SSH için (örneğin 2222 portunu kullanıyorsanız):
sudo ufw allow 2222/tcp - Web sunucusu için (HTTP):
sudo ufw allow 80/tcp - Web sunucusu için (HTTPS):
sudo ufw allow 443/tcp
- SSH için (örneğin 2222 portunu kullanıyorsanız):
- Durumu kontrol edin:
sudo ufw status verbose
4. SSH Portunu Standart 22’den Değiştirin
Neden?
Standart 22 portu hackerların ilk denediği porttur. Farklı port kullanmak saldırıları azaltır.
Nasıl Yapılır?
- SSH konfigürasyon dosyasını açın:
sudo nano /etc/ssh/sshd_config Port 22satırını bulun ve örneğinPort 2222olarak değiştirin.- Dosyayı kaydedip çıkın.
- Yeni portu UFW ile açın:
sudo ufw allow 2222/tcp sudo ufw delete allow 22/tcp - SSH servisini yeniden başlatın:
sudo systemctl restart sshd - Artık bağlanırken şu şekilde kullanacaksınız:
ssh -p 2222 kullanıcı_adı@sunucu_ip
5. Fail2ban ile Otomatik Saldırı Engelleme
Neden?
Fail2ban, başarısız SSH giriş denemelerini tespit edip belirli IP’leri otomatik engeller. Böylece brute-force saldırıları engellenir.
Nasıl Yapılır?
- Fail2ban’ı kurun:
sudo apt install fail2ban - Fail2ban servisini başlatın ve aktif edin:
sudo systemctl start fail2ban sudo systemctl enable fail2ban - Ayarları değiştirmek isterseniz,
/etc/fail2ban/jail.localdosyasını oluşturup içine şu örneği yazabilirsiniz:[sshd] enabled = true port = 2222 filter = sshd logpath = /var/log/auth.log maxretry = 5 bantime = 3600 - Fail2ban’ı yeniden başlatın:
sudo systemctl restart fail2ban
6. Sistem Güncellemelerini Düzenli Olarak Yapın
Neden?
Güncellemeler, sistemdeki güvenlik açıklarını kapatır.
Nasıl Yapılır?
- Güncellemeleri manuel olarak yapmak için:
sudo apt update && sudo apt upgrade -y - Otomatik güncellemeler için:
sudo apt install unattended-upgrades sudo dpkg-reconfigure --priority=low unattended-upgrades
7. Gereksiz Servisleri Kapatın
Neden?
Çalışan her servis potansiyel saldırı kapısıdır. İhtiyacınız olmayanları kapatmak riskleri azaltır.
Nasıl Yapılır?
- Çalışan servisleri görmek için:
sudo systemctl list-units --type=service --state=running - İstemediğiniz servisi durdurun ve devre dışı bırakın:
sudo systemctl stop servis_adı sudo systemctl disable servis_adı
8. Sunucuya Bağlanan IP’leri İzleyin
Neden?
Şüpheli hareketleri fark etmek için IP kayıtlarını takip etmek faydalıdır.
Nasıl Yapılır?
- Bağlantı geçmişini görmek için:
last - SSH servis loglarını incelemek için:
sudo journalctl -u ssh.service
9. SSH Erişimini Sadece Belirli IP’lere Açın (Opsiyonel)
Neden?
Sadece güvenilir IP’lerden bağlantıya izin vererek güvenliği artırırsınız.
Nasıl Yapılır?
- Diyelim ki ev IP’niz
123.45.67.89. - UFW ile sadece bu IP’ye SSH portunu açın:
sudo ufw allow from 123.45.67.89 to any port 2222 proto tcp sudo ufw deny 2222/tcp
10. VPN Kurarak Sunucuya Güvenli Erişim Sağlayın (İleri Seviye)
Neden?
VPN (Virtual Private Network) ile tüm bağlantılar şifrelenir ve sunucunuza sadece VPN üzerinden erişim sağlanır. Bu hem güvenliği artırır hem de trafiğin gizliliğini sağlar.
Nasıl Kurulur?
Burada popüler ve kolay kurulumlu WireGuard VPN örneği veriyorum:
- WireGuard’ı kurun:
sudo apt install wireguard - WireGuard için anahtarlar oluşturun:
wg genkey | tee privatekey | wg pubkey > publickey /etc/wireguard/wg0.confdosyasını oluşturup içine temel konfigürasyonu yazın. Örnek:[Interface] PrivateKey = sunucu_private_key Address = 10.0.0.1/24 ListenPort = 51820 [Peer] PublicKey = istemci_public_key AllowedIPs = 10.0.0.2/32- WireGuard’ı başlatın:
sudo systemctl start [email protected] sudo systemctl enable [email protected]