İlk 30 Dakika: VPS Sertleştirme Kontrol Listesi
Yeni bir VPS, IP aldıktan dakikalar içinde ilk SSH taramasını alır. İşte her yeni sunucuda çalıştırdığım kesin sıra — Debian 13 için kopyala-yapıştır hazır, sonunda bir kontrol listesi tablosuyla.
Varsayımlar: VPSRento dağıtımından taze bir Debian 13 imajı, root olarak SSH ile giriş yaptınız ve örnek IP 185.220.101.14 — kendinizinkiyle değiştirin. Toplam süre: yaklaşık yarım saat. Adımları sırayla yapın; 2. adım acele ederseniz sizi kilitleyebilir.
1. sudo kullanıcınızı oluşturun
Root olarak çalışmak, yazım hatalarının olaylara dönüşme şeklidir. Gerçek bir kullanıcı oluşturun, sudo verin ve her şeyi oradan yapın:
# create the user (you'll set a password — still useful for sudo)
adduser ops
# grant sudo
usermod -aG sudo ops
Bu noktadan sonraki her şey ops olarak çalışır, aksi belirtilmedikçe.
2. Yalnızca SSH anahtarları — şifre yok, root girişi yok
Şifre kimlik doğrulaması, internete açık bir sunucudaki en büyük deliktir. Botlar 22. porta gün boyu kimlik listeleriyle vurur. Anahtarlar tüm saldırı sınıfını gereksiz kılar. Kendi makinenizde:
# generate a keypair if you don't have one (ed25519, no passphrase tradeoff is yours)
ssh-keygen -t ed25519 -C "ops@atlas"
# push the public key to the server
ssh-copy-id [email protected]
Yeni bir terminalde anahtarla giriş yapabildiğinizi doğrulayın — terminal — — yapılandırmaya dokunmadan önce. Mevcut root oturumunu kaçış kapağınız olarak açık tutun. Ardından /etc/ssh/sshd_config dosyasını düz bir :
# /etc/ssh/sshd_config — the three lines that matter
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
# validate the config, then reload (Debian 13 uses ssh.service)
sshd -t && systemctl reload ssh
prohibit-password yerine düzenleyin. Root için bilinçli olarak: root, iş istasyonunuzdan bir anahtarla hâlâ kimlik doğrulayabilir; bu, sağlayıcı konsol kurtarma için ara sıra yararlıdır — ancak hiçbir şifre, hiç kimse için, hiçbir yerden asla çalışmayacaktır. no sshd -T | grep -E 'passwordauthentication|permitrootlogin' ile doğrulayın..
3. Güvenlik duvarı: varsayılan reddet, yalnızca çalıştırdıklarını aç
Debian'ın ufw'si, nftables üzerinde ince ve mantıklı bir katmandır. Politika güvenliktir; kurallar yalnızca istisnalardır:
apt update && apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
# SSH stays open — add this BEFORE enabling
ufw allow 22/tcp comment 'SSH'
# whatever your box actually serves, e.g.:
ufw allow 80/tcp comment 'HTTP'
ufw allow 443/tcp comment 'HTTPS'
ufw enable
ufw status verbose
Açtığınız her portun bir adı ve bir nedeni olmalı. Bir portun ne için olduğunu adlandıramıyorsanız, kural almaz.
4. fail2ban: botları yavaşlat
Şifre kimlik doğrulaması devre dışı bırakıldığında, kaba kuvvet zaten ölüdür — ancak fail2ban günlüklerinizi okunur tutar ve diğer her şeyi yoklayan tarayıcıları yasaklar:
apt install -y fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
maxretry = 5
findtime = 10m
bantime = 1h
systemctl enable --now fail2ban
# watch it work
fail2ban-client status sshd
5. Otomatik güvenlik güncellemeleri
Yamalanmamış CVE, yeniden başlatmadan daha büyük bir risktir. Debian'ın unattended-upgrades'ı güvenlik güncellemelerini kendi başına kurar:
apt install -y unattended-upgrades
# answer Yes to auto-install updates
dpkg-reconfigure -plow unattended-upgrades
/etc/apt/apt.conf.d/50unattended-upgrades içindeki varsayılan yapılandırma yalnızca güvenlik paketinden çeker — bir sunucuda istediğiniz şey budur: güvenlik düzeltmeleri otomatik, diğer her şey sizin seçiminizle.
6. Çalıştırmadıklarını kapat
Çalışan her hizmet, yamanız gereken saldırı yüzeyidir. Gerçekte neyin dinlediğini görün:
# who is listening, on what, as which process
ss -tulpn
# everything enabled at boot
systemctl list-unit-files --state=enabled
# example: you don't run a print server — nobody does
systemctl disable --now cups
Kural: bir dinleyicinin ne yaptığını söyleyemiyorsanız, yaşamasına izin vermeden önce öğrenin. Minimal bir VPSRento imajında sshd ve kendi uygulamanızın ötesinde çok az şey olmalı.
7. İsteğe bağlı ama önerilir: bir WireGuard yönetim düzlemi
SSH güvenliğinin en güçlü hali, internete hiç açık olmayan SSH'tır. Makinede WireGuard çalıştırın, SSH'ı yalnızca tünel içinde izin verin ve 22 numaralı port dünyadaki tüm tarayıcılardan kaybolur:
apt install -y wireguard
# /etc/wireguard/wg0.conf — minimal management tunnel
# [Interface] Address = 10.8.0.1/24, ListenPort = 51820
# open the tunnel, not the shell
ufw allow 51820/udp comment 'WireGuard'
ufw allow in on wg0 to any port 22 proto tcp comment 'SSH via WG'
ufw delete allow 22/tcp
systemctl enable --now wg-quick@wg0
Bundan sonra ssh [email protected] komutunu tünel üzerinden çalıştırırsınız ve genel IP yalnızca tek bir UDP portunda yanıt verir. WireGuard'ın tam kılavuzu — anahtarlar, eşler, istemci yapılandırmaları, telefon QR kodları — eşlik eden rehberde.
10 maddelik kontrol listesi
Her yeni dağıtımdan sonra ve eklediğiniz her hizmetten sonra bu tabloyu gözden geçirin:
| # | Öğe | Nerede bulunur | Şununla doğrula |
|---|---|---|---|
| 1 | Root olmayan sudo kullanıcısı | /etc/passwd | id ops |
| 2 | Yalnızca anahtar tabanlı SSH kimlik doğrulaması | sshd_config | sshd -T | grep passwordauth |
| 3 | Root parola girişi devre dışı | sshd_config | sshd -T | grep permitrootlogin |
| 4 | Güvenlik duvarı varsayılan olarak gelen trafiği reddediyor | ufw | ufw status verbose |
| 5 | Yalnızca adlandırılmış portlar açık | ufw | ufw status numbered |
| 6 | fail2ban sshd hapishanesi aktif | jail.local | fail2ban-client status sshd |
| 7 | Güvenlik güncellemeleri otomatik | apt | systemctl status unattended-upgrades |
| 8 | Açıklanamayan dinleyici yok | — | ss -tulpn |
| 9 | WireGuard üzerinden yönetim (isteğe bağlı) | wg0.conf | wg show |
| 10 | Sertleştirme sonrası anlık görüntü | Müşteri alanı eklentisi, $1.99/ay | Hizmetler → VPS'iniz → anlık görüntüler |
10. madde bir cümleyi hak ediyor: önce sertleştirin, sonra anlık görüntü alın, bu sırayla — temiz ve sertleştirilmiş bir makinenin anlık görüntüsü, gelecekteki her hatanız için geri alma noktanızdır. Günlük harici anlık görüntüler $1.99/ay eklentisidir ve müşteri alanında bulunur. Otuz dakikalık önlem, tek tıklıkla sigorta.