IHS Blog

Ubuntu 24.04 VPS Kurulumu Sonrası Yapılması Gereken Temel Güvenlik Adımları

ubuntu-24-04-vps-kurulumu-sonrasi-yapilmasi-gereken-temel-guvenlik-adimlari

Yeni bir Ubuntu 24.04 VPS kurmak, projenizi hayata geçirmek için heyecan verici bir ilk adımdır. Ancak, temiz bir kurulumla gelen sunucular, siber saldırılara karşı savunmasız olabilir. Kurulumu tamamladıktan sonra atılacak doğru güvenlik adımları, sunucunuzun bütünlüğünü, performansını ve verilerinizin güvenliğini sağlamak için kritik öneme sahiptir. Bu makalede, Ubuntu 24.04 sunucunuzu daha güvenli hale getirmek için yapılması gereken temel ve etkili güvenlik yapılandırmalarını adım adım inceleyeceğiz. Bu adımları uygulayarak, potansiyel tehditlere karşı güçlü bir savunma hattı oluşturabilir ve sunucunuzu gönül rahatlığıyla yönetebilirsiniz.

İçerik Tablosu

Temel Kullanıcı Yönetimi ve Ayrıcalıkların Yapılandırılması

Sunucu güvenliğinin ilk ve en temel adımı, kullanıcı hesaplarını doğru bir şekilde yönetmektir. Varsayılan olarak gelen “root” kullanıcısı ile doğrudan çalışmak, sisteme sınırsız yetkiyle erişim sağladığı için büyük bir güvenlik riski oluşturur. Yapılacak en küçük bir hata bile sistemin tamamına zarar verebilir. Bu nedenle, günlük işlemler için “sudo” ayrıcalıklarına sahip standart bir kullanıcı oluşturmak ve root hesabını güvence altına almak esastır.

Yeni Bir Sudo Ayrıcalıklı Kullanıcı Oluşturma

Sistem üzerinde root yetkileriyle işlem yapabilen ancak root kullanıcısı olmayan bir kullanıcı oluşturmak, güvenlik katmanlarınızı güçlendirir. Bu kullanıcı, yönetici yetkisi gerektiren komutları çalıştırmak için komutun başına “sudo” ekler. Bu sayede, hangi komutun ne zaman ve kim tarafından yönetici yetkileriyle çalıştırıldığı sistem kayıtlarına (log) işlenir. Yeni bir kullanıcı oluşturmak ve ona sudo ayrıcalıkları vermek için root olarak giriş yaptıktan sonra aşağıdaki komutları kullanabilirsiniz:

adduser kullaniciadi
usermod -aG sudo kullaniciadi

Bu komutlarla “kullaniciadi” adında yeni bir kullanıcı oluşturmuş ve bu kullanıcıyı “sudo” grubuna ekleyerek ona yönetici ayrıcalıkları tanımış olursunuz. Artık sunucu yönetimi için bu yeni kullanıcı hesabını kullanmalısınız.

Root Hesabının Güvenliğini Sağlama

Sudo ayrıcalıklı yeni bir kullanıcı oluşturduktan sonra, “root” hesabının doğrudan erişimini kısıtlamak gerekir. Bu, saldırganların sunucunuzun en yetkili hesabını hedef almasını zorlaştırır.

Root SSH Girişinin Kapatılması

En kritik adımlardan biri, root kullanıcısının SSH üzerinden doğrudan oturum açmasını engellemektir. Bir saldırgan root parolasını ele geçirse bile, bu ayar sayesinde sunucunuza doğrudan root olarak bağlanamaz. Bu işlemi yapmak için SSH yapılandırma dosyasını düzenlemeniz gerekir:

nano /etc/ssh/sshd_config

Bu dosyada PermitRootLogin yes satırını bulup PermitRootLogin no olarak değiştirin ve dosyayı kaydedin. Değişikliklerin aktif olması için SSH servisini yeniden başlatmayı unutmayın: systemctl restart sshd. Bu işlemden sonra sunucuya yalnızca oluşturduğunuz standart kullanıcı ile bağlanabilir ve gerektiğinde sudo komutunu kullanabilirsiniz.

Root Hesabına Güçlü Bir Parola Atanması

Root SSH girişi devre dışı bırakılsa bile, bu hesaba tahmin edilmesi imkansız, karmaşık ve uzun bir parola atamak önemlidir. Bu, fiziksel konsol erişimi veya diğer potansiyel güvenlik açıkları yoluyla hesaba erişilme riskini en aza indirir. Güçlü bir parola oluşturmak için harf, rakam ve özel karakterlerin bir kombinasyonunu kullanın.

Sistem Güncellemesi ve Bakımı

Güvenli bir sunucunun temel taşlarından biri, işletim sistemi ve üzerinde çalışan yazılımların güncel tutulmasıdır. Yazılım geliştiricileri, sürekli olarak güvenlik açıklarını tespit eder ve bunları yamalarla kapatır. Sisteminizi düzenli olarak güncellemek, bu bilinen zafiyetlere karşı sunucunuzu korumanın en etkili yoludur. Güncel olmayan bir sistem, saldırganlar için kolay bir hedeftir.

Paket Depolarını Güncelleme (apt update)

Sisteminize yeni bir yazılım kurmadan veya mevcut yazılımları yükseltmeden önce, paket yöneticisinin mevcut paketler ve sürümleri hakkındaki bilgi listesini güncellemesi gerekir. apt update komutu, sunucunuzun bağlı olduğu depolardaki paket listelerini yeniler. Bu komut herhangi bir paketi kurmaz veya yükseltmez, sadece sistemin hangi paketlerin güncellenebileceğini bilmesini sağlar.

sudo apt update

Yüklü Paketleri Son Sürüme Yükseltme (apt upgrade)

Paket listesini güncelledikten sonra, sistemde yüklü olan tüm paketleri mevcut en son sürümlerine yükseltmek için apt upgrade komutu kullanılır. Bu komut, güvenlik yamalarını, hata düzeltmelerini ve yeni özellikleri içeren güncellemeleri sisteminize uygular. Düzenli olarak bu komutu çalıştırmak, sistem bütünlüğünü korumak için kritik bir alışkanlıktır.

sudo apt upgrade

Otomatik Güvenlik Güncellemelerinin Yapılandırılması

Manuel güncellemeler önemli olsa da, kritik güvenlik güncellemelerinin anında uygulanmasını sağlamak için otomatik güncellemeleri yapılandırmak akıllıca bir stratejidir. Ubuntu, “unattended-upgrades” paketi sayesinde bu işlemi kolaylaştırır. Bu paket, özellikle güvenlikle ilgili güncellemeleri otomatik olarak indirip kurarak sisteminizi sürekli güvende tutar. Kurulum ve temel yapılandırma için aşağıdaki komutları kullanabilirsiniz:

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

Bu komut, otomatik güncellemeleri etkinleştirecek ve sunucunuzun bilinen güvenlik tehditlerine karşı proaktif bir şekilde korunmasını sağlayacaktır. Otomatik güncellemeler, özellikle unmanaged (yönetilmeyen) vps kullananlar için hayati önem taşır.

Güvenlik Duvarı (Firewall) Konfigürasyonu: UFW

Bir sunucunun dış dünya ile iletişimini kontrol eden bir güvenlik duvarı, siber güvenliğin temel direğidir. Güvenlik duvarı, gelen ve giden ağ trafiğini belirli kurallara göre filtreleyerek yetkisiz erişim denemelerini engeller ve sadece izin verilen servislerin iletişim kurmasını sağlar. Ubuntu’da bu görevi basitleştiren UFW (Uncomplicated Firewall) aracı bulunur.

UFW (Uncomplicated Firewall) Nedir ve Neden Önemlidir?

UFW, Ubuntu’nun varsayılan güvenlik duvarı yönetim aracıdır. Karmaşık “iptables” kurallarını yönetmek için kullanıcı dostu bir arayüz sunar. UFW’nin önemi, sunucunuzdaki portları yönetmeyi kolaylaştırmasından gelir. İhtiyaç duyulmayan tüm portları kapatarak ve sadece belirli servislere (örneğin web sunucusu veya SSH) erişim izni vererek saldırı yüzeyini önemli ölçüde daraltır. Bu, sunucunuzu ağ tabanlı birçok yaygın saldırıya karşı korur.

UFW’nin Etkinleştirilmesi ve Varsayılan Kuralların Ayarlanması

UFW’yi kullanmaya başlamadan önce, varsayılan kuralları ayarlamak en iyi uygulamadır. Genellikle, tüm gelen bağlantıları varsayılan olarak reddetmek (deny) ve tüm giden bağlantılara izin vermek (allow) güvenli bir başlangıç noktasıdır. Bu, sunucunuzun dışarıdan istenmeyen hiçbir bağlantı kabul etmeyeceği, ancak içeriden dışarıya başlatılan bağlantıların sorunsuz çalışacağı anlamına gelir.

sudo ufw default deny incoming
sudo ufw default allow outgoing

Bu kuralları belirledikten sonra UFW’yi etkinleştirebilirsiniz:

sudo ufw enable

Uyarı: UFW’yi etkinleştirmeden önce, SSH bağlantınıza izin veren bir kural eklediğinizden emin olun, aksi takdirde sunucuyla bağlantınız kesilebilir.

Temel Servislere İzin Verme (SSH, HTTP, HTTPS)

Varsayılan olarak tüm gelen trafiği engelledikten sonra, ihtiyaç duyduğunuz servislere erişim izni vermelisiniz. UFW, yaygın servisler için önceden tanımlanmış profil isimlerini kullanmayı kolaylaştırır.

Belirli bir port numarası için de izin verebilirsiniz, örneğin: sudo ufw allow 2222/tcp

UFW Durumunu Kontrol Etme ve Kuralları Yönetme

Mevcut UFW durumunu ve tanımlı kuralları istediğiniz zaman kontrol edebilirsiniz. Bu, hangi portların açık olduğunu ve güvenlik duvarınızın aktif olup olmadığını görmenizi sağlar.

sudo ufw status verbose

Bu komut, kuralların bir listesini ve güvenlik duvarının durumunu detaylı bir şekilde gösterir. Bir kuralı silmek isterseniz, önce kuralları numaralandırılmış olarak listeleyip ardından numarasıyla silebilirsiniz:

sudo ufw status numbered
sudo ufw delete [kural_numarası]

Temel UFW Komutları
KomutAçıklama
sudo ufw enableGüvenlik duvarını etkinleştirir.
sudo ufw disableGüvenlik duvarını devre dışı bırakır.
sudo ufw statusMevcut durumu ve kuralları gösterir.
sudo ufw allow sshSSH portuna (varsayılan 22) izin verir.
sudo ufw deny httpHTTP portundan (80) gelen trafiği engeller.
sudo ufw delete [kural]Belirtilen kuralı siler.
sudo ufw resetTüm kuralları sıfırlar ve UFW’yi devre dışı bırakır.

SSH (Secure Shell) Servisinin Güçlendirilmesi

SSH, sunucunuza uzaktan güvenli bir şekilde bağlanmanızı sağlayan en temel araçtır. Ancak varsayılan ayarlarıyla bırakıldığında, saldırganlar için potansiyel bir giriş kapısı olabilir. SSH servisini güçlendirmek, sunucu güvenliğini artırmada atılacak en önemli adımlardan biridir. Bu, varsayılan portu değiştirmekten, parola tabanlı girişi kapatıp anahtar tabanlı kimlik doğrulamaya geçmeye kadar bir dizi önlemi içerir.

Varsayılan SSH Portunu Değiştirme

SSH varsayılan olarak 22 numaralı portu kullanır. Otomatik botlar ve saldırganlar, sunucuları tararken ilk olarak bu portu hedefler. Varsayılan portu değiştirmek, bu otomatik taramaların büyük çoğunluğunu başarısız kılarak sunucunuza yönelik “gürültüyü” azaltır ve güvenliği bir katman daha artırır. Portu değiştirmek için SSH yapılandırma dosyasını düzenleyin:

sudo nano /etc/ssh/sshd_config

Dosya içinde #Port 22 satırını bulun, başındaki diyez işaretini (#) kaldırın ve 22’yi 1024-65535 arasında, başka bir servis tarafından kullanılmayan bir port numarasıyla (örneğin, 2222) değiştirin. Değişikliği kaydettikten sonra yeni portunuza güvenlik duvarından izin vermeyi unutmayın (sudo ufw allow 2222/tcp) ve ardından SSH servisini yeniden başlatın (sudo systemctl restart sshd). Artık sunucunuza bağlanırken yeni port numarasını belirtmeniz gerekecektir.

Parola Tabanlı Kimlik Doğrulamasını Devre Dışı Bırakma

Parolalar, kaba kuvvet (brute-force) saldırılarıyla kırılabilir. En güvenli yöntem, parola ile girişi tamamen devre dışı bırakıp yerine çok daha güvenli olan SSH anahtar tabanlı kimlik doğrulamasını kullanmaktır. Bu ayarı yapmak için yine sshd_config dosyasını açın ve PasswordAuthentication yes satırını bulup PasswordAuthentication no olarak değiştirin. Bu değişikliği yapmadan önce SSH anahtar tabanlı kimlik doğrulamasını başarıyla yapılandırdığınızdan emin olun, aksi takdirde sunucunuza erişiminizi kaybedebilirsiniz.

SSH Anahtar Tabanlı Kimlik Doğrulamasını (Public Key Authentication) Aktif Etme

SSH anahtar tabanlı kimlik doğrulaması, bir parola yerine kriptografik bir anahtar çifti (özel ve genel anahtar) kullanır. Özel anahtar sizin bilgisayarınızda kalır ve asla paylaşılmazken, genel anahtar sunucuya kopyalanır. Bağlantı kurulduğunda, sunucu bu anahtar çiftini kullanarak kimliğinizi doğrular. Bu yöntem, parola tabanlı doğrulamadan çok daha güvenlidir.

SSH Anahtar Çifti Oluşturma (Client Tarafında)

Öncelikle kendi yerel bilgisayarınızda (Windows, macOS veya Linux) bir SSH anahtar çifti oluşturmanız gerekir. Bu işlem genellikle ssh-keygen komutu ile yapılır. Bu komut, size özel (id_rsa) ve genel (id_rsa.pub) anahtarlarınızı oluşturacaktır.

Public Anahtarı Sunucuya Kopyalama

Oluşturduğunuz genel anahtarı (id_rsa.pub dosyasının içeriğini) sunucunuza kopyalamanız gerekir. Bunu yapmanın en kolay yolu ssh-copy-id komutudur:

ssh-copy-id kullaniciadi@sunucu_ip_adresi

Bu komut, genel anahtarınızı sunucudaki doğru dosyaya (~/.ssh/authorized_keys) otomatik olarak ekler. Bu işlemi tamamladıktan sonra, sunucunuza parolasız bir şekilde bağlanabildiğinizi test edin. Test başarılı olduktan sonra parola tabanlı kimlik doğrulamasını güvenle devre dışı bırakabilirsiniz. Bu güvenlik önlemi, özellikle Linux hosting altyapılarında standart bir uygulamadır.

Belirli Kullanıcılara veya IP Adreslerine SSH Erişimi Verme

SSH erişimini daha da kısıtlamak için, sadece belirli kullanıcıların veya güvenilir IP adreslerinin bağlanmasına izin verebilirsiniz. Bu, /etc/ssh/sshd_config dosyasına eklenecek direktiflerle yapılır. Örneğin, yalnızca “ali” ve “veli” kullanıcılarının bağlanmasına izin vermek için:

AllowUsers ali veli

Veya belirli bir IP adresinden gelen bağlantılara izin vermek için:

AllowUsers kullanici@192.168.1.100

Bu yapılandırmalar, yetkisiz kişilerin sunucunuza erişim denemelerini büyük ölçüde sınırlar.

Kaba Kuvvet (Brute-Force) Saldırılarına Karşı Korunma: Fail2Ban

Sunucunuz internete açıldığı andan itibaren, çeşitli servislerinize (özellikle SSH) yönelik otomatik parola deneme saldırıları olan kaba kuvvet (brute-force) saldırılarının hedefi haline gelir. Bu saldırılar, doğru kullanıcı adı ve parola kombinasyonunu bulana kadar binlerce deneme yapar. Fail2Ban, bu tür saldırıları tespit edip engelleyen son derece etkili bir araçtır.

Fail2Ban Nedir ve Çalışma Prensibi

Fail2Ban, sistem log dosyalarını (örneğin, /var/log/auth.log) sürekli olarak izleyen bir izinsiz girişi önleme yazılımıdır. Belirli bir zaman aralığında çok sayıda başarısız giriş denemesi gibi şüpheli aktiviteler tespit ettiğinde, saldırganın IP adresini otomatik olarak güvenlik duvarı (UFW) kurallarına ekleyerek belirli bir süre boyunca engeller. Bu basit ama etkili prensip, otomatik saldırıların büyük çoğunu durdurur ve sunucu kaynaklarının boşa harcanmasını önler.

Fail2Ban Kurulumu ve Etkinleştirilmesi

Fail2Ban’ı Ubuntu 24.04 sunucunuza kurmak oldukça basittir. Standart paket depolarında mevcuttur.

sudo apt update
sudo apt install fail2ban

Kurulum tamamlandığında, Fail2Ban servisi otomatik olarak başlar ve etkinleştirilir. Varsayılan olarak SSH portunu korumak için temel bir yapılandırmayla gelir, bu da kurulumdan hemen sonra sunucunuzun daha güvenli hale geldiği anlamına gelir.

SSH Koruması için Temel Fail2Ban Yapılandırması

Fail2Ban’in varsayılan yapılandırma dosyası /etc/fail2ban/jail.conf dosyasıdır. Ancak bu dosyayı doğrudan düzenlemek yerine, güncellemelerde üzerine yazılmaması için jail.local adında bir kopya oluşturup değişiklikleri orada yapmak en iyi uygulamadır.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Bu dosyada, çeşitli servisler için “jail” adı verilen koruma bölümleri bulunur. SSH için olan [sshd] bölümü varsayılan olarak etkindir. Bu bölümde aşağıdaki gibi parametreleri özelleştirebilirsiniz:

Örneğin, bir IP adresinin 10 dakika içinde 5 kez yanlış parola girmesi durumunda 1 saatliğine engellenmesini sağlayabilirsiniz. Yapılandırmayı değiştirdikten sonra Fail2Ban servisini yeniden başlatın: sudo systemctl restart fail2ban.

Yasaklanan IP Adreslerini Kontrol Etme ve Yönetme

Fail2Ban’in hangi IP adreslerini engellediğini görmek veya yanlışlıkla engellenen bir IP adresini serbest bırakmak için fail2ban-client komutunu kullanabilirsiniz. SSH jail’i için engellenen IP’leri görmek için:

sudo fail2ban-client status sshd

Bu komut, aktif olan jail hakkında bilgi ve engellenen IP adreslerinin bir listesini döndürür. Belirli bir IP adresini yasaktan çıkarmak için:

sudo fail2ban-client set sshd unbanip IP_ADRESI

Fail2Ban Yapılandırma Parametreleri
ParametreAçıklamaÖrnek Değer
enabledJail’in aktif olup olmadığını belirtir.true veya false
portKorunacak port veya servis adı.ssh, https, 2222
filterLoglarda hangi desenin aranacağını belirten filtre dosyası.sshd
logpathİzlenecek log dosyasının yolu./var/log/auth.log
maxretryEngelleme öncesi izin verilen maksimum deneme sayısı.5
bantimeIP adresinin engelli kalacağı süre.1h, 1d, -1 (kalıcı)

Ek Güvenlik Ayarları ve Sistem İyileştirmeleri

Temel kullanıcı yönetimi, güncellemeler, güvenlik duvarı ve saldırı önleme sistemlerini yapılandırdıktan sonra, sunucunuzun güvenliğini daha da artırmak için atabileceğiniz ek adımlar vardır. Bu adımlar, sistem yönetimini kolaylaştırır, olası sorunların tespitini hızlandırır ve güvenlik katmanlarınızı çeşitlendirir.

Sunucu Saat Dilimini (Timezone) Doğru Ayarlama

Sunucunuzun saat diliminin doğru ayarlanması, genellikle göz ardı edilen ancak önemli bir adımdır. Sistem logları, zamanlanmış görevler (cron jobs) ve uygulamalar, olayları doğru zaman damgalarıyla kaydetmek için sistem saatini kullanır. Yanlış bir saat dilimi, bir güvenlik olayını incelerken veya bir hatayı ayıklarken ciddi karışıklıklara yol açabilir. Ubuntu’da saat dilimini yapılandırmak için timedatectl komutunu kullanabilirsiniz:

sudo timedatectl set-timezone Europe/Istanbul

Bu komut, sunucu saatini Türkiye saat dilimine ayarlayacaktır.

SSH Erişimi için İki Faktörlü Kimlik Doğrulama (2FA) Yapılandırılması

SSH anahtar tabanlı kimlik doğrulaması son derece güvenli olsa da, güvenliği en üst düzeye çıkarmak için İki Faktörlü Kimlik Doğrulama (2FA) ekleyebilirsiniz. 2FA, sunucuya giriş yapmak için bildiğiniz bir şeye (SSH anahtarınız) ek olarak sahip olduğunuz bir şeye (genellikle akıllı telefonunuzdaki bir uygulama tarafından üretilen tek kullanımlık bir kod) ihtiyaç duymanızı sağlar. Google Authenticator gibi araçlarla SSH’a 2FA entegre edilebilir. Bu, özel anahtarınız bir şekilde çalınsa bile, saldırganın telefonunuza fiziksel erişimi olmadan sunucunuza girememesini sağlar. Ortadaki adam saldırıları gibi tehditlere karşı ek bir koruma katmanı sağlar.

Kullanılmayan Servisleri ve Portları Kapatma

Bir sunucuda çalışan her servis, potansiyel bir güvenlik açığı oluşturabilir. “Saldırı yüzeyi” olarak adlandırılan bu alanı küçültmenin en iyi yolu, ihtiyaç duymadığınız tüm servisleri ve yazılımları kaldırmak veya devre dışı bırakmaktır. Örneğin, sunucunuz bir e-posta sunucusu olarak hizmet vermeyecekse, Postfix veya Sendmail gibi posta servislerini çalıştırmanıza gerek yoktur. ss -tuln veya netstat -tuln gibi komutlarla sunucunuzda hangi portların dinlemede olduğunu kontrol edebilir ve gereksiz olanları kapatabilirsiniz. Bu, sistem kaynaklarını korumanın yanı sıra güvenliği de artırır.

Sistem Loglarının İzlenmesinin Önemi

Sistem logları, sunucunuzda olup biten her şeyin kaydını tutar. Başarılı ve başarısız giriş denemeleri, yazılım hataları, sistem olayları ve potansiyel güvenlik ihlalleri gibi değerli bilgiler içerirler. /var/log dizini altında bulunan bu log dosyalarını (örneğin, auth.log, syslog) düzenli olarak izlemek, şüpheli aktiviteleri erken bir aşamada tespit etmenize ve sorunlara proaktif olarak müdahale etmenize olanak tanır. Log izleme alışkanlığı, iyi bir sistem yöneticisinin en önemli özelliklerinden biridir.

Ubuntu 24.04 VPS Güvenliği İçin Neden İHS Telekom’u Tercih Etmelisiniz?

Ubuntu 24.04 VPS sunucunuzun güvenliğini sağlamak için yukarıda belirtilen adımları uygulamak kritik öneme sahiptir. Ancak en iyi yazılım tabanlı güvenlik önlemleri bile, altta yatan altyapı sağlam ve güvenilir değilse yetersiz kalabilir. İşte bu noktada, doğru sunucu sağlayıcısını seçmek, güvenlik denkleminin en önemli parçası haline gelir. Türkiye’nin lider veri merkezi ve hosting firmalarından biri olan İHS Telekom, VPS güvenliğiniz için en doğru tercihtir.

İHS Telekom, en güncel donanımlar ve yedekli ağ altyapısı ile yüksek performans ve kesintisiz çalışma süresi sunar. Sunucularımız, olası donanım arızalarına ve ağ sorunlarına karşı proaktif olarak izlenir. Ayrıca, standart olarak sunduğumuz DDoS koruma hizmetleri, sunucunuzu hizmet dışı bırakma saldırılarına karşı koruyarak projenizin her zaman erişilebilir kalmasını sağlar. Güvenlik ve performans sizin için öncelikliyse, İHS Telekom’un sunduğu güçlü altyapı ve uzman teknik destek ekibi, Ubuntu 24.04 VPS’niz için sağlam bir temel oluşturur. Sunucu maliyetlerini kontrol altında tutmak için sunduğumuz esnek paketlerle, bütçenize en uygun çözümü bulabilirsiniz.

Exit mobile version