<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[TurkTeam | Türk Siber Güvenlik Topluluğu - Script ve Otomasyon]]></title>
		<link>https://www.turkteam.org/</link>
		<description><![CDATA[TurkTeam | Türk Siber Güvenlik Topluluğu - https://www.turkteam.org]]></description>
		<pubDate>Sun, 25 Oct 2026 18:48:41 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[gh auth status: GitHub CLI Token'larınızı Düzenli Kontrol Etmek]]></title>
			<link>https://www.turkteam.org/konu-gh-auth-status-github-cli-token-larinizi-duzenli-kontrol-etmek.html</link>
			<pubDate>Thu, 22 Oct 2026 11:33:33 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.turkteam.org/member.php?action=profile&uid=4">KulTigin</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.turkteam.org/konu-gh-auth-status-github-cli-token-larinizi-duzenli-kontrol-etmek.html</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=357" loading="lazy"  alt="[Resim: attachment.php?aid=357]" class="mycode_img" /></div>
<br />
Selamlar,<br />
<br />
LiteLLM tedarik zinciri saldırısında saldırganın elinde üç geliştiriciye ait GitHub CLI OAuth token'ı vardı. Bunlardan biri organizasyon sahibi yetkisindeydi; branch koruması bu token ile aşıldı. Bu yazıda GitHub CLI'nin resmi <span style="font-weight: bold;" class="mycode_b">gh auth status</span> komutunu kullanarak kendi makinelerinizdeki token durumunu nasıl kontrol edeceğinizi anlatıyorum.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>gh auth status ne gösterir?<br />
</li>
<li>JSON çıktısı ve otomasyon<br />
</li>
<li>Token hijyeni için pratik kurallar<br />
</li>
<li>Sızma şüphesinde yapılacaklar<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">gh auth status</span></span><br />
Resmi kılavuza göre komut, bilinen her GitHub host'unda aktif hesabı ve kimlik doğrulama durumunu gösterir. Her hesap için durum test edilir; sorunlar çıktıya eklenir. Süresi dolmuş veya dolmak üzere olan ve yenilenebilen token'lar, --no-refresh verilmedikçe otomatik yenilenir. Herhangi bir hesapta kimlik doğrulama sorunu varsa komut çıkış kodu 1 ile biter (JSON modu hariç).<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Tum host ve hesaplar
gh auth status
# Yalnizca aktif hesap
gh auth status --active
# Belirli host
gh auth status --hostname github.com
# JSON (otomasyon icin); token'i da eklemek icin --show-token
gh auth status --json hosts
# DIKKAT: --show-token token'i duz metin basar; ekran paylasiminda kullanmayin</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ne aramalısınız?</span></span><ul class="mycode_list"><li>Beklemediğiniz ekstra hesaplar veya host'lar<br />
</li>
<li>Organizasyon sahibi / admin yetkili hesapların geliştirici laptop'larında uzun süre durması<br />
</li>
<li>CI dışında kişisel makinelerde duran yüksek yetkili token'lar<br />
</li>
<li>Eski, kullanılmayan host girişleri<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Pratik hijyen kuralları</span></span><br />
<ol type="1" class="mycode_list"><li>Yüksek yetkili (org owner) hesaplarla günlük geliştirme yapmayın; ayrı bir "günlük" hesap kullanın.<br />
</li>
<li>gh auth logout ile kullanılmayan girişleri kapatın; github.com/settings/applications üzerinden yetkilendirilmiş OAuth uygulamalarını gözden geçirin.<br />
</li>
<li>Token'ların YZ asistanı yanıtlarına veya loglara düşebileceğini varsayın (LiteLLM'in olay sonrası değerlendirmesi tam da bunu işaret ediyor). Loglarda Authorization / gho_ / ghp_ araması yapın.<br />
</li>
<li>CI için fine-grained veya environment-scoped token kullanın; laptop OAuth token'ını CI'ya taşımayın.<br />
</li>
</ol>
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Basit periyodik kontrol (kendi makineniz)
gh auth status --active 2&gt;&amp;1 | tee ~/gh-auth-check-&#36;(date +%F).log
# Beklenmeyen hesap varsa alarm (ornek)
gh auth status --json hosts --jq '.hosts[].accounts[].username' |
  grep -vE '^(sizin_beklenen_kullanici)&#36;' &amp;&amp; echo "beklenmeyen hesap" || true</code></div></div><br />
Organizasyonunuzda org owner hesabıyla günlük commit atan var mı? Ayrı günlük hesap politikası uyguluyor musunuz?<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal uyarı</span></span><br />
Bu yazı bilgilendirme ve savunma amaçlıdır. Anlatılan kontrolleri yalnızca kendi sistemlerinizde veya yazılı izinle yapın. İzinsiz erişim, tarama ve sömürü girişimleri TCK 243-245 kapsamında suçtur. TurkTeam white-hat bir topluluktur; çalıntı veri, hesap, combo/log paylaşımı ve hack hizmeti talepleri forum kurallarına aykırıdır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynaklar</span></span><ul class="mycode_list"><li><a href="https://cli.github.com/manual/gh_auth_status" target="_blank" rel="noopener" class="mycode_url">https://cli.github.com/manual/gh_auth_status</a><br />
</li>
<li><a href="https://docs.litellm.ai/blog/security-incident-oct-21-2026" target="_blank" rel="noopener" class="mycode_url">https://docs.litellm.ai/blog/security-in...ct-21-2026</a><br />
</li>
</ul>
<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=357" target="_blank" title="">16-k01-gh-auth-token.png</a> (Dosya Boyutu: 101.96 KB / İndirme Sayısı: 10)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=357" loading="lazy"  alt="[Resim: attachment.php?aid=357]" class="mycode_img" /></div>
<br />
Selamlar,<br />
<br />
LiteLLM tedarik zinciri saldırısında saldırganın elinde üç geliştiriciye ait GitHub CLI OAuth token'ı vardı. Bunlardan biri organizasyon sahibi yetkisindeydi; branch koruması bu token ile aşıldı. Bu yazıda GitHub CLI'nin resmi <span style="font-weight: bold;" class="mycode_b">gh auth status</span> komutunu kullanarak kendi makinelerinizdeki token durumunu nasıl kontrol edeceğinizi anlatıyorum.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>gh auth status ne gösterir?<br />
</li>
<li>JSON çıktısı ve otomasyon<br />
</li>
<li>Token hijyeni için pratik kurallar<br />
</li>
<li>Sızma şüphesinde yapılacaklar<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">gh auth status</span></span><br />
Resmi kılavuza göre komut, bilinen her GitHub host'unda aktif hesabı ve kimlik doğrulama durumunu gösterir. Her hesap için durum test edilir; sorunlar çıktıya eklenir. Süresi dolmuş veya dolmak üzere olan ve yenilenebilen token'lar, --no-refresh verilmedikçe otomatik yenilenir. Herhangi bir hesapta kimlik doğrulama sorunu varsa komut çıkış kodu 1 ile biter (JSON modu hariç).<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Tum host ve hesaplar
gh auth status
# Yalnizca aktif hesap
gh auth status --active
# Belirli host
gh auth status --hostname github.com
# JSON (otomasyon icin); token'i da eklemek icin --show-token
gh auth status --json hosts
# DIKKAT: --show-token token'i duz metin basar; ekran paylasiminda kullanmayin</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ne aramalısınız?</span></span><ul class="mycode_list"><li>Beklemediğiniz ekstra hesaplar veya host'lar<br />
</li>
<li>Organizasyon sahibi / admin yetkili hesapların geliştirici laptop'larında uzun süre durması<br />
</li>
<li>CI dışında kişisel makinelerde duran yüksek yetkili token'lar<br />
</li>
<li>Eski, kullanılmayan host girişleri<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Pratik hijyen kuralları</span></span><br />
<ol type="1" class="mycode_list"><li>Yüksek yetkili (org owner) hesaplarla günlük geliştirme yapmayın; ayrı bir "günlük" hesap kullanın.<br />
</li>
<li>gh auth logout ile kullanılmayan girişleri kapatın; github.com/settings/applications üzerinden yetkilendirilmiş OAuth uygulamalarını gözden geçirin.<br />
</li>
<li>Token'ların YZ asistanı yanıtlarına veya loglara düşebileceğini varsayın (LiteLLM'in olay sonrası değerlendirmesi tam da bunu işaret ediyor). Loglarda Authorization / gho_ / ghp_ araması yapın.<br />
</li>
<li>CI için fine-grained veya environment-scoped token kullanın; laptop OAuth token'ını CI'ya taşımayın.<br />
</li>
</ol>
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Basit periyodik kontrol (kendi makineniz)
gh auth status --active 2&gt;&amp;1 | tee ~/gh-auth-check-&#36;(date +%F).log
# Beklenmeyen hesap varsa alarm (ornek)
gh auth status --json hosts --jq '.hosts[].accounts[].username' |
  grep -vE '^(sizin_beklenen_kullanici)&#36;' &amp;&amp; echo "beklenmeyen hesap" || true</code></div></div><br />
Organizasyonunuzda org owner hesabıyla günlük commit atan var mı? Ayrı günlük hesap politikası uyguluyor musunuz?<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal uyarı</span></span><br />
Bu yazı bilgilendirme ve savunma amaçlıdır. Anlatılan kontrolleri yalnızca kendi sistemlerinizde veya yazılı izinle yapın. İzinsiz erişim, tarama ve sömürü girişimleri TCK 243-245 kapsamında suçtur. TurkTeam white-hat bir topluluktur; çalıntı veri, hesap, combo/log paylaşımı ve hack hizmeti talepleri forum kurallarına aykırıdır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynaklar</span></span><ul class="mycode_list"><li><a href="https://cli.github.com/manual/gh_auth_status" target="_blank" rel="noopener" class="mycode_url">https://cli.github.com/manual/gh_auth_status</a><br />
</li>
<li><a href="https://docs.litellm.ai/blog/security-incident-oct-21-2026" target="_blank" rel="noopener" class="mycode_url">https://docs.litellm.ai/blog/security-in...ct-21-2026</a><br />
</li>
</ul>
<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=357" target="_blank" title="">16-k01-gh-auth-token.png</a> (Dosya Boyutu: 101.96 KB / İndirme Sayısı: 10)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Bash Aliases: Pentest İçin Küçük Hızlandırıcılar ve Güvenli Alışkanlıklar]]></title>
			<link>https://www.turkteam.org/konu-bash-aliases-pentest-icin-kucuk-hizlandiricilar-ve-guvenli-aliskanliklar.html</link>
			<pubDate>Mon, 19 Oct 2026 00:48:28 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.turkteam.org/member.php?action=profile&uid=4">KulTigin</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.turkteam.org/konu-bash-aliases-pentest-icin-kucuk-hizlandiricilar-ve-guvenli-aliskanliklar.html</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=271" loading="lazy"  alt="[Resim: attachment.php?aid=271]" class="mycode_img" /></div>
<br />
Merhaba,<br />
<br />
Her pentest lab oturumunda aynı uzun komutları yazmak can sıkıcı. Ama rastgele alias da tehlikeli: yanlış host'a agresif tarama göndermek bir tuş kadar yakın olabilir. Bu yazıda kendi .bashrc notlarımı, güvenli alışkanlıklarla birlikte paylaşıyorum.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Temel: nerede tutmalı?</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># ~/.bashrc veya ~/.bash_aliases
# Değişiklikten sonra:
source ~/.bashrc</code></div></div>Kali/Parrot'ta bazen .zshrc kullanırsınız; shell'inizi bilin. Alias'ları git ile dotfiles reposunda tutuyorum (sır yok; API anahtarı koymayın).<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Güvenli ve faydalı alias örnekleri</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># İnsan okur ls
alias ll='ls -alFh --color=auto'
alias ..='cd ..'

# nmap: varsayılan olarak nazik zamanlama + çıktı kaydı hatırlatması
alias nquick='nmap -sV -T3 --top-ports 100'
alias nfull='nmap -sV -T3 -p-'

# tcpdump: -nn unutulmasın
alias td='sudo tcpdump -nn'

# Güvenli rm değil; çöp kutusu alışkanlığı (trash-cli)
alias rm='trash'</code></div></div><br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=272" loading="lazy"  alt="[Resim: attachment.php?aid=272]" class="mycode_img" /></div>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Fonksiyon &gt; uzun alias</span></span><br />
Parametre alan işler için function yazın:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>nlab() {
  # kullanım: nlab 10.10.10.50
  local t="&#36;1"
  [[ -z "&#36;t" ]] &amp;&amp; { echo "hedef yok"; return 1; }
  local out="nmap-&#36;{t//&#92;//_}-&#36;(date +%F-%H%M)"
  nmap -sV -T3 -p 22,80,443,445 -oA "&#36;out" "&#36;t"
  echo "çıktı: &#36;out.*"
}</code></div></div>Bu pattern "çıktıyı kaydetmeyi unuttum" felaketini azaltır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Tehlikeli kısayollar (yapmayın)</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">alias nmap='nmap -T5 -A -p-'</span> — her seferinde agresif; yanlış hedefte felaket<br />
</li>
<li>Hedefi sabit kodlayan alias'lar (eski müşteri IP'si kalabilir)<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">curl | sh</span> benzeri kısayollar<br />
</li>
<li>Parola / API anahtarı içeren export'lar (dotfiles sızarsa biter)<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Onay isteyen sarmalayıcı</span></span><br />
Agresif işler için bilinçli onay:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>nagg() {
  echo "HEDEF: &#36;1  | agresif tarama"
  read -r -p "Emin misin? yaz EVET: " a
  [[ "&#36;a" == "EVET" ]] || { echo "iptal"; return 1; }
  nmap -sV -T4 -A "&#36;1"
}</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ortam değişkenleri</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>export EDITOR=vim
export HISTCONTROL=ignoredups:erasedups
export HISTSIZE=5000</code></div></div>Proxy gereken labda:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># export http_proxy=...  # sadece o oturum</code></div></div>Kalıcı proxy alias'ı yerine direnv veya elle export tercih ederim; unutulmuş proxy daha sonra her curl'ü bozar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">tmux ile birleştirmek</span></span><br />
Alias'lar tek terminalde işe yarar; uzun taramayı tmux'ta koşturun. Benim sık kullandığım:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>alias ta='tmux attach -t'
alias tn='tmux new -s'</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Paylaşılabilir dotfiles disiplini</span></span><ul class="mycode_list"><li>Sırları ayrı tut (pass, gopass, 1Password CLI)<br />
</li>
<li>Makineye özel dosyayı .bashrc.local diye ayırıp git'e koyma<br />
</li>
<li>alias listesini periyodik gözden geçir; kullanılmayanı sil<br />
</li>
</ul>
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>alias
type nquick</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynaklar</span></span><ul class="mycode_list"><li>bash(1) ALIASES ve FUNCTIONS bölümleri<br />
</li>
<li>tmux wiki<br />
</li>
<li>trash-cli<br />
</li>
</ul>
<br />
Sizin en çok zaman kazandıran fonksiyonunuz hangisi? Zararsız olanları yorumda paylaşın; agresif tarama one-liner'larını lütfen paylaşmayın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">direnv ve proje bazlı ortam</span></span><br />
Her müşteri labı için ayrı dizin + .envrc (direnv) kullanıyorum. Proxy, hedef IP, VPN arayüzü o dizine girince yüklenir; çıkınca iner. Global alias'a hedef IP gömmek yerine bu yöntem yanlış müşteriye paket gönderme riskini azaltır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Tamamlama ve güvenlik</span></span><br />
bash-completion nmap için kullanışlıdır ama tab-complete ile yanlış bayrağı seçebilirsiniz. Kritik komutlarda --help satırını bir kez daha okuma alışkanlığı, agresif alias'tan daha çok can kurtarır.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Doğrulama senaryosu</span></span><br />
Bu konuyla ilgili ek bir kontrol: değişikliği yaptıktan sonra en az bir negatif test ve bir pozitif test tanımlayın. Negatif test 'alarm boşyere düşmemeli', pozitif test 'bilinen kötü örneği yakalamalı' der. İkisini de kaydedin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Lab disiplini</span></span><br />
Ortamlar arasında (lab, staging, production) aynı yapılandırmayı kör kopyalamayın. Adresler, sertifikalar ve kimlikler farklıdır. Şablon kullanın, değerleri envanterden doldurun.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Runbook'a taşımak</span></span><br />
İlgili log ve kanıtları olaydan sonra en az kurum politikasının öngördüğü süre kadar saklayın. Disk dolunca en eski güvenlik logunu silmek klasik hatadır; ayrı retention politikası tanımlayın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ölçüm ve alarm sağlığı</span></span><br />
Yanlış pozitifleri susturmak ile körleşmek arasındaki çizgi incedir. Suppress kuralına gerekçe ve gözden geçirme tarihi yazın. Süresi dolunca yeniden değerlendirin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kapsam ve izin hatırlatması</span></span><br />
Bu adımları change ticket olmadan production'da uygulamayın. Küçük görünen bir audit ayarı bile uygulama uyumluluğunu bozabilir. Önce staging, sonra kontrollü yayılım.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yedekleme ve geri dönüş</span></span><br />
Yılda en az iki kez masabaşı tatbikatı yapın: 'bu kontrol kırılırsa kim fark eder?' sorusunu sorunsuz cevaplayabilmelisiniz. Tatbikat notlarını wiki'ye ekleyin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Log saklama süresi</span></span><br />
Araç çıktısını ekran görüntüsü olarak bırakmak yerine makinece okunur formatta (JSON/CSV) arşivleyin. İki yıl sonraki denetimde arama kolaylaşır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yanlış pozitif yönetimi</span></span><br />
Yetki ayrımı: bu kontrolü yapılandıran kişi ile alarmı triaj eden kişi mümkünse farklı olsun. Küçük ekiplerde olmasa bile en azından farklı hesap kullanın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Değişiklik yönetimi ile ilişki</span></span><br />
Sürüüm yükseltmelerinden sonra regresyon testi yapın. 'Aynı config' yeni sürümde farklı varsayılanlara bağlanmış olabilir. Release note'daki breaking change bölümünü okuyun.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Eğitim tatbikatı</span></span><br />
Dış bağımlılık (feed, imza seti, konteyner imajı) için bütünlük doğrulaması yapın. İmzasız feed ile gelen kural seti tedarik zinciri riskidir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Doğrulama senaryosu</span></span><br />
Bu konuyla ilgili ek bir kontrol: değişikliği yaptıktan sonra en az bir negatif test ve bir pozitif test tanımlayın. Negatif test 'alarm boşyere düşmemeli', pozitif test 'bilinen kötü örneği yakalamalı' der. İkisini de kaydedin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Lab disiplini</span></span><br />
Ortamlar arasında (lab, staging, production) aynı yapılandırmayı kör kopyalamayın. Adresler, sertifikalar ve kimlikler farklıdır. Şablon kullanın, değerleri envanterden doldurun.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Runbook'a taşımak</span></span><br />
İlgili log ve kanıtları olaydan sonra en az kurum politikasının öngördüğü süre kadar saklayın. Disk dolunca en eski güvenlik logunu silmek klasik hatadır; ayrı retention politikası tanımlayın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Uygulama notu</span></span><br />
Bu rehberdeki komutları olduğu gibi kopyalamadan önce yolları, arayüz adlarını ve IP adreslerini kendi ortamınıza göre değiştirin. Dağıtım farkları (Debian/Ubuntu/RHEL/Windows sunucu) çıktı biçimini değiştirebilir; man sayfası ve resmi dokümantasyon birincil kaynaktır. Bir adım beklediğiniz sonucu vermezse önce yetki (sudo/Administrator), sonra sürüm, en son da yapılandırma dosyası sırasıyla bakın. Değişiklikleri geri almak için snapshot veya yapılandırma yönetimi (Ansible/Git) kullanın; 'elle bir dokundum' geçmişi denetimde kaybolur. Alarm ve log örneklerini ekip kanalında paylaşırken kişisel veri ve iç IP şemasını maskeleyin.<br />
<span style="font-style: italic;" class="mycode_i">Yasal uyarı: Bu içerik eğitim amaçlıdır. Anlatılanları yalnızca kendi sistemlerinizde veya yazılı izin aldığınız sistemlerde uygulayın. Yetkisiz erişim ve sistemlere müdahale 5237 sayılı TCK'nın 243, 244 ve 245. maddeleri kapsamında suçtur.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=271" target="_blank" title="">100-n09-63766b.png</a> (Dosya Boyutu: 61.94 KB / İndirme Sayısı: 12)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=272" target="_blank" title="">n09-inner.png</a> (Dosya Boyutu: 19.45 KB / İndirme Sayısı: 11)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=271" loading="lazy"  alt="[Resim: attachment.php?aid=271]" class="mycode_img" /></div>
<br />
Merhaba,<br />
<br />
Her pentest lab oturumunda aynı uzun komutları yazmak can sıkıcı. Ama rastgele alias da tehlikeli: yanlış host'a agresif tarama göndermek bir tuş kadar yakın olabilir. Bu yazıda kendi .bashrc notlarımı, güvenli alışkanlıklarla birlikte paylaşıyorum.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Temel: nerede tutmalı?</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># ~/.bashrc veya ~/.bash_aliases
# Değişiklikten sonra:
source ~/.bashrc</code></div></div>Kali/Parrot'ta bazen .zshrc kullanırsınız; shell'inizi bilin. Alias'ları git ile dotfiles reposunda tutuyorum (sır yok; API anahtarı koymayın).<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Güvenli ve faydalı alias örnekleri</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># İnsan okur ls
alias ll='ls -alFh --color=auto'
alias ..='cd ..'

