{"id":37522,"date":"2026-01-07T14:40:49","date_gmt":"2026-01-07T11:40:49","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37522"},"modified":"2026-01-07T14:40:49","modified_gmt":"2026-01-07T11:40:49","slug":"ubuntu-20-04-ile-sunucu-baslangic-kurulumu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/","title":{"rendered":"Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu"},"content":{"rendered":"<p><body><\/p>\n<h2>Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu<\/h2>\n<h2>Giri\u015f<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, g\u00fcvenli ve stabil bir sunucu altyap\u0131s\u0131 kurmak her proje i\u00e7in temel bir gerekliliktir. \u0130ster bir web sitesi bar\u0131nd\u0131r\u0131n, ister bir veritaban\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n, ister \u00f6zel bir uygulama da\u011f\u0131t\u0131n, sunucunuzun do\u011fru bir \u015fekilde yap\u0131land\u0131r\u0131lmas\u0131 kritik \u00f6neme sahiptir. Bu teknik makale, Ubuntu 20.04 (Focal Fossa) i\u015fletim sistemi \u00fczerinde yeni bir sunucu i\u00e7in ba\u015flang\u0131\u00e7 kurulum ad\u0131mlar\u0131n\u0131 detayl\u0131 bir \u015fekilde ele alacakt\u0131r. Ubuntu 20.04 LTS (Uzun S\u00fcreli Destek) s\u00fcr\u00fcm\u00fc olmas\u0131 nedeniyle, kararl\u0131l\u0131\u011f\u0131, geni\u015f topluluk deste\u011fi ve uzun s\u00fcreli g\u00fcncellemeleriyle sunucu ortamlar\u0131 i\u00e7in ideal bir se\u00e7imdir.<\/p>\n<p>Bu k\u0131lavuz, sunucunuza ilk eri\u015fimden ba\u015flayarak, temel g\u00fcvenlik \u00f6nlemlerine, kullan\u0131c\u0131 y\u00f6netimine, a\u011f yap\u0131land\u0131rmas\u0131na ve ek g\u00fcvenlik ara\u00e7lar\u0131n\u0131n kurulumuna kadar bir dizi ad\u0131m\u0131 kapsayacakt\u0131r. Amac\u0131m\u0131z, sunucunuzu gelecekteki da\u011f\u0131t\u0131mlar\u0131n\u0131z i\u00e7in sa\u011flam, g\u00fcvenli ve y\u00f6netilebilir bir temel \u00fczerine in\u015fa etmenize yard\u0131mc\u0131 olmakt\u0131r.<\/p>\n<h2>Sunucuya \u0130lk Eri\u015fim ve Temel Ayarlar<\/h2>\n<p>Yeni bir sunucuya ilk kez eri\u015fmek, genellikle SSH (Secure Shell) protokol\u00fc arac\u0131l\u0131\u011f\u0131yla ger\u00e7ekle\u015fir. Bu a\u015famada, sunucunuzun IP adresi ve ba\u015flang\u0131\u00e7 kimlik bilgileri (genellikle bir kullan\u0131c\u0131 ad\u0131 ve parola, veya bir SSH anahtar \u00e7ifti) gereklidir.<\/p>\n<h3>SSH Kullan\u0131m\u0131<\/h3>\n<p>SSH, uzaktaki bir sunucuya g\u00fcvenli bir \u015fekilde ba\u011flanman\u0131z\u0131 sa\u011flayan bir protokold\u00fcr. Ba\u011flant\u0131, \u015fifreli bir t\u00fcnel \u00fczerinden kurulur, bu da veri al\u0131\u015fveri\u015finin g\u00fcvenli\u011fini garanti eder.<\/p>\n<p>*   <strong>Linux\/macOS Kullan\u0131c\u0131lar\u0131:<\/strong> Terminalinizi a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">ssh kullan\u0131c\u0131ad\u0131@sunucu_ip_adresi<\/code><\/pre>\n<p>    \u00d6rne\u011fin, <code>root<\/code> kullan\u0131c\u0131s\u0131 ile ba\u011flan\u0131yorsan\u0131z: <code>ssh root@192.0.2.10<\/code><br \/>\n*   <strong>Windows Kullan\u0131c\u0131lar\u0131:<\/strong> PuTTY gibi bir SSH istemcisi veya Windows Subsystem for Linux (WSL) kullanarak terminal \u00fczerinden ba\u011flanabilirsiniz. PuTTY kullan\u0131yorsan\u0131z, sunucu IP adresini girin ve ba\u011flant\u0131 t\u00fcr\u00fc olarak SSH&#8217;\u0131 se\u00e7in.<\/p>\n<p>\u0130lk ba\u011flant\u0131da sunucu parmak izini (fingerprint) kabul etmeniz istenebilir. G\u00fcvenli\u011fi do\u011frulamak i\u00e7in parmak izini kontrol etmek iyi bir pratiktir. Genellikle ilk giri\u015fte root kullan\u0131c\u0131s\u0131 ve sa\u011flay\u0131c\u0131n\u0131z taraf\u0131ndan verilen bir parola ile giri\u015f yapars\u0131n\u0131z. Root kullan\u0131c\u0131s\u0131 ile \u00e7al\u0131\u015fmak g\u00fc\u00e7l\u00fc yetkiler verir ve yanl\u0131\u015f bir komutla sisteme kal\u0131c\u0131 hasar verebilirsiniz. Bu nedenle, ilk kurulum ad\u0131mlar\u0131ndan sonra root kullan\u0131c\u0131s\u0131 ile \u00e7al\u0131\u015fmay\u0131 b\u0131rakmak ve yetkilendirilmi\u015f normal bir kullan\u0131c\u0131 hesab\u0131 olu\u015fturmak en iyi g\u00fcvenlik uygulamas\u0131d\u0131r.<\/p>\n<h3>Sistem G\u00fcncelle\u015ftirmeleri<\/h3>\n<p>Sunucuya ilk eri\u015fim sa\u011fland\u0131ktan sonra yap\u0131lmas\u0131 gereken en \u00f6nemli ad\u0131mlardan biri, sistemin g\u00fcncel olmas\u0131n\u0131 sa\u011flamakt\u0131r. Bu, hem g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapat\u0131r hem de yaz\u0131l\u0131m ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n do\u011fru \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>G\u00fcncelleme i\u015flemleri i\u00e7in a\u015fa\u011f\u0131daki komutlar\u0131 kullan\u0131n:<\/p>\n<p>*   <strong>Paket listesini g\u00fcncelleme:<\/strong> Bu komut, sunucunuzun yaz\u0131l\u0131m depolar\u0131ndaki mevcut paketlerin listesini g\u00fcnceller.<\/p>\n<pre><code class=\"language-bash\">sudo apt update<\/code><\/pre>\n<p>    <code>sudo<\/code> komutu, normal bir kullan\u0131c\u0131 olarak yetkilendirilmi\u015f komutlar\u0131 \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 sa\u011flar. E\u011fer <code>root<\/code> olarak giri\u015f yapt\u0131ysan\u0131z, <code>sudo<\/code> kullanman\u0131za gerek yoktur ancak yeni bir kullan\u0131c\u0131 olu\u015fturdu\u011fumuzda bu komut kritik olacakt\u0131r.<br \/>\n*   <strong>Kurulu paketleri y\u00fckseltme:<\/strong> Bu komut, kurulu t\u00fcm paketleri en yeni s\u00fcr\u00fcmlerine y\u00fckseltir.<\/p>\n<pre><code class=\"language-bash\">sudo apt upgrade -y<\/code><\/pre>\n<p>    <code>-y<\/code> bayra\u011f\u0131, t\u00fcm sorulara otomatik olarak &#8220;evet&#8221; yan\u0131t\u0131 vermeyi sa\u011flar, bu da etkile\u015fimli olmayan bir g\u00fcncelleme s\u00fcreci sunar.<br \/>\n*   <strong>Gereksiz paketleri kald\u0131rma:<\/strong> Bu komut, art\u0131k ihtiya\u00e7 duyulmayan veya eski ba\u011f\u0131ml\u0131l\u0131klar\u0131 olan paketleri sistemden temizler.<\/p>\n<pre><code class=\"language-bash\">sudo apt autoremove -y<\/code><\/pre>\n<p>*   <strong>Sistemi yeniden ba\u015flatma (gerekti\u011finde):<\/strong> \u00c7ekirdek (kernel) g\u00fcncellemeleri gibi baz\u0131 \u00f6nemli g\u00fcncellemeler, yeni \u00e7ekirde\u011fin devreye girmesi i\u00e7in sunucunun yeniden ba\u015flat\u0131lmas\u0131n\u0131 gerektirebilir.<\/p>\n<pre><code class=\"language-bash\">sudo reboot<\/code><\/pre>\n<p>    Yeniden ba\u015flatma i\u015fleminden sonra sunucuya tekrar SSH ile ba\u011flanman\u0131z gerekecektir.<\/p>\n<p>Bu ad\u0131mlar, sunucunuzun g\u00fcvenli ve kararl\u0131 bir ba\u015flang\u0131\u00e7 yapmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>Kullan\u0131c\u0131 Y\u00f6netimi ve Yetkilendirme<\/h2>\n<p>Root kullan\u0131c\u0131s\u0131, Linux sistemlerinde en y\u00fcksek ayr\u0131cal\u0131klara sahip kullan\u0131c\u0131d\u0131r. Bu ayr\u0131cal\u0131klar, sistem \u00fczerinde her t\u00fcrl\u00fc de\u011fi\u015fikli\u011fi yapma yetene\u011fi anlam\u0131na gelir. Ancak, root kullan\u0131c\u0131s\u0131 olarak s\u00fcrekli \u00e7al\u0131\u015fmak b\u00fcy\u00fck bir g\u00fcvenlik riski ta\u015f\u0131r. Yanl\u0131\u015f bir komut, t\u00fcm sistemi \u00e7al\u0131\u015fmaz hale getirebilir veya ciddi g\u00fcvenlik a\u00e7\u0131klar\u0131 yaratabilir. Bu nedenle, sunucuyu y\u00f6netmek i\u00e7in ayr\u0131cal\u0131kl\u0131 ancak k\u0131s\u0131tl\u0131 yetkilere sahip bir kullan\u0131c\u0131 olu\u015fturmak en iyi pratiktir.<\/p>\n<h3>Yeni Bir Kullan\u0131c\u0131 Olu\u015fturma<\/h3>\n<p>Yeni bir kullan\u0131c\u0131 olu\u015fturmak i\u00e7in <code>adduser<\/code> komutunu kullan\u0131r\u0131z:<\/p>\n<pre><code class=\"language-bash\">sudo adduser [kullan\u0131c\u0131ad\u0131]<\/code><\/pre>\n<p>\u00d6rne\u011fin, <code>adminuser<\/code> ad\u0131nda bir kullan\u0131c\u0131 olu\u015fturmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo adduser adminuser<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, sistem sizden yeni kullan\u0131c\u0131 i\u00e7in g\u00fc\u00e7l\u00fc bir parola belirlemenizi isteyecektir. G\u00fc\u00e7l\u00fc parolalar, b\u00fcy\u00fck ve k\u00fc\u00e7\u00fck harfler, rakamlar ve \u00f6zel karakterlerin birle\u015fiminden olu\u015fmal\u0131d\u0131r. Parolay\u0131 girdikten sonra, kullan\u0131c\u0131 hakk\u0131nda ek bilgiler (ad, telefon numaras\u0131 vb.) girmeniz istenecektir. Bu alanlar\u0131 bo\u015f b\u0131rakmak i\u00e7in Enter tu\u015funa basabilirsiniz. Son olarak, bilgilerin do\u011fru oldu\u011funu onaylaman\u0131z istenecektir.<\/p>\n<h3>Sudo Yetkisi Verme<\/h3>\n<p>Yeni olu\u015fturdu\u011funuz kullan\u0131c\u0131n\u0131n, gerekti\u011finde y\u00f6netici ayr\u0131cal\u0131klar\u0131na sahip komutlar\u0131 \u00e7al\u0131\u015ft\u0131rabilmesi i\u00e7in <code>sudo<\/code> grubuna eklenmesi gerekir. <code>sudo<\/code> (superuser do) komutu, yetkili kullan\u0131c\u0131lar\u0131n belirli komutlar\u0131 root ayr\u0131cal\u0131klar\u0131yla \u00e7al\u0131\u015ft\u0131rmas\u0131na olanak tan\u0131r.<\/p>\n<p>Kullan\u0131c\u0131y\u0131 <code>sudo<\/code> grubuna eklemek i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo usermod -aG sudo [kullan\u0131c\u0131ad\u0131]<\/code><\/pre>\n<p>\u00d6rne\u011fin, <code>adminuser<\/code> kullan\u0131c\u0131s\u0131n\u0131 <code>sudo<\/code> grubuna eklemek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo usermod -aG sudo adminuser<\/code><\/pre>\n<p>*   <code>-a<\/code> bayra\u011f\u0131, kullan\u0131c\u0131y\u0131 ek bir gruba eklemek i\u00e7in kullan\u0131l\u0131r (append).<br \/>\n*   <code>-G<\/code> bayra\u011f\u0131, belirtilen grubu belirtir.<\/p>\n<p>Bu komut, <code>adminuser<\/code> kullan\u0131c\u0131s\u0131n\u0131 <code>sudo<\/code> grubuna ekler. Art\u0131k bu kullan\u0131c\u0131, <code>sudo<\/code> komutuyla y\u00f6netici ayr\u0131cal\u0131klar\u0131 gerektiren i\u015flemleri ger\u00e7ekle\u015ftirebilir.<\/p>\n<p><strong>Yeni Kullan\u0131c\u0131 ile Giri\u015f Testi:<\/strong><br \/>\nYeni kullan\u0131c\u0131 hesab\u0131n\u0131z\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in, mevcut SSH oturumunuzu kapatmadan yeni bir terminal penceresi a\u00e7arak yeni kullan\u0131c\u0131 ile giri\u015f yapmay\u0131 deneyin:<\/p>\n<pre><code class=\"language-bash\">ssh adminuser@sunucu_ip_adresi<\/code><\/pre>\n<p>Giri\u015f yapt\u0131ktan sonra, <code>sudo<\/code> yetkisini test etmek i\u00e7in basit bir komut \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt update<\/code><\/pre>\n<p>Parolan\u0131z istendi\u011finde, <code>adminuser<\/code> i\u00e7in belirledi\u011finiz parolay\u0131 girin. E\u011fer komut hatas\u0131z \u00e7al\u0131\u015f\u0131rsa, yeni kullan\u0131c\u0131n\u0131z\u0131n <code>sudo<\/code> yetkileri ba\u015far\u0131yla yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r. Bu ad\u0131mdan sonra, root kullan\u0131c\u0131s\u0131 ile olan SSH oturumunuzu kapatabilir ve t\u00fcm y\u00f6netim i\u015flemlerinizi yeni olu\u015fturdu\u011funuz g\u00fcvenli kullan\u0131c\u0131 hesab\u0131 \u00fczerinden yapmaya ba\u015flayabilirsiniz.<\/p>\n<h2>SSH G\u00fcvenli\u011fini Sa\u011flama<\/h2>\n<p>SSH, sunucu y\u00f6netiminin omurgas\u0131d\u0131r, ancak ayn\u0131 zamanda potansiyel bir sald\u0131r\u0131 vekt\u00f6r\u00fcd\u00fcr. SSH hizmetinin g\u00fcvenli\u011fini art\u0131rmak, sunucunuzun genel g\u00fcvenli\u011fi i\u00e7in hayati \u00f6neme sahiptir. A\u015fa\u011f\u0131daki ad\u0131mlar, SSH ba\u011flant\u0131n\u0131z\u0131 daha g\u00fcvenli hale getirecektir.<\/p>\n<p>SSH yap\u0131land\u0131rma dosyas\u0131 <code>\/etc\/ssh\/sshd_config<\/code> adresinde bulunur. Bu dosyada yap\u0131lan her de\u011fi\u015fiklikten sonra SSH servisini yeniden ba\u015flatman\u0131z gerekir: <code>sudo systemctl restart sshd<\/code>.<\/p>\n<h3>Varsay\u0131lan SSH Portunu De\u011fi\u015ftirme<\/h3>\n<p>SSH&#8217;\u0131n varsay\u0131lan portu 22&#8217;dir. Bu port, otomatik botlar ve k\u00f6t\u00fc niyetli akt\u00f6rler taraf\u0131ndan s\u00fcrekli taran\u0131r. Portu de\u011fi\u015ftirmek, sunucunuzun bu t\u00fcr otomatik taramalardan kaynaklanan sald\u0131r\u0131 riskini \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r.<\/p>\n<p>1.  <code>sshd_config<\/code> dosyas\u0131n\u0131 bir metin d\u00fczenleyici ile a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/ssh\/sshd_config<\/code><\/pre>\n<p>2.  Dosya i\u00e7inde <code>Port 22<\/code> sat\u0131r\u0131n\u0131 bulun. Bu sat\u0131r\u0131n ba\u015f\u0131nda <code>#<\/code> i\u015fareti varsa, yorum sat\u0131r\u0131 oldu\u011fu anlam\u0131na gelir ve aktif de\u011fildir. <code>#<\/code> i\u015faretini kald\u0131r\u0131n ve 22 yerine 1024 ile 65535 aras\u0131nda, hen\u00fcz kullan\u0131lmayan rastgele bir port numaras\u0131 (\u00f6rne\u011fin, 2222) atay\u0131n:<\/p>\n<pre><code class=\"language-\">Port 2222<\/code><\/pre>\n<p>3.  De\u011fi\u015fiklikleri kaydedin (nano&#8217;da <code>CTRL+O<\/code>, sonra <code>Enter<\/code>, sonra <code>CTRL+X<\/code>).<br \/>\n4.  SSH servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart sshd<\/code><\/pre>\n<p>5.  <strong>\u00d6NEML\u0130:<\/strong> Yeni porttan ba\u011flant\u0131 kurmay\u0131 denemeden mevcut oturumunuzu kapatmay\u0131n. Yeni bir terminal penceresi a\u00e7\u0131n ve yeni port numaras\u0131n\u0131 belirterek ba\u011flanmay\u0131 deneyin:<\/p>\n<pre><code class=\"language-bash\">ssh -p 2222 adminuser@sunucu_ip_adresi<\/code><\/pre>\n<p>    E\u011fer ba\u011flant\u0131 ba\u015far\u0131l\u0131 olursa, mevcut oturumunuzu kapat\u0131p yeni port \u00fczerinden \u00e7al\u0131\u015fmaya devam edebilirsiniz.<\/p>\n<h3>Root Giri\u015fini Devre D\u0131\u015f\u0131 B\u0131rakma<\/h3>\n<p>Root kullan\u0131c\u0131s\u0131n\u0131n do\u011frudan SSH ile giri\u015f yapmas\u0131n\u0131 engellemek, sunucunuzun g\u00fcvenli\u011fini art\u0131rman\u0131n en etkili yollar\u0131ndan biridir. Bu, sald\u0131rganlar\u0131n en g\u00fc\u00e7l\u00fc hesab\u0131 ele ge\u00e7irmesini zorla\u015ft\u0131r\u0131r.<\/p>\n<p>1.  <code>sshd_config<\/code> dosyas\u0131n\u0131 tekrar a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/ssh\/sshd_config<\/code><\/pre>\n<p>2.  <code>PermitRootLogin<\/code> sat\u0131r\u0131n\u0131 bulun. Bu sat\u0131r\u0131 <code>no<\/code> olarak de\u011fi\u015ftirin veya bu \u015fekilde bir sat\u0131r yoksa ekleyin:<\/p>\n<pre><code class=\"language-\">PermitRootLogin no<\/code><\/pre>\n<p>3.  De\u011fi\u015fiklikleri kaydedin ve SSH servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart sshd<\/code><\/pre>\n<p>Art\u0131k root kullan\u0131c\u0131s\u0131 do\u011frudan SSH ile giri\u015f yapamayacakt\u0131r. Root yetkisi gerektiren i\u015flemler i\u00e7in <code>adminuser<\/code> gibi yetkilendirilmi\u015f bir kullan\u0131c\u0131 ile giri\u015f yap\u0131p <code>sudo<\/code> komutunu kullanman\u0131z gerekecektir.<\/p>\n<h3>Parola ile Giri\u015fi Devre D\u0131\u015f\u0131 B\u0131rakma (Anahtar Tabanl\u0131 Kimlik Do\u011frulama)<\/h3>\n<p>Parola ile giri\u015f, kaba kuvvet sald\u0131r\u0131lar\u0131na kar\u015f\u0131 savunmas\u0131zd\u0131r. SSH anahtar \u00e7iftleri (genel ve \u00f6zel anahtar), parolalara k\u0131yasla \u00e7ok daha g\u00fcvenli bir kimlik do\u011frulama y\u00f6ntemi sunar. \u00d6zel anahtar\u0131n\u0131z yaln\u0131zca sizin bilgisayar\u0131n\u0131zda kal\u0131r ve asla a\u011f \u00fczerinden iletilmezken, genel anahtar sunucunuzda saklan\u0131r.<\/p>\n<h4>SSH Anahtar \u00c7ifti Olu\u015fturma (\u0130stemci Taraf\u0131nda)<\/h4>\n<p>Kendi bilgisayar\u0131n\u0131zda (istemcinizde) hen\u00fcz bir SSH anahtar \u00e7iftiniz yoksa, bir tane olu\u015fturman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">ssh-keygen -t rsa -b 4096<\/code><\/pre>\n<p>*   <code>-t rsa<\/code>: RSA algoritmas\u0131n\u0131 kullan\u0131r.<br \/>\n*   <code>-b 4096<\/code>: Anahtar\u0131n bit uzunlu\u011funu 4096 olarak ayarlar (daha uzun, daha g\u00fcvenli).<\/p>\n<p>Komut, anahtar \u00e7iftini kaydetmek i\u00e7in bir konum ve iste\u011fe ba\u011fl\u0131 olarak bir parola (passphrase) girmenizi isteyecektir. Bir parola eklemek, \u00f6zel anahtar\u0131n\u0131z\u0131n \u00e7al\u0131nmas\u0131 durumunda ek bir g\u00fcvenlik katman\u0131 sa\u011flar.<\/p>\n<h4>Public Anahtar\u0131 Sunucuya Kopyalama<\/h4>\n<p>Olu\u015fturdu\u011funuz genel anahtar\u0131 (genellikle <code>~\/.ssh\/id_rsa.pub<\/code> yolunda bulunur) sunucunuza kopyalaman\u0131z gerekir. Bunun en kolay yolu <code>ssh-copy-id<\/code> komutunu kullanmakt\u0131r:<\/p>\n<pre><code class=\"language-bash\">ssh-copy-id -i ~\/.ssh\/id_rsa.pub -p [yeni_ssh_portu] adminuser@sunucu_ip_adresi<\/code><\/pre>\n<p>Bu komut, sunucudaki <code>adminuser<\/code> hesab\u0131n\u0131n <code>~\/.ssh\/authorized_keys<\/code> dosyas\u0131na genel anahtar\u0131n\u0131z\u0131 ekler. E\u011fer <code>ssh-copy-id<\/code> komutu sizde yoksa veya \u00e7al\u0131\u015fmazsa, genel anahtar\u0131n\u0131z\u0131 manuel olarak kopyalayabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">cat ~\/.ssh\/id_rsa.pub<\/code><\/pre>\n<p>Yukar\u0131daki komutun \u00e7\u0131kt\u0131s\u0131n\u0131 kopyalay\u0131n. Ard\u0131ndan sunucunuza <code>adminuser<\/code> olarak ba\u011flan\u0131n ve kopyalad\u0131\u011f\u0131n\u0131z anahtar\u0131 sunucudaki <code>~\/.ssh\/authorized_keys<\/code> dosyas\u0131na ekleyin. E\u011fer <code>~\/.ssh<\/code> dizini veya <code>authorized_keys<\/code> dosyas\u0131 yoksa, bunlar\u0131 olu\u015fturman\u0131z gerekebilir:<\/p>\n<pre><code class=\"language-bash\">mkdir -p ~\/.ssh\nchmod 700 ~\/.ssh\nnano ~\/.ssh\/authorized_keys<\/code><\/pre>\n<p>Kopyalad\u0131\u011f\u0131n\u0131z genel anahtar\u0131 <code>authorized_keys<\/code> dosyas\u0131na yap\u0131\u015ft\u0131r\u0131n, kaydedin ve dosyaya do\u011fru izinleri verin:<\/p>\n<pre><code class=\"language-bash\">chmod 600 ~\/.ssh\/authorized_keys<\/code><\/pre>\n<p>Genel anahtar\u0131n\u0131z sunucuya kopyaland\u0131ktan sonra, art\u0131k parola ile giri\u015fi devre d\u0131\u015f\u0131 b\u0131rakabilirsiniz.<\/p>\n<p>1.  <code>sshd_config<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/ssh\/sshd_config<\/code><\/pre>\n<p>2.  A\u015fa\u011f\u0131daki sat\u0131rlar\u0131 bulun ve de\u011ferlerini <code>no<\/code> olarak ayarlay\u0131n:<\/p>\n<pre><code class=\"language-\">PasswordAuthentication no\n    ChallengeResponseAuthentication no\n    UsePAM no<\/code><\/pre>\n<p>    (Baz\u0131 durumlarda <code>UsePAM no<\/code> gerekli olmayabilir, ancak g\u00fcvenlik i\u00e7in eklenebilir.)<br \/>\n3.  De\u011fi\u015fiklikleri kaydedin ve SSH servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart sshd<\/code><\/pre>\n<p>4.  <strong>\u00d6NEML\u0130:<\/strong> Mevcut oturumunuzu kapatmadan \u00f6nce, yeni bir terminalde SSH anahtar\u0131n\u0131zla sorunsuz bir \u015fekilde ba\u011flanabildi\u011finizden emin olun. E\u011fer anahtar ile ba\u011flant\u0131 kuramazsan\u0131z, sunucunuza eri\u015fiminizi kaybedebilirsiniz.<\/p>\n<p>Bu ad\u0131mlarla, SSH ba\u011flant\u0131n\u0131z \u00e7ok daha g\u00fcvenli hale getirilmi\u015f olur.<\/p>\n<h2>G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131 (UFW)<\/h2>\n<p>Bir g\u00fcvenlik duvar\u0131 (firewall), sunucunuza gelen ve giden a\u011f trafi\u011fini kontrol eden bir g\u00fcvenlik sistemidir. Ubuntu&#8217;da, Uncomplicated Firewall (UFW) g\u00fcvenlik duvar\u0131n\u0131 yap\u0131land\u0131rmay\u0131 kolayla\u015ft\u0131ran bir aray\u00fczd\u00fcr. UFW, sunucunuzu istenmeyen ba\u011flant\u0131lardan korumak i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<h3>UFW Temelleri<\/h3>\n<p>UFW genellikle Ubuntu&#8217;da \u00f6nceden y\u00fckl\u00fc gelir. Kurulu de\u011filse, a\u015fa\u011f\u0131daki komutla kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt install ufw -y<\/code><\/pre>\n<p>UFW&#8217;nin mevcut durumunu kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<p>Varsay\u0131lan olarak, UFW pasif (inactive) durumdad\u0131r.<\/p>\n<p>UFW i\u00e7in varsay\u0131lan politikalar\u0131 belirlemek \u00f6nemlidir. Genellikle, t\u00fcm gelen ba\u011flant\u0131lar\u0131 reddetmek ve t\u00fcm giden ba\u011flant\u0131lara izin vermek istenir:<\/p>\n<pre><code class=\"language-bash\">sudo ufw default deny incoming\nsudo ufw default allow outgoing<\/code><\/pre>\n<p>Bu komutlar, sunucunuzun d\u0131\u015far\u0131dan gelen ba\u011flant\u0131lara kapal\u0131 olmas\u0131n\u0131 sa\u011flar, ancak sunucunuzun kendisinin d\u0131\u015far\u0131ya ba\u011flant\u0131 kurmas\u0131na izin verir.<\/p>\n<h3>Gerekli Portlar\u0131 A\u00e7ma ve Etkinle\u015ftirme<\/h3>\n<p>Varsay\u0131lan politikalar\u0131 ayarlad\u0131ktan sonra, sunucunuzun ihtiya\u00e7 duydu\u011fu belirli portlar\u0131 a\u00e7man\u0131z gerekir. <strong>Bu ad\u0131m kritik \u00f6neme sahiptir, \u00e7\u00fcnk\u00fc SSH portunuzu a\u00e7madan g\u00fcvenlik duvar\u0131n\u0131 etkinle\u015ftirirseniz sunucunuza eri\u015fiminizi kaybedersiniz.<\/strong><\/p>\n<p>1.  <strong>SSH Portunu A\u00e7ma:<\/strong> SSH i\u00e7in belirledi\u011finiz yeni portu a\u00e7\u0131n (bu \u00f6rnekte 2222):<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 2222\/tcp<\/code><\/pre>\n<p>    E\u011fer SSH portunuzu de\u011fi\u015ftirmediyseniz, varsay\u0131lan 22 portunu a\u00e7man\u0131z gerekir: <code>sudo ufw allow 22\/tcp<\/code>.<br \/>\n2.  <strong>Di\u011fer Gerekli Portlar\u0131 A\u00e7ma:<\/strong> Sunucunuzun amac\u0131na ba\u011fl\u0131 olarak ba\u015fka portlar\u0131 da a\u00e7man\u0131z gerekebilir. \u00d6rne\u011fin:<br \/>\n    *   HTTP (Web sunucusu i\u00e7in):<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow http\n        # veya sudo ufw allow 80\/tcp<\/code><\/pre>\n<p>    *   HTTPS (G\u00fcvenli web sunucusu i\u00e7in):<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow https\n        # veya sudo ufw allow 443\/tcp<\/code><\/pre>\n<p>    *   Belirli bir IP adresinden gelen ba\u011flant\u0131lara izin vermek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow from 192.168.1.100 to any port 2222<\/code><\/pre>\n<p>3.  <strong>UFW&#8217;yi Etkinle\u015ftirme:<\/strong> T\u00fcm gerekli portlar\u0131 a\u00e7t\u0131ktan sonra, UFW&#8217;yi etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw enable<\/code><\/pre>\n<p>    Bu komut, ba\u011flant\u0131n\u0131z\u0131 kesebilece\u011fi konusunda bir uyar\u0131 verecektir. &#8220;y&#8221; yazarak onaylay\u0131n.<\/p>\n<p>UFW etkinle\u015ftirildikten sonra, durumunu tekrar kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status verbose<\/code><\/pre>\n<p>Bu komut, aktif kurallar\u0131 ve varsay\u0131lan politikalar\u0131 detayl\u0131 bir \u015fekilde g\u00f6sterecektir. Art\u0131k sunucunuzun temel bir g\u00fcvenlik duvar\u0131 korumas\u0131 bulunmaktad\u0131r.<\/p>\n<h2>Sistem Ayarlar\u0131n\u0131n Yap\u0131land\u0131r\u0131lmas\u0131<\/h2>\n<p>Sunucunuzun do\u011fru zaman dilimi ve hostname ile yap\u0131land\u0131r\u0131lmas\u0131, loglar\u0131n do\u011fru tutulmas\u0131, zamanlanm\u0131\u015f g\u00f6revlerin d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131 ve a\u011f \u00fczerindeki kimli\u011finin net olmas\u0131 a\u00e7\u0131s\u0131ndan \u00f6nemlidir.<\/p>\n<h3>Zaman Dilimi ve Yerel Ayarlar<\/h3>\n<p>Do\u011fru zaman dilimi ayar\u0131, loglar\u0131n okunabilirli\u011fi ve zaman ba\u011f\u0131ml\u0131 uygulamalar\u0131n do\u011fru \u00e7al\u0131\u015fmas\u0131 i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<p>1.  <strong>Zaman dilimini ayarlama:<\/strong><br \/>\n    \u00d6nce mevcut zaman dilimini kontrol edin:<\/p>\n<pre><code class=\"language-bash\">timedatectl<\/code><\/pre>\n<p>    Ard\u0131ndan, kullan\u0131labilir zaman dilimlerini listeleyin:<\/p>\n<pre><code class=\"language-bash\">timedatectl list-timezones<\/code><\/pre>\n<p>    Bulundu\u011funuz b\u00f6lgeye uygun zaman dilimini se\u00e7in (\u00f6rne\u011fin, <code>Europe\/Istanbul<\/code>) ve ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo timedatectl set-timezone Europe\/Istanbul<\/code><\/pre>\n<p>    Tekrar <code>timedatectl<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak de\u011fi\u015fikli\u011fin uyguland\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n.<\/p>\n<p>2.  <strong>Yerel Ayarlar (Locales) Yap\u0131land\u0131rmas\u0131:<\/strong><br \/>\n    Yerel ayarlar, dil, karakter kodlamas\u0131 ve b\u00f6lgesel bi\u00e7imlendirme gibi sistem \u00e7ap\u0131ndaki ayarlar\u0131 kontrol eder. UTF-8 deste\u011fi modern sistemler i\u00e7in standartt\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo dpkg-reconfigure locales<\/code><\/pre>\n<p>    Bu komut, bir aray\u00fcz a\u00e7arak istedi\u011finiz yerel ayarlar\u0131 se\u00e7menize olanak tan\u0131r. Genellikle <code>en_US.UTF-8<\/code> ve ihtiyac\u0131n\u0131z varsa kendi dilinizin UTF-8 s\u00fcr\u00fcm\u00fcn\u00fc (\u00f6rne\u011fin, <code>tr_TR.UTF-8<\/code>) se\u00e7meniz \u00f6nerilir. Se\u00e7imlerinizi yapt\u0131ktan sonra, varsay\u0131lan yerel ayar\u0131 belirlemeniz istenecektir.<\/p>\n<h3>Hostname Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Hostname, a\u011f \u00fczerindeki sunucunuzu tan\u0131mlayan bir isimdir. Anlaml\u0131 bir hostname, birden fazla sunucuyu y\u00f6netirken veya a\u011f sorunlar\u0131n\u0131 giderirken faydal\u0131d\u0131r.<\/p>\n<p>1.  <strong>Hostname&#8217;i de\u011fi\u015ftirme:<\/strong><br \/>\n    Mevcut hostname&#8217;i kontrol edin:<\/p>\n<pre><code class=\"language-bash\">hostname<\/code><\/pre>\n<p>    Yeni bir hostname ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo hostnamectl set-hostname [yeni_hostname]<\/code><\/pre>\n<p>    \u00d6rne\u011fin: <code>sudo hostnamectl set-hostname webserver01<\/code><\/p>\n<p>2.  <strong><code>\/etc\/hosts<\/code> dosyas\u0131n\u0131 d\u00fczenleme:<\/strong><br \/>\n    Bu dosya, IP adreslerini hostname&#8217;lerle e\u015fle\u015ftirir. Yeni hostname&#8217;inizi bu dosyaya eklemek iyi bir pratiktir, \u00f6zellikle sunucunun kendi kendini \u00e7\u00f6zmesi i\u00e7in.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/hosts<\/code><\/pre>\n<p>    A\u015fa\u011f\u0131daki gibi bir sat\u0131r ekleyin veya mevcut olan\u0131 d\u00fczenleyin:<\/p>\n<pre><code class=\"language-\">127.0.0.1       localhost\n    127.0.1.1       [yeni_hostname]<\/code><\/pre>\n<p>    <code>127.0.1.1<\/code> yerine sunucunuzun \u00f6zel IP adresini de kullanabilirsiniz. De\u011fi\u015fiklikleri kaydedin.<\/p>\n<p>Bu ad\u0131mlarla, sunucunuzun temel sistem ayarlar\u0131 do\u011fru bir \u015fekilde yap\u0131land\u0131r\u0131lm\u0131\u015f olur.<\/p>\n<h2>Ek G\u00fcvenlik ve \u0130zleme \u00d6nlemleri<\/h2>\n<p>Temel g\u00fcvenlik ad\u0131mlar\u0131n\u0131n \u00f6tesine ge\u00e7erek, sunucunuzu daha da g\u00fc\u00e7lendirmek ve olas\u0131 tehditleri izlemek i\u00e7in ek ara\u00e7lar kullanmak \u00f6nemlidir.<\/p>\n<h3>Fail2Ban Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Fail2Ban, sunucunuza yap\u0131lan kaba kuvvet sald\u0131r\u0131lar\u0131na kar\u015f\u0131 koruma sa\u011flayan bir intrusion prevention (sald\u0131r\u0131 \u00f6nleme) yaz\u0131l\u0131m\u0131d\u0131r. Belirli bir s\u00fcre i\u00e7inde hatal\u0131 giri\u015f denemeleri yapan IP adreslerini otomatik olarak bloke eder.<\/p>\n<p>1.  <strong>Kurulum:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo apt install fail2ban -y<\/code><\/pre>\n<p>2.  <strong>Temel Yap\u0131land\u0131rma:<\/strong><br \/>\n    Fail2Ban&#8217;\u0131n ana yap\u0131land\u0131rma dosyas\u0131 <code>\/etc\/fail2ban\/jail.conf<\/code>&#8216;tur. Ancak, bu dosyay\u0131 do\u011frudan d\u00fczenlemek yerine, g\u00fcncellemeler s\u0131ras\u0131nda \u00fczerine yaz\u0131lmas\u0131n\u0131 \u00f6nlemek i\u00e7in <code>\/etc\/fail2ban\/jail.local<\/code> ad\u0131nda yeni bir dosya olu\u015fturup de\u011fi\u015fiklikleri buraya yapman\u0131z \u00f6nerilir.<\/p>\n<p>    Varsay\u0131lan <code>jail.conf<\/code> dosyas\u0131n\u0131 kopyalayarak ba\u015flayabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo cp \/etc\/fail2ban\/jail.conf \/etc\/fail2ban\/jail.local<\/code><\/pre>\n<p>    \u015eimdi <code>jail.local<\/code> dosyas\u0131n\u0131 d\u00fczenleyin:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/fail2ban\/jail.local<\/code><\/pre>\n<p>    Bu dosya i\u00e7inde, genel ayarlar\u0131 (DEFAULT b\u00f6l\u00fcm\u00fc alt\u0131nda) ve belirli servisler i\u00e7in ayarlar\u0131 (\u00f6rne\u011fin <code>[sshd]<\/code> b\u00f6l\u00fcm\u00fc) yap\u0131land\u0131rabilirsiniz.<\/p>\n<p>    *   <code>bantime<\/code>: Bir IP adresinin ne kadar s\u00fcreyle yasaklanaca\u011f\u0131n\u0131 saniye cinsinden belirtir (\u00f6rn. <code>bantime = 1h<\/code> veya <code>bantime = 3600<\/code>).<br \/>\n    *   <code>findtime<\/code>: Belirtilen s\u00fcre i\u00e7inde ka\u00e7 ba\u015far\u0131s\u0131z denemenin yasaklamaya yol a\u00e7aca\u011f\u0131n\u0131 belirler (\u00f6rn. <code>findtime = 10m<\/code>).<br \/>\n    *   <code>maxretry<\/code>: Yasaklanmadan \u00f6nce izin verilen maksimum ba\u015far\u0131s\u0131z deneme say\u0131s\u0131 (\u00f6rn. <code>maxretry = 5<\/code>).<\/p>\n<p>    SSH i\u00e7in genellikle a\u015fa\u011f\u0131daki gibi bir b\u00f6l\u00fcm bulacaks\u0131n\u0131z veya ekleyebilirsiniz:<\/p>\n<pre><code class=\"language-ini\">[sshd]\n    enabled = true\n    port = [SSH_PORTUNUZ] # \u00d6rne\u011fin, 2222\n    filter = sshd\n    logpath = \/var\/log\/auth.log\n    maxretry = 3\n    bantime = 1h<\/code><\/pre>\n<p>    <code>[SSH_PORTUNUZ]<\/code> yerine kendi belirledi\u011finiz SSH port numaras\u0131n\u0131 yazmay\u0131 unutmay\u0131n.<\/p>\n<p>3.  <strong>Servisi Etkinle\u015ftirme ve Ba\u015flatma:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo systemctl enable fail2ban\n    sudo systemctl start fail2ban<\/code><\/pre>\n<p>4.  <strong>Durumu Kontrol Etme:<\/strong><br \/>\n    Fail2Ban&#8217;\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve hangi jail&#8217;lerin aktif oldu\u011funu kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo fail2ban-client status<\/code><\/pre>\n<p>    Belirli bir jail&#8217;in (\u00f6rne\u011fin <code>sshd<\/code>) durumunu g\u00f6rmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo fail2ban-client status sshd<\/code><\/pre>\n<p>    Bu komut, yasaklanan IP adreslerini ve deneme say\u0131lar\u0131n\u0131 g\u00f6sterecektir.<\/p>\n<p>Fail2Ban, sunucunuzu kaba kuvvet sald\u0131r\u0131lar\u0131ndan koruyarak \u00f6nemli bir g\u00fcvenlik katman\u0131 ekler.<\/p>\n<h3>Log Y\u00f6netimi ve \u0130zleme<\/h3>\n<p>Sunucunuzdaki log dosyalar\u0131, sistem olaylar\u0131, hatalar, g\u00fcvenlik ihlali denemeleri ve uygulama davran\u0131\u015flar\u0131 hakk\u0131nda de\u011ferli bilgiler i\u00e7erir. Bu loglar\u0131 d\u00fczenli olarak kontrol etmek, sorunlar\u0131 erken tespit etmenize ve g\u00fcvenlik olaylar\u0131na yan\u0131t vermenize yard\u0131mc\u0131 olur.<\/p>\n<p>*   <strong><code>journalctl<\/code>:<\/strong> systemd tabanl\u0131 sistemlerde (Ubuntu 20.04 gibi), <code>journalctl<\/code> komutu sistem g\u00fcnl\u00fc\u011f\u00fcne eri\u015fmek i\u00e7in kullan\u0131l\u0131r.<br \/>\n    *   T\u00fcm g\u00fcnl\u00fckleri g\u00f6rmek i\u00e7in: <code>journalctl<\/code><br \/>\n    *   Belirli bir servisin g\u00fcnl\u00fcklerini g\u00f6rmek i\u00e7in: <code>journalctl -u sshd.service<\/code><br \/>\n    *   Son 100 sat\u0131r\u0131 g\u00f6rmek i\u00e7in: <code>journalctl -n 100<\/code><br \/>\n    *   Ger\u00e7ek zamanl\u0131 g\u00fcnl\u00fckleri izlemek i\u00e7in: <code>journalctl -f<\/code><\/p>\n<p>*   <strong><code>\/var\/log<\/code> Dizini:<\/strong> Geleneksel olarak, bir\u00e7ok uygulama ve sistem bile\u015feni loglar\u0131n\u0131 <code>\/var\/log<\/code> dizini alt\u0131nda saklar.<br \/>\n    *   <code>auth.log<\/code>: Kimlik do\u011frulama denemeleri ve sudo kullan\u0131mlar\u0131.<br \/>\n    *   <code>syslog<\/code>: Genel sistem mesajlar\u0131.<br \/>\n    *   <code>kern.log<\/code>: \u00c7ekirdek (kernel) mesajlar\u0131.<br \/>\n    *   <code>ufw.log<\/code>: UFW g\u00fcvenlik duvar\u0131 g\u00fcnl\u00fckleri.<br \/>\n    *   Web sunucular\u0131 (Apache, Nginx) gibi uygulamalar\u0131n kendi log dizinleri bulunur (\u00f6rn: <code>\/var\/log\/apache2\/<\/code>, <code>\/var\/log\/nginx\/<\/code>).<\/p>\n<p>Loglar\u0131 d\u00fczenli olarak g\u00f6zden ge\u00e7irmek, olas\u0131 sald\u0131r\u0131 giri\u015fimlerini, sistem hatalar\u0131n\u0131 veya performans sorunlar\u0131n\u0131 belirlemenize yard\u0131mc\u0131 olur. B\u00fcy\u00fck \u00f6l\u00e7ekli sistemlerde, log y\u00f6netimini otomatikle\u015ftiren ELK Stack (Elasticsearch, Logstash, Kibana) veya Graylog gibi merkezi loglama \u00e7\u00f6z\u00fcmleri kullan\u0131labilir.<\/p>\n<h2>Sonu\u00e7 ve Sonraki Ad\u0131mlar<\/h2>\n<p>Bu makalede, Ubuntu 20.04 \u00fczerinde yeni bir sunucu i\u00e7in kapsaml\u0131 bir ba\u015flang\u0131\u00e7 kurulum s\u00fcrecini ad\u0131m ad\u0131m ele ald\u0131k. Sunucuya ilk eri\u015fimden ba\u015flayarak, sistem g\u00fcncellemeleri, g\u00fcvenli kullan\u0131c\u0131 y\u00f6netimi, SSH ba\u011flant\u0131s\u0131n\u0131n g\u00fc\u00e7lendirilmesi, g\u00fcvenlik duvar\u0131 yap\u0131land\u0131rmas\u0131, temel sistem ayarlar\u0131 ve ek g\u00fcvenlik \u00f6nlemleri (Fail2Ban) gibi kritik konular\u0131 detayland\u0131rd\u0131k. Bu ad\u0131mlar, sunucunuz i\u00e7in sa\u011flam, g\u00fcvenli ve y\u00f6netilebilir bir temel olu\u015fturman\u0131z\u0131 sa\u011flar.<\/p>\n<p>Unutulmamal\u0131d\u0131r ki, sunucu g\u00fcvenli\u011fi s\u00fcrekli bir s\u00fcre\u00e7tir. Ba\u015flang\u0131\u00e7 kurulumu sadece ilk ad\u0131md\u0131r. Sunucunuzu d\u00fczenli olarak g\u00fcncellemek, g\u00fcvenlik yamalar\u0131n\u0131 uygulamak, loglar\u0131 izlemek ve yedekleme stratejileri olu\u015fturmak, uzun vadede sunucunuzun g\u00fcvenli\u011fini ve kararl\u0131l\u0131\u011f\u0131n\u0131 sa\u011flamak i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<p><strong>Sonraki Ad\u0131mlar:<\/strong><\/p>\n<p>Bu temel kurulumu tamamlad\u0131ktan sonra, sunucunuzu projenizin ihtiya\u00e7lar\u0131na g\u00f6re yap\u0131land\u0131rmaya ba\u015flayabilirsiniz:<\/p>\n<p>*   <strong>Web Sunucusu Kurulumu:<\/strong> Apache veya Nginx gibi bir web sunucusu kurarak web sitelerinizi veya uygulamalar\u0131n\u0131z\u0131 bar\u0131nd\u0131rabilirsiniz.<br \/>\n*   <strong>Veritaban\u0131 Kurulumu:<\/strong> MySQL, PostgreSQL veya MongoDB gibi bir veritaban\u0131 sistemi kurarak uygulamalar\u0131n\u0131z i\u00e7in veri depolama sa\u011flayabilirsiniz.<br \/>\n*   <strong>Programlama Dili Ortamlar\u0131:<\/strong> Python, Node.js, PHP, Ruby gibi programlama dilleri i\u00e7in gerekli \u00e7al\u0131\u015fma zaman\u0131 ortamlar\u0131n\u0131 ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 kurabilirsiniz.<br \/>\n*   <strong>Versiyon Kontrol Sistemleri:<\/strong> Git gibi versiyon kontrol sistemlerini kurarak kod da\u011f\u0131t\u0131mlar\u0131n\u0131z\u0131 ve g\u00fcncellemelerinizi kolayla\u015ft\u0131rabilirsiniz.<br \/>\n*   <strong>Monitoring Ara\u00e7lar\u0131:<\/strong> Prometheus, Grafana veya Zabbix gibi izleme ara\u00e7lar\u0131n\u0131 kurarak sunucunuzun performans\u0131n\u0131 ve kaynak kullan\u0131m\u0131n\u0131 s\u00fcrekli olarak takip edebilirsiniz.<\/p>\n<p>Her ad\u0131mda g\u00fcvenlik ve en iyi uygulamalar\u0131 g\u00f6z \u00f6n\u00fcnde bulundurarak, sunucunuzun uzun vadede sorunsuz ve g\u00fcvenli bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, g\u00fcvenli ve stabil bir sunucu altyap\u0131s\u0131 kurmak her proje i\u00e7","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-37522","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu Giri\u015f G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, g\u00fcvenli ve stabil bir sunucu altyap\u0131s\u0131 kurmak her proje i\u00e7\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-07T11:40:49+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu\",\"datePublished\":\"2026-01-07T11:40:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/\"},\"wordCount\":3285,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/\",\"name\":\"Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-07T11:40:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu","og_description":"Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu Giri\u015f G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, g\u00fcvenli ve stabil bir sunucu altyap\u0131s\u0131 kurmak her proje i\u00e7","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-07T11:40:49+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu","datePublished":"2026-01-07T11:40:49+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/"},"wordCount":3285,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/","name":"Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-07T11:40:49+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-ile-sunucu-baslangic-kurulumu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 20.04 ile Sunucu Ba\u015flang\u0131\u00e7 Kurulumu"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37522","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37522"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37522\/revisions"}],"predecessor-version":[{"id":37523,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37522\/revisions\/37523"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37522"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37522"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}