Güvenlik

Yeni Linux sunucusunu sıkılaştırma: ilk saat kontrol listesi

Yeni bir Linux sunucusunu güvenli hale getirmek için pratik rehber: root olmayan kullanıcı oluşturma, SSH anahtarıyla yapılandırma, güvenlik duvarı, otomatik güncellemeler ve fail2ban — ayrıntılı örneklerle.

Güvenlik

Linux Sunucu Güvenliği Neden İlk Günden Önemlidir?

Yeni bir Linux sunucusunu ayağa kaldırdığınızda, genellikle otomatik saldırılara karşı korumak için yalnızca birkaç dakikanız vardır. İnternet tarayıcıları, 22. port açılır açılmaz root ve admin gibi yaygın kullanıcı adlarıyla giriş denemelerine başlar. Bu adımları ertelerseniz, muhtemelen ilk saatlerde auth.log günlüklerinde yüzlerce başarısız deneme görürsünüz.

Bu makalede, yeni bir Linux sunucusunun güvenliği için pratik ve adım adım bir kontrol listesi sunuyoruz. Ubuntu 22.04 veya 24.04 ile çalıştığınızı varsayıyoruz, ancak neredeyse tüm komutlar Debian ve onu temel alan diğer dağıtımlarda da çalışır. Amaç, 30 dakikadan kısa sürede sunucunun saldırı yüzeyini en aza indirmektir.

1. Root Olmayan Kullanıcı Oluşturma ve SSH ile Güvenli Giriş

İlk ve en önemli adım, root kullanıcısıyla doğrudan girişi kesmektir. Linux'ta root tam yetkiye sahiptir ve parolası ele geçirilirse, saldırgan tüm sistemi ele geçirir. Bunun yerine, sudo erişimi olan normal bir kullanıcı oluşturun ve günlük yönetim için onu kullanın.

Yeni Kullanıcı Oluşturma

Sunucuya root kullanıcısıyla giriş yapın ve aşağıdaki komutları çalıştırın:

adduser myuser
usermod -aG sudo myuser

İlk komut, myuser kullanıcısını bir ev diziniyle oluşturur ve sizden parola ister. İkinci komut, onu yönetim komutlarını çalıştırabilmesi için sudo grubuna ekler. Şimdi sistemden çıkış yapın ve her şeyin doğru çalıştığından emin olmak için yeni kullanıcıyla giriş yapın.

Parola Yerine SSH Anahtarı Yapılandırma

Parolalar brute-force saldırılarıyla tahmin edilebilir, ancak SSH genel anahtarı matematiksel olarak kırılması neredeyse imkansızdır. Kendi sisteminizde (sunucuda değil) bir anahtar çifti oluşturun:

ssh-keygen -t ed25519 -a 100

ed25519 algoritması RSA'dan daha hızlı ve daha güvenlidir ve daha kısa bir anahtar üretir. Sunucunuzda eski bir OpenSSH sürümü varsa, ssh-keygen -t rsa -b 4096 kullanabilirsiniz. Ardından genel anahtarı sunucuya aktarın:

ssh-copy-id myuser@your-server-ip

Bu komut, genel anahtarınızı myuser kullanıcısının ~/.ssh/authorized_keys dosyasına ekler. Şimdi ssh myuser@your-server-ip ile giriş yapın ve parola olmadan giriş yaptığınızdan emin olun.

Parola ve Root Girişini Kapatma

SSH yapılandırma dosyasını düzenleyin:

sudo nano /etc/ssh/sshd_config

Bu satırları değiştirin veya ekleyin:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers myuser

AllowUsers satırı yalnızca belirtilen kullanıcının giriş yapmasına izin verir ve ek bir güvenlik katmanıdır. Değişiklikleri uyguladıktan sonra SSH servisini yeniden başlatın:

sudo systemctl restart sshd
Yaygın hata: Parola girişini kapatmadan önce, ayrı bir terminalde SSH anahtarıyla giriş yaptığınızdan emin olun. Anahtarınız doğru kopyalanmadıysa, servisi yeniden başlattıktan sonra sunucuya giriş yapmanın başka bir yolu kalmaz. Ayarların doğru olduğundan emin olmak için her zaman ikinci bir bağlantıyı açık tutun.

2. UFW ile Güvenlik Duvarı Yapılandırma

Güvenlik duvarı, açık portlara yetkisiz erişime karşı ilk savunma hattıdır. Ubuntu'da varsayılan araç, iptables yönetimini basitleştiren UFW (Uncomplicated Firewall) olarak adlandırılır.

Etkinleştirme ve Temel Kuralları Ayarlama

Güvenlik duvarını etkinleştirmeden önce, bağlantınızın kesilmemesi için SSH portunu açtığınızdan emin olun:

sudo ufw allow OpenSSH
sudo ufw enable

İlk komut otomatik olarak 22. portu açar. SSH'niz farklı bir porttaysa, sudo ufw allow 2222/tcp kullanın. Şimdi bir web sunucunuz veya başka bir hizmetiniz varsa, ilgili portları açın:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Güvenlik duvarı durumunu sudo ufw status verbose ile kontrol edin. Çıktı şuna benzer olmalıdır:

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere

MySQL gibi yalnızca ağ içinden erişilmesi gereken belirli bir hizmetiniz varsa, portu herkese açmak yerine sudo ufw allow from 192.168.1.0/24 to any port 3306 kullanın.

SSH Portuna Erişimi Sınırlama

Linux sunucu güvenliğini artırmak için 22. porta erişimi yalnızca kendi IP'nizle sınırlayabilirsiniz:

sudo ufw allow from YOUR_IP to any port 22 proto tcp