# nmap: varsayılan olarak nazik zamanlama + çıktı kaydı hatırlatması
alias nquick='nmap -sV -T3 --top-ports 100'
alias nfull='nmap -sV -T3 -p-'

# tcpdump: -nn unutulmasın
alias td='sudo tcpdump -nn'

# Güvenli rm değil; çöp kutusu alışkanlığı (trash-cli)
alias rm='trash'</code></div></div><br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=272" loading="lazy"  alt="[Resim: attachment.php?aid=272]" class="mycode_img" /></div>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Fonksiyon &gt; uzun alias</span></span><br />
Parametre alan işler için function yazın:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>nlab() {
  # kullanım: nlab 10.10.10.50
  local t="&#36;1"
  [[ -z "&#36;t" ]] &amp;&amp; { echo "hedef yok"; return 1; }
  local out="nmap-&#36;{t//&#92;//_}-&#36;(date +%F-%H%M)"
  nmap -sV -T3 -p 22,80,443,445 -oA "&#36;out" "&#36;t"
  echo "çıktı: &#36;out.*"
}</code></div></div>Bu pattern "çıktıyı kaydetmeyi unuttum" felaketini azaltır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Tehlikeli kısayollar (yapmayın)</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">alias nmap='nmap -T5 -A -p-'</span> — her seferinde agresif; yanlış hedefte felaket<br />
</li>
<li>Hedefi sabit kodlayan alias'lar (eski müşteri IP'si kalabilir)<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">curl | sh</span> benzeri kısayollar<br />
</li>
<li>Parola / API anahtarı içeren export'lar (dotfiles sızarsa biter)<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Onay isteyen sarmalayıcı</span></span><br />
Agresif işler için bilinçli onay:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>nagg() {
  echo "HEDEF: &#36;1  | agresif tarama"
  read -r -p "Emin misin? yaz EVET: " a
  [[ "&#36;a" == "EVET" ]] || { echo "iptal"; return 1; }
  nmap -sV -T4 -A "&#36;1"
}</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ortam değişkenleri</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>export EDITOR=vim
export HISTCONTROL=ignoredups:erasedups
export HISTSIZE=5000</code></div></div>Proxy gereken labda:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># export http_proxy=...  # sadece o oturum</code></div></div>Kalıcı proxy alias'ı yerine direnv veya elle export tercih ederim; unutulmuş proxy daha sonra her curl'ü bozar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">tmux ile birleştirmek</span></span><br />
Alias'lar tek terminalde işe yarar; uzun taramayı tmux'ta koşturun. Benim sık kullandığım:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>alias ta='tmux attach -t'
alias tn='tmux new -s'</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Paylaşılabilir dotfiles disiplini</span></span><ul class="mycode_list"><li>Sırları ayrı tut (pass, gopass, 1Password CLI)<br />
</li>
<li>Makineye özel dosyayı .bashrc.local diye ayırıp git'e koyma<br />
</li>
<li>alias listesini periyodik gözden geçir; kullanılmayanı sil<br />
</li>
</ul>
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>alias
type nquick</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynaklar</span></span><ul class="mycode_list"><li>bash(1) ALIASES ve FUNCTIONS bölümleri<br />
</li>
<li>tmux wiki<br />
</li>
<li>trash-cli<br />
</li>
</ul>
<br />
Sizin en çok zaman kazandıran fonksiyonunuz hangisi? Zararsız olanları yorumda paylaşın; agresif tarama one-liner'larını lütfen paylaşmayın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">direnv ve proje bazlı ortam</span></span><br />
Her müşteri labı için ayrı dizin + .envrc (direnv) kullanıyorum. Proxy, hedef IP, VPN arayüzü o dizine girince yüklenir; çıkınca iner. Global alias'a hedef IP gömmek yerine bu yöntem yanlış müşteriye paket gönderme riskini azaltır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Tamamlama ve güvenlik</span></span><br />
bash-completion nmap için kullanışlıdır ama tab-complete ile yanlış bayrağı seçebilirsiniz. Kritik komutlarda --help satırını bir kez daha okuma alışkanlığı, agresif alias'tan daha çok can kurtarır.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Doğrulama senaryosu</span></span><br />
Bu konuyla ilgili ek bir kontrol: değişikliği yaptıktan sonra en az bir negatif test ve bir pozitif test tanımlayın. Negatif test 'alarm boşyere düşmemeli', pozitif test 'bilinen kötü örneği yakalamalı' der. İkisini de kaydedin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Lab disiplini</span></span><br />
Ortamlar arasında (lab, staging, production) aynı yapılandırmayı kör kopyalamayın. Adresler, sertifikalar ve kimlikler farklıdır. Şablon kullanın, değerleri envanterden doldurun.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Runbook'a taşımak</span></span><br />
İlgili log ve kanıtları olaydan sonra en az kurum politikasının öngördüğü süre kadar saklayın. Disk dolunca en eski güvenlik logunu silmek klasik hatadır; ayrı retention politikası tanımlayın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ölçüm ve alarm sağlığı</span></span><br />
Yanlış pozitifleri susturmak ile körleşmek arasındaki çizgi incedir. Suppress kuralına gerekçe ve gözden geçirme tarihi yazın. Süresi dolunca yeniden değerlendirin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kapsam ve izin hatırlatması</span></span><br />
Bu adımları change ticket olmadan production'da uygulamayın. Küçük görünen bir audit ayarı bile uygulama uyumluluğunu bozabilir. Önce staging, sonra kontrollü yayılım.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yedekleme ve geri dönüş</span></span><br />
Yılda en az iki kez masabaşı tatbikatı yapın: 'bu kontrol kırılırsa kim fark eder?' sorusunu sorunsuz cevaplayabilmelisiniz. Tatbikat notlarını wiki'ye ekleyin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Log saklama süresi</span></span><br />
Araç çıktısını ekran görüntüsü olarak bırakmak yerine makinece okunur formatta (JSON/CSV) arşivleyin. İki yıl sonraki denetimde arama kolaylaşır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yanlış pozitif yönetimi</span></span><br />
Yetki ayrımı: bu kontrolü yapılandıran kişi ile alarmı triaj eden kişi mümkünse farklı olsun. Küçük ekiplerde olmasa bile en azından farklı hesap kullanın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Değişiklik yönetimi ile ilişki</span></span><br />
Sürüüm yükseltmelerinden sonra regresyon testi yapın. 'Aynı config' yeni sürümde farklı varsayılanlara bağlanmış olabilir. Release note'daki breaking change bölümünü okuyun.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Eğitim tatbikatı</span></span><br />
Dış bağımlılık (feed, imza seti, konteyner imajı) için bütünlük doğrulaması yapın. İmzasız feed ile gelen kural seti tedarik zinciri riskidir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Doğrulama senaryosu</span></span><br />
Bu konuyla ilgili ek bir kontrol: değişikliği yaptıktan sonra en az bir negatif test ve bir pozitif test tanımlayın. Negatif test 'alarm boşyere düşmemeli', pozitif test 'bilinen kötü örneği yakalamalı' der. İkisini de kaydedin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Lab disiplini</span></span><br />
Ortamlar arasında (lab, staging, production) aynı yapılandırmayı kör kopyalamayın. Adresler, sertifikalar ve kimlikler farklıdır. Şablon kullanın, değerleri envanterden doldurun.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Runbook'a taşımak</span></span><br />
İlgili log ve kanıtları olaydan sonra en az kurum politikasının öngördüğü süre kadar saklayın. Disk dolunca en eski güvenlik logunu silmek klasik hatadır; ayrı retention politikası tanımlayın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Uygulama notu</span></span><br />
Bu rehberdeki komutları olduğu gibi kopyalamadan önce yolları, arayüz adlarını ve IP adreslerini kendi ortamınıza göre değiştirin. Dağıtım farkları (Debian/Ubuntu/RHEL/Windows sunucu) çıktı biçimini değiştirebilir; man sayfası ve resmi dokümantasyon birincil kaynaktır. Bir adım beklediğiniz sonucu vermezse önce yetki (sudo/Administrator), sonra sürüm, en son da yapılandırma dosyası sırasıyla bakın. Değişiklikleri geri almak için snapshot veya yapılandırma yönetimi (Ansible/Git) kullanın; 'elle bir dokundum' geçmişi denetimde kaybolur. Alarm ve log örneklerini ekip kanalında paylaşırken kişisel veri ve iç IP şemasını maskeleyin.<br />
<span style="font-style: italic;" class="mycode_i">Yasal uyarı: Bu içerik eğitim amaçlıdır. Anlatılanları yalnızca kendi sistemlerinizde veya yazılı izin aldığınız sistemlerde uygulayın. Yetkisiz erişim ve sistemlere müdahale 5237 sayılı TCK'nın 243, 244 ve 245. maddeleri kapsamında suçtur.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=271" target="_blank" title="">100-n09-63766b.png</a> (Dosya Boyutu: 61.94 KB / İndirme Sayısı: 12)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=272" target="_blank" title="">n09-inner.png</a> (Dosya Boyutu: 19.45 KB / İndirme Sayısı: 11)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[PowerShell ile Gunluk Guvenlik Kontrolu: Otomatik Tarama Scripti]]></title>
			<link>https://www.turkteam.org/konu-powershell-ile-gunluk-guvenlik-kontrolu-otomatik-tarama-scripti.html</link>
			<pubDate>Sat, 17 Oct 2026 11:24:09 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.turkteam.org/member.php?action=profile&uid=4">KulTigin</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.turkteam.org/konu-powershell-ile-gunluk-guvenlik-kontrolu-otomatik-tarama-scripti.html</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=93" loading="lazy"  alt="[Resim: attachment.php?aid=93]" class="mycode_img" /></div>
