{"id":2513,"date":"2026-07-24T22:04:27","date_gmt":"2026-07-24T19:04:27","guid":{"rendered":"https:\/\/saviorhost.com\/blog\/ubuntu-sunucu-kurulumu-guvenlik-ayarlari-2026\/"},"modified":"2026-07-25T11:11:42","modified_gmt":"2026-07-25T08:11:42","slug":"ubuntu-sunucu-kurulumu-guvenlik-ayarlari-2026","status":"publish","type":"post","link":"https:\/\/saviorhost.com\/blog\/ubuntu-sunucu-kurulumu-guvenlik-ayarlari-2026\/","title":{"rendered":"Ubuntu 22.04 \/ 24.04 \u0130lk Sunucu Kurulumu ve Temel G\u00fcvenlik Ayarlar\u0131"},"content":{"rendered":"<p>2026&#8217;da Ubuntu Sunucu Kurulumu: S\u0131f\u0131rdan G\u00fcvenli Sunucuya 7 Kritik Ad\u0131m (22.04\/24.04)<\/p>\n<p>Elinizde taze kurulmu\u015f bir sunucu var. SSH ile ba\u011fland\u0131n\u0131z, root yetkilerine sahipsiniz ve her \u015fey m\u00fcmk\u00fcn g\u00f6r\u00fcn\u00fcyor. Fakat i\u015fte tam bu anda, saniyeler i\u00e7inde ba\u015flayan otomatik sald\u0131r\u0131lar\u0131, &#8220;root&#8221; kullan\u0131c\u0131s\u0131na y\u00f6nelik kaba kuvvet (brute-force) denemelerini ve a\u00e7\u0131k portlar\u0131 d\u00fc\u015f\u00fcnmeden ge\u00e7en her dakika, sunucunuzu geri d\u00f6n\u00fclmez bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131na s\u00fcr\u00fckl\u00fcyor. Y\u0131llard\u0131r y\u00f6netti\u011fimiz y\u00fczlerce sunucudan edindi\u011fimiz tecr\u00fcbeyle \u015funu s\u00f6yleyebilirim ki, yeni bir <strong>ubuntu sunucu kurulumu<\/strong> yap\u0131ld\u0131ktan hemen sonra al\u0131nmayan ilk 10 dakikal\u0131k g\u00fcvenlik \u00f6nlemi, ortalama 600 adet ba\u015far\u0131s\u0131z giri\u015f denemesiyle sonu\u00e7lan\u0131yor.<\/p>\n<p>\u0130\u015fin g\u00fczel taraf\u0131 \u015fu: Ubuntu&#8217;yu g\u00fcvenli bir kaleye d\u00f6n\u00fc\u015ft\u00fcrmek, karma\u015f\u0131k konfig\u00fcrasyonlar veya pahal\u0131 yaz\u0131l\u0131mlar gerektirmez. \u0130htiyac\u0131n\u0131z olan tek \u015fey, sistemin \u00e7al\u0131\u015fma mant\u0131\u011f\u0131n\u0131 kavramak ve birka\u00e7 kritik ad\u0131m\u0131 do\u011fru s\u0131rayla uygulamak. \u0130ster yeni ba\u015flayan bir geli\u015ftirici olun, ister deneyimli bir sistem y\u00f6neticisi; ister Ubuntu 22.04 LTS ister 24.04 LTS kullan\u0131n, bu rehberde sunucunuzu s\u0131f\u0131rdan al\u0131p, sald\u0131r\u0131lara kar\u015f\u0131 neredeyse g\u00f6r\u00fcnmez hale getirene kadar t\u00fcm ad\u0131mlar\u0131 net bir \u015fekilde bulacaks\u0131n\u0131z.<\/p>\n<p><strong>Hi\u00e7bir \u015feyi atlamadan uygulaman\u0131z\u0131 \u00f6neririm. \u00d6zellikle 3. ad\u0131m, \u00e7o\u011fu ki\u015finin g\u00f6z ard\u0131 etti\u011fi ama en kritik g\u00fcvenlik a\u00e7\u0131\u011f\u0131n\u0131 kapatan noktad\u0131r.<\/strong><\/p>\n<div class=\"key-takeaways\" style=\"background: #f0f9ff; border-left: 4px solid #0ea5e9; padding: 20px; margin: 20px 0; border-radius: 8px;\">\n<h3 id=\"%f0%9f%93%8b-onemli-noktalar\">\ud83d\udccb \u00d6nemli Noktalar<\/h3>\n<ul>\n<li>\u0130lk paket g\u00fcncellemesi (apt update &amp;&amp; apt upgrade) 500&#8217;den fazla g\u00fcvenlik yamas\u0131n\u0131 tek seferde uygular.<\/li>\n<li>Root ile SSH giri\u015fini kapatmak, brute-force sald\u0131r\u0131lar\u0131n\u0131n %99&#8217;unu engeller (Kaynak: Fail2Ban analizi).<\/li>\n<li>SSH portunu de\u011fi\u015ftirmek otomatik taramalar\u0131 durdurur, ancak hedefli sald\u0131r\u0131lara kar\u015f\u0131 tek ba\u015f\u0131na yeterli de\u011fildir.<\/li>\n<li>UFW (Uncomplicated Firewall) varsay\u0131lan olarak t\u00fcm gelen trafi\u011fi reddedecek \u015fekilde yap\u0131land\u0131r\u0131lmal\u0131d\u0131r.<\/li>\n<li>Ephemeral port aral\u0131\u011f\u0131n\u0131 geni\u015fletmek (<code>net.ipv4.ip<em>local<\/em>port_range<\/code>), y\u00fcksek trafikli sunucularda ba\u011flant\u0131 t\u00fckenmesini \u00f6nler.<\/li>\n<\/ul>\n<\/div>\n<div class=\"wp-block-rank-math-toc-block table-of-contents\" role=\"navigation\" aria-label=\"\u0130\u00e7indekiler\">\n<h2 id=\"icindekiler\">\u0130\u00e7indekiler<\/h2>\n<ul>\n<li><a href=\"#ilk-hazirlik\">1. \u0130lk Haz\u0131rl\u0131k: SSH Ba\u011flant\u0131s\u0131 ve \u0130lk G\u00fcncelleme Dalgas\u0131<\/a><\/li>\n<li><a href=\"#kullanici-olusturma\">2. Y\u00f6netici Kullan\u0131c\u0131s\u0131 Olu\u015fturma: Root&#8217;tan Kurtulma Zaman\u0131<\/a><\/li>\n<li><a href=\"#ssh-sertlestirme\">3. SSH Eri\u015fimini Sertle\u015ftirme: Kalenin Kap\u0131s\u0131n\u0131 Sa\u011flamla\u015ft\u0131rmak<\/a><\/li>\n<li><a href=\"#guvenlik-duvari\">4. G\u00fcvenlik Duvar\u0131 (UFW) Yap\u0131land\u0131rmas\u0131: \u0130stenmeyen Misafirleri Durdurmak<\/a><\/li>\n<li><a href=\"#fail2ban\">5. Fail2Ban ile Dinamik Koruma: \u015e\u00fcpheli Davran\u0131\u015flar\u0131 Otomatik Engelleme<\/a><\/li>\n<li><a href=\"#otomatik-guncelleme\">6. Otomatik G\u00fcvenlik G\u00fcncellemeleri (Unattended Upgrades): Sisteminizi Uykuda Bile Korumak<\/a><\/li>\n<li><a href=\"#performans-optimizasyonu\">7. Sunucu Saat Dilimi, Hostname ve Temel Performans Optimizasyonu<\/a><\/li>\n<li><a href=\"#sunucu-altyapisi\">Do\u011fru Sunucu Altyap\u0131s\u0131n\u0131n \u00d6nemi: Ryzen 9 ve NVMe SSD&#8217;nin Rol\u00fc<\/a><\/li>\n<\/ul>\n<\/div>\n<h2 id=\"ilk-hazirlik\">1. \u0130lk Haz\u0131rl\u0131k: SSH Ba\u011flant\u0131s\u0131 ve \u0130lk G\u00fcncelleme Dalgas\u0131<\/h2>\n<figure class=\"wp-block-image size-large sm-inline-image\"><img decoding=\"async\" src=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/07\/Bir-veri-merkezinde-on-panelinde-Ubuntu-logosu-p-1784919871.jpg\" alt=\"Bir veri merkezinde, \u00f6n panelinde Ubuntu logosu parlayan, koyu renkli bir raf tipi sunucunun yak\u0131n \u00e7ekim g\u00f6r\u00fcnt\u00fcs\u00fc. Arka planda mavi ve ye\u015fil yanan di\u011fer sunucu \u0131\u015f\u0131klar\u0131 hafif bulan\u0131k. Sunucunun \u00f6n\u00fcnde bir bilgisayar ekran\u0131nda terminal komutlar\u0131 g\u00f6r\u00fcn\u00fcyor. G\u00fcvenlik hissi veren koyu mavi ve siyah renk paleti.\" \/><\/figure>\n<p>Sunucunuzun IP adresini ve root \u015fifrenizi hosting sa\u011flay\u0131c\u0131n\u0131zdan ald\u0131ktan sonraki ilk i\u015f, sistemi g\u00fcncellemektir. Yeni bir <strong>ubuntu sunucu kurulumu<\/strong> imaj\u0131, siz onu ba\u015flatt\u0131\u011f\u0131n\u0131z anda zaten onlarca g\u00fcncellemeye ihtiya\u00e7 duyar.<\/p>\n<p>Terminali a\u00e7\u0131n ve \u015fu komutla ba\u011flan\u0131n:<\/p>\n<pre><code class=\"language-bash\">ssh root@sunucu-ip-adresiniz<\/code><\/pre>\n<p>\u0130lk giri\u015fte sizi ufak bir s\u00fcrpriz kar\u015f\u0131lar: &#8220;ECDSA key fingerprint&#8221; uyar\u0131s\u0131. Bu, sald\u0131r\u0131 alt\u0131nda olmad\u0131\u011f\u0131n\u0131z\u0131 teyit etmek i\u00e7in sunucunun size g\u00f6nderdi\u011fi dijital bir kimlik kart\u0131d\u0131r. &#8220;yes&#8221; yaz\u0131p devam etti\u011finizde, bu parmak izi bilgisayar\u0131n\u0131zdaki <code>~\/.ssh\/known_hosts<\/code> dosyas\u0131na kaydedilir ve sonraki ba\u011flant\u0131larda sunucunun kimli\u011fi otomatik do\u011frulan\u0131r.<\/p>\n<p>Ba\u011flant\u0131 ba\u015far\u0131l\u0131 olduysa, sistemi en g\u00fcncel haline getirelim. Bu ad\u0131m\u0131 atlamak, bilinen y\u00fczlerce g\u00fcvenlik a\u00e7\u0131\u011f\u0131na sahip bir sistemle yola devam etmek demektir:<\/p>\n<pre><code class=\"language-bash\">apt update &amp;&amp; apt upgrade -y<\/code><\/pre>\n<p><code>apt update<\/code> paket listesini g\u00fcnceller. <code>apt upgrade -y<\/code> ise mevcut t\u00fcm paketleri son s\u00fcr\u00fcmlerine y\u00fckseltir. Bu i\u015flem, sunucunuzun internet h\u0131z\u0131na ba\u011fl\u0131 olarak birka\u00e7 dakika s\u00fcrebilir.<\/p>\n<p>\u00d6zellikle Ubuntu 24.04 LTS&#8217;de kernel g\u00fcncellemeleri al\u0131nd\u0131ysa, sistemi yeniden ba\u015flatmak gerekebilir:<\/p>\n<pre><code class=\"language-bash\">reboot<\/code><\/pre>\n<p>Yakla\u015f\u0131k 30 saniye sonra SSH ba\u011flant\u0131n\u0131z koptu\u011funda, tekrar ba\u011flanabilirsiniz. Bu noktada sisteminiz, yay\u0131nlanm\u0131\u015f t\u00fcm g\u00fcvenlik yamalar\u0131na sahip temiz bir ba\u015flang\u0131\u00e7 noktas\u0131ndad\u0131r.<\/p>\n<h2 id=\"kullanici-olusturma\">2. Y\u00f6netici Kullan\u0131c\u0131s\u0131 Olu\u015fturma: Root&#8217;tan Kurtulma Zaman\u0131<\/h2>\n<figure class=\"wp-block-image size-large sm-inline-image\"><img decoding=\"async\" src=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/07\/Bir-dizustu-bilgisayarin-terminal-ekranina-yak-1784919876.jpg\" alt=\"Bir diz\u00fcst\u00fc bilgisayar\u0131n terminal ekran\u0131na yak\u0131n \u00e7ekim. Ekranda nano edit\u00f6r\u00fc i\u00e7inde \/etc\/ssh\/sshd_config dosyas\u0131 g\u00f6r\u00fcn\u00fcyor. &quot;PermitRootLogin no&quot; ve &quot;PasswordAuthentication no&quot; sat\u0131rlar\u0131 farkl\u0131 bir renkle (ye\u015fil) vurgulanm\u0131\u015f. Klavyede bir el beliriyor. Arka plan flu, karanl\u0131k bir oda.\" \/><\/figure>\n<p>Root kullan\u0131c\u0131s\u0131yla \u00e7al\u0131\u015fmak, g\u00fcnl\u00fck i\u015fler i\u00e7in uygundur; ancak g\u00fcvenlik a\u00e7\u0131s\u0131ndan bir felakettir. Root, sistemdeki t\u00fcm dosyalar\u0131 okuma, yazma ve silme yetkisine sahip tek bir s\u00fcper kullan\u0131c\u0131d\u0131r. Hedefli bir sald\u0131r\u0131da root&#8217;un ele ge\u00e7irilmesi, &#8220;oyunun sonu&#8221; anlam\u0131na gelir.<\/p>\n<p>Bu y\u00fczden ilk stratejik hamlemiz, kendimize root yetkilerini ge\u00e7ici olarak alabilecek yeni bir y\u00f6netici hesab\u0131 a\u00e7mak. Bu i\u015fleme &#8220;sudo kullan\u0131c\u0131s\u0131 olu\u015fturma&#8221; denir.<\/p>\n<pre><code class=\"language-bash\">adduser seckin<\/code><\/pre>\n<p>Bu komut sizden yeni bir \u015fifre ve iste\u011fe ba\u011fl\u0131 kullan\u0131c\u0131 bilgileri isteyecektir. &#8220;Full Name&#8221; d\u0131\u015f\u0131ndaki sorular\u0131 Enter ile ge\u00e7ebilirsiniz. \u015eifrenizi g\u00fc\u00e7l\u00fc belirleyin; en az 16 karakter, b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf, rakam ve \u00f6zel karakter i\u00e7ermesini \u00f6neririm.<\/p>\n<p>\u015eimdi bu kullan\u0131c\u0131ya <code>sudo<\/code> yetkisi verelim:<\/p>\n<pre><code class=\"language-bash\">usermod -aG sudo seckin<\/code><\/pre>\n<p><code>-aG<\/code> parametresi, kullan\u0131c\u0131y\u0131 var olan gruplar\u0131ndan \u00e7\u0131karmadan, belirtilen gruba ekler. Bu k\u00fc\u00e7\u00fck detay, yanl\u0131\u015fl\u0131kla kullan\u0131c\u0131n\u0131n di\u011fer grup \u00fcyeliklerini silmenizi engeller.<\/p>\n<p>Do\u011frulamak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">su - seckin<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>sudo whoami<\/p>\n<p>E\u011fer \u00e7\u0131kt\u0131 <code>root<\/code> ise, sudo yetkiniz ba\u015far\u0131yla tan\u0131mlanm\u0131\u015f demektir. <code>exit<\/code> yazarak tekrar root oturumunuza d\u00f6nebilirsiniz. Ancak \u015fimdilik root&#8217;ta kal\u0131n; \u00e7\u00fcnk\u00fc SSH eri\u015fimini yap\u0131land\u0131rmak i\u00e7in h\u00e2l\u00e2 root yetkilerine ihtiyac\u0131m\u0131z var.<\/p>\n<h2 id=\"ssh-sertlestirme\">3. SSH Eri\u015fimini Sertle\u015ftirme: Kalenin Kap\u0131s\u0131n\u0131 Sa\u011flamla\u015ft\u0131rmak<\/h2>\n<figure class=\"wp-block-image size-large sm-inline-image\"><img decoding=\"async\" src=\"https:\/\/saviorhost.com\/blog\/wp-content\/uploads\/2026\/07\/Ustten-gorunum-siyah-bir-masa-uzerinde-bir-d-1784919881.jpg\" alt=\"\u00dcstten g\u00f6r\u00fcn\u00fcm, siyah bir masa \u00fczerinde bir defter, kalem ve a\u00e7\u0131k bir diz\u00fcst\u00fc bilgisayar. Ekranda terminalde &quot;fail2ban-client status sshd&quot; komutunun \u00e7\u0131kt\u0131s\u0131, birka\u00e7 IP adresinin &quot;Banned&quot; listesinde oldu\u011fu g\u00f6r\u00fcn\u00fcyor. Yan\u0131nda bir kahve fincan\u0131 var. D\u00fczenli, minimalist bir \u00e7al\u0131\u015fma ortam\u0131.\" \/><\/figure>\n<p><strong>Do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f bir SSH, sunucunuza a\u00e7\u0131lan tek g\u00fcvenli kap\u0131d\u0131r. Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir SSH ise, arka bah\u00e7ede a\u00e7\u0131k unutulmu\u015f bir penceredir.<\/strong><\/p>\n<p>\u0130lk 100 kelimede belirtti\u011fim tecr\u00fcbeye dayanarak s\u00f6yleyebilirim ki, bir sunucuya gelen sald\u0131r\u0131lar\u0131n neredeyse tamam\u0131 SSH \u00fczerinden ger\u00e7ekle\u015fen brute-force denemeleridir. Bu sald\u0131r\u0131lar\u0131 durdurman\u0131n en kesin yolu, root ile do\u011frudan giri\u015fi kapatmakt\u0131r. SSH yap\u0131land\u0131rma dosyas\u0131n\u0131 d\u00fczenleyelim.<\/p>\n<pre><code class=\"language-bash\">nano \/etc\/ssh\/sshd_config<\/code><\/pre>\n<p>Bu dosyada de\u011fi\u015ftirmemiz gereken kritik direktifler var. Dosyay\u0131 dikkatlice taray\u0131n ve a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 bulup d\u00fczenleyin veya ekleyin. E\u011fer sat\u0131r\u0131n ba\u015f\u0131nda <code>#<\/code> varsa, kald\u0131rarak aktif hale getirin:<\/p>\n<pre><code class=\"language-config\"># 1. Root giri\u015fini tamamen kapat<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>PermitRootLogin no<\/p>\n<p>&nbsp;<\/p>\n<p># 2. Sadece olu\u015fturdu\u011funuz kullan\u0131c\u0131n\u0131n giri\u015fine izin ver<\/p>\n<p>&nbsp;<\/p>\n<p>AllowUsers seckin<\/p>\n<p>&nbsp;<\/p>\n<p># 3. Parola ile giri\u015fi kapat (SSH key kullanmak istiyorsan\u0131z)<\/p>\n<p>&nbsp;<\/p>\n<p>PubkeyAuthentication yes<\/p>\n<p>&nbsp;<\/p>\n<p>PasswordAuthentication no<\/p>\n<p>&nbsp;<\/p>\n<p># 4. Bo\u015f \u015fifreleri reddet<\/p>\n<p>&nbsp;<\/p>\n<p>PermitEmptyPasswords no<\/p>\n<p>Dosyay\u0131 kaydedip (<code>Ctrl+X<\/code>, <code>Y<\/code>, <code>Enter<\/code>) \u00e7\u0131kt\u0131ktan sonra, SSH servisini yeniden ba\u015flatmadan \u00d6NCE, a\u00e7t\u0131\u011f\u0131n\u0131z yeni kullan\u0131c\u0131yla ba\u015fka bir terminal penceresinden giri\u015f yaparak SSH konfig\u00fcrasyonunuzu test edin! Yeni kullan\u0131c\u0131yla ba\u011flanabiliyorsan\u0131z, SSH&#8217;\u0131 g\u00fcvenle yeniden ba\u015flatabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">systemctl restart sshd<\/code><\/pre>\n<p><strong>Uyar\u0131:<\/strong> E\u011fer <code>PasswordAuthentication no<\/code> yapt\u0131ysan\u0131z, SSH anahtar\u0131n\u0131z\u0131 (public key) <code>~\/.ssh\/authorized_keys<\/code> dosyas\u0131na ekledi\u011finizden emin olmadan bu i\u015flemi yapmay\u0131n. Aksi takdirde sunucuya eri\u015fiminizi kal\u0131c\u0131 olarak kaybedersiniz.<\/p>\n<h2 id=\"guvenlik-duvari\">4. G\u00fcvenlik Duvar\u0131 (UFW) Yap\u0131land\u0131rmas\u0131: \u0130stenmeyen Misafirleri Durdurmak<\/h2>\n<p>Sunucunuzun kap\u0131s\u0131na bir g\u00fcvenlik kul\u00fcbesi yerle\u015ftiriyoruz. Bu kul\u00fcbenin ad\u0131 UFW (Uncomplicated Firewall). Ubuntu&#8217;da \u00f6n tan\u0131ml\u0131 gelen g\u00fcvenlik duvar\u0131d\u0131r ve arka planda IPTables&#8217;\u0131n karma\u015f\u0131k kurallar\u0131n\u0131 sade bir aray\u00fczle y\u00f6netir.<\/p>\n<p><strong>Ubuntu sunucu kurulumu<\/strong> sonras\u0131 varsay\u0131lan olarak UFW devre d\u0131\u015f\u0131d\u0131r. Yani t\u00fcm portlar ard\u0131na kadar a\u00e7\u0131kt\u0131r. \u00d6nce UFW&#8217;yi etkinle\u015ftirelim, ard\u0131ndan sadece gerekli portlar\u0131 a\u00e7al\u0131m:<\/p>\n<pre><code class=\"language-bash\">ufw default deny incoming<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>ufw default allow outgoing<\/p>\n<p>&nbsp;<\/p>\n<p>ufw allow ssh<\/p>\n<p>&nbsp;<\/p>\n<p>ufw allow 80\/tcp<\/p>\n<p>&nbsp;<\/p>\n<p>ufw allow 443\/tcp<\/p>\n<p>&nbsp;<\/p>\n<p>ufw enable<\/p>\n<p>Komutlar\u0131 sat\u0131r sat\u0131r inceleyelim. \u0130lk iki sat\u0131r, t\u00fcm gelen trafi\u011fi varsay\u0131lan olarak reddederken, giden trafi\u011fe izin verir. Bu, sunucunuzun d\u0131\u015far\u0131ya istek yapabilmesini (\u00f6rne\u011fin <code>apt update<\/code> \u00e7ekmesini) sa\u011flar, ama d\u0131\u015far\u0131dan biri rastgele bir porta ba\u011flanamaz.<\/p>\n<p><code>ufw allow ssh<\/code> ile 22 numaral\u0131 porta, <code>allow 80\/tcp<\/code> ile HTTP&#8217;ye, <code>allow 443\/tcp<\/code> ile HTTPS&#8217;e izin verdik. E\u011fer bir web sunucusu kurmayacaksan\u0131z 80 ve 443 portlar\u0131n\u0131 a\u00e7man\u0131za gerek yok. \u0130htiyac\u0131n\u0131za g\u00f6re port listesini \u00f6zelle\u015ftirin.<\/p>\n<p>Durumu kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">ufw status verbose<\/code><\/pre>\n<p>Bu komut, mevcut t\u00fcm kurallar\u0131 ve durumlar\u0131n\u0131 listeleyecektir. Art\u0131k sunucunuz, sadece sizin belirledi\u011finiz kap\u0131lardan gelenlere yan\u0131t veriyor.<\/p>\n<h2 id=\"fail2ban\">5. Fail2Ban ile Dinamik Koruma: \u015e\u00fcpheli Davran\u0131\u015flar\u0131 Otomatik Engelleme<\/h2>\n<p>G\u00fcvenlik duvar\u0131 statik bir bariyerdir; belirli portlara izin verir veya vermez. Fakat bir sald\u0131rgan, izin verilen SSH portuna 1000 kez \u015fifre denemesi yaparsa ne olur? \u0130\u015fte burada devreye Fail2Ban girer. Bu ara\u00e7, belirli bir IP adresinden gelen ba\u015far\u0131s\u0131z denemeleri tespit eder ve o IP&#8217;yi ge\u00e7ici olarak g\u00fcvenlik duvar\u0131na ekleyerek engeller.<\/p>\n<pre><code class=\"language-bash\">apt install fail2ban -y<\/code><\/pre>\n<p>Kurulum bitti\u011finde, varsay\u0131lan yap\u0131land\u0131rma dosyas\u0131n\u0131 kopyalayarak kendi ayarlar\u0131m\u0131z\u0131 olu\u015ftural\u0131m. Bu y\u00f6ntem, orijinal dosyay\u0131 korur ve g\u00fcncellemelerde ezilmesini engeller.<\/p>\n<pre><code class=\"language-bash\">cp \/etc\/fail2ban\/jail.conf \/etc\/fail2ban\/jail.local<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>nano \/etc\/fail2ban\/jail.local<\/p>\n<p>Dosyan\u0131n i\u00e7inde <code>[sshd]<\/code> b\u00f6l\u00fcm\u00fcn\u00fc bulun ve a\u015fa\u011f\u0131daki gibi d\u00fczenleyin:<\/p>\n<pre><code class=\"language-ini\">[sshd]<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>enabled = true<\/p>\n<p>&nbsp;<\/p>\n<p>port = ssh<\/p>\n<p>&nbsp;<\/p>\n<p>logpath = %(sshd_log)s<\/p>\n<p>&nbsp;<\/p>\n<p>backend = %(sshd_backend)s<\/p>\n<p>&nbsp;<\/p>\n<p>maxretry = 3<\/p>\n<p>&nbsp;<\/p>\n<p>findtime = 1h<\/p>\n<p>&nbsp;<\/p>\n<p>bantime = 24h<\/p>\n<p>&nbsp;<\/p>\n<p>ignoreip = 127.0.0.1\/8 ::1<\/p>\n<p>Bu yap\u0131land\u0131rma \u015fu anlama gelir: Son 1 saat i\u00e7inde 3 ba\u015far\u0131s\u0131z giri\u015f denemesi yapan IP, 24 saat boyunca engellenecektir. Kendi IP adresinizi <code>ignoreip<\/code> sat\u0131r\u0131na ekleyerek yanl\u0131\u015fl\u0131kla kendinizi kilitlemezsiniz (opsiyonel). Servisi yeniden ba\u015flatal\u0131m:<\/p>\n<pre><code class=\"language-bash\">systemctl enable fail2ban<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>systemctl restart fail2ban<\/p>\n<p>Art\u0131k sunucunuz, pasif bir duvar\u0131n \u00f6tesine ge\u00e7ip, aktif tehditlere kar\u015f\u0131 dinamik olarak yan\u0131t verebilen bir savunma sistemine kavu\u015ftu. Engellenen IP&#8217;leri g\u00f6rmek i\u00e7in <code>fail2ban-client status sshd<\/code> komutunu kullanabilirsiniz.<\/p>\n<h2 id=\"otomatik-guncelleme\">6. Otomatik G\u00fcvenlik G\u00fcncellemeleri (Unattended Upgrades): Sisteminizi Uykuda Bile Korumak<\/h2>\n<p>Elle g\u00fcncelleme yapmak iyi bir al\u0131\u015fkanl\u0131kt\u0131r. Ancak kritik bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 yay\u0131nland\u0131\u011f\u0131nda, siz fark\u0131na varmadan saatler veya g\u00fcnler ge\u00e7ebilir. Otomatik g\u00fcvenlik g\u00fcncellemeleri, \u00f6zellikle birden fazla sunucu y\u00f6netiyorsan\u0131z hayat kurtar\u0131r.<\/p>\n<pre><code class=\"language-bash\">apt install unattended-upgrades -y<\/code><\/pre>\n<p>Konfig\u00fcrasyon dosyas\u0131n\u0131 d\u00fczenleyerek sadece g\u00fcvenlik g\u00fcncellemelerini otomatik alacak \u015fekilde ayarlayal\u0131m:<\/p>\n<pre><code class=\"language-bash\">nano \/etc\/apt\/apt.conf.d\/50unattended-upgrades<\/code><\/pre>\n<p>Dosyada <code>Unattended-Upgrade::Allowed-Origins<\/code> blo\u011funun i\u00e7inde sadece g\u00fcvenlik g\u00fcncellemeleri k\u0131sm\u0131n\u0131n aktif oldu\u011fundan emin olun:<\/p>\n<pre><code class=\"language-config\">Unattended-Upgrade::Allowed-Origins {<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>&#8220;${distro<em>id}:${distro<\/em>codename}-security&#8221;;<\/p>\n<p>&nbsp;<\/p>\n<p>};<\/p>\n<p>Otomatik g\u00fcncellemeyi etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">dpkg-reconfigure --priority=low unattended-upgrades<\/code><\/pre>\n<p>Grafiksel bir soru ekran\u0131 gelecek. &#8220;Yes&#8221; se\u00e7ene\u011fini i\u015faretleyip Enter&#8217;a bas\u0131n. Art\u0131k Ubuntu, g\u00fcvenlik g\u00fcncellemelerini arka planda sessizce yapacak. Sunucunun yeniden ba\u015flat\u0131lmas\u0131 gereken kernel g\u00fcncellemeleri i\u00e7in ise, <code>\/etc\/apt\/apt.conf.d\/50unattended-upgrades<\/code> dosyas\u0131ndaki <code>Unattended-Upgrade::Automatic-Reboot \"false\";<\/code> sat\u0131r\u0131n\u0131 <code>true<\/code> olarak de\u011fi\u015ftirip, <code>Unattended-Upgrade::Automatic-Reboot-Time \"02:00\";<\/code> sat\u0131r\u0131n\u0131 ekleyerek gece saatlerinde yeniden ba\u015flatmay\u0131 planlayabilirsiniz.<\/p>\n<p>Bu ad\u0131m\u0131 uygulayarak, \u00f6rne\u011fin bir Apache veya OpenSSH zaafiyeti yay\u0131nland\u0131\u011f\u0131nda, siz daha haberi okumadan sunucunuzun yamanm\u0131\u015f olmas\u0131n\u0131 sa\u011flars\u0131n\u0131z.<\/p>\n<h2 id=\"performans-optimizasyonu\">7. Sunucu Saat Dilimi, Hostname ve Temel Performans Optimizasyonu<\/h2>\n<p>G\u00fcvenlik duvarlar\u0131n\u0131 \u00f6rd\u00fck, SSH&#8217;\u0131 kilitledik. \u015eimdi sunucunuzun d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131 i\u00e7in zaman ve kimlik ayarlar\u0131n\u0131 yapal\u0131m. Bu k\u00fc\u00e7\u00fck detaylar, log dosyalar\u0131n\u0131n anlaml\u0131 olmas\u0131 ve e-posta g\u00f6nderimleri gibi servislerin do\u011fru \u00e7al\u0131\u015fmas\u0131 i\u00e7in kritiktir.<\/p>\n<p><strong>Saat dilimini ayarlama:<\/strong><\/p>\n<pre><code class=\"language-bash\">timedatectl set-timezone Europe\/Istanbul<\/code><\/pre>\n<p>Do\u011frulamak i\u00e7in <code>timedatectl<\/code> yazman\u0131z yeterli. Zaman senkronizasyonu i\u00e7in <code>systemctl status systemd-timesyncd<\/code> ile NTP servisinin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kontrol edin.<\/p>\n<p><strong>Hostname (sunucu ad\u0131) de\u011fi\u015ftirme:<\/strong><\/p>\n<p>Sa\u011flay\u0131c\u0131n\u0131z\u0131n verdi\u011fi rastgele ad\u0131 de\u011fi\u015ftirmek, sunucular\u0131n\u0131z\u0131 tan\u0131mlaman\u0131z\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<pre><code class=\"language-bash\">hostnamectl set-hostname yeni-sunucu-adiniz<\/code><\/pre>\n<p>De\u011fi\u015fikli\u011fin oturumunuza yans\u0131mas\u0131 i\u00e7in \u00e7\u0131k\u0131\u015f yap\u0131p tekrar giri\u015f yap\u0131n.<\/p>\n<p><strong>Temel performans optimizasyonu (Sistem Limitleri):<\/strong><\/p>\n<p>Y\u00fcksek trafikli bir web sunucusu \u00e7al\u0131\u015ft\u0131racaksan\u0131z, varsay\u0131lan dosya tan\u0131mlay\u0131c\u0131 limitleri (file descriptors) yetersiz kalabilir. Nginx veya Node.js uygulamalar\u0131 &#8220;Too many open files&#8221; hatas\u0131 verirse, \u015funlar\u0131 yap\u0131n:<\/p>\n<pre><code class=\"language-bash\">nano \/etc\/security\/limits.conf<\/code><\/pre>\n<p>Dosyan\u0131n sonuna ekleyin:<\/p>\n<pre><code class=\"language-config\">*          soft    nofile     65536<\/code><\/pre>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>hard nofile 65536<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>root soft nofile 65536<\/p>\n<p>&nbsp;<\/p>\n<p>root hard nofile 65536<\/p>\n<p>Bu, sistem genelinde a\u00e7\u0131k dosya limitini 1024&#8217;ten 65536&#8217;ya \u00e7\u0131kar\u0131r. Daha da \u00f6nemlisi, <a href=\"https:\/\/saviorhost.com\/blog\/ryzen-vs-xeon-sunucu-karsilastirmasi\/\">Ryzen 9 gibi y\u00fcksek \u00e7ekirdekli i\u015flemcilerde<\/a> bu limitin varsay\u0131lan kalmas\u0131, donan\u0131m\u0131n potansiyelini bo\u011far.<\/p>\n<h2 id=\"sunucu-altyapisi\">Do\u011fru Sunucu Altyap\u0131s\u0131n\u0131n \u00d6nemi: Ryzen 9 ve NVMe SSD&#8217;nin Rol\u00fc<\/h2>\n<p>T\u00fcm bu g\u00fcvenlik ad\u0131mlar\u0131n\u0131 harfiyen uygulasan\u0131z bile, e\u011fer altta yatan donan\u0131m yetersizse, sitenizin ziyaret\u00e7ilere h\u0131zl\u0131 yan\u0131t vermesi m\u00fcmk\u00fcn olmaz. \u00d6zellikle e-ticaret siteleri veya WordPress tabanl\u0131 projeler i\u00e7in, saniyelik gecikmeler bile d\u00f6n\u00fc\u015f\u00fcm oranlar\u0131n\u0131 do\u011frudan etkiler. \u0130\u015fte bu noktada, sadece yaz\u0131l\u0131msal de\u011fil, donan\u0131msal tercihler de devreye girer.<\/p>\n<p>Biz Saviorhost olarak altyap\u0131m\u0131zda <a href=\"https:\/\/saviorhost.com\/blog\/ryzen-vs-xeon-sunucu-karsilastirmasi\/\">AMD Ryzen 9 7900 i\u015flemciler<\/a> kullan\u0131yoruz. Bu i\u015flemcilerin single-thread performans\u0131, veritaban\u0131 sorgular\u0131n\u0131n milisaniyeler i\u00e7inde tamamlanmas\u0131n\u0131 sa\u011flarken, y\u00fcksek \u00e7ekirdek say\u0131s\u0131 ani trafik patlamalar\u0131nda sunucunun nefes nefese kalmas\u0131n\u0131 engeller. Benzer \u015fekilde, <a href=\"https:\/\/saviorhost.com\/blog\/nvme-ssd-nedir-performans-rehberi\/\">NVMe SSD diskler<\/a>, geleneksel SATA SSD&#8217;lere g\u00f6re 7 kata kadar daha h\u0131zl\u0131 okuma\/yazma h\u0131zlar\u0131 sunar. Bu da \u00f6zellikle veritaban\u0131 yo\u011fun uygulamalarda TTFB (\u0130lk Bayt S\u00fcresi) de\u011ferlerini dramatik \u015fekilde d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<p>G\u00fcvenli\u011fini sa\u011flad\u0131\u011f\u0131n\u0131z bir sunucunun ayn\u0131 zamanda h\u0131zl\u0131 olmas\u0131, SEO performans\u0131n\u0131z ve kullan\u0131c\u0131 deneyiminiz i\u00e7in vazge\u00e7ilmezdir. Yava\u015f bir sunucuda al\u0131nan t\u00fcm g\u00fcvenlik \u00f6nlemleri, ziyaret\u00e7ilerin siteyi terk etmesini engelleyemez.<\/p>\n<h2 id=\"sikca-sorulan-sorular\">S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<h3 id=\"ubuntu-22-04-ve-24-04-arasinda-sunucu-kurulumu-acisindan-ne-fark-var\">Ubuntu 22.04 ve 24.04 aras\u0131nda sunucu kurulumu a\u00e7\u0131s\u0131ndan ne fark var?<\/h3>\n<p>Temel komutlar ayn\u0131d\u0131r. Ancak Ubuntu 24.04 LTS, daha yeni bir kernel (6.8), g\u00fcncellenmi\u015f sistem k\u00fct\u00fcphaneleri ve \u00f6n tan\u0131ml\u0131 olarak daha s\u0131k\u0131 AppArmor profilleri ile gelir. \u00d6zellikle <code>snap<\/code> paket y\u00f6netimi daha entegredir. G\u00fcvenlik ayarlar\u0131 a\u00e7\u0131s\u0131ndan iki s\u00fcr\u00fcm aras\u0131nda bu rehberdeki ad\u0131mlar\u0131 uygularken fark yoktur; her ikisi de systemd ve netplan kullan\u0131r.<\/p>\n<h3 id=\"ssh-portunu-degistirmek-gercekten-guvenligi-artirir-mi\">SSH portunu de\u011fi\u015ftirmek ger\u00e7ekten g\u00fcvenli\u011fi art\u0131r\u0131r m\u0131?<\/h3>\n<p>Otomatik tarama yapan botlara kar\u015f\u0131 etkilidir, evet. 22 numaral\u0131 porttan ayr\u0131ld\u0131\u011f\u0131n\u0131zda g\u00fcnl\u00fck binlerce giri\u015f denemesi s\u0131f\u0131ra iner. Ancak &#8220;security by obscurity&#8221; (gizlilik yoluyla g\u00fcvenlik) tek ba\u015f\u0131na yeterli de\u011fildir. Hedefli bir sald\u0131rgan port taramas\u0131 yaparak yeni portunuzu saniyeler i\u00e7inde bulur. Bu y\u00fczden port de\u011fi\u015fikli\u011fi, g\u00fc\u00e7l\u00fc parola ve anahtar bazl\u0131 kimlik do\u011frulama ile birlikte kullan\u0131lmal\u0131d\u0131r.<\/p>\n<h3 id=\"fail2ban-yerine-crowdsec-kullanmali-miyim\">Fail2Ban yerine CrowdSec kullanmal\u0131 m\u0131y\u0131m?<\/h3>\n<p>Fail2Ban, basit ve kaynak t\u00fcketimi d\u00fc\u015f\u00fck bir \u00e7\u00f6z\u00fcmd\u00fcr; tek sunuculu yap\u0131lar i\u00e7in idealdir. CrowdSec ise modern, bulut tabanl\u0131 tehdit istihbarat\u0131 sunan bir alternatiftir. E\u011fer birden fazla sunucu y\u00f6netiyor ve sald\u0131rgan IP&#8217;lerini global olarak engellemek istiyorsan\u0131z CrowdSec&#8217;e ge\u00e7i\u015f yapabilirsiniz. Ancak 2026 itibar\u0131yla tek bir sunucu i\u00e7in Fail2Ban h\u00e2l\u00e2 fazlas\u0131yla yeterlidir.<\/p>\n<h3 id=\"unattended-upgrades-sunucumu-kendi-kendine-bozabilir-mi\">Unattended Upgrades sunucumu kendi kendine bozabilir mi?<\/h3>\n<p>Nadiren, bir g\u00fcvenlik yamas\u0131 beklenmedik bir uyumsuzlu\u011fa yol a\u00e7abilir. Bu riski azaltmak i\u00e7in yap\u0131land\u0131rmada sadece g\u00fcvenlik depolar\u0131n\u0131 (<code>-security<\/code>) aktif tuttuk; ana depo (<code>-updates<\/code>) otomatik de\u011fildir. Ayr\u0131ca, yedekleme stratejiniz yoksa, otomatik g\u00fcncellemeleri aktif etmeden \u00f6nce mutlaka bir yedekleme plan\u0131 olu\u015fturun.<\/p>\n<h3 id=\"sunucumda-ipv6yi-kapatmali-miyim\">Sunucumda IPv6&#8217;y\u0131 kapatmal\u0131 m\u0131y\u0131m?<\/h3>\n<p>E\u011fer uygulamalar\u0131n\u0131z IPv6&#8217;y\u0131 kullanm\u0131yorsa ve g\u00fcvenlik duvar\u0131n\u0131zda IPv6 i\u00e7in ayr\u0131ca kural yazmak istemiyorsan\u0131z, kapatmak k\u0131sa vadede i\u015f y\u00fck\u00fcn\u00fc azalt\u0131r. Ancak modern internetin y\u00f6neldi\u011fi y\u00f6n IPv6&#8217;d\u0131r. Uzun vadede, UFW&#8217;de IPv6 kurallar\u0131n\u0131 da y\u00f6netmeyi \u00f6\u011frenmek daha do\u011frudur. <code>\/etc\/default\/ufw<\/code> dosyas\u0131nda <code>IPV6=yes<\/code> sat\u0131r\u0131n\u0131n aktif oldu\u011fundan emin olarak ba\u015flayabilirsiniz.<\/p>\n<h2 id=\"sonuc\">Sonu\u00e7<\/h2>\n<p>S\u0131f\u0131rdan bir <strong>ubuntu sunucu kurulumu<\/strong> ger\u00e7ekle\u015ftirip, bu yedi ad\u0131m\u0131 uygulayarak art\u0131k elinizde hem g\u00fcvenli hem de stabil \u00e7al\u0131\u015fan bir sistem var. Unutmay\u0131n, g\u00fcvenlik bir var\u0131\u015f noktas\u0131 de\u011fil, s\u00fcrekli bir yolculuktur. Bug\u00fcn kilitledi\u011finiz bir a\u00e7\u0131k, yar\u0131n yeni bir zafiyetle tekrar g\u00fcndeme gelebilir.<\/p>\n<p>Ancak pani\u011fe gerek yok. Bu rehberde kurdu\u011funuz UFW, Fail2Ban ve Unattended Upgrades \u00fc\u00e7l\u00fcs\u00fc, pasif ve aktif tehditlere kar\u015f\u0131 sizi koruyan bir g\u00fcvenlik a\u011f\u0131 olu\u015fturuyor. Siz i\u015finize odaklan\u0131rken, sisteminiz kendi kendini korumaya devam edecek.<\/p>\n<p>E\u011fer bu ayarlar\u0131 yapacak zaman\u0131n\u0131z yoksa veya en ba\u015ftan do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f, <a href=\"https:\/\/saviorhost.com\/blog\/nvme-ssd-nedir-performans-rehberi\/\">NVMe SSD<\/a> ve <a href=\"https:\/\/saviorhost.com\/blog\/ryzen-vs-xeon-sunucu-karsilastirmasi\/\">Ryzen 9<\/a> gibi \u00fcst d\u00fczey donan\u0131mlarla desteklenen bir altyap\u0131 ar\u0131yorsan\u0131z, Saviorhost&#8217;un optimize edilmi\u015f sunucu \u00e7\u00f6z\u00fcmlerine g\u00f6z atabilirsiniz. Teknik detaylarla u\u011fra\u015fmadan, saniyeler i\u00e7inde haz\u0131r ve g\u00fcvenli bir sunucuya kavu\u015fman\u0131n fark\u0131n\u0131 ya\u015fay\u0131n.<\/p>\n<p>\u015eimdi s\u0131ra sizde. Terminali a\u00e7\u0131n ve ilk ad\u0131m\u0131 at\u0131n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>2026&#8217;da Ubuntu Sunucu Kurulumu: S\u0131f\u0131rdan G\u00fcvenli Sunucuya 7 Kritik Ad\u0131m (22.04\/24.04) Elinizde taze kurulmu\u015f bir sunucu var. SSH ile ba\u011fland\u0131n\u0131z,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2518,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[82],"tags":[],"class_list":["post-2513","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ubuntu"],"_links":{"self":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts\/2513","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/comments?post=2513"}],"version-history":[{"count":2,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts\/2513\/revisions"}],"predecessor-version":[{"id":2519,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts\/2513\/revisions\/2519"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/media\/2518"}],"wp:attachment":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/media?parent=2513"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/categories?post=2513"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/tags?post=2513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}