IP'niz sabit değilse bunu yapmayın; bunun yerine bir sonraki bölümde açıklayacağımız fail2ban'a geçin.

3. Otomatik Güvenlik Güncellemelerini Etkinleştirme

Başarılı saldırıların çoğu, aylar önce yamalanmış güvenlik açıklarından yararlanır. Otomatik güvenlik paketi güncellemeleri, her gün günlükleri kontrol etmek zorunda kalmadan bu boşluğu kapatır.

unattended-upgrades Kurulumu ve Yapılandırması

Ubuntu'da bu araç genellikle önceden kuruludur. Değilse, kurun:

sudo apt update
sudo apt install unattended-upgrades

Ardından yapılandırma dosyasını düzenleyin:

sudo dpkg-reconfigure --priority=low unattended-upgrades

Açılan pencerede Yes seçeneğini seçin. Daha ayrıntılı ayarlar için /etc/apt/apt.conf.d/50unattended-upgrades dosyasını açın ve aşağıdaki satırın etkin olduğundan emin olun:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};

Bu ayar yalnızca güvenlik güncellemelerini yükler ve sistemi bozabilecek yeni paketlerin otomatik kurulumunu engeller. Hizmetin doğru çalıştığını kontrol etmek için günlüğünü görüntüleyin:

sudo tail -f /var/log/unattended-upgrades/unattended-upgrades.log

4. Brute-force Saldırılarına Karşı fail2ban Kurulumu ve Yapılandırması

Parola girişini devre dışı bırakmış olsanız bile, SSH ve web sunucusu gibi hizmetler hâlâ saldırılara maruz kalabilir. fail2ban, günlükleri izleyen ve şüpheli davranış sergileyen IP'leri geçici olarak engelleyen açık kaynaklı bir araçtır.

Temel Kurulum ve Başlatma

sudo apt install fail2ban

Ana yapılandırma dosyasını düzenlemek yerine, daha yüksek önceliğe sahip yerel bir dosya oluşturun:

sudo nano /etc/fail2ban/jail.local

İçine aşağıdaki içeriği ekleyin:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600

Bu ayarlar, 10 dakika (findtime) içinde üç kez (maxretry) başarısız giriş yaparsanız, IP'nizin bir saat (bantime) boyunca engelleneceği anlamına gelir. Dosyayı kaydettikten sonra servisi yeniden başlatın:

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Durumu Kontrol Etme ve Gelişmiş Ayarlar

Engellenen IP'lerin listesini görmek için:

sudo fail2ban-client status sshd

Çıktı, engellenen IP sayısını ve listesini içerir. nginx web sunucunuz varsa, onun için benzer bir jail oluşturabilirsiniz:

[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 5
bantime = 1800

Hazır filtreler /etc/fail2ban/filter.d/ klasöründe bulunur ve Postfix veya ProFTPD gibi farklı hizmetler için de jail oluşturabilirsiniz.

Önemli not: Docker kullanıyorsanız, fail2ban varsayılan olarak gerçek saldırgan IP'sini değil, konteyner IP'lerini görür. Bu sorunu çözmek için Docker ağını host moduna ayarlamanız veya Docker'a özel filtreler kullanmanız gerekir.

5. Son Kontrol ve Ek İpuçları

Bu adımları tamamladıktan sonra, her şeyin doğru çalıştığından emin olmak için birkaç son kontrol yapın.

Linux Sunucu Güvenliğini Dışarıdan Test Etme

Kendi sisteminizde nmap gibi bir port tarama aracı kullanın:

nmap -sS -p- your-server-ip

Bu komut açık olan tüm portları gösterir. Açık olmaması gereken bir port varsa, güvenlik duvarını kontrol edin. Ayrıca SSH yapılandırmanızın güvenliğini kontrol etmek için ssh-audit.com gibi çevrimiçi hizmetleri kullanabilirsiniz.

Otomatik Güncellemeleri ve İzlemeyi Etkinleştirme

Sunucunuzun durumundan haberdar olmak için, başarılı bir giriş durumunda e-posta gönderen basit bir betik oluşturun. /etc/ssh/sshrc dosyasını oluşturun:

#!/bin/sh
echo "SSH login on $(hostname) at $(date)" | mail -s "SSH Login Alert" your@email.com

Ve onu çalıştırılabilir yapın:

sudo chmod +x /etc/ssh/sshrc

Bu basit yöntem, beklenmeyen her girişten haberdar olmanıza yardımcı olur.

Özet

Bu kontrol listesi, yeni bir Linux sunucusunun güvenliği için temeldir, ancak güvenlik sürekli bir süreçtir. Her ay günlükleri kontrol edin, güncellemeleri yükleyin ve güvenlik denetimi için lynis gibi araçlar kullanın. Bu ayarları uygulamak için güvenilir bir platform arıyorsanız, ServerNet bulut sunucuları tam SSH erişimi ve Linux çekirdeği ile bu adımları tam olarak uygulamanıza olanak tanır. Ancak en önemli nokta, bu ayarları asla ertelememenizdir — kurulumdan sonraki ilk saatler, sunucunuzun güvenliği için en kritik zamandır.

ServerNet Destek

ServerNet mühendislik ve yayın ekibi — altyapı, ağ ve web barındırma uzmanları.

Güvenlik Hizmetleri
Paylaş:

Yorumlar 0

Henüz yorum yok — ilk siz olun!

Yorum bırakın

İlgili hizmet

Güvenlik Hizmetleri

OSCP sertifikalı uzmanlarla sızma testi, altyapı sıkılaştırma ve 7/24 güvenlik izleme.