<br />
Herkese selam,<br />
<br />
Windows makinelerinde her sabah elle kontrol ettigim birkac sey vardi: yeni acilan kullanicilar, dinlenen portlar, kritik servislerin durumu. Bunlari tek bir PowerShell scriptine topladim, her sabah otomatik calisiyor. Paylasayim dedim, belki isinize yarar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatilacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>Neden otomasyon?<br />
</li>
<li>Kontrol scripti<br />
</li>
<li>Zamanlanmis gorev olarak kurma<br />
</li>
<li>Ciktinin degerlendirilmesi<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1) Neden Otomasyon?</span></span><br />
Elle kontrol atlanir, unutulur, insana bagli olur. Ayni islemi script yaparsa her gun ayni gozle bakilir, cikti kaydedilir, karsilastirilabilir. Basit ama etkili.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2) Kontrol Scripti</span></span><br />
Asagidaki script temel bir durum fotografi cikarir:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>&#36;rapor = "C:&#92;secaudit&#92;rapor_&#36;(Get-Date -Format yyyyMMdd).txt"
New-Item -ItemType Directory -Force -Path C:&#92;secaudit | Out-Null

"=== Aktif Yerel Kullanicilar ===" | Out-File &#36;rapor
Get-LocalUser | Where-Object Enabled |
    Select-Object Name, LastLogon | Out-File &#36;rapor -Append

"`n=== Dinlenen TCP Portlari ===" | Out-File &#36;rapor -Append
Get-NetTCPConnection -State Listen |
    Select-Object LocalAddress, LocalPort, OwningProcess |
    Sort-Object LocalPort | Out-File &#36;rapor -Append

"`n=== Kritik Servisler ===" | Out-File &#36;rapor -Append
Get-Service -Name WinDefend, EventLog, Wuauserv |
    Select-Object Name, Status | Out-File &#36;rapor -Append

"`n=== Son 10 Guvenlik Olayi (4625 - basarisiz giris) ===" | Out-File &#36;rapor -Append
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 10 -ErrorAction SilentlyContinue |
    Select-Object TimeCreated, Message | Out-File &#36;rapor -Append</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3) Zamanlanmis Gorev</span></span><br />
Her sabah 08:00'de calistirmak icin:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>&#36;act = New-ScheduledTaskAction -Execute "powershell.exe" `
  -Argument "-File C:&#92;secaudit&#92;gunluk.ps1"
&#36;trg = New-ScheduledTaskTrigger -Daily -At 8am
Register-ScheduledTask -TaskName "GunlukGuvenlikKontrol" `
  -Action &#36;act -Trigger &#36;trg -RunLevel Highest</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4) Cikti Degerlendirme</span></span><br />
Raporlari gun gun karsilastirin. Dun olmayan bir kullanici bugun varsa, beklenmedik bir port dinleniyorsa veya 4625 (basarisiz giris) olaylari aniden artmissa, bu incelemeye deger. Script tespit yapmaz, gorunurluk saglar; yorumu siz yaparsiniz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynaklar</span></span><ul class="mycode_list"><li><a href="https://learn.microsoft.com/en-us/powershell/" target="_blank" rel="noopener" class="mycode_url">Microsoft PowerShell Docs</a><br />
</li>
<li><a href="https://learn.microsoft.com/en-us/powershell/module/scheduledtasks/" target="_blank" rel="noopener" class="mycode_url">ScheduledTasks modulu</a><br />
</li>
</ul>
<br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite><span style="font-weight: bold;" class="mycode_b">Yasal not:</span> Scripti yalnizca yonettiginiz bilgisayarlarda calistirin.</blockquote>
<br />
Siz gunluk kontrol scriptinize baska ne eklerdiniz?<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=93" target="_blank" title="">kultigin-k03.png</a> (Dosya Boyutu: 83.5 KB / İndirme Sayısı: 9)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=93" loading="lazy"  alt="[Resim: attachment.php?aid=93]" class="mycode_img" /></div>
<br />
Herkese selam,<br />
<br />
Windows makinelerinde her sabah elle kontrol ettigim birkac sey vardi: yeni acilan kullanicilar, dinlenen portlar, kritik servislerin durumu. Bunlari tek bir PowerShell scriptine topladim, her sabah otomatik calisiyor. Paylasayim dedim, belki isinize yarar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatilacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>Neden otomasyon?<br />
</li>
<li>Kontrol scripti<br />
</li>
<li>Zamanlanmis gorev olarak kurma<br />
</li>
<li>Ciktinin degerlendirilmesi<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1) Neden Otomasyon?</span></span><br />
Elle kontrol atlanir, unutulur, insana bagli olur. Ayni islemi script yaparsa her gun ayni gozle bakilir, cikti kaydedilir, karsilastirilabilir. Basit ama etkili.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2) Kontrol Scripti</span></span><br />
Asagidaki script temel bir durum fotografi cikarir:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>&#36;rapor = "C:&#92;secaudit&#92;rapor_&#36;(Get-Date -Format yyyyMMdd).txt"
New-Item -ItemType Directory -Force -Path C:&#92;secaudit | Out-Null

"=== Aktif Yerel Kullanicilar ===" | Out-File &#36;rapor
Get-LocalUser | Where-Object Enabled |
    Select-Object Name, LastLogon | Out-File &#36;rapor -Append

"`n=== Dinlenen TCP Portlari ===" | Out-File &#36;rapor -Append
Get-NetTCPConnection -State Listen |
    Select-Object LocalAddress, LocalPort, OwningProcess |
    Sort-Object LocalPort | Out-File &#36;rapor -Append

"`n=== Kritik Servisler ===" | Out-File &#36;rapor -Append
Get-Service -Name WinDefend, EventLog, Wuauserv |
    Select-Object Name, Status | Out-File &#36;rapor -Append

"`n=== Son 10 Guvenlik Olayi (4625 - basarisiz giris) ===" | Out-File &#36;rapor -Append
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 10 -ErrorAction SilentlyContinue |
    Select-Object TimeCreated, Message | Out-File &#36;rapor -Append</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3) Zamanlanmis Gorev</span></span><br />
Her sabah 08:00'de calistirmak icin:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>&#36;act = New-ScheduledTaskAction -Execute "powershell.exe" `
  -Argument "-File C:&#92;secaudit&#92;gunluk.ps1"
&#36;trg = New-ScheduledTaskTrigger -Daily -At 8am
Register-ScheduledTask -TaskName "GunlukGuvenlikKontrol" `
  -Action &#36;act -Trigger &#36;trg -RunLevel Highest</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4) Cikti Degerlendirme</span></span><br />
Raporlari gun gun karsilastirin. Dun olmayan bir kullanici bugun varsa, beklenmedik bir port dinleniyorsa veya 4625 (basarisiz giris) olaylari aniden artmissa, bu incelemeye deger. Script tespit yapmaz, gorunurluk saglar; yorumu siz yaparsiniz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynaklar</span></span><ul class="mycode_list"><li><a href="https://learn.microsoft.com/en-us/powershell/" target="_blank" rel="noopener" class="mycode_url">Microsoft PowerShell Docs</a><br />
</li>
<li><a href="https://learn.microsoft.com/en-us/powershell/module/scheduledtasks/" target="_blank" rel="noopener" class="mycode_url">ScheduledTasks modulu</a><br />
</li>
</ul>
<br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite><span style="font-weight: bold;" class="mycode_b">Yasal not:</span> Scripti yalnizca yonettiginiz bilgisayarlarda calistirin.</blockquote>
<br />
Siz gunluk kontrol scriptinize baska ne eklerdiniz?<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=93" target="_blank" title="">kultigin-k03.png</a> (Dosya Boyutu: 83.5 KB / İndirme Sayısı: 9)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Bash ile Log Temizliği ve Rotasyon: find, xargs, logrotate Notları]]></title>
			<link>https://www.turkteam.org/konu-bash-ile-log-temizligi-ve-rotasyon-find-xargs-logrotate-notlari.html</link>
			<pubDate>Fri, 16 Oct 2026 11:21:20 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.turkteam.org/member.php?action=profile&uid=3">BilgeKagan</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.turkteam.org/konu-bash-ile-log-temizligi-ve-rotasyon-find-xargs-logrotate-notlari.html</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=34" loading="lazy"  alt="[Resim: attachment.php?aid=34]" class="mycode_img" /></div>
<br />
Selamlar,<br />
<br />
Lab ve küçük VPS'lerde loglar hızla şişiyor. journald'yi sınırlamak bir çözüm; klasik metin loglar için de Bash ile basit bakım şart. Bu konuda kendi cron'umda kullandığım güvenli kalıpları yazıyorum.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>find ile eski log bulma<br />
</li>
<li>xargs tuzakları (boşluklu dosya adları)<br />
</li>
<li>Sıkıştırma ve silme<br />
</li>
<li>logrotate'a bırakmak daha doğru mu?<br />
</li>
<li>Örnek cron<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1) find Temelleri</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Son 1 günde değişen .log dosyaları
find /var/log -type f -name '*.log' -mtime -1

# 14 günden eski, boyutu 10M üstü
find /var/log -type f -name '*.log' -mtime +14 -size +10M -ls</code></div></div><br />
[-mtime +14] "14 tam günden eski", [-size +10M] "10 mebibayttan büyük" demek.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2) xargs ve Güvenli Silme</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># YANLIŞ: boşluklu isimde kırılır
find /var/log -name '*.log' -mtime +30 | xargs rm

# DOĞRU: null ayracı
find /var/log -type f -name '*.log' -mtime +30 -print0 | xargs -0 rm -v

# Daha da iyisi: find -delete (aynı süreçte)
find /var/log -type f -name '*.log' -mtime +30 -delete</code></div></div><br />
Silmeden önce [-ls] ile listeleyin. Üretimde körlemesine rm kullanmayın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3) Sıkıştırma</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>find /var/log -type f -name '*.log' -mtime +2 ! -name '*.gz' -print0 | xargs -0 gzip -9</code></div></div><br />
gzip orijinali siler; .gz uzantılı dosyayı tekrar sıkıştırmamak için [! -name '*.gz'] şart.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4) logrotate Tercih Edin</span></span><br />
Debian/Ubuntu'da /etc/logrotate.d/ altında servis bazlı kurallar vardır. Kendi uygulamanız için:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>/var/log/benimapp/*.log {
    weekly
    rotate 8
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}</code></div></div><br />
Bash one-liner'lar acil temizlik içindir; uzun vadede logrotate + journald SystemMaxUse.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5) Örnek Cron</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Her pazar 04:30 - 30 günden eski uygulama loglarını sıkıştır
30 4 * * 0 find /var/log/benimapp -type f -name '*.log' -mtime +30 -print0 | xargs -0 gzip -9</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynaklar</span></span><ul class="mycode_list"><li><a href="https://man7.org/linux/man-pages/man1/find.1.html" target="_blank" rel="noopener" class="mycode_url">find(1) man page</a><br />
</li>
<li><a href="https://manpages.debian.org/bookworm/logrotate/logrotate.8.en.html" target="_blank" rel="noopener" class="mycode_url">logrotate(8)</a><br />
</li>
</ul>
<br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite>Yalnızca kendi sistemlerinizde kullanın.</blockquote>
<br />
Kapak: özgün TurkTeam görseli.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=34" target="_blank" title="">bilgekagan-06.png</a> (Dosya Boyutu: 89.03 KB / İndirme Sayısı: 11)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=34" loading="lazy"  alt="[Resim: attachment.php?aid=34]" class="mycode_img" /></div>
<br />
Selamlar,<br />
<br />
Lab ve küçük VPS'lerde loglar hızla şişiyor. journald'yi sınırlamak bir çözüm; klasik metin loglar için de Bash ile basit bakım şart. Bu konuda kendi cron'umda kullandığım güvenli kalıpları yazıyorum.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>find ile eski log bulma<br />
</li>
<li>xargs tuzakları (boşluklu dosya adları)<br />
</li>
<li>Sıkıştırma ve silme<br />
</li>
<li>logrotate'a bırakmak daha doğru mu?<br />
</li>
<li>Örnek cron<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1) find Temelleri</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Son 1 günde değişen .log dosyaları
find /var/log -type f -name '*.log' -mtime -1

# 14 günden eski, boyutu 10M üstü
find /var/log -type f -name '*.log' -mtime +14 -size +10M -ls</code></div></div><br />
[-mtime +14] "14 tam günden eski", [-size +10M] "10 mebibayttan büyük" demek.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2) xargs ve Güvenli Silme</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># YANLIŞ: boşluklu isimde kırılır
find /var/log -name '*.log' -mtime +30 | xargs rm

# DOĞRU: null ayracı
find /var/log -type f -name '*.log' -mtime +30 -print0 | xargs -0 rm -v

# Daha da iyisi: find -delete (aynı süreçte)
find /var/log -type f -name '*.log' -mtime +30 -delete</code></div></div><br />
Silmeden önce [-ls] ile listeleyin. Üretimde körlemesine rm kullanmayın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3) Sıkıştırma</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>find /var/log -type f -name '*.log' -mtime +2 ! -name '*.gz' -print0 | xargs -0 gzip -9</code></div></div><br />
gzip orijinali siler; .gz uzantılı dosyayı tekrar sıkıştırmamak için [! -name '*.gz'] şart.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4) logrotate Tercih Edin</span></span><br />
Debian/Ubuntu'da /etc/logrotate.d/ altında servis bazlı kurallar vardır. Kendi uygulamanız için:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>/var/log/benimapp/*.log {
    weekly
    rotate 8
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}</code></div></div><br />
Bash one-liner'lar acil temizlik içindir; uzun vadede logrotate + journald SystemMaxUse.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5) Örnek Cron</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Her pazar 04:30 - 30 günden eski uygulama loglarını sıkıştır
30 4 * * 0 find /var/log/benimapp -type f -name '*.log' -mtime +30 -print0 | xargs -0 gzip -9</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynaklar</span></span><ul class="mycode_list"><li><a href="https://man7.org/linux/man-pages/man1/find.1.html" target="_blank" rel="noopener" class="mycode_url">find(1) man page</a><br />
</li>
<li><a href="https://manpages.debian.org/bookworm/logrotate/logrotate.8.en.html" target="_blank" rel="noopener" class="mycode_url">logrotate(8)</a><br />
</li>
</ul>
<br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite>Yalnızca kendi sistemlerinizde kullanın.</blockquote>
<br />
Kapak: özgün TurkTeam görseli.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=34" target="_blank" title="">bilgekagan-06.png</a> (Dosya Boyutu: 89.03 KB / İndirme Sayısı: 11)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
	</channel>
</rss>