{"id":230,"date":"2025-12-11T00:12:03","date_gmt":"2025-12-11T00:12:03","guid":{"rendered":"https:\/\/www.vps.tc\/blog\/linux-sunucu-guvenligi-icin-zorunlu-10-temel-adim\/"},"modified":"2026-09-09T09:13:29","modified_gmt":"2026-09-09T09:13:29","slug":"linux-sunucu-guvenligi-icin-zorunlu-10-temel-adim","status":"publish","type":"post","link":"https:\/\/www.vps.tc\/blog\/tr\/linux-sunucu-guvenligi-icin-zorunlu-10-temel-adim\/","title":{"rendered":"Linux Sunucu G\u00fcvenli\u011fi i\u00e7in Zorunlu 10 Temel Ad\u0131m"},"content":{"rendered":"<div class=\"aiw-toc\" style=\"border:1px solid #dbe3ea;border-radius:8px;padding:16px 20px;margin:0 0 28px\"><strong>\u0130\u00e7indekiler<\/strong><\/p>\n<ol style=\"margin:10px 0 0;padding-left:22px\">\n<li><a href=\"#linux-sunucular-neden-saldirganlarin-ilk-hedefi-olur\">Linux sunucular neden sald\u0131rganlar\u0131n ilk hedefi olur?<\/a><\/li>\n<li><a href=\"#zorunlu-10-temel-adimin-genel-cercevesi\">Zorunlu 10 temel ad\u0131m\u0131n genel \u00e7er\u00e7evesi<\/a><\/li>\n<li><a href=\"#1-paket-guncellemelerini-disiplinli-yonet\">1. Paket g\u00fcncellemelerini disiplinli y\u00f6net<\/a><\/li>\n<li><a href=\"#2-ssh-guvenligi-icin-saldiri-yuzeyini-kucult\">2. SSH g\u00fcvenli\u011fi i\u00e7in sald\u0131r\u0131 y\u00fczeyini k\u00fc\u00e7\u00fclt<\/a><\/li>\n<li><a href=\"#3-kullanici-grup-ve-sudo-yetkilerini-sadelestir\">3. Kullan\u0131c\u0131, grup ve sudo yetkilerini sadele\u015ftir<\/a><\/li>\n<li><a href=\"#4-firewall-ile-sadece-gerekli-portlari-acik-birak\">4. Firewall ile sadece gerekli portlar\u0131 a\u00e7\u0131k b\u0131rak<\/a><\/li>\n<li><a href=\"#5-gereksiz-servisleri-ve-portlari-kapat\">5. Gereksiz servisleri ve portlar\u0131 kapat<\/a><\/li>\n<li><a href=\"#6-dosya-izinlerini-ve-kritik-dizinleri-gozden-gecir\">6. Dosya izinlerini ve kritik dizinleri g\u00f6zden ge\u00e7ir<\/a><\/li>\n<li><a href=\"#7-loglama-izleme-ve-uyari-mekanizmasini-kur\">7. Loglama, izleme ve uyar\u0131 mekanizmas\u0131n\u0131 kur<\/a><\/li>\n<li><a href=\"#8-yedekleme-ve-felaket-kurtarma-plani-olustur\">8. Yedekleme ve felaket kurtarma plan\u0131 olu\u015ftur<\/a><\/li>\n<li><a href=\"#9-otomatik-guvenlik-taramalari-ve-hardening-araclari-kullan\">9. Otomatik g\u00fcvenlik taramalar\u0131 ve hardening ara\u00e7lar\u0131 kullan<\/a><\/li>\n<li><a href=\"#10-konfigurasyon-yonetimi-ve-altyapi-standardizasyonu-sagla\">10. Konfig\u00fcrasyon y\u00f6netimi ve altyap\u0131 standardizasyonu sa\u011fla<\/a><\/li>\n<li><a href=\"#sureklilik-denetim-ve-insan-faktoru\">S\u00fcreklilik, denetim ve insan fakt\u00f6r\u00fc<\/a><\/li>\n<li><a href=\"#guvenlik-seviyenizi-bugun-yukseltin\">G\u00fcvenlik seviyenizi bug\u00fcn y\u00fckseltin<\/a><\/li>\n<li><a href=\"#sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/a><\/li>\n<\/ol>\n<\/div>\n<h2 id=\"linux-sunucular-neden-saldirganlarin-ilk-hedefi-olur\">Linux sunucular neden sald\u0131rganlar\u0131n ilk hedefi olur?<\/h2>\n<p>D\u0131\u015f d\u00fcnyaya a\u00e7\u0131k bir Linux sunucu, internete ba\u011fland\u0131\u011f\u0131 andan itibaren taranmaya ba\u015flar. Zay\u0131f parolalar, g\u00fcncel olmayan paketler, gereksiz servisler ve geni\u015f yetkiler ayn\u0131 makinede bulu\u015ftu\u011funda sald\u0131rgan\u0131n i\u015fi kolayla\u015f\u0131r. G\u00fcvenlik a\u00e7\u0131\u011f\u0131n\u0131n karma\u015f\u0131k olmas\u0131 gerekmiyor; yanl\u0131\u015f b\u0131rak\u0131lm\u0131\u015f bir SSH ayar\u0131 bile yeterli olabilir.<\/p>\n<p>\u00dcretim ortamlar\u0131nda g\u00f6rd\u00fc\u011f\u00fcm ortak nokta \u015fu: G\u00fcvenlik tek bir ara\u00e7la kurulmaz. Paket y\u00f6netimi, kimlik do\u011frulama, a\u011f s\u0131n\u0131rlar\u0131, loglama ve geri d\u00f6n\u00fc\u015f plan\u0131 birlikte \u00e7al\u0131\u015fmal\u0131d\u0131r. A\u015fa\u011f\u0131daki 10 ad\u0131m\u0131, her Linux sunucuya k\u00f6r\u00fc k\u00f6r\u00fcne uygulanan bir re\u00e7ete de\u011fil, g\u00fcvenlik taban \u00e7izgisi olarak d\u00fc\u015f\u00fcn\u00fcn.<\/p>\n<p>\u00d6rneklerde Debian\/Ubuntu ve RHEL ailesindeki g\u00fcncel komutlar\u0131 ayr\u0131 ayr\u0131 belirtiyorum. De\u011fi\u015fiklikleri \u00f6nce test sunucusunda deneyin; canl\u0131 SSH oturumunda yap\u0131lan k\u00fc\u00e7\u00fck bir hata, eri\u015fimi tamamen kaybettirebilir.<\/p>\n<h2 id=\"zorunlu-10-temel-adimin-genel-cercevesi\">Zorunlu 10 temel ad\u0131m\u0131n genel \u00e7er\u00e7evesi<\/h2>\n<p>\u0130lk bak\u0131\u015fta 10 ad\u0131m \u00e7ok g\u00f6r\u00fcnebilir. Her biri farkl\u0131 bir riski hedefliyor:<\/p>\n<ul>\n<li>G\u00fcncel olmayan paketler ve yamalar<\/li>\n<li>Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f SSH eri\u015fimi<\/li>\n<li>Gere\u011finden geni\u015f kullan\u0131c\u0131 ve sudo yetkileri<\/li>\n<li>A\u00e7\u0131k b\u0131rak\u0131lm\u0131\u015f portlar ve gereksiz servisler<\/li>\n<li>Yanl\u0131\u015f dosya izinleri ve hassas verilerin s\u0131zmas\u0131<\/li>\n<li>Yetersiz loglama ve izleme<\/li>\n<li>Eksik yedekleme ve kurtarma plan\u0131<\/li>\n<li>Otomatik g\u00fcvenlik kontrollerinin bulunmamas\u0131<\/li>\n<li>Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f firewall ve a\u011f s\u0131n\u0131rlar\u0131<\/li>\n<li>Standartla\u015ft\u0131r\u0131lmam\u0131\u015f, denetlenmeyen sunucu yap\u0131land\u0131rmalar\u0131<\/li>\n<\/ul>\n<p>\u015eimdi her ba\u015fl\u0131\u011f\u0131, canl\u0131 sistemlerde uygulan\u0131rken dikkat edilmesi gereken ayr\u0131nt\u0131larla a\u00e7al\u0131m.<\/p>\n<h2 id=\"1-paket-guncellemelerini-disiplinli-yonet\">1. Paket g\u00fcncellemelerini disiplinli y\u00f6net<\/h2>\n<p>G\u00fcvenlik yamalar\u0131 ertelendi\u011finde sald\u0131rgan\u0131n kullanaca\u011f\u0131 pencere b\u00fcy\u00fcr. Paket listesini yenilemek ile paketleri y\u00fckseltmek de ayn\u0131 i\u015flem de\u011fildir; <code>apt update<\/code> yaln\u0131zca depolardaki bilgiyi g\u00fcnceller.<\/p>\n<p>Debian ve Ubuntu tabanl\u0131 sistemlerde bak\u0131m penceresinde \u015fu komutlar\u0131 kullanabilirsiniz:<\/p>\n<pre><code>sudo apt update\nsudo apt full-upgrade<\/code><\/pre>\n<p><code>full-upgrade<\/code> ba\u011f\u0131ml\u0131l\u0131k de\u011fi\u015fikliklerinde paket ekleyip kald\u0131rabilece\u011fi i\u00e7in \u00fcretimde <code>-y<\/code> ile d\u00fc\u015f\u00fcnmeden \u00e7al\u0131\u015ft\u0131rmak yerine \u00e7\u0131kt\u0131y\u0131 incelemeyi tercih ederim. Daha s\u0131n\u0131rl\u0131 bir y\u00fckseltme i\u00e7in <code>sudo apt upgrade<\/code> kullan\u0131labilir.<\/p>\n<p>RHEL, Rocky Linux, AlmaLinux ve Fedora taraf\u0131nda g\u00fcncel kar\u015f\u0131l\u0131\u011f\u0131 \u015f\u00f6yledir:<\/p>\n<pre><code>sudo dnf upgrade --refresh<\/code><\/pre>\n<p>Otomatik g\u00fcvenlik g\u00fcncellemeleri i\u00e7in Debian\/Ubuntu&#8217;da <code>unattended-upgrades<\/code>, RHEL ailesinde ise ilgili da\u011f\u0131t\u0131m\u0131n otomatik g\u00fcncelleme mekanizmas\u0131 kullan\u0131labilir. Yine de kernel, libc, veritaban\u0131 ve web sunucusu gibi bile\u015fenlerde yeniden ba\u015flatma veya servis kesintisi ihtimalini izleyin. Otomasyon kurduysan\u0131z, ba\u015far\u0131s\u0131z g\u00fcncellemenin alarm\u0131n\u0131 da kurun; sessizce duran bir g\u00f6rev g\u00fcvenlik politikas\u0131 de\u011fildir.<\/p>\n<ul>\n<li>\u00d6nce staging veya homelab ortam\u0131nda g\u00fcncellemeyi deneyin<\/li>\n<li>Bak\u0131m penceresi ve geri d\u00f6n\u00fc\u015f plan\u0131 belirleyin<\/li>\n<li>Kernel g\u00fcncellemesinden sonra yeniden ba\u015flatma gereksinimini kontrol edin<\/li>\n<li>Da\u011f\u0131t\u0131m\u0131n g\u00fcvenlik duyurular\u0131n\u0131 ve paket de\u011fi\u015fikliklerini izleyin<\/li>\n<\/ul>\n<p>Bir kernel g\u00fcncellemesinden sonra a\u00e7\u0131lmayan sunucuyu rescue ortam\u0131nda chroot ederek ve bootloader&#8217;\u0131 yeniden kurarak kurtard\u0131\u011f\u0131m oldu. O gece snapshot&#8217;\u0131n ve konsol eri\u015fiminin de\u011feri, b\u00fct\u00fcn dok\u00fcmantasyondan daha net anla\u015f\u0131ld\u0131. G\u00fcncelleme kadar geri d\u00f6n\u00fc\u015f yolu da plan\u0131n par\u00e7as\u0131d\u0131r.<\/p>\n<h2 id=\"2-ssh-guvenligi-icin-saldiri-yuzeyini-kucult\">2. SSH g\u00fcvenli\u011fi i\u00e7in sald\u0131r\u0131 y\u00fczeyini k\u00fc\u00e7\u00fclt<\/h2>\n<p>SSH, sunucunun y\u00f6netim kap\u0131s\u0131d\u0131r. Bu kap\u0131da parola denemeleri, eski anahtarlar ve gereksiz t\u00fcnel izinleri birikiyorsa di\u011fer g\u00fcvenlik katmanlar\u0131n\u0131n y\u00fck\u00fc artar.<\/p>\n<h3>Parola yerine anahtar temelli kimlik do\u011frulama kullan<\/h3>\n<p>Her y\u00f6netici i\u00e7in ayr\u0131 kullan\u0131c\u0131 ve ayr\u0131 SSH anahtar\u0131 olu\u015fturun. \u00d6zel anahtar\u0131 sunucuya koymay\u0131n; sunucuda yaln\u0131zca public key bulunmal\u0131d\u0131r. Yetkili anahtarlar\u0131 da\u011f\u0131tmak i\u00e7in parola ile ge\u00e7ici eri\u015fim a\u00e7mak yerine konsol, mevcut y\u00f6netim ba\u011flant\u0131s\u0131 veya Ansible gibi kontroll\u00fc bir y\u00f6ntem kullan\u0131n.<\/p>\n<p><code>\/etc\/ssh\/sshd_config<\/code> i\u00e7inde temel ayarlar \u015fu \u015fekilde olabilir:<\/p>\n<pre><code>PubkeyAuthentication yes\nPasswordAuthentication no\nKbdInteractiveAuthentication no\nPermitRootLogin no<\/code><\/pre>\n<p>Da\u011f\u0131t\u0131m\u0131n <code>sshd_config.d<\/code> dizinindeki dosyalar\u0131 da kontrol edin; sonradan okunan bir dosya bekledi\u011finiz ayar\u0131 ge\u00e7ersiz k\u0131labilir. De\u011fi\u015fikli\u011fi uygulamadan \u00f6nce yap\u0131land\u0131rmay\u0131 do\u011frulay\u0131n:<\/p>\n<pre><code>sudo sshd -t\nsudo systemctl reload ssh<\/code><\/pre>\n<p>RHEL ailesinde servis ad\u0131 \u00e7o\u011funlukla <code>sshd<\/code> olarak ge\u00e7er. Reload i\u015fleminden \u00f6nce mevcut oturumu kapatmay\u0131n, ikinci bir terminalden anahtarl\u0131 giri\u015fi test edin. Ben bunu bir keresinde atlam\u0131\u015ft\u0131m; sorun ayarda de\u011fil, ba\u011flanmay\u0131 denedi\u011fim anahtar\u0131n istemci taraf\u0131nda yanl\u0131\u015f kullan\u0131c\u0131ya ait \u00e7\u0131kmas\u0131ndayd\u0131.<\/p>\n<h3>SSH portunu ve eri\u015fim k\u0131s\u0131tlar\u0131n\u0131 d\u00fczenle<\/h3>\n<p>SSH portunu 22 d\u0131\u015f\u0131na ta\u015f\u0131mak otomatik tarama g\u00fcr\u00fclt\u00fcs\u00fcn\u00fc azaltabilir, fakat kimlik do\u011frulama g\u00fcvenli\u011finin yerine ge\u00e7mez. As\u0131l de\u011ferli k\u0131s\u0131tlama, SSH&#8217;yi yaln\u0131zca y\u00f6netim VPN&#8217;inden veya bilinen ofis IP aral\u0131klar\u0131ndan kabul etmektir.<\/p>\n<p>G\u00f6zden ge\u00e7irmeniz gereken di\u011fer ayarlar \u015funlard\u0131r:<\/p>\n<ul>\n<li>Ba\u015far\u0131s\u0131z giri\u015fleri s\u0131n\u0131rlamak i\u00e7in fail2ban veya e\u015fde\u011fer bir mekanizma<\/li>\n<li>Uygun ortamlarda FIDO2 anahtar\u0131 ya da TOTP tabanl\u0131 MFA<\/li>\n<li>SSH port forwarding \u00f6zelliklerinin yaln\u0131zca ihtiya\u00e7 halinde a\u00e7\u0131k olmas\u0131<\/li>\n<li>Kullan\u0131lmayan kullan\u0131c\u0131 anahtarlar\u0131n\u0131n d\u00fczenli olarak kald\u0131r\u0131lmas\u0131<\/li>\n<\/ul>\n<p>Fail2ban firewall&#8217;\u0131n yerini tutmaz ve ele ge\u00e7irilmi\u015f bir hesab\u0131 kurtarmaz. Sadece tekrarlanan ba\u015far\u0131s\u0131z denemelere kar\u015f\u0131 ek bir katmand\u0131r.<\/p>\n<h2 id=\"3-kullanici-grup-ve-sudo-yetkilerini-sadelestir\">3. Kullan\u0131c\u0131, grup ve sudo yetkilerini sadele\u015ftir<\/h2>\n<p>Her ki\u015finin kendi hesab\u0131 olmal\u0131; ortak y\u00f6netici hesab\u0131 kullan\u0131lmamal\u0131d\u0131r. B\u00f6ylece loglarda hangi i\u015flemin kim taraf\u0131ndan yap\u0131ld\u0131\u011f\u0131n\u0131 takip edebilirsiniz.<\/p>\n<ul>\n<li>Servisler i\u00e7in giri\u015f yap\u0131lamayan sistem kullan\u0131c\u0131lar\u0131 kullan\u0131n<\/li>\n<li>Sudo yetkisini ihtiyac\u0131 olan kullan\u0131c\u0131 ve komutlarla s\u0131n\u0131rlay\u0131n<\/li>\n<li>Ge\u00e7ici eri\u015fimlere s\u00fcre ve gerek\u00e7e ekleyin<\/li>\n<li>\u0130\u015ften ayr\u0131lan kullan\u0131c\u0131lar\u0131n hesab\u0131n\u0131, anahtar\u0131n\u0131 ve grup \u00fcyeliklerini kald\u0131r\u0131n<\/li>\n<\/ul>\n<p><code>\/etc\/sudoers<\/code> ve <code>\/etc\/sudoers.d<\/code> alt\u0131ndaki dosyalar\u0131 d\u00fczenlerken her zaman <code>visudo<\/code> kullan\u0131n:<\/p>\n<pre><code>sudo visudo<\/code><\/pre>\n<p>Bu komut s\u00f6zdizimini kaydetmeden \u00f6nce denetler. Daha da iyisi, sudo kurallar\u0131n\u0131 s\u00fcr\u00fcm kontrol\u00fcnde tutup de\u011fi\u015fiklikleri g\u00f6zden ge\u00e7irme s\u00fcrecine ba\u011flamakt\u0131r. Herkese <code>ALL=(ALL) NOPASSWD: ALL<\/code> vermek y\u00f6netim kolayl\u0131\u011f\u0131 de\u011fil, root parolas\u0131n\u0131 dosyaya yazman\u0131n farkl\u0131 bir bi\u00e7imidir.<\/p>\n<h2 id=\"4-firewall-ile-sadece-gerekli-portlari-acik-birak\">4. Firewall ile sadece gerekli portlar\u0131 a\u00e7\u0131k b\u0131rak<\/h2>\n<p>Sunucunun dinledi\u011fi her port internete a\u00e7\u0131k olmak zorunda de\u011fildir. Web sunucusu i\u00e7in 80 ve 443, y\u00f6netim i\u00e7in k\u0131s\u0131tlanm\u0131\u015f SSH ve uygulaman\u0131n ger\u00e7ekten ihtiya\u00e7 duydu\u011fu di\u011fer portlar d\u0131\u015f\u0131nda gelen trafi\u011fi reddetmek iyi bir ba\u015flang\u0131\u00e7t\u0131r.<\/p>\n<p>Ubuntu&#8217;da basit bir UFW \u00f6rne\u011fi:<\/p>\n<pre><code>sudo ufw default deny incoming\nsudo ufw default allow outgoing\nsudo ufw allow from 203.0.113.10 to any port 22 proto tcp\nsudo ufw allow 80\/tcp\nsudo ufw allow 443\/tcp\nsudo ufw enable<\/code><\/pre>\n<p>\u00d6rnek IP dok\u00fcmantasyon blo\u011fundand\u0131r; kendi VPN veya ofis a\u011f\u0131n\u0131zla de\u011fi\u015ftirin. RHEL tabanl\u0131 sistemlerde firewalld, daha d\u00fc\u015f\u00fck seviyede ise nftables kullan\u0131labilir. Hangi arac\u0131 se\u00e7ti\u011finizden \u00e7ok kurallar\u0131n kayna\u011f\u0131n\u0131n, amac\u0131n\u0131n ve de\u011fi\u015fiklik sahibinin belli olmas\u0131 \u00f6nemlidir.<\/p>\n<p>Firewall de\u011fi\u015fikli\u011finden \u00f6nce ikinci bir SSH oturumu a\u00e7\u0131n. Kendi eri\u015fiminizi yanl\u0131\u015fl\u0131kla keserseniz mevcut oturum sizi kurtarabilir, fakat bu bir geri d\u00f6n\u00fc\u015f plan\u0131 say\u0131lmaz. Konsol eri\u015fimini de haz\u0131r tutun.<\/p>\n<h2 id=\"5-gereksiz-servisleri-ve-portlari-kapat\">5. Gereksiz servisleri ve portlar\u0131 kapat<\/h2>\n<p>Firewall ile gizlenen bir servis h\u00e2l\u00e2 sistemde \u00e7al\u0131\u015f\u0131yor olabilir. \u00d6nce makinenin ne dinledi\u011fini g\u00f6r\u00fcn, sonra her portun sahibini ve gereklili\u011fini sorgulay\u0131n.<\/p>\n<pre><code>sudo ss -tulpen<\/code><\/pre>\n<p>Buradaki <code>-p<\/code> se\u00e7ene\u011fi dinleyen soketin arkas\u0131ndaki i\u015flemi g\u00f6rmeye yard\u0131mc\u0131 olur; yetki olmadan t\u00fcm s\u00fcre\u00e7 bilgilerini g\u00f6remeyebilirsiniz. Servis durumunu da ayr\u0131ca kontrol edin:<\/p>\n<pre><code>systemctl --type=service --state=running\nsystemctl list-unit-files --state=enabled<\/code><\/pre>\n<p>Eski bir test veritaban\u0131, a\u00e7\u0131k bir y\u00f6netim paneli veya art\u0131k kullan\u0131lmayan RPC servisi, sunucunun sald\u0131r\u0131 y\u00fczeyini gereksiz yere b\u00fcy\u00fct\u00fcr. Kullan\u0131lmayan paketi kald\u0131r\u0131n; yaln\u0131zca durdurmak yetmiyorsa otomatik ba\u015flatma kayd\u0131n\u0131 da temizleyin. \u00dcretimde &#8220;belki laz\u0131m olur&#8221; diye \u00e7al\u0131\u015fan servis b\u0131rakmamaya \u00e7al\u0131\u015f\u0131yorum.<\/p>\n<h2 id=\"6-dosya-izinlerini-ve-kritik-dizinleri-gozden-gecir\">6. Dosya izinlerini ve kritik dizinleri g\u00f6zden ge\u00e7ir<\/h2>\n<p>Bir uygulama hesab\u0131n\u0131n okuyabildi\u011fi dosya say\u0131s\u0131 artt\u0131k\u00e7a, uygulamadaki bir a\u00e7\u0131\u011f\u0131n etkisi de b\u00fcy\u00fcr. Web k\u00f6k\u00fc, uygulama yap\u0131land\u0131rmalar\u0131, loglar, yedekler ve SSH anahtarlar\u0131 ayr\u0131 ayr\u0131 incelenmelidir.<\/p>\n<ul>\n<li>Uygulama kodunun sahibi ile web servisinin yazma ihtiyac\u0131n\u0131 birbirinden ay\u0131r\u0131n<\/li>\n<li><code>\/var\/www<\/code> alt\u0131nda t\u00fcm a\u011fa yazma izni vermeyin<\/li>\n<li>Veritaban\u0131 parolalar\u0131n\u0131 kaynak koduna veya herkese okunabilir dosyalara koymay\u0131n<\/li>\n<li>Yedek dizinlerini web k\u00f6k\u00fcn\u00fcn d\u0131\u015f\u0131nda tutun<\/li>\n<li>SSH anahtarlar\u0131n\u0131n sahibi ve izinlerini kontrol edin<\/li>\n<\/ul>\n<p>Kullan\u0131c\u0131 SSH dizini i\u00e7in tipik izinler \u015f\u00f6yledir:<\/p>\n<pre><code>chmod 700 ~\/.ssh\nchmod 600 ~\/.ssh\/authorized_keys<\/code><\/pre>\n<p>\u0130zinleri d\u00fczeltirken dosyan\u0131n sahibini de\u011fi\u015ftirmeyi unutmay\u0131n:<\/p>\n<pre><code>chown -R kullanici:kullanici ~\/.ssh<\/code><\/pre>\n<p><code>chmod -R 777<\/code> bir onar\u0131m y\u00f6ntemi de\u011fildir; yaln\u0131zca as\u0131l izin problemini daha geni\u015f bir g\u00fcvenlik problemine \u00e7evirir. Hangi hesab\u0131n hangi dosyaya neden yazmas\u0131 gerekti\u011fini belirleyin, sonra en dar izni uygulay\u0131n.<\/p>\n<h2 id=\"7-loglama-izleme-ve-uyari-mekanizmasini-kur\">7. Loglama, izleme ve uyar\u0131 mekanizmas\u0131n\u0131 kur<\/h2>\n<p>Bir sunucuyu korumak kadar, ne oldu\u011funu anlayabilmek de gerekir. SSH giri\u015fleri, sudo kullan\u0131m\u0131, servis yeniden ba\u015flatmalar\u0131, firewall olaylar\u0131 ve kritik dosya de\u011fi\u015fiklikleri izlenebilir durumda olmal\u0131d\u0131r.<\/p>\n<p>En az\u0131ndan \u015fu sinyaller i\u00e7in alarm kurun:<\/p>\n<ul>\n<li>Ba\u015far\u0131s\u0131z ve ba\u015far\u0131l\u0131 SSH giri\u015fleri<\/li>\n<li>Beklenmeyen sudo kullan\u0131m\u0131 veya yeni kullan\u0131c\u0131 olu\u015fturulmas\u0131<\/li>\n<li>Disk dolulu\u011fu, bellek bask\u0131s\u0131 ve anormal load<\/li>\n<li>Servis \u00e7\u00f6kmesi ve tekrarlanan yeniden ba\u015flatmalar<\/li>\n<li>Beklenmeyen dinleyen port veya yap\u0131land\u0131rma de\u011fi\u015fikli\u011fi<\/li>\n<\/ul>\n<p>systemd kullanan sistemlerde temel log incelemesi i\u00e7in:<\/p>\n<pre><code>sudo journalctl -u ssh --since \"1 hour ago\"\nsudo journalctl -p warning..alert -b<\/code><\/pre>\n<p>Da\u011f\u0131t\u0131m\u0131n\u0131za g\u00f6re SSH g\u00fcnl\u00fckleri <code>\/var\/log\/auth.log<\/code> veya <code>\/var\/log\/secure<\/code> alt\u0131nda da bulunabilir. Loglar\u0131 ayn\u0131 sunucuda tutmak tek ba\u015f\u0131na yeterli de\u011fildir; sald\u0131rgan makineye eri\u015fti\u011finde kan\u0131tlar\u0131 da silebilir. Birden fazla sunucuda merkezi log toplama, zaman e\u015fitlemesi ve eri\u015fim kontroll\u00fc saklama kullan\u0131n.<\/p>\n<p>Evdeki Proxmox laboratuvar\u0131mda Uptime Kuma, Prometheus ve Grafana birlikte \u00e7al\u0131\u015f\u0131yor. Bu ara\u00e7lar sald\u0131r\u0131y\u0131 kendili\u011finden \u00e7\u00f6zmez, fakat disk dolulu\u011fu veya servis d\u00fc\u015f\u00fc\u015f\u00fcn\u00fc sessizce beklemek yerine bana erken sinyal verir.<\/p>\n<h2 id=\"8-yedekleme-ve-felaket-kurtarma-plani-olustur\">8. Yedekleme ve felaket kurtarma plan\u0131 olu\u015ftur<\/h2>\n<p>G\u00fcvenlik \u00f6nlemleri her olay\u0131 engelleyemez. Yanl\u0131\u015f bir <code>rm<\/code>, bozuk bir g\u00fcncelleme, disk ar\u0131zas\u0131 veya fidye yaz\u0131l\u0131m\u0131 sonras\u0131nda geri d\u00f6nebilece\u011finiz do\u011frulanm\u0131\u015f bir kopya gerekir.<\/p>\n<ul>\n<li>Verinin de\u011fi\u015fim h\u0131z\u0131na g\u00f6re yedekleme s\u0131kl\u0131\u011f\u0131n\u0131 belirleyin<\/li>\n<li>En az bir kopyay\u0131 farkl\u0131 bir sistemde ve farkl\u0131 lokasyonda tutun<\/li>\n<li>D\u0131\u015f ortama \u00e7\u0131kan yedekleri \u015fifreleyin<\/li>\n<li>Silinmeye ve de\u011fi\u015ftirilmeye kar\u015f\u0131 korumal\u0131 veya immutable kopyalar kullan\u0131n<\/li>\n<li>Geri d\u00f6n\u00fc\u015f s\u00fcresini ve kabul edilebilir veri kayb\u0131n\u0131 yaz\u0131l\u0131 hale getirin<\/li>\n<\/ul>\n<p>3-2-1 yakla\u015f\u0131m\u0131 h\u00e2l\u00e2 pratik bir ba\u015flang\u0131\u00e7t\u0131r: en az \u00fc\u00e7 kopya, iki farkl\u0131 ortam ve bir kopya farkl\u0131 lokasyonda. Ben dosya senkronizasyonu i\u00e7in <code>rsync<\/code>, s\u00fcr\u00fcml\u00fc ve \u015fifreli yedekler i\u00e7in <code>borgbackup<\/code> kullan\u0131yorum; fakat kullan\u0131lan ara\u00e7tan daha \u00f6nemli olan d\u00fczenli geri d\u00f6n\u00fc\u015f provas\u0131d\u0131r.<\/p>\n<p>Test edilmemi\u015f yedek yaln\u0131zca umut verir. Ayda bir \u00f6rnek bir dosyay\u0131, m\u00fcmk\u00fcnse izole bir ortama tam servis geri d\u00f6n\u00fc\u015f\u00fcn\u00fc deneyin. Yedekleme i\u015finin ba\u015far\u0131l\u0131 g\u00f6r\u00fcnd\u00fc\u011f\u00fcn\u00fc s\u00f6yleyen log ile ger\u00e7ekten a\u00e7\u0131lan bir uygulama ayn\u0131 \u015fey de\u011fildir.<\/p>\n<h2 id=\"9-otomatik-guvenlik-taramalari-ve-hardening-araclari-kullan\">9. Otomatik g\u00fcvenlik taramalar\u0131 ve hardening ara\u00e7lar\u0131 kullan<\/h2>\n<p>Elle kontrol gerekir, fakat her sunucuda ayn\u0131 listeyi tekrar tekrar elle uygulamak hata \u00fcretir. CIS benchmark kontrolleri, Lynis gibi denetim ara\u00e7lar\u0131, paket g\u00fcvenlik raporlar\u0131 ve dosya b\u00fct\u00fcnl\u00fc\u011f\u00fc izleme \u00e7\u00f6z\u00fcmleri bu noktada yard\u0131mc\u0131 olabilir.<\/p>\n<p>Bir arac\u0131n \u00f6nerdi\u011fi her ayar\u0131 do\u011frudan canl\u0131ya uygulamay\u0131n. \u00d6rne\u011fin bir taray\u0131c\u0131, \u00e7al\u0131\u015fan bir uygulaman\u0131n gerektirdi\u011fi \u00e7ekirdek parametresini veya servis \u00f6zelli\u011fini riskli i\u015faretleyebilir. \u00d6nce \u00f6nerinin neyi de\u011fi\u015ftirdi\u011fini, hangi bile\u015feni etkiledi\u011fini ve geri d\u00f6n\u00fc\u015f\u00fcn\u00fc okuyun.<\/p>\n<p>Otomatik kontrolleri \u015fu \u015fekilde de\u011ferlendirin:<\/p>\n<ul>\n<li>\u0130maj veya kurulum sonras\u0131nda ba\u015flang\u0131\u00e7 taramas\u0131 yap\u0131n<\/li>\n<li>Periyodik taramalar\u0131 raporlay\u0131p de\u011fi\u015fiklikleri kar\u015f\u0131la\u015ft\u0131r\u0131n<\/li>\n<li>Y\u00fcksek riskli bulgular i\u00e7in sorumlu ve son tarih belirleyin<\/li>\n<li>Yanl\u0131\u015f pozitifleri gerek\u00e7esiyle kayda al\u0131n<\/li>\n<\/ul>\n<p>G\u00fcvenlik arac\u0131n\u0131 kurup raporlar\u0131n\u0131 hi\u00e7 okumamak, alarm\u0131 kapat\u0131lm\u0131\u015f bir duman dedekt\u00f6r\u00fcnden farks\u0131zd\u0131r.<\/p>\n<h2 id=\"10-konfigurasyon-yonetimi-ve-altyapi-standardizasyonu-sagla\">10. Konfig\u00fcrasyon y\u00f6netimi ve altyap\u0131 standardizasyonu sa\u011fla<\/h2>\n<p>Elle kurulmu\u015f ve zaman i\u00e7inde farkl\u0131la\u015fm\u0131\u015f sunucular\u0131n g\u00fcvenlik seviyesini bilmek zordur. Bir makinede kapat\u0131lan parola eri\u015fimi di\u011ferinde a\u00e7\u0131k kalabilir; birinde uygulanan firewall kural\u0131 ba\u015fka birinde unutulabilir.<\/p>\n<p>Sa\u011flam bir \u00e7al\u0131\u015fma d\u00fczeni i\u00e7in:<\/p>\n<ul>\n<li>Sunucu rollerini web, veritaban\u0131, cache ve worker gibi profillere ay\u0131r\u0131n<\/li>\n<li>Kurulum ve sertle\u015ftirme ad\u0131mlar\u0131n\u0131 Ansible gibi ara\u00e7larla tekrarlanabilir hale getirin<\/li>\n<li>Konfig\u00fcrasyonlar\u0131 s\u00fcr\u00fcm kontrol\u00fcnde tutun ve gizli de\u011ferleri depoya yazmay\u0131n<\/li>\n<li>De\u011fi\u015fiklikleri \u00f6nce test ortam\u0131nda uygulay\u0131n<\/li>\n<li>Sunucu envanterini, sahipli\u011fini ve ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc kay\u0131t alt\u0131nda tutun<\/li>\n<\/ul>\n<p>Elle iki kez yapt\u0131\u011f\u0131m i\u015fi \u00fc\u00e7\u00fcnc\u00fcde playbook&#8217;a d\u00f6n\u00fc\u015ft\u00fcrmeye \u00e7al\u0131\u015f\u0131yorum; tek sat\u0131rl\u0131k bir i\u015f i\u00e7in YAML a\u00e7mak bazen gereksiz, ama ayn\u0131 g\u00fcvenlik ayar\u0131n\u0131 on sunucuda tutarl\u0131 uygulamak i\u00e7in ciddi zaman kazand\u0131r\u0131yor. Standart bir temel imaj ve d\u00fczenli yap\u0131land\u0131rma denetimi, tek seferlik hardening i\u015fleminden daha de\u011ferlidir.<\/p>\n<h2 id=\"sureklilik-denetim-ve-insan-faktoru\">S\u00fcreklilik, denetim ve insan fakt\u00f6r\u00fc<\/h2>\n<p>G\u00fcvenlik ayarlar\u0131 bir kez yap\u0131l\u0131p b\u0131rak\u0131lmaz. Yeni kullan\u0131c\u0131lar, yeni servisler, paket g\u00fcncellemeleri ve mimari de\u011fi\u015fiklikler ilk durumu k\u0131sa s\u00fcrede de\u011fi\u015ftirebilir.<\/p>\n<ul>\n<li>Ayl\u0131k veya \u00fc\u00e7 ayl\u0131k periyotlarla kullan\u0131c\u0131, anahtar ve sudo listelerini g\u00f6zden ge\u00e7irin<\/li>\n<li>Dinleyen portlar\u0131 ve firewall kurallar\u0131n\u0131 envanterle kar\u015f\u0131la\u015ft\u0131r\u0131n<\/li>\n<li>Y\u0131lda en az bir kez g\u00fcvenlik de\u011ferlendirmesi veya s\u0131zma testi planlay\u0131n<\/li>\n<li>Yeni servis devreye al\u0131n\u0131rken g\u00fcvenlik kontrol listesini zorunlu tutun<\/li>\n<li>Yedek geri d\u00f6n\u00fc\u015f\u00fc ve olay m\u00fcdahalesi i\u00e7in tatbikat yap\u0131n<\/li>\n<\/ul>\n<p>Payla\u015f\u0131lan hesaplar, aceleyle onaylanan eri\u015fim talepleri ve log okumadan yap\u0131lan yeniden ba\u015flatmalar teknik ayarlar kadar risklidir. Benim production shell&#8217;lerimde k\u0131rm\u0131z\u0131 prompt kullanmam\u0131n nedeni de bu: komut \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce hostname&#8217;i tekrar g\u00f6rmeye ihtiyac\u0131m var. K\u00fc\u00e7\u00fck bir al\u0131\u015fkanl\u0131k, pahal\u0131 bir hatay\u0131 engelleyebilir.<\/p>\n<h2 id=\"guvenlik-seviyenizi-bugun-yukseltin\">G\u00fcvenlik seviyenizi bug\u00fcn y\u00fckseltin<\/h2>\n<p>Bu 10 ad\u0131m\u0131 ayn\u0131 g\u00fcn tamamlamak zorunda de\u011filsiniz. \u00d6nce g\u00fcncelleme durumunu, SSH ayarlar\u0131n\u0131, a\u00e7\u0131k portlar\u0131 ve yedeklerin ger\u00e7ekten geri d\u00f6n\u00fcp d\u00f6nmedi\u011fini kontrol edin. Ard\u0131ndan bulgular\u0131 bir listeye yaz\u0131p sorumlusu ve tamamlanma tarihi belli i\u015fler haline getirin.<\/p>\n<p>Linux tabanl\u0131 altyap\u0131n\u0131z\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kaynaklar\u0131 kolayca \u00f6l\u00e7ekleyebilece\u011finiz sanal sunucu \u00e7\u00f6z\u00fcmleri i\u015finizi kolayla\u015ft\u0131rabilir. T\u00fcrkiye lokasyonunda VPS ar\u0131yorsan\u0131z <a href=\"https:\/\/www.vps.tc\/tr\/vps\">VPS.TC Linux VPS sunucular\u0131<\/a> veya daha ayr\u0131nt\u0131l\u0131 kaynak kontrol\u00fc i\u00e7in <a href=\"https:\/\/www.vps.tc\/tr\/vds-sanal-sunucu\">VPS.TC VDS \u00e7\u00f6z\u00fcmleri<\/a> ile g\u00fcvenlik kontrollerini kendiniz uygulayabilece\u011finiz bir temel olu\u015fturabilirsiniz.<\/p>\n<p>K\u0131sa bir kontrol listesi haz\u0131rlay\u0131n, her de\u011fi\u015fikli\u011fi \u00f6nce test edin ve uygulad\u0131\u011f\u0131n\u0131z ayar\u0131n geri d\u00f6n\u00fc\u015f\u00fcn\u00fc de yaz\u0131n. G\u00fcvenlikte en sevdi\u011fim kay\u0131t, \u00e7al\u0131\u015fmayan bir ayar\u0131 nas\u0131l geri ald\u0131\u011f\u0131m\u0131 anlatan kay\u0131tt\u0131r.<\/p>\n<p>Sunucu g\u00fcvenli\u011fini temel seviyede sa\u011flad\u0131ktan sonra, uygulaman\u0131n kulland\u0131\u011f\u0131 veritaban\u0131n\u0131 da ayn\u0131 ciddiyetle yap\u0131land\u0131rmak gerekiyor. Bunun i\u00e7in <a href=\"https:\/\/www.vps.tc\/blog\/tr\/vps-mysql-kurulumu-guvenli-yapilandirma\/\">VPS&#8217;te MySQL kurulumu ve g\u00fcvenli yap\u0131land\u0131rma<\/a> ad\u0131mlar\u0131n\u0131 anlatt\u0131\u011f\u0131m rehbere g\u00f6z atabilirsiniz.<\/p>\n<p>Linux sunucu g\u00fcvenli\u011finde temel ad\u0131mlar\u0131 uygulad\u0131ktan sonra, yo\u011fun ve k\u00f6t\u00fc niyetli trafik kar\u015f\u0131s\u0131nda ne yapaca\u011f\u0131n\u0131z\u0131 da bilmeniz gerekir. Bu nedenle <a href=\"https:\/\/www.vps.tc\/blog\/tr\/ddos-saldirisi-nedir-vps-koruma-rehberi\/\">DDoS Sald\u0131r\u0131s\u0131 Nedir? VPS Koruma Rehberi<\/a> yaz\u0131mda, sald\u0131r\u0131y\u0131 erken fark etmek ve VPS&#8217;inizi korumak i\u00e7in izleyebilece\u011finiz pratik ad\u0131mlar\u0131 anlatt\u0131m.<\/p>\n<h2 id=\"sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/h2>\n<h3>Linux sunucu g\u00fcvenli\u011fi i\u00e7in ilk hangi kontrol yap\u0131lmal\u0131?<\/h3>\n<p>\u00d6nce eri\u015fimi kaybetmeden mevcut durumu \u00e7\u0131kar\u0131n: i\u015fletim sistemi s\u00fcr\u00fcm\u00fcn\u00fc, bekleyen g\u00fcvenlik g\u00fcncellemelerini, SSH ayarlar\u0131n\u0131, kullan\u0131c\u0131lar\u0131 ve dinleyen portlar\u0131 kontrol edin. Ard\u0131ndan de\u011fi\u015fiklikleri test ortam\u0131nda uygulay\u0131n.<\/p>\n<h3>SSH portunu de\u011fi\u015ftirmek g\u00fcvenli\u011fi sa\u011flar m\u0131?<\/h3>\n<p>Tek ba\u015f\u0131na sa\u011flamaz. Port de\u011fi\u015ftirmek otomatik tarama g\u00fcr\u00fclt\u00fcs\u00fcn\u00fc azaltabilir; anahtar tabanl\u0131 giri\u015f, root eri\u015fiminin kapat\u0131lmas\u0131, MFA ve firewall ile kaynak IP k\u0131s\u0131tlamas\u0131 as\u0131l g\u00fcvenlik katmanlar\u0131d\u0131r.<\/p>\n<h3>fail2ban kullanmak firewall ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r m\u0131?<\/h3>\n<p>Hay\u0131r. fail2ban tekrarlanan ba\u015far\u0131s\u0131z giri\u015f denemelerine kar\u015f\u0131 ge\u00e7ici engel koyar. Gereksiz portlar\u0131 kapatmak ve y\u00f6netim eri\u015fimini g\u00fcvenilir a\u011flarla s\u0131n\u0131rlamak i\u00e7in ayr\u0131ca firewall gerekir.<\/p>\n<h3>Yedekleme g\u00fcvenlik plan\u0131n\u0131n par\u00e7as\u0131 say\u0131l\u0131r m\u0131?<\/h3>\n<p>Evet. Bir ihlali her zaman \u00f6nleyemezsiniz; fakat \u015fifreli, farkl\u0131 lokasyonda tutulan ve d\u00fczenli olarak geri d\u00f6n\u00fc\u015f\u00fc test edilen yedekler olay\u0131n etkisini ciddi bi\u00e7imde azalt\u0131r.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Linux sunucu g\u00fcvenli\u011fi s\u00f6z konusu oldu\u011funda tek bir zay\u0131f nokta bile altyap\u0131y\u0131 riske atar. SSH g\u00fcvenli\u011fi, firewall, yedekleme ve izleme odakl\u0131 10 ad\u0131ml\u0131k bir kontrol listesi payla\u015f\u0131yorum.<\/p>\n","protected":false},"author":1,"featured_media":226,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[383],"tags":[],"class_list":["post-230","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux"],"lang":"tr","translations":{"tr":230,"en":245},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/comments?post=230"}],"version-history":[{"count":4,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/230\/revisions"}],"predecessor-version":[{"id":573,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/230\/revisions\/573"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media\/226"}],"wp:attachment":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media?parent=230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/categories?post=230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/tags?post=230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}