[{"id":383,"title":"Windows Sunucularda G\u00fcvenlik Analizi: Kullan\u0131c\u0131 Oturumlar\u0131n\u0131 \u0130zleme ve Raporlama","content":"<div id=\"model-response-message-contentr_9badafa2c860b643\" class=\"markdown markdown-main-panel stronger enable-updated-hr-color\" dir=\"ltr\" aria-live=\"polite\" aria-busy=\"false\">\n<p data-path-to-node=\"3\">&nbsp;<\/p>\n<p data-path-to-node=\"4\">Bu yaz\u0131m\u0131zda, Windows sunucular\u0131n\u0131zda kullan\u0131c\u0131 giri\u015flerini analiz etmek i&ccedil;in kullanabilece\u011finiz profesyonel y&ouml;ntemleri ele al\u0131yoruz.<\/p>\n<h3 data-path-to-node=\"5\">1. Event Viewer: Sistem G&uuml;nl&uuml;klerinin \"Kara Kutusu\"<\/h3>\n<p data-path-to-node=\"6\">Windows tabanl\u0131 sistemlerde ger&ccedil;ekle\u015fen her ba\u015far\u0131l\u0131 veya ba\u015far\u0131s\u0131z giri\u015f denemesi, G&uuml;venlik (Security) g&uuml;nl&uuml;klerine kaydedilir. Bir siber g&uuml;venlik analizi veya denetim s\u0131ras\u0131nda bakman\u0131z gereken ilk yer buras\u0131d\u0131r.<\/p>\n<ul data-path-to-node=\"7\">\n<li>\n<p data-path-to-node=\"7,0,0\"><strong data-path-to-node=\"7,0,0\" data-index-in-node=\"0\">Yol:<\/strong> <code data-path-to-node=\"7,0,0\" data-index-in-node=\"5\">Event Viewer &gt; Windows Logs &gt; Security<\/code><\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"7,1,0\"><strong data-path-to-node=\"7,1,0\" data-index-in-node=\"0\">Filtreleme:<\/strong> Sa\u011f paneldeki \"Filter Current Log\" se&ccedil;ene\u011fine t\u0131klayarak <strong data-path-to-node=\"7,1,0\" data-index-in-node=\"69\">Event ID: 4624<\/strong> (Success Logon) kodunu arat\u0131n.<\/p>\n<\/li>\n<\/ul>\n<p>Kritik \u0130pucu: Logon Type Parametresi<\/p>\n<p>ID 4624 tek ba\u015f\u0131na yeterli de\u011fildir. Detaylar k\u0131sm\u0131ndaki \"Logon Type\" verisi, giri\u015fin t&uuml;r&uuml;n&uuml; s&ouml;yler:<\/p>\n<ul data-path-to-node=\"9\">\n<li>\n<p data-path-to-node=\"9,0,0\"><strong data-path-to-node=\"9,0,0\" data-index-in-node=\"0\">Type 2:<\/strong> Fiziksel klavye ve monit&ouml;r ba\u015f\u0131ndaki giri\u015f.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"9,1,0\"><strong data-path-to-node=\"9,1,0\" data-index-in-node=\"0\">Type 3:<\/strong> A\u011f &uuml;zerinden (dosya payla\u015f\u0131m\u0131 gibi) eri\u015fim.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"9,2,0\"><strong data-path-to-node=\"9,2,0\" data-index-in-node=\"0\">Type 10:<\/strong> En kritik olan\u0131d\u0131r; Uzak Masa&uuml;st&uuml; (RDP) ba\u011flant\u0131s\u0131n\u0131 temsil eder.<\/p>\n<\/li>\n<\/ul>\n<h3 data-path-to-node=\"10\">2. PowerShell ile H\u0131zl\u0131 Raporlama<\/h3>\n<p data-path-to-node=\"11\">Aray&uuml;z i&ccedil;inde kaybolmak yerine, PowerShell'in g&uuml;c&uuml;n&uuml; kullanarak son giri\u015f yapan kullan\u0131c\u0131lar\u0131 saniyeler i&ccedil;inde listeleyebilirsiniz. A\u015fa\u011f\u0131daki komut, sunucuya en son giri\u015f yapan 5 ba\u015far\u0131l\u0131 oturum a&ccedil;ma i\u015flemini kullan\u0131c\u0131 ad\u0131 ve zaman damgas\u0131yla getirir:<\/p>\n<!----><!----><!----><!----><!----><!----><!---->\n<div class=\"code-block ng-tns-c2721585414-85 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahcKEwiqgOqIqIuSAxUAAAAAHQAAAAAQbg\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2721585414-85 ng-star-inserted\"><span class=\"ng-tns-c2721585414-85\">PowerShell<\/span>\n<div class=\"buttons ng-tns-c2721585414-85 ng-star-inserted\"><button class=\"mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c2721585414-85 mat-unthemed _mat-animation-noopable ng-star-inserted\" aria-label=\"Kodu kopyala\"><\/button><!----><!----><\/div>\n<!----><\/div>\n<!---->\n<div class=\"formatted-code-block-internal-container ng-tns-c2721585414-85\">\n<div class=\"animated-opacity ng-tns-c2721585414-85\">\n<pre class=\"ng-tns-c2721585414-85\"><code class=\"code-container formatted ng-tns-c2721585414-85\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-built_in\">Get-EventLog<\/span> <span class=\"hljs-literal\">-LogName<\/span> Security <span class=\"hljs-literal\">-InstanceId<\/span> <span class=\"hljs-number\">4624<\/span> <span class=\"hljs-literal\">-Newest<\/span> <span class=\"hljs-number\">5<\/span> | \n<span class=\"hljs-built_in\">Select-Object<\/span> TimeGenerated, <span class=\"hljs-selector-tag\">@<\/span>{Name=<span class=\"hljs-string\">\"User\"<\/span>; Expression={<span class=\"hljs-variable\">$_<\/span>.ReplacementStrings[<span class=\"hljs-number\">5<\/span>]}}\n<\/code><\/pre>\n<!----><\/div>\n<\/div>\n<\/div>\n<!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!---->\n<p data-path-to-node=\"13\">Bu y&ouml;ntem, &ouml;zellikle rutin kontroller s\u0131ras\u0131nda zaman kazanman\u0131z\u0131 sa\u011flar.<\/p>\n<h3 data-path-to-node=\"14\">3. \"quser\" Komutu: Anl\u0131k Durum Analizi<\/h3>\n<p data-path-to-node=\"15\">Sunucunuzun performans\u0131nda bir yava\u015flama hissetti\u011finizde veya \"Uzak masa&uuml;st&uuml; kullan\u0131c\u0131 s\u0131n\u0131r\u0131na ula\u015f\u0131ld\u0131\" hatas\u0131 ald\u0131\u011f\u0131n\u0131zda, o an kimlerin sistemde oldu\u011funu bilmeniz gerekir.<\/p>\n<p data-path-to-node=\"16\">Terminali (CMD veya PowerShell) a&ccedil;\u0131n ve sadece <code data-path-to-node=\"16\" data-index-in-node=\"47\">quser<\/code> yaz\u0131n. Bu komut size \u015fu bilgileri verir:<\/p>\n<ul data-path-to-node=\"17\">\n<li>\n<p data-path-to-node=\"17,0,0\">Aktif kullan\u0131c\u0131 adlar\u0131.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"17,1,0\">Oturumun durumu (Active \/ Disconnected).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"17,2,0\">Oturumun ba\u015flang\u0131&ccedil; saati.<\/p>\n<\/li>\n<\/ul>\n<p data-path-to-node=\"18\"><em data-path-to-node=\"18\" data-index-in-node=\"0\">E\u011fer bir kullan\u0131c\u0131 oturumunu kapatmak yerine sadece pencereyi &ccedil;arpt\u0131ysa, oturumu \"Disconnected\" olarak g&ouml;receksiniz. Bu durum gereksiz kaynak t&uuml;ketimine neden olabilir.<\/em><\/p>\n<h3 data-path-to-node=\"19\">4. Kay\u0131t Defteri (Registry) &Uuml;zerinden Son Kullan\u0131c\u0131 Kontrol&uuml;<\/h3>\n<p>Sunucuda en son hangi kullan\u0131c\u0131n\u0131n i\u015flem yapt\u0131\u011f\u0131n\u0131 h\u0131zl\u0131ca g&ouml;rmek i&ccedil;in Registry kay\u0131tlar\u0131na da g&ouml;z atabilirsiniz:<\/p>\n<p>HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Authentication\\LogonUI<\/p>\n<p data-path-to-node=\"21\">Buradaki <strong data-path-to-node=\"21\" data-index-in-node=\"9\">LastLoggedOnUser<\/strong> anahtar\u0131, sistemin haf\u0131zas\u0131ndaki son kullan\u0131c\u0131 bilgisini statik olarak tutar.<\/p>\n<p data-path-to-node=\"21\">&nbsp;<\/p>\n<div id=\"model-response-message-contentr_14680a3defe63e45\" class=\"markdown markdown-main-panel stronger enable-updated-hr-color\" dir=\"ltr\" aria-live=\"polite\" aria-busy=\"false\">\n<p data-path-to-node=\"0\">blog yaz\u0131s\u0131nda bahsetti\u011fim y&ouml;ntemleri (Event Viewer analizi, aktif kullan\u0131c\u0131 sorgulama ve son giri\u015f yapan kullan\u0131c\u0131y\u0131 g&ouml;rme) tek bir aray&uuml;zde birle\u015ftiren, kullan\u0131m\u0131 kolay bir <strong data-path-to-node=\"0\" data-index-in-node=\"190\">PowerShell GUI<\/strong> haz\u0131rlad\u0131m.<\/p>\n<p data-path-to-node=\"1\">Bu ara&ccedil;; RDP giri\u015flerini (Logon Type 10), fiziksel giri\u015fleri ve anl\u0131k aktif kullan\u0131c\u0131lar\u0131 tek t\u0131kla listeler.<\/p>\n<h3 data-path-to-node=\"2\">PowerShell GUI Kodu<\/h3>\n<p data-path-to-node=\"3\">A\u015fa\u011f\u0131daki kodu bir <code data-path-to-node=\"3\" data-index-in-node=\"19\">.ps1<\/code> dosyas\u0131 olarak kaydedip (&ouml;rne\u011fin: <code data-path-to-node=\"3\" data-index-in-node=\"58\">OturumIzleme.ps1<\/code>) sa\u011f t\u0131klay\u0131p \"PowerShell ile &Ccedil;al\u0131\u015ft\u0131r\" diyebilirsiniz:<\/p>\n<!----><!----><!----><!----><!----><!----><!---->\n<div class=\"code-block ng-tns-c2721585414-94 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiqgOqIqIuSAxUAAAAAHQAAAAAQgwE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c2721585414-94\">\n<div class=\"animated-opacity ng-tns-c2721585414-94\">\n<pre class=\"ng-tns-c2721585414-94\">&nbsp;<\/pre>\n<pre class=\"language-markup\"><code># Gerekli k&uuml;t&uuml;phaneleri y&uuml;kle\nAdd-Type -AssemblyName System.Windows.Forms\nAdd-Type -AssemblyName System.Drawing\n\n# Ana Form Ayarlar\u0131\n$form = New-Object System.Windows.Forms.Form\n$form.Text = \"Ondernet - Windows Oturum \u0130zleme Paneli\"\n$form.Size = New-Object System.Drawing.Size(850, 650)\n$form.StartPosition = \"CenterScreen\"\n$form.BackColor = \"#F8F9FA\"\n$form.Font = New-Object System.Drawing.Font(\"Segoe UI\", 9)\n\n# Ba\u015fl\u0131k Etiketi\n$label = New-Object System.Windows.Forms.Label\n$label.Text = \"Sunucu Eri\u015fim ve G&uuml;venlik Analizi\"\n$label.Location = New-Object System.Drawing.Point(20, 15)\n$label.Size = New-Object System.Drawing.Size(400, 30)\n$label.Font = New-Object System.Drawing.Font(\"Segoe UI\", 16, [System.Drawing.FontStyle]::Bold)\n$label.ForeColor = \"#212529\"\n$form.Controls.Add($label)\n\n# Veri Tablosu (DataGridView)\n$dataGridView = New-Object System.Windows.Forms.DataGridView\n$dataGridView.Location = New-Object System.Drawing.Point(20, 110)\n$dataGridView.Size = New-Object System.Drawing.Size(790, 430)\n$dataGridView.AutoSizeColumnsMode = \"Fill\"\n$dataGridView.BackgroundColor = \"White\"\n$dataGridView.BorderStyle = \"None\"\n$dataGridView.RowHeadersVisible = $false\n$dataGridView.ReadOnly = $true\n$dataGridView.SelectionMode = \"FullRowSelect\"\n$dataGridView.AlternatingRowsDefaultCellStyle.BackColor = \"#F2F2F2\"\n$form.Controls.Add($dataGridView)\n\n# Fonksiyon: Veriyi Grid'e G&uuml;venli Basma\nfunction Update-Grid {\n    param($DataList)\n    $arrayList = New-Object System.Collections.ArrayList\n    if ($DataList) {\n        $arrayList.AddRange($DataList)\n    }\n    $dataGridView.DataSource = $arrayList\n}\n\n# 1. Buton: Aktif Kullan\u0131c\u0131lar (quser)\n$btnQuser = New-Object System.Windows.Forms.Button\n$btnQuser.Text = \"Anl\u0131k Aktif Kullan\u0131c\u0131lar\"\n$btnQuser.Location = New-Object System.Drawing.Point(20, 60)\n$btnQuser.Size = New-Object System.Drawing.Size(250, 40)\n$btnQuser.BackColor = \"#0078D7\"\n$btnQuser.ForeColor = \"White\"\n$btnQuser.FlatStyle = \"Flat\"\n$btnQuser.Cursor = [System.Windows.Forms.Cursors]::Hand\n$btnQuser.Add_Click({\n    # quser &ccedil;\u0131kt\u0131s\u0131n\u0131 g&uuml;venli bir \u015fekilde diziye al (tek sonu&ccedil; olsa bile)\n    $rawOutput = @(quser 2&gt;$null)\n    \n    if ($rawOutput.Count -gt 0) {\n        $data = @($rawOutput | Select-Object -Skip 1 | ForEach-Object {\n            # Bo\u015fluklara g&ouml;re b&ouml;l ve temizle\n            $line = $_.Trim() -split '\\s{2,}'\n            [PSCustomObject]@{\n                Kullanici    = $line[0].Replace(\"&gt;\",\"\") # Aktif kullan\u0131c\u0131 imlecini temizle\n                Oturum_Adi   = if($line[1] -match '^\\d+$') { \"RDP\/None\" } else { $line[1] }\n                ID           = if($line[1] -match '^\\d+$') { $line[1] } else { $line[2] }\n                Durum        = if($line[1] -match '^\\d+$') { $line[2] } else { $line[3] }\n                Giris_Zamani = if($line[1] -match '^\\d+$') { $line[4] } else { $line[5] }\n            }\n        })\n        Update-Grid -DataList $data\n    } else {\n        [System.Windows.Forms.MessageBox]::Show(\"Aktif oturum bulunamad\u0131 veya yetki yetersiz.\", \"Bilgi\")\n    }\n})\n$form.Controls.Add($btnQuser)\n\n# 2. Buton: Son 15 Ba\u015far\u0131l\u0131 Giri\u015f (Event Log)\n$btnLogon = New-Object System.Windows.Forms.Button\n$btnLogon.Text = \"Son 15 Ba\u015far\u0131l\u0131 Giri\u015f (Event Log)\"\n$btnLogon.Location = New-Object System.Drawing.Point(285, 60)\n$btnLogon.Size = New-Object System.Drawing.Size(250, 40)\n$btnLogon.BackColor = \"#28A745\"\n$btnLogon.ForeColor = \"White\"\n$btnLogon.FlatStyle = \"Flat\"\n$btnLogon.Cursor = [System.Windows.Forms.Cursors]::Hand\n$btnLogon.Add_Click({\n    try {\n        $events = @(Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} -MaxEvents 15 -ErrorAction SilentlyContinue | ForEach-Object {\n            [PSCustomObject]@{\n                Tarih_Saat  = $_.TimeCreated\n                Kullanici   = $_.Properties[5].Value\n                Logon_Tipi  = $_.Properties[8].Value # Tip 10: RDP, Tip 2: Yerel\n                Kaynak_IP   = $_.Properties[18].Value\n            }\n        })\n        Update-Grid -DataList $events\n    } catch {\n        [System.Windows.Forms.MessageBox]::Show(\"Olay g&uuml;nl&uuml;kleri okunurken hata olu\u015ftu. Y&ouml;netici olarak &ccedil;al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun.\", \"Hata\")\n    }\n})\n$form.Controls.Add($btnLogon)\n\n# 3. Buton: Registry Son Kullan\u0131c\u0131 Bilgisi\n$btnReg = New-Object System.Windows.Forms.Button\n$btnReg.Text = \"Kay\u0131t Defteri (Son Kay\u0131t)\"\n$btnReg.Location = New-Object System.Drawing.Point(550, 60)\n$btnReg.Size = New-Object System.Drawing.Size(250, 40)\n$btnReg.BackColor = \"#6C757D\"\n$btnReg.ForeColor = \"White\"\n$btnReg.FlatStyle = \"Flat\"\n$btnReg.Cursor = [System.Windows.Forms.Cursors]::Hand\n$btnReg.Add_Click({\n    $regPath = \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Authentication\\LogonUI\"\n    $lastUser = (Get-ItemProperty -Path $regPath -ErrorAction SilentlyContinue).LastLoggedOnUser\n    if ($lastUser) {\n        [System.Windows.Forms.MessageBox]::Show(\"Windows Kay\u0131t Defterine G&ouml;re Son Giri\u015f Yapan:`n`n$lastUser\", \"Registry Bilgisi\")\n    } else {\n        [System.Windows.Forms.MessageBox]::Show(\"Bilgi al\u0131namad\u0131.\", \"Hata\")\n    }\n})\n$form.Controls.Add($btnReg)\n\n# Alt Bilgi (Footer)\n$footer = New-Object System.Windows.Forms.Label\n$footer.Text = \"&copy; 2024 Ondernet.net - Sunucu G&uuml;venlik Analiz Arac\u0131\"\n$footer.Location = New-Object System.Drawing.Point(20, 560)\n$footer.Size = New-Object System.Drawing.Size(500, 20)\n$footer.ForeColor = \"Gray\"\n$form.Controls.Add($footer)\n\n# Formu G&ouml;ster\n[void]$form.ShowDialog()<\/code><\/pre>\n<pre class=\"ng-tns-c2721585414-94\"><code class=\"code-container formatted ng-tns-c2721585414-94\" role=\"text\" data-test-id=\"code-content\">\n<\/code><\/pre>\n<!----><\/div>\n<\/div>\n<\/div>\n<!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!---->\n<h3 data-path-to-node=\"5\">Ara&ccedil; Neleri Kaps\u0131yor?<\/h3>\n<ol start=\"1\" data-path-to-node=\"6\">\n<li>\n<p data-path-to-node=\"6,0,0\"><strong data-path-to-node=\"6,0,0\" data-index-in-node=\"0\">Anl\u0131k Aktif Kullan\u0131c\u0131lar (quser):<\/strong> Sunucuda o anda \"Active\" veya \"Disconnected\" durumda olan t&uuml;m kullan\u0131c\u0131lar\u0131, oturum ID'leri ve giri\u015f saatleriyle birlikte tabloya d&ouml;ker.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"6,1,0\"><strong data-path-to-node=\"6,1,0\" data-index-in-node=\"0\">Son 10 Giri\u015f (Event ID 4624):<\/strong> G&uuml;venlik g&uuml;nl&uuml;klerini tarar. Kullan\u0131c\u0131 ad\u0131n\u0131n yan\u0131 s\u0131ra, blog yaz\u0131s\u0131nda kritik oldu\u011fu belirtilen <strong data-path-to-node=\"6,1,0\" data-index-in-node=\"127\">Logon Type<\/strong> ve <strong data-path-to-node=\"6,1,0\" data-index-in-node=\"141\">Kaynak IP<\/strong> bilgilerini g&ouml;sterir (&Ouml;rn: Type 10 g&ouml;r&uuml;yorsan\u0131z RDP ile giri\u015ftir).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"6,2,0\"><strong data-path-to-node=\"6,2,0\" data-index-in-node=\"0\">Registry Bilgisi:<\/strong> Windows'un kay\u0131t defterinde tuttu\u011fu \"son giri\u015f yapan kullan\u0131c\u0131\" bilgisini k&uuml;&ccedil;&uuml;k bir pop-up mesaj\u0131 olarak ekrana getirir.<\/p>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"7\">&Ccedil;al\u0131\u015ft\u0131rmadan &Ouml;nce Notlar:<\/h3>\n<ul data-path-to-node=\"8\">\n<li>\n<p data-path-to-node=\"8,0,0\"><strong data-path-to-node=\"8,0,0\" data-index-in-node=\"0\">Y&ouml;netici Yetkisi:<\/strong> <code data-path-to-node=\"8,0,0\" data-index-in-node=\"18\">Security<\/code> loglar\u0131n\u0131 okumak ve <code data-path-to-node=\"8,0,0\" data-index-in-node=\"47\">quser<\/code> komutunu &ccedil;al\u0131\u015ft\u0131rmak i&ccedil;in PowerShell'i <strong data-path-to-node=\"8,0,0\" data-index-in-node=\"92\">Y&ouml;netici Olarak &Ccedil;al\u0131\u015ft\u0131r<\/strong> se&ccedil;ene\u011fiyle a&ccedil;mal\u0131s\u0131n\u0131z.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"8,1,0\"><strong data-path-to-node=\"8,1,0\" data-index-in-node=\"0\">Execution Policy:<\/strong> E\u011fer script &ccedil;al\u0131\u015fmazsa, terminale <code data-path-to-node=\"8,1,0\" data-index-in-node=\"52\">Set-ExecutionPolicy RemoteSigned -Scope CurrentUser<\/code> komutunu yazarak izin verebilirsiniz.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<hr data-path-to-node=\"22\">\n<h3 data-path-to-node=\"23\">Ondernet &Ouml;nerisi: Neden \u0130zleme Yapmal\u0131s\u0131n\u0131z?<\/h3>\n<p data-path-to-node=\"24\">Sistem g&uuml;venli\u011fi sadece d\u0131\u015far\u0131dan gelen sald\u0131r\u0131lara kar\u015f\u0131 barikat kurmak de\u011fildir. \u0130&ccedil;erideki hareketlili\u011fi izlemek, yetkisiz eri\u015fimleri erkenden tespit etmenize ve olas\u0131 bir hata durumunda \"sorumlu hesab\u0131\" h\u0131zl\u0131ca bulman\u0131za olanak tan\u0131r.<\/p>\n<p data-path-to-node=\"25\"><strong data-path-to-node=\"25\" data-index-in-node=\"0\">Sunucu g&uuml;venli\u011finizi bir &uuml;st seviyeye ta\u015f\u0131mak m\u0131 istiyorsunuz?<\/strong> Y&uuml;ksek performansl\u0131 ve g&uuml;venli <strong data-path-to-node=\"25\" data-index-in-node=\"94\">Windows VDS<\/strong> &ccedil;&ouml;z&uuml;mlerimizle tan\u0131\u015fmak i&ccedil;in <!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><a class=\"ng-star-inserted\" href=\"..\/..\/\" target=\"_blank\" rel=\"noopener\" data-hveid=\"0\" data-ved=\"0CAAQ_4QMahcKEwiqgOqIqIuSAxUAAAAAHQAAAAAQbw\">Ondernet.net<\/a><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----> adresini ziyaret edebilir, uzman ekibimizden destek alabilirsiniz.<\/p>\n<hr data-path-to-node=\"26\">\n<p data-path-to-node=\"27\"><em data-path-to-node=\"27\" data-index-in-node=\"0\">Bu yaz\u0131, sistem y&ouml;neticilerinin g&uuml;nl&uuml;k operasyonlar\u0131n\u0131 kolayla\u015ft\u0131rmak ve g&uuml;venlik fark\u0131ndal\u0131\u011f\u0131n\u0131 art\u0131rmak amac\u0131yla haz\u0131rlanm\u0131\u015ft\u0131r.<\/em><\/p>\n<\/div>","excerpt":"Sunucu y\u00f6netimi sadece servislerin ayakta kalmas\u0131n\u0131 sa\u011flamak de\u011fil, ayn\u0131 zamanda sistemin \"kim taraf\u0131ndan, ne zaman ve nas\u0131l\" kullan\u0131ld\u0131\u011f\u0131n\u0131 takip etmektir. \u00d6zellikle \u00e7ok kullan\u0131c\u0131l\u0131 Windows Sunucu ortamlar\u0131nda veya uzak masa\u00fcst\u00fc (RDP) trafi\u011finin yo\u011fun oldu\u011fu yap\u0131larda, oturum izleme operasyonel g\u00fcvenli\u011fin temel ta\u015f\u0131d\u0131r.","created_at":"2026-01-14 20:03:49","updated_at":"2026-09-08 04:02:21","category_id":9,"view_count":545,"reading_time":8,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2026-01-14 17:03:49","featured_image":"\/uploads\/images\/2026\/01\/6967cc5d11958_1768410205.png","slug":"windows-sunucularda-guvenlik-analizi-kullanici-oturumlarini-izleme-ve-raporlama","category_name":"Yaz\u0131l\u0131m","category_slug":"yazilim","category_color":"#ef4444"},{"id":130,"title":"Azure Portal'da Uygulama Kayd\u0131 Olu\u015fturma","content":"Azure platformunda uygulamalar\u0131n\u0131z\u0131n Azure Active Directory (Azure AD) kirac\u0131n\u0131zdaki kaynaklara g\u00fcvenli bir \u015fekilde eri\u015febilmesi i\u00e7in uygulama kayd\u0131 (App Registration) olu\u015fturman\u0131z gerekir. Bu i\u015flem, uygulaman\u0131za bir kimlik kazand\u0131rarak OAuth 2.0\/OpenID Connect protokolleri \u00fczerinden kimlik do\u011frulama ve yetkilendirme yapman\u0131z\u0131 sa\u011flar. Bu rehberde, Azure Portal \u00fczerinden uygulama kayd\u0131 olu\u015fturma s\u00fcrecini detayl\u0131 olarak ele alaca\u011f\u0131z. <h2>Neden Uygulama Kayd\u0131 Olu\u015fturmal\u0131y\u0131z?<\/h2> Uygulama kayd\u0131 olu\u015fturmak: <ul> <li>Uygulaman\u0131za Azure AD taraf\u0131ndan y\u00f6netilen bir kimlik kazand\u0131r\u0131r<\/li> <li>Microsoft Graph API, Azure REST API veya kendi API'lerinize g\u00fcvenli eri\u015fim sa\u011flar<\/li> <li>Single Sign-On (SSO) \u00f6zelli\u011fini uygulaman\u0131za entegre etmenizi sa\u011flar<\/li> <li>Kullan\u0131c\u0131 ad\u0131\/parola bilgilerini uygulaman\u0131zda saklamadan g\u00fcvenli kimlik do\u011frulama yapman\u0131z\u0131 sa\u011flar<\/li> <\/ul> <h2>\u00d6n Gereksinimler<\/h2> <ul> <li>Aktif bir Azure hesab\u0131<\/li> <li>Azure Active Directory \u00fczerinde uygulama kaydetme yetkisi (genellikle Global Administrator, Cloud Application Administrator veya Application Administrator rollerine sahip kullan\u0131c\u0131lar)<\/li> <\/ul> <h2>Ad\u0131m 1: Azure Portal'a Giri\u015f<\/h2> <ol> <li><a href=\"https:\/\/portal.azure.com\/\">Azure Portal<\/a>'a gidin ve hesab\u0131n\u0131zla oturum a\u00e7\u0131n.<\/li> <li>\u00dcst arama \u00e7ubu\u011funda \"Azure Active Directory\" yaz\u0131p se\u00e7in.<\/li> <li>Sol men\u00fcden \"App registrations\" (Uygulama kay\u0131tlar\u0131) se\u00e7ene\u011fine t\u0131klay\u0131n.<\/li> <\/ol> <h2>Ad\u0131m 2: Yeni Uygulama Kayd\u0131 Olu\u015fturma<\/h2> <ol> <li>\"New registration\" (Yeni kay\u0131t) d\u00fc\u011fmesine t\u0131klay\u0131n.<\/li> <li>A\u015fa\u011f\u0131daki bilgileri doldurun: <ul> <li><strong>Name<\/strong> (Ad): Uygulaman\u0131z\u0131n ad\u0131n\u0131 girin (\u00f6rne\u011fin, \"MyCompanyApp\")<\/li> <li><strong>Supported account types<\/strong> (Desteklenen hesap t\u00fcrleri): Uygulaman\u0131z\u0131n eri\u015fmesini istedi\u011finiz hesap t\u00fcrlerini se\u00e7in: <ul> <li><strong>Accounts in this organizational directory only<\/strong> (Yaln\u0131zca bu organizasyon dizinindeki hesaplar) - Sadece kendi kirac\u0131n\u0131zdaki kullan\u0131c\u0131lar<\/li> <li><strong>Accounts in any organizational directory<\/strong> (Herhangi bir organizasyon dizinindeki hesaplar) - T\u00fcm Azure AD kirac\u0131lar\u0131ndaki kullan\u0131c\u0131lar<\/li> <li><strong>Accounts in any organizational directory and personal Microsoft accounts<\/strong> (Herhangi bir organizasyon dizinindeki hesaplar ve ki\u015fisel Microsoft hesaplar\u0131) - Azure AD kullan\u0131c\u0131lar\u0131 ve ki\u015fisel Microsoft hesaplar\u0131<\/li> <\/ul> <\/li> <li><strong>Redirect URI<\/strong> (Y\u00f6nlendirme URI'si): Kullan\u0131c\u0131lar kimlik do\u011frulamay\u0131 tamamlad\u0131ktan sonra y\u00f6nlendirilecekleri URI'yi belirtin: <ul> <li>Platform se\u00e7in (Web, SPA, iOS\/macOS, Android veya Mobile and desktop applications)<\/li> <li>URI'yi girin (\u00f6rne\u011fin, <code>https:\/\/myapp.example.com\/auth-callback<\/code>)<\/li> <\/ul> <\/li> <\/ul> <\/li> <li>\"Register\" (Kaydet) d\u00fc\u011fmesine t\u0131klay\u0131n.<\/li> <\/ol> <h2>Ad\u0131m 3: Kimlik Bilgilerini Alma<\/h2> Uygulama kayd\u0131 olu\u015fturuldu\u011funda, a\u015fa\u011f\u0131daki \u00f6nemli kimlik bilgilerini alacaks\u0131n\u0131z: <ol> <li><strong>Application (client) ID<\/strong> (Uygulama (istemci) Kimli\u011fi): Uygulaman\u0131z\u0131 benzersiz \u015fekilde tan\u0131mlayan GUID.<\/li> <li><strong>Directory (tenant) ID<\/strong> (Dizin (kirac\u0131) Kimli\u011fi): Azure AD kirac\u0131n\u0131z\u0131 tan\u0131mlayan GUID.<\/li> <\/ol> Bu de\u011ferler, uygulama kodunuzda Azure AD'ye kar\u015f\u0131 kimlik do\u011frulama yaparken kullan\u0131lacakt\u0131r. <h2>Ad\u0131m 4: \u0130stemci Gizli Anahtar\u0131 (Client Secret) Olu\u015fturma<\/h2> Web uygulamalar\u0131 veya API'ler i\u00e7in genellikle bir istemci gizli anahtar\u0131 olu\u015fturman\u0131z gerekir: <ol> <li>Sol men\u00fcden \"Certificates &amp; secrets\" (Sertifikalar ve gizli anahtarlar) se\u00e7ene\u011fine t\u0131klay\u0131n.<\/li> <li>\"Client secrets\" (\u0130stemci gizli anahtarlar\u0131) sekmesinde \"New client secret\" (Yeni istemci gizli anahtar\u0131) d\u00fc\u011fmesine t\u0131klay\u0131n.<\/li> <li>Bir a\u00e7\u0131klama girin ve s\u00fcresini se\u00e7in (6 ay, 12 ay veya 24 ay).<\/li> <li>\"Add\" (Ekle) d\u00fc\u011fmesine t\u0131klay\u0131n.<\/li> <li>Olu\u015fturulan gizli anahtar\u0131n de\u011ferini hemen kopyalay\u0131n ve g\u00fcvenli bir yerde saklay\u0131n. Bu de\u011fer, bir daha g\u00f6r\u00fcnt\u00fclenmeyecektir!<\/li> <\/ol> <h2>Ad\u0131m 5: API \u0130zinlerini Yap\u0131land\u0131rma<\/h2> Uygulaman\u0131z\u0131n API'lere eri\u015febilmesi i\u00e7in gerekli izinleri yap\u0131land\u0131r\u0131n: <ol> <li>Sol men\u00fcden \"API permissions\" (API izinleri) se\u00e7ene\u011fine t\u0131klay\u0131n.<\/li> <li>\"Add a permission\" (\u0130zin ekle) d\u00fc\u011fmesine t\u0131klay\u0131n.<\/li> <li>\u0130zin vermek istedi\u011finiz API'yi se\u00e7in (\u00f6rne\u011fin, Microsoft Graph).<\/li> <li>\u0130zin t\u00fcr\u00fcn\u00fc se\u00e7in: <ul> <li><strong>Delegated permissions<\/strong> (Yetkilendirilmi\u015f izinler): Kullan\u0131c\u0131 ad\u0131na eri\u015fim<\/li> <li><strong>Application permissions<\/strong> (Uygulama izinleri): Kullan\u0131c\u0131 olmadan arka planda eri\u015fim<\/li> <\/ul> <\/li> <li>Gerekli izinleri se\u00e7in ve \"Add permissions\" (\u0130zinleri ekle) d\u00fc\u011fmesine t\u0131klay\u0131n.<\/li> <li>Uygulama izinleri i\u00e7in, \"Grant admin consent for \" (Y\u00f6netici onay\u0131 ver) d\u00fc\u011fmesine t\u0131klayarak kirac\u0131 genelinde onay verin.<\/li> <\/ol> <h2>Ad\u0131m 6: Kimlik Do\u011frulama Ayarlar\u0131n\u0131 Yap\u0131land\u0131rma<\/h2> <ol> <li>Sol men\u00fcden \"Authentication\" (Kimlik Do\u011frulama) se\u00e7ene\u011fine t\u0131klay\u0131n.<\/li> <li>\u0130htiyac\u0131n\u0131za g\u00f6re ek y\u00f6nlendirme URI'leri ekleyin.<\/li> <li>\"Implicit grant and hybrid flows\" (\u00d6rt\u00fck hibe ve hibrit ak\u0131\u015flar) b\u00f6l\u00fcm\u00fcnde, uygulaman\u0131za uygun ak\u0131\u015f t\u00fcrlerini etkinle\u015ftirin: <ul> <li>ID tokens (Kimlik belirte\u00e7leri)<\/li> <li>Access tokens (Eri\u015fim belirte\u00e7leri)<\/li> <\/ul> <\/li> <li>\"Advanced settings\" (Geli\u015fmi\u015f ayarlar) b\u00f6l\u00fcm\u00fcnde: <ul> <li>\"Allow public client flows\" (Genel istemci ak\u0131\u015flar\u0131na izin ver): Mobil ve masa\u00fcst\u00fc uygulamalar i\u00e7in etkinle\u015ftirin.<\/li> <\/ul> <\/li> <li>\"Save\" (Kaydet) d\u00fc\u011fmesine t\u0131klay\u0131n.<\/li> <\/ol> <h2>Ad\u0131m 7: Eri\u015fim Belirteci Yap\u0131land\u0131rmas\u0131 (\u0130ste\u011fe Ba\u011fl\u0131)<\/h2> <ol> <li>Sol men\u00fcden \"Token configuration\" (Belirte\u00e7 yap\u0131land\u0131rmas\u0131) se\u00e7ene\u011fine t\u0131klay\u0131n.<\/li> <li>\"Add optional claim\" (\u0130ste\u011fe ba\u011fl\u0131 talep ekle) d\u00fc\u011fmesine t\u0131klay\u0131n.<\/li> <li>Belirte\u00e7 t\u00fcr\u00fcn\u00fc se\u00e7in (ID, Access, SAML).<\/li> <li>\u0130htiyac\u0131n\u0131z olan talepleri se\u00e7in ve \"Add\" (Ekle) d\u00fc\u011fmesine t\u0131klay\u0131n.<\/li> <\/ol> <h2>Ad\u0131m 8: Uygulama Manifestini \u00d6zelle\u015ftirme (\u0130ste\u011fe Ba\u011fl\u0131)<\/h2> <ol> <li>Sol men\u00fcden \"Manifest\" (Manifest) se\u00e7ene\u011fine t\u0131klay\u0131n.<\/li> <li>Uygulaman\u0131z\u0131n davran\u0131\u015f\u0131n\u0131 daha ayr\u0131nt\u0131l\u0131 yap\u0131land\u0131rmak i\u00e7in JSON format\u0131ndaki manifestte de\u011fi\u015fiklikler yapabilirsiniz.<\/li> <li>De\u011fi\u015fiklikleri yapt\u0131ktan sonra \"Save\" (Kaydet) d\u00fc\u011fmesine t\u0131klay\u0131n.<\/li> <\/ol> <h2>Ad\u0131m 9: Branding ve \u00d6zelle\u015ftirme<\/h2> <ol> <li>Sol men\u00fcden \"Branding\" (Markalama) se\u00e7ene\u011fine t\u0131klay\u0131n.<\/li> <li>Uygulama ad\u0131, logosu, ana sayfa URL'si, kullan\u0131m ko\u015fullar\u0131 URL'si ve gizlilik bildirimi URL'si gibi se\u00e7enekleri \u00f6zelle\u015ftirin.<\/li> <li>\"Save\" (Kaydet) d\u00fc\u011fmesine t\u0131klay\u0131n.<\/li> <\/ol> <h2>Ad\u0131m 10: Sahip Atama (\u0130ste\u011fe Ba\u011fl\u0131)<\/h2> <ol> <li>Sol men\u00fcden \"Owners\" (Sahipler) se\u00e7ene\u011fine t\u0131klay\u0131n.<\/li> <li>\"Add owners\" (Sahip ekle) d\u00fc\u011fmesine t\u0131klayarak uygulaman\u0131z\u0131 y\u00f6netecek ek kullan\u0131c\u0131lar atayabilirsiniz.<\/li> <\/ol> <h2>Uygulama Kodunda Kullan\u0131m \u00d6rne\u011fi<\/h2> A\u015fa\u011f\u0131da, Node.js ile MSAL (Microsoft Authentication Library) kullanarak Azure AD kimlik do\u011frulamas\u0131 yapan basit bir \u00f6rnek bulunmaktad\u0131r: <pre><code >const msal = require('@azure\/msal-node'); const config = { auth: { clientId: \"UYGULAMA_KIMLIGINIZ\", authority: \"https:\/\/login.microsoftonline.com\/KIRACI_KIMLIGINIZ\", clientSecret: \"ISTEMCI_GIZLI_ANAHTARINIZ\" } }; const cca = new msal.ConfidentialClientApplication(config); async function getToken() { const tokenRequest = { scopes: }; try { const response = await cca.acquireTokenByClientCredential(tokenRequest); return response.accessToken; } catch (error) { console.log(\"Hata olu\u015ftu:\", error); } } \/\/ Token'\u0131 kullanarak API \u00e7a\u011fr\u0131lar\u0131 yap\u0131n getToken().then(token =&gt; { console.log(\"Access Token:\", token); \/\/ Bu token ile API \u00e7a\u011fr\u0131lar\u0131 yapabilirsiniz }); <\/code><\/pre> <h2>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h2> <ol> <li><strong>AADSTS65001: Kullan\u0131c\u0131n\u0131n onay\u0131\/iznini gerektiren yetkilendirilmi\u015f izinler i\u00e7in gerekli y\u00f6netici onay\u0131 verilmemi\u015f<\/strong> <ul> <li>\u00c7\u00f6z\u00fcm: Azure AD y\u00f6neticisinden \"Grant admin consent\" (Y\u00f6netici onay\u0131 ver) d\u00fc\u011fmesine t\u0131klamas\u0131n\u0131 isteyin.<\/li> <\/ul> <\/li> <li><strong>AADSTS700016: Uygulama bulunamad\u0131<\/strong> <ul> <li>\u00c7\u00f6z\u00fcm: Uygulama (istemci) Kimli\u011finin do\u011fru oldu\u011fundan emin olun.<\/li> <\/ul> <\/li> <li><strong>AADSTS7000215: Ge\u00e7ersiz istemci gizli anahtar\u0131 sa\u011fland\u0131<\/strong> <ul> <li>\u00c7\u00f6z\u00fcm: \u0130stemci gizli anahtar\u0131n\u0131z\u0131n s\u00fcresi dolmu\u015f olabilir, yeni bir tane olu\u015fturun.<\/li> <\/ul> <\/li> <li><strong>Y\u00f6nlendirme URI'si e\u015fle\u015fmiyor<\/strong> <ul> <li>\u00c7\u00f6z\u00fcm: Uygulaman\u0131zda kulland\u0131\u011f\u0131n\u0131z y\u00f6nlendirme URI'sinin, Azure Portal'da kaydetti\u011finizle tam olarak e\u015fle\u015fti\u011finden emin olun.<\/li> <\/ul> <\/li> <\/ol> <h2>En \u0130yi Uygulamalar<\/h2> <ol> <li><strong>Gizli anahtarlar\u0131 g\u00fcvenli tutun<\/strong>: \u0130stemci gizli anahtarlar\u0131n\u0131 kodunuza do\u011frudan yazmak yerine Azure Key Vault veya ortam de\u011fi\u015fkenleri gibi g\u00fcvenli y\u00f6ntemlerle saklay\u0131n.<\/li> <li><strong>En Az Ayr\u0131cal\u0131k \u0130lkesi<\/strong>: Uygulaman\u0131za sadece ihtiya\u00e7 duydu\u011fu minimum izinleri verin.<\/li> <li><strong>Sertifika Kullan\u0131m\u0131<\/strong>: Uzun vadeli ve daha g\u00fcvenli kimlik do\u011frulama i\u00e7in istemci gizli anahtar\u0131 yerine sertifikalar kullanmay\u0131 d\u00fc\u015f\u00fcn\u00fcn.<\/li> <li><strong>D\u00fczenli Rotasyon<\/strong>: \u0130stemci gizli anahtarlar\u0131n\u0131 d\u00fczenli olarak yenileyin ve eski anahtarlar\u0131 devre d\u0131\u015f\u0131 b\u0131rak\u0131n.<\/li> <li><strong>\u0130zleme ve Denetim<\/strong>: Azure AD Denetim G\u00fcnl\u00fcklerini kullanarak uygulama etkinliklerini d\u00fczenli olarak izleyin.<\/li> <\/ol> <h2>Sonu\u00e7<\/h2> Azure Portal'da uygulama kayd\u0131 olu\u015fturmak, uygulamalar\u0131n\u0131z\u0131n Azure hizmetleriyle g\u00fcvenli bir \u015fekilde entegre olmas\u0131n\u0131 sa\u011flayan temel bir ad\u0131md\u0131r. Bu rehberde \u00f6\u011frendi\u011finiz ad\u0131mlar\u0131 takip ederek, uygulaman\u0131z i\u00e7in kimlik do\u011frulama ve yetkilendirme altyap\u0131s\u0131n\u0131 kurabilir, modern kimlik do\u011frulama protokollerinin avantajlar\u0131ndan yararlanabilirsiniz. Daha fazla bilgi i\u00e7in <a href=\"https:\/\/docs.microsoft.com\/azure\/active-directory\/develop\/\">Microsoft Identity Platform dok\u00fcmantasyonunu<\/a> inceleyebilirsiniz.","excerpt":"Azure platformunda uygulamalar\u0131n\u0131z\u0131n Azure Active Directory (Azure AD) kirac\u0131n\u0131zdaki kaynaklara g\u00fcvenli bir \u015fekilde eri\u015febilmesi i\u00e7in...","created_at":"2025-04-05 10:25:42","updated_at":"2026-09-23 12:25:49","category_id":6,"view_count":823,"reading_time":7,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-04-05 10:25:42","featured_image":"resimyok.jpg","slug":"azure-portalda-uygulama-kaydi-olusturma","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"}]