<?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 - Linux Genel]]></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:37 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Lynis ile Linux Sunucu Sertleştirme Denetimi: Skorunuzu Nasıl Yükseltirsiniz?]]></title>
			<link>https://www.turkteam.org/konu-lynis-ile-linux-sunucu-sertlestirme-denetimi-skorunuzu-nasil-yukseltirsiniz.html</link>
			<pubDate>Sun, 25 Oct 2026 11:50: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-lynis-ile-linux-sunucu-sertlestirme-denetimi-skorunuzu-nasil-yukseltirsiniz.html</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=436" loading="lazy"  alt="[Resim: attachment.php?aid=436]" class="mycode_img" /></div>
<br />
Selamlar,<br />
<br />
Bir Linux sunucusunu internete açmadan önce "ne kadar güvenli?" sorusuna somut yanıt vermek zor olabilir. Açık kaynak güvenlik denetim aracı <span style="font-weight: bold;" class="mycode_b">Lynis</span>, sisteminizi onlarca kontrol kategorisinde tarayıp bir sertleştirme indeksi (hardening index) ve uygulanabilir öneriler verir. Bu rehberde kurulum, denetim ve önerilere göre sertleştirmeyi adım adım ele alıyorum. (Yalnızca yetkili olduğunuz sistemlerde kullanın.)<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>Lynis nedir?<br />
</li>
<li>Kurulum<br />
</li>
<li>İlk denetim<br />
</li>
<li>Çıktıyı okumak<br />
</li>
<li>Sertleştirme örnekleri<br />
</li>
<li>Periyodik çalıştırma<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. Lynis nedir?</span></span><br />
Lynis, CISOfy tarafından geliştirilen, kabuk (shell) ile yazılmış, agentsiz bir güvenlik denetim aracıdır. Sistem sertleştirme, uyumluluk testi ve zafiyet taramasına yardımcı olur. Sadece kontrol eder, varsayılan olarak <span style="font-weight: bold;" class="mycode_b">değişiklik yapmaz</span>.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Kurulum</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Debian/Ubuntu
sudo apt install lynis
# RHEL/Fedora
sudo dnf install lynis
# Kaynaktan (en güncel)
git clone https://github.com/CISOfy/lynis
cd lynis &amp;&amp; ./lynis audit system</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. İlk denetim</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo lynis audit system</code></div></div>Lynis; önyükleme, kernel, bellek, kimlik doğrulama, dosya sistemleri, SSH, güvenlik duvarı, loglama gibi onlarca kategoriyi tarar. Sonunda bir özet ve <span style="font-weight: bold;" class="mycode_b">Hardening index</span> gösterir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Çıktıyı okumak</span></span><br />
Çıktıda üç ana işaret vardır:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Warnings (uyarılar):</span> öncelik verilmesi gereken bulgular.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Suggestions (öneriler):</span> iyileştirme fırsatları.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Hardening index:</span> 0-100 arası genel skor.<br />
</li>
</ul>
Detaylı log:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo cat /var/log/lynis.log
# Rapor verisi:
sudo cat /var/log/lynis-report.dat</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Sertleştirme örnekleri</span></span><br />
Lynis'in sık önerdiği tipik adımlar:<br />
<ol type="1" class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">SSH sertleştirme:</span> <span style="font-style: italic;" class="mycode_i">/etc/ssh/sshd_config</span> içinde PermitRootLogin no, PasswordAuthentication no (anahtar tabanlı giriş), Protocol 2.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Kernel parametreleri:</span> <span style="font-style: italic;" class="mycode_i">/etc/sysctl.conf</span> ile ağ ve bellek korumaları.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Gereksiz servisleri kapatma:</span> kullanılmayan daemon'ları devre dışı bırakın.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Güvenlik duvarı:</span> varsayılan reddet politikasıyla ufw/nftables yapılandırın.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Denetim izleme:</span> auditd ve dosya bütünlük kontrolü (AIDE) kurun.<br />
</li>
</ol>
Her öneriye kör körüne uymayın; değişikliği <span style="font-weight: bold;" class="mycode_b">anlayarak</span> ve test ortamında doğrulayarak uygulayın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. Periyodik çalıştırma</span></span><br />
Sertleştirme tek seferlik değil, sürekli bir süreç. cron ile haftalık denetim:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>0 3 * * 0 /usr/sbin/lynis audit system --quiet &gt;&gt; /var/log/lynis-weekly.log 2&gt;&amp;1</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
Lynis, "sunucum ne kadar güvenli?" sorusuna ölçülebilir bir yanıt ve somut yapılacaklar listesi verir. Skoru yükseltmek amaç değil, araçtır; asıl hedef anlaşılır ve sürdürülebilir bir sertleştirme. Sunucularınızda en son ne zaman denetim çalıştırdınız?<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://github.com/CISOfy/lynis" target="_blank" rel="noopener" class="mycode_url">https://github.com/CISOfy/lynis</a><br />
</li>
<li><a href="https://cisofy.com/documentation/lynis/" target="_blank" rel="noopener" class="mycode_url">https://cisofy.com/documentation/lynis/</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=436" target="_blank" title="">17-t17-lynis-linux-sertlestirme.png</a> (Dosya Boyutu: 109.13 KB / İndirme Sayısı: 2)
<!-- 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=436" loading="lazy"  alt="[Resim: attachment.php?aid=436]" class="mycode_img" /></div>
<br />
Selamlar,<br />
<br />
Bir Linux sunucusunu internete açmadan önce "ne kadar güvenli?" sorusuna somut yanıt vermek zor olabilir. Açık kaynak güvenlik denetim aracı <span style="font-weight: bold;" class="mycode_b">Lynis</span>, sisteminizi onlarca kontrol kategorisinde tarayıp bir sertleştirme indeksi (hardening index) ve uygulanabilir öneriler verir. Bu rehberde kurulum, denetim ve önerilere göre sertleştirmeyi adım adım ele alıyorum. (Yalnızca yetkili olduğunuz sistemlerde kullanın.)<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>Lynis nedir?<br />
</li>
<li>Kurulum<br />
</li>
<li>İlk denetim<br />
</li>
<li>Çıktıyı okumak<br />
</li>
<li>Sertleştirme örnekleri<br />
</li>
<li>Periyodik çalıştırma<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. Lynis nedir?</span></span><br />
Lynis, CISOfy tarafından geliştirilen, kabuk (shell) ile yazılmış, agentsiz bir güvenlik denetim aracıdır. Sistem sertleştirme, uyumluluk testi ve zafiyet taramasına yardımcı olur. Sadece kontrol eder, varsayılan olarak <span style="font-weight: bold;" class="mycode_b">değişiklik yapmaz</span>.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Kurulum</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Debian/Ubuntu
sudo apt install lynis
# RHEL/Fedora
sudo dnf install lynis
# Kaynaktan (en güncel)
git clone https://github.com/CISOfy/lynis
cd lynis &amp;&amp; ./lynis audit system</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. İlk denetim</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo lynis audit system</code></div></div>Lynis; önyükleme, kernel, bellek, kimlik doğrulama, dosya sistemleri, SSH, güvenlik duvarı, loglama gibi onlarca kategoriyi tarar. Sonunda bir özet ve <span style="font-weight: bold;" class="mycode_b">Hardening index</span> gösterir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Çıktıyı okumak</span></span><br />
Çıktıda üç ana işaret vardır:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Warnings (uyarılar):</span> öncelik verilmesi gereken bulgular.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Suggestions (öneriler):</span> iyileştirme fırsatları.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Hardening index:</span> 0-100 arası genel skor.<br />
</li>
</ul>
Detaylı log:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo cat /var/log/lynis.log
# Rapor verisi:
sudo cat /var/log/lynis-report.dat</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Sertleştirme örnekleri</span></span><br />
Lynis'in sık önerdiği tipik adımlar:<br />
<ol type="1" class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">SSH sertleştirme:</span> <span style="font-style: italic;" class="mycode_i">/etc/ssh/sshd_config</span> içinde PermitRootLogin no, PasswordAuthentication no (anahtar tabanlı giriş), Protocol 2.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Kernel parametreleri:</span> <span style="font-style: italic;" class="mycode_i">/etc/sysctl.conf</span> ile ağ ve bellek korumaları.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Gereksiz servisleri kapatma:</span> kullanılmayan daemon'ları devre dışı bırakın.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Güvenlik duvarı:</span> varsayılan reddet politikasıyla ufw/nftables yapılandırın.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Denetim izleme:</span> auditd ve dosya bütünlük kontrolü (AIDE) kurun.<br />
</li>
</ol>
Her öneriye kör körüne uymayın; değişikliği <span style="font-weight: bold;" class="mycode_b">anlayarak</span> ve test ortamında doğrulayarak uygulayın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. Periyodik çalıştırma</span></span><br />
Sertleştirme tek seferlik değil, sürekli bir süreç. cron ile haftalık denetim:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>0 3 * * 0 /usr/sbin/lynis audit system --quiet &gt;&gt; /var/log/lynis-weekly.log 2&gt;&amp;1</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
Lynis, "sunucum ne kadar güvenli?" sorusuna ölçülebilir bir yanıt ve somut yapılacaklar listesi verir. Skoru yükseltmek amaç değil, araçtır; asıl hedef anlaşılır ve sürdürülebilir bir sertleştirme. Sunucularınızda en son ne zaman denetim çalıştırdınız?<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://github.com/CISOfy/lynis" target="_blank" rel="noopener" class="mycode_url">https://github.com/CISOfy/lynis</a><br />
</li>
<li><a href="https://cisofy.com/documentation/lynis/" target="_blank" rel="noopener" class="mycode_url">https://cisofy.com/documentation/lynis/</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=436" target="_blank" title="">17-t17-lynis-linux-sertlestirme.png</a> (Dosya Boyutu: 109.13 KB / İndirme Sayısı: 2)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[SSH Host Anahtarı Değişti Uyarısı: Ne Zaman MITM, Ne Zaman Meşru?]]></title>
			<link>https://www.turkteam.org/konu-ssh-host-anahtari-degisti-uyarisi-ne-zaman-mitm-ne-zaman-mesru.html</link>
			<pubDate>Thu, 22 Oct 2026 11:28:47 +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-ssh-host-anahtari-degisti-uyarisi-ne-zaman-mitm-ne-zaman-mesru.html</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=352" loading="lazy"  alt="[Resim: attachment.php?aid=352]" class="mycode_img" /></div>
<br />
Selamlar,<br />
<br />
Tor çıkış rölelerinin SSH'yi yönlendirdiği Ekim 2026 olayında kurbanların gördüğü ilk şey klasik OpenSSH uyarısıydı: REMOTE HOST IDENTIFICATION HAS CHANGED. Birçok kişi bu uyarıyı "sunucu yeniden kurulmuş olmalı" diye yok sayıyor. Bu yazıda uyarının ne anlama geldiğini, OpenSSH yapılandırma seçeneklerini ve kendi labınızda güvenli bir alışkanlık nasıl kurulacağını 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>Uyarı teknik olarak ne diyor?<br />
</li>
<li>StrictHostKeyChecking seçenekleri<br />
</li>
<li>Meşru değişim ile MITM'i ayırt etmek<br />
</li>
<li>Lab alıştırması<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Uyarı ne diyor?</span></span><br />
OpenSSH, bağlandığınız sunucunun sunduğu host anahtarını ~/.ssh/known_hosts (ve sistem genelindeki known_hosts) ile karşılaştırır. Anahtar değiştiyse iki olasılık vardır: sunucu gerçekten yeniden kurulmuş / anahtar döndürülmüştür, ya da aradaki biri size başka bir sunucu sunuyordur (MITM). Tor olayında ikinci senaryo gerçekleşiyordu: çıkış rölesi sizi saldırganın ara sunucusuna yönlendiriyordu ve o sunucu farklı bir host anahtarı sunuyordu.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">StrictHostKeyChecking</span></span><br />
OpenBSD ssh_config kılavuzuna göre:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">yes:</span> Yeni host anahtarlarını otomatik eklemez; değişen anahtarlara bağlanmayı reddeder. En yüksek MITM koruması.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">accept-new:</span> Yeni anahtarları otomatik ekler ama değişen anahtarlara izin vermez.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">ask (varsayılan):</span> Yeni anahtarları kullanıcı onayından sonra ekler; değişen anahtarlara bağlanmayı reddeder.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">no / off:</span> Yeni anahtarları otomatik ekler ve değişen anahtarlara da (bazı kısıtlarla) izin verir. Kolaydır, tehlikelidir.<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Meşru değişim ile MITM'i ayırt etmek</span></span><br />
<ol type="1" class="mycode_list"><li>Uyarıyı görünce bağlantıyı kesin; "yes" yazmayın.<br />
</li>
<li>Sunucu sahibine / panelinize / out-of-band bir kanala sorun: Anahtar yakın zamanda döndürüldü mü?<br />
</li>
<li>Beklenen parmak izini güvenli bir kaynaktan alın (bulut konsolu, önceki yedek, fiziksel konsol).<br />
</li>
<li>Eşleşiyorsa known_hosts'taki eski satırı güncelleyin. Eşleşmiyorsa MITM veya yanlış sunucu varsayın.<br />
</li>
</ol>
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Parmak izi hesaplama (kendi makinenizden)
ssh-keyscan -t ed25519,ecdsa,rsa hedef.ornek 2&gt;/dev/null | ssh-keygen -lf -
# known_hosts'tan eski kaydi silmek (yalnizca meşru degisim dogrulandiktan sonra)
ssh-keygen -R hedef.ornek
# Guvenli istemci varsayilanlari
cat &gt;&gt; ~/.ssh/config &lt;&lt;'E'
Host *
  StrictHostKeyChecking accept-new
  UpdateHostKeys yes
  PasswordAuthentication no
  HashKnownHosts yes
E</code></div></div>UpdateHostKeys=yes, kimlik doğrulama tamamlandıktan sonra sunucunun gönderdiği ek host anahtarlarını known_hosts'a eklemeye izin verir (OpenSSH 6.8+ sunucularda); anahtar rotasyonunu yumuşatır ama ilk güven ilişkisinin sağlam olmasını gerektirir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Lab alıştırması</span></span><br />
İki VM'niz varsa: B'nin host anahtarını yeniden oluşturun (ssh-keygen -A), A'dan bağlanın, uyarıyı görün, B'nin gerçek parmak izini konsoldan doğrulayın, sonra known_hosts'u güncelleyin. Bu alıştırmayı bir kez bilinçli yapmak, üretimde uyarıyı refleksle yok saymayı azaltır.<br />
<br />
Sizin ekipte host anahtarı değişince prosedür nedir? Yazılı bir runbook'unuz var mı?<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://man.openbsd.org/ssh_config" target="_blank" rel="noopener" class="mycode_url">https://man.openbsd.org/ssh_config</a><br />
</li>
<li><a href="https://kaba.cx/posts/20261020_Tor/" target="_blank" rel="noopener" class="mycode_url">https://kaba.cx/posts/20261020_Tor/</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=352" target="_blank" title="">13-b03-ssh-hostkey.png</a> (Dosya Boyutu: 115.16 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=352" loading="lazy"  alt="[Resim: attachment.php?aid=352]" class="mycode_img" /></div>
<br />
Selamlar,<br />
<br />
Tor çıkış rölelerinin SSH'yi yönlendirdiği Ekim 2026 olayında kurbanların gördüğü ilk şey klasik OpenSSH uyarısıydı: REMOTE HOST IDENTIFICATION HAS CHANGED. Birçok kişi bu uyarıyı "sunucu yeniden kurulmuş olmalı" diye yok sayıyor. Bu yazıda uyarının ne anlama geldiğini, OpenSSH yapılandırma seçeneklerini ve kendi labınızda güvenli bir alışkanlık nasıl kurulacağını 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>Uyarı teknik olarak ne diyor?<br />
</li>
<li>StrictHostKeyChecking seçenekleri<br />
</li>
<li>Meşru değişim ile MITM'i ayırt etmek<br />
</li>
<li>Lab alıştırması<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Uyarı ne diyor?</span></span><br />
OpenSSH, bağlandığınız sunucunun sunduğu host anahtarını ~/.ssh/known_hosts (ve sistem genelindeki known_hosts) ile karşılaştırır. Anahtar değiştiyse iki olasılık vardır: sunucu gerçekten yeniden kurulmuş / anahtar döndürülmüştür, ya da aradaki biri size başka bir sunucu sunuyordur (MITM). Tor olayında ikinci senaryo gerçekleşiyordu: çıkış rölesi sizi saldırganın ara sunucusuna yönlendiriyordu ve o sunucu farklı bir host anahtarı sunuyordu.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">StrictHostKeyChecking</span></span><br />
OpenBSD ssh_config kılavuzuna göre:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">yes:</span> Yeni host anahtarlarını otomatik eklemez; değişen anahtarlara bağlanmayı reddeder. En yüksek MITM koruması.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">accept-new:</span> Yeni anahtarları otomatik ekler ama değişen anahtarlara izin vermez.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">ask (varsayılan):</span> Yeni anahtarları kullanıcı onayından sonra ekler; değişen anahtarlara bağlanmayı reddeder.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">no / off:</span> Yeni anahtarları otomatik ekler ve değişen anahtarlara da (bazı kısıtlarla) izin verir. Kolaydır, tehlikelidir.<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Meşru değişim ile MITM'i ayırt etmek</span></span><br />
<ol type="1" class="mycode_list"><li>Uyarıyı görünce bağlantıyı kesin; "yes" yazmayın.<br />
</li>
<li>Sunucu sahibine / panelinize / out-of-band bir kanala sorun: Anahtar yakın zamanda döndürüldü mü?<br />
</li>
<li>Beklenen parmak izini güvenli bir kaynaktan alın (bulut konsolu, önceki yedek, fiziksel konsol).<br />
</li>
<li>Eşleşiyorsa known_hosts'taki eski satırı güncelleyin. Eşleşmiyorsa MITM veya yanlış sunucu varsayın.<br />
</li>
</ol>
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Parmak izi hesaplama (kendi makinenizden)
ssh-keyscan -t ed25519,ecdsa,rsa hedef.ornek 2&gt;/dev/null | ssh-keygen -lf -
# known_hosts'tan eski kaydi silmek (yalnizca meşru degisim dogrulandiktan sonra)
ssh-keygen -R hedef.ornek
# Guvenli istemci varsayilanlari
cat &gt;&gt; ~/.ssh/config &lt;&lt;'E'
Host *
  StrictHostKeyChecking accept-new
  UpdateHostKeys yes
  PasswordAuthentication no
  HashKnownHosts yes
E</code></div></div>UpdateHostKeys=yes, kimlik doğrulama tamamlandıktan sonra sunucunun gönderdiği ek host anahtarlarını known_hosts'a eklemeye izin verir (OpenSSH 6.8+ sunucularda); anahtar rotasyonunu yumuşatır ama ilk güven ilişkisinin sağlam olmasını gerektirir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Lab alıştırması</span></span><br />
İki VM'niz varsa: B'nin host anahtarını yeniden oluşturun (ssh-keygen -A), A'dan bağlanın, uyarıyı görün, B'nin gerçek parmak izini konsoldan doğrulayın, sonra known_hosts'u güncelleyin. Bu alıştırmayı bir kez bilinçli yapmak, üretimde uyarıyı refleksle yok saymayı azaltır.<br />
<br />
Sizin ekipte host anahtarı değişince prosedür nedir? Yazılı bir runbook'unuz var mı?<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://man.openbsd.org/ssh_config" target="_blank" rel="noopener" class="mycode_url">https://man.openbsd.org/ssh_config</a><br />
</li>
<li><a href="https://kaba.cx/posts/20261020_Tor/" target="_blank" rel="noopener" class="mycode_url">https://kaba.cx/posts/20261020_Tor/</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=352" target="_blank" title="">13-b03-ssh-hostkey.png</a> (Dosya Boyutu: 115.16 KB / İndirme Sayısı: 9)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[systemd Timer ile Güvenlik Görevleri: OnCalendar, Persistent ve Jitter]]></title>
			<link>https://www.turkteam.org/konu-systemd-timer-ile-guvenlik-gorevleri-oncalendar-persistent-ve-jitter.html</link>
			<pubDate>Wed, 21 Oct 2026 11:29:31 +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-systemd-timer-ile-guvenlik-gorevleri-oncalendar-persistent-ve-jitter.html</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=332" loading="lazy"  alt="[Resim: attachment.php?aid=332]" class="mycode_img" /></div>
<br />
Selam,<br />
<br />
cron hâlâ iş görür; ama modern dağıtımlarda güvenlik otomasyonu için systemd timer daha okunur log, bağımlılık ve Persistent= ile kaçırılan çalışma telafisi sunar. Bu yazıda basit bir "günlük log tarama" zamanlayıcısını labda kuruyoruz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">İki dosya: .service + .timer</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># /etc/systemd/system/lab-logscan.service
[Unit]
Description=Lab auth log quick scan
[Service]
Type=oneshot
ExecStart=/usr/local/bin/lab-logscan.sh
User=logscan
Nice=10</code></div></div><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># /etc/systemd/system/lab-logscan.timer
[Unit]
Description=Run lab-logscan daily
[Timer]
OnCalendar=*-*-* 04:15:00
Persistent=true
RandomizedDelaySec=10m
Unit=lab-logscan.service
[Install]
WantedBy=timers.target</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ne anlama geliyor?</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">OnCalendar=</span> takvim ifadesi (man systemd.time)<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Persistent=true</span> makine kapalıyken kaçırılan run'ı açılışta telafi etmeye çalışır<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">RandomizedDelaySec=</span> thundering herd / eşzamanlı yük için jitter<br />
</li>
</ul>
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo systemctl daemon-reload
sudo systemctl enable --now lab-logscan.timer
systemctl list-timers | grep lab-logscan
journalctl -u lab-logscan.service -n 50 --no-pager</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Güvenlik alışkanlıkları</span></span><ul class="mycode_list"><li>Timer'ı root yerine dar yetkili kullanıcıyla çalıştırın<br />
</li>
<li>ExecStart script'ini yazılabilir dizine koymayın<br />
</li>
<li>NoNewPrivileges=yes, ProtectSystem=strict gibi sandbox direktiflerini ekleyin<br />
</li>
<li>Çıktıyı mail yerine journal + SIEM forwarder ile toplayın<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal uyarı</span></span><br />
Sistem zamanlayıcılarıyla başkalarının host'larında izinsiz tarama yapmayın.<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://www.freedesktop.org/software/systemd/man/latest/systemd.timer.html" target="_blank" rel="noopener" class="mycode_url">https://www.freedesktop.org/software/sys...timer.html</a><br />
</li>
<li>man systemd.time / systemd.exec<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">cron'dan göç</span></span><br />
Mevcut crontab satırlarını tek tek service+timer çiftine taşıyın. Ortam değişkenlerini EnvironmentFile= ile verin. Başarısız koşularda OnFailure= ile alert unit bağlayın. list-timers çıktısını haftalık gözden geçirin.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Uygulamada sık gördüğüm hatalar</span></span><br />
Birçok ekip yamayı "planlandı" diye işaretleyip internete açık yüzeyde günlerce bekletiyor. İkinci sık hata: yalnızca CVE numarasına bakıp zincir etkisini görmemek. Üçüncü hata: yama sonrası log ve dosya bütünlüğüne bakmamak; oysa yama öncesi sömürü olmuş olabilir. Bu üç noktayı kendi kontrol listenize eklemenizi öneririm.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ekip içi iletişim şablonu</span></span><br />
Yönetime veya müşteriye yazarken teknik jargonu azaltın: hangi varlık etkilendi, internete açık mı, yama var mı, geçici azaltma ne, doğrulama nasıl yapılacak. Tek paragrafta risk + eylem + sahiplik yazmak, uzun CVE özetinden daha hızlı karar aldırır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Lab not defteri</span></span><br />
Bu konuyu kendi defterime şu başlıklarla işliyorum: tarih, kaynak URL, etkilenen ürün/sürüm, internete açık mı, yama komutu, geri alma planı, IOC listesi, kime haber verildi. Siz de benzer basit bir şablon tutarsanız bir ay sonra "ne yapmıştık?" sorusu cevapsız kalmaz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">İzleme ve doğrulama</span></span><br />
Değişiklikten sonra en az bir negatif ve bir pozitif kontrol tanımlayın. Negatif: alarm boş yere düşmemeli. Pozitif: bilinen kötü örneği veya beklenen log satırını yakalamalı. İkisini de kaydedin; aksi halde "sanırım düzeldi" ile yetinirsiniz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
Özetle: kaynağı okuyun, kendi envanterinize bağlayın, yama veya azaltmayı uygulayın, sonra doğrulayın. TurkTeam'de yorumlarda kendi ortamınızdan (ürün adı ve sürüm yeter, hassas IP yazmayın) kısa deneyim paylaşırsanız herkes faydalanır.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Adım adım kontrol listesi (kopyala-yapıştır)</span></span><br />
<ol type="1" class="mycode_list"><li>Kaynak duyuruyu ve varsa üretici güvenlik sayfasını arşivleyin (PDF/HTML).<br />
</li>
<li>Envanterde etkilenen ürün var mı diye CMDB / agent raporu / netscan ile bakın.<br />
</li>
<li>İnternete açık mı, yoksa yalnızca iç ağda mı? Buna göre SLA seçin.<br />
</li>
<li>Yama veya yapılandırma azaltmasını stagingde deneyin.<br />
</li>
<li>Üretim penceresinde uygulayın; değişiklik kaydı açın.<br />
</li>
<li>Servis sağlık kontrolü + log doğrulaması yapın.<br />
</li>
<li>Gerekliyse IOC avı veya compromise assessment planlayın.<br />
</li>
<li>Kapanış notunu yazın: sürüm, tarih, kim onayladı.<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sık sorulanlar</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Sadece okumak yeter mi?</span> Hayır. Okuduktan sonra envanter satırına bağlanmayan bilgi operasyonel değildir.<br />
<span style="font-weight: bold;" class="mycode_b">PoC çalıştırmalı mıyım?</span> Yalnızca izole lab ve yazılı izinle. İnternette rastgele deneme hem etik dışı hem yasadışı olabilir.<br />
<span style="font-weight: bold;" class="mycode_b">WAF / EDR tek başına kurtarır mı?</span> Katmanlı savunma işe yarar ama yamanın yerini tutmaz; özellikle kimlik doğrulamasız RCE sınıflarında.<br />
<span style="font-weight: bold;" class="mycode_b">Ne zaman yönetime çıkmalıyım?</span> İnternete açık kritik yüzey, aktif sömürü istihbaratı veya veri sızıntısı şüphesi varsa gecikmeden.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Örnek komut defteri</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Tarih damgası ve ortam notu
date -Is
hostnamectl 2&gt;/dev/null | head -5 || true
# Ağ dinleme özeti (lab)
ss -lntp | head -30
# Son reboot / güncelleme ipucu (systemd)
who -b 2&gt;/dev/null || true</code></div></div>Bu komutlar tanı koymaz; değişiklik öncesi/sonrası basline almak için kullanın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">İlgili TurkTeam bölümleri</span></span><br />
Bu yazıyı okuduktan sonra aynı kategorideki komşu konulara ve Soru-Cevap bölümüne kendi lab çıktınızı (hassas veri olmadan) taşıyabilirsiniz. Kısa ekran görüntüsü veya komut çıktısı, uzun teoriden daha çok işe yarar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kapanış ve yasal çerçeve</span></span><br />
TurkTeam white-hat bir topluluktur. Anlatılan teknikler eğitim, savunma ve izinli test içindir. Başkalarının sistemlerinde izinsiz tarama, sömürü, veri çalma veya "hack hizmeti" sunmak forum kurallarına ve TCK 243, 244, 245 maddelerine aykırıdır. Kendi laboratuvarınızı izolasyonla kurun; üretim verisi kullanmayın. Kaynaklardaki bağlantıları birincil referans kabul edin; bu yazı özet ve yol göstericidir, üretici duyurusunun yerini tutmaz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kişisel deneyim notu</span></span><br />
Ben benzer konuları işlerken önce resmi duyuruyu iki kez okuyup sonra labda en küçük yeniden üretilebilir adımı arıyorum. Yeniden üretemiyorsam bile envanter ve yama doğrulamasını aynı gün bitirmeye çalışıyorum. Siz de "bugün tek iş" diye bir satır seçin: ya yamayı uygulayın ya da etkilenen varlık olmadığını kanıtlayın. İkisi de geçerli kapanıştır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Okuma listesi</span></span><ul class="mycode_list"><li>Üretici / araştırmacı birincil yazısı (kaynakçada)<br />
</li>
<li>CISA KEV veya CERT duyurusu varsa o<br />
</li>
<li>Kendi iç runbook'unuzun ilgili maddesi<br />
</li>
</ul>
Üçünden fazlasını aynı anda açmak yerine birini bitirip not alın; aksi halde tab kaybı başlar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kısa senaryo</span></span><br />
Diyelim ki bu konuyu pazartesi sabah toplantısında anlatacaksınız: bir slaytta risk, bir slaytta etkilenen varlık sorusu, bir slaytta bugün yapılacak tek eylem. Üç slayttan fazlası dikkat dağıtır. Toplantı bitince eylem sahibinin adını ticket'a yazın.<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=332" target="_blank" title="">15-b05-systemd.png</a> (Dosya Boyutu: 106.03 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=332" loading="lazy"  alt="[Resim: attachment.php?aid=332]" class="mycode_img" /></div>
<br />
Selam,<br />
<br />
cron hâlâ iş görür; ama modern dağıtımlarda güvenlik otomasyonu için systemd timer daha okunur log, bağımlılık ve Persistent= ile kaçırılan çalışma telafisi sunar. Bu yazıda basit bir "günlük log tarama" zamanlayıcısını labda kuruyoruz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">İki dosya: .service + .timer</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># /etc/systemd/system/lab-logscan.service
[Unit]
Description=Lab auth log quick scan
[Service]
Type=oneshot
ExecStart=/usr/local/bin/lab-logscan.sh
User=logscan
Nice=10</code></div></div><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># /etc/systemd/system/lab-logscan.timer
[Unit]
Description=Run lab-logscan daily
[Timer]
OnCalendar=*-*-* 04:15:00
Persistent=true
RandomizedDelaySec=10m
Unit=lab-logscan.service
[Install]
WantedBy=timers.target</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ne anlama geliyor?</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">OnCalendar=</span> takvim ifadesi (man systemd.time)<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Persistent=true</span> makine kapalıyken kaçırılan run'ı açılışta telafi etmeye çalışır<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">RandomizedDelaySec=</span> thundering herd / eşzamanlı yük için jitter<br />
</li>
</ul>
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo systemctl daemon-reload
sudo systemctl enable --now lab-logscan.timer
systemctl list-timers | grep lab-logscan
journalctl -u lab-logscan.service -n 50 --no-pager</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Güvenlik alışkanlıkları</span></span><ul class="mycode_list"><li>Timer'ı root yerine dar yetkili kullanıcıyla çalıştırın<br />
</li>
<li>ExecStart script'ini yazılabilir dizine koymayın<br />
</li>
<li>NoNewPrivileges=yes, ProtectSystem=strict gibi sandbox direktiflerini ekleyin<br />
</li>
<li>Çıktıyı mail yerine journal + SIEM forwarder ile toplayın<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal uyarı</span></span><br />
Sistem zamanlayıcılarıyla başkalarının host'larında izinsiz tarama yapmayın.<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://www.freedesktop.org/software/systemd/man/latest/systemd.timer.html" target="_blank" rel="noopener" class="mycode_url">https://www.freedesktop.org/software/sys...timer.html</a><br />
</li>
<li>man systemd.time / systemd.exec<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">cron'dan göç</span></span><br />
Mevcut crontab satırlarını tek tek service+timer çiftine taşıyın. Ortam değişkenlerini EnvironmentFile= ile verin. Başarısız koşularda OnFailure= ile alert unit bağlayın. list-timers çıktısını haftalık gözden geçirin.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Uygulamada sık gördüğüm hatalar</span></span><br />
Birçok ekip yamayı "planlandı" diye işaretleyip internete açık yüzeyde günlerce bekletiyor. İkinci sık hata: yalnızca CVE numarasına bakıp zincir etkisini görmemek. Üçüncü hata: yama sonrası log ve dosya bütünlüğüne bakmamak; oysa yama öncesi sömürü olmuş olabilir. Bu üç noktayı kendi kontrol listenize eklemenizi öneririm.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ekip içi iletişim şablonu</span></span><br />
Yönetime veya müşteriye yazarken teknik jargonu azaltın: hangi varlık etkilendi, internete açık mı, yama var mı, geçici azaltma ne, doğrulama nasıl yapılacak. Tek paragrafta risk + eylem + sahiplik yazmak, uzun CVE özetinden daha hızlı karar aldırır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Lab not defteri</span></span><br />
Bu konuyu kendi defterime şu başlıklarla işliyorum: tarih, kaynak URL, etkilenen ürün/sürüm, internete açık mı, yama komutu, geri alma planı, IOC listesi, kime haber verildi. Siz de benzer basit bir şablon tutarsanız bir ay sonra "ne yapmıştık?" sorusu cevapsız kalmaz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">İzleme ve doğrulama</span></span><br />
Değişiklikten sonra en az bir negatif ve bir pozitif kontrol tanımlayın. Negatif: alarm boş yere düşmemeli. Pozitif: bilinen kötü örneği veya beklenen log satırını yakalamalı. İkisini de kaydedin; aksi halde "sanırım düzeldi" ile yetinirsiniz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
Özetle: kaynağı okuyun, kendi envanterinize bağlayın, yama veya azaltmayı uygulayın, sonra doğrulayın. TurkTeam'de yorumlarda kendi ortamınızdan (ürün adı ve sürüm yeter, hassas IP yazmayın) kısa deneyim paylaşırsanız herkes faydalanır.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Adım adım kontrol listesi (kopyala-yapıştır)</span></span><br />
<ol type="1" class="mycode_list"><li>Kaynak duyuruyu ve varsa üretici güvenlik sayfasını arşivleyin (PDF/HTML).<br />
</li>
<li>Envanterde etkilenen ürün var mı diye CMDB / agent raporu / netscan ile bakın.<br />
</li>
<li>İnternete açık mı, yoksa yalnızca iç ağda mı? Buna göre SLA seçin.<br />
</li>
<li>Yama veya yapılandırma azaltmasını stagingde deneyin.<br />
</li>
<li>Üretim penceresinde uygulayın; değişiklik kaydı açın.<br />
</li>
<li>Servis sağlık kontrolü + log doğrulaması yapın.<br />
</li>
<li>Gerekliyse IOC avı veya compromise assessment planlayın.<br />
</li>
<li>Kapanış notunu yazın: sürüm, tarih, kim onayladı.<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sık sorulanlar</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Sadece okumak yeter mi?</span> Hayır. Okuduktan sonra envanter satırına bağlanmayan bilgi operasyonel değildir.<br />
<span style="font-weight: bold;" class="mycode_b">PoC çalıştırmalı mıyım?</span> Yalnızca izole lab ve yazılı izinle. İnternette rastgele deneme hem etik dışı hem yasadışı olabilir.<br />
<span style="font-weight: bold;" class="mycode_b">WAF / EDR tek başına kurtarır mı?</span> Katmanlı savunma işe yarar ama yamanın yerini tutmaz; özellikle kimlik doğrulamasız RCE sınıflarında.<br />
<span style="font-weight: bold;" class="mycode_b">Ne zaman yönetime çıkmalıyım?</span> İnternete açık kritik yüzey, aktif sömürü istihbaratı veya veri sızıntısı şüphesi varsa gecikmeden.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Örnek komut defteri</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Tarih damgası ve ortam notu
date -Is
hostnamectl 2&gt;/dev/null | head -5 || true
# Ağ dinleme özeti (lab)
ss -lntp | head -30
# Son reboot / güncelleme ipucu (systemd)
who -b 2&gt;/dev/null || true</code></div></div>Bu komutlar tanı koymaz; değişiklik öncesi/sonrası basline almak için kullanın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">İlgili TurkTeam bölümleri</span></span><br />
Bu yazıyı okuduktan sonra aynı kategorideki komşu konulara ve Soru-Cevap bölümüne kendi lab çıktınızı (hassas veri olmadan) taşıyabilirsiniz. Kısa ekran görüntüsü veya komut çıktısı, uzun teoriden daha çok işe yarar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kapanış ve yasal çerçeve</span></span><br />
TurkTeam white-hat bir topluluktur. Anlatılan teknikler eğitim, savunma ve izinli test içindir. Başkalarının sistemlerinde izinsiz tarama, sömürü, veri çalma veya "hack hizmeti" sunmak forum kurallarına ve TCK 243, 244, 245 maddelerine aykırıdır. Kendi laboratuvarınızı izolasyonla kurun; üretim verisi kullanmayın. Kaynaklardaki bağlantıları birincil referans kabul edin; bu yazı özet ve yol göstericidir, üretici duyurusunun yerini tutmaz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kişisel deneyim notu</span></span><br />
Ben benzer konuları işlerken önce resmi duyuruyu iki kez okuyup sonra labda en küçük yeniden üretilebilir adımı arıyorum. Yeniden üretemiyorsam bile envanter ve yama doğrulamasını aynı gün bitirmeye çalışıyorum. Siz de "bugün tek iş" diye bir satır seçin: ya yamayı uygulayın ya da etkilenen varlık olmadığını kanıtlayın. İkisi de geçerli kapanıştır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Okuma listesi</span></span><ul class="mycode_list"><li>Üretici / araştırmacı birincil yazısı (kaynakçada)<br />
</li>
<li>CISA KEV veya CERT duyurusu varsa o<br />
</li>
<li>Kendi iç runbook'unuzun ilgili maddesi<br />
</li>
</ul>
Üçünden fazlasını aynı anda açmak yerine birini bitirip not alın; aksi halde tab kaybı başlar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kısa senaryo</span></span><br />
Diyelim ki bu konuyu pazartesi sabah toplantısında anlatacaksınız: bir slaytta risk, bir slaytta etkilenen varlık sorusu, bir slaytta bugün yapılacak tek eylem. Üç slayttan fazlası dikkat dağıtır. Toplantı bitince eylem sahibinin adını ticket'a yazın.<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=332" target="_blank" title="">15-b05-systemd.png</a> (Dosya Boyutu: 106.03 KB / İndirme Sayısı: 9)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Linux'ta Dosya Bütünlüğü İzleme: AIDE Kurulumu, İlk Veritabanı ve Günlük Kontrol]]></title>
			<link>https://www.turkteam.org/konu-linux-ta-dosya-butunlugu-izleme-aide-kurulumu-ilk-veritabani-ve-gunluk-kontrol.html</link>
			<pubDate>Sun, 18 Oct 2026 22:14:44 +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-linux-ta-dosya-butunlugu-izleme-aide-kurulumu-ilk-veritabani-ve-gunluk-kontrol.html</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=257" loading="lazy"  alt="[Resim: attachment.php?aid=257]" class="mycode_img" /></div>
<br />
Selam arkadaşlar,<br />
<br />
Geçen ay bir test sunucusunda /usr/bin altındaki bir dosyanın tarihi dikkatimi çekti. Sonradan paket güncellemesi olduğu ortaya çıktı ama o an "bu dosya gerçekten değişti mi, ne zaman değişti?" sorusuna elimde net bir cevap yoktu. O günden beri kurduğum her Linux makinede ilk işlerden biri AIDE oluyor. Bu konuda AIDE'yi (Advanced Intrusion Detection Environment) sıfırdan kurmayı, ilk veritabanını oluşturmayı, gürültüyü azaltmayı ve kontrolü otomatiğe bağlamayı anlatacağım. Örnekler Debian 12 / Ubuntu 24.04 üzerinde; RHEL tarafındaki farkları da not düştüm.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">AIDE tam olarak ne yapar?</span></span><br />
AIDE bir dosya bütünlüğü izleme (FIM) aracıdır. Mantığı basit: sistem temizken seçtiğiniz dizinlerdeki dosyaların özniteliklerini (izinler, sahip, boyut, inode, değişiklik zamanı) ve hash değerlerini (SHA-256, SHA-512 vb.) bir veritabanına yazar. Sonraki her kontrolde mevcut durumu bu veritabanıyla karşılaştırır ve eklenen, silinen, değişen dosyaları raporlar.<br />
<br />
Önemli nokta: AIDE gerçek zamanlı değildir. Bir saldırganın değiştirdiği dosyayı anında yakalamaz, bir sonraki taramada yakalar. Gerçek zamanlı izleme istiyorsanız auditd veya Wazuh'un syscheck modülü gibi araçlara bakmak gerekir. AIDE'nin gücü sadeliği ve bağımsız çalışabilmesidir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kurulum</span></span><br />
Debian/Ubuntu:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt update
sudo apt install aide aide-common
aide --version</code></div></div>RHEL / Rocky / Alma:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo dnf install aide</code></div></div>Debian paketinde yapılandırma /etc/aide/aide.conf ve /etc/aide/aide.conf.d/ altında parçalı tutulur. RHEL tarafında tek dosya olarak /etc/aide.conf vardır. Bu fark, internetteki örnekleri birebir kopyalarken en sık takıldığım yer oldu.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">İlk veritabanını oluşturmak</span></span><br />
Debian ailesinde paketle gelen yardımcı betik işi kolaylaştırır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo aideinit</code></div></div>Bu komut veritabanını /var/lib/aide/aide.db.new dosyasına yazar ve ardından aide.db olarak kopyalar. RHEL tarafında elle yapılır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo aide --init
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz</code></div></div>İlk tarama disk boyutuna göre birkaç dakikadan yarım saate kadar sürebilir. Benim 40 GB'lık test VM'imde yaklaşık 6 dakika sürdü.<br />
<br />
Çok kritik bir uyarı: veritabanını mutlaka <span style="font-weight: bold;" class="mycode_b">temiz olduğundan emin olduğunuz</span> bir anda oluşturun. Zaten ele geçirilmiş bir sistemde oluşturulan veritabanı, saldırganın değişikliklerini "normal" kabul eder.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kontrol çalıştırmak ve çıktıyı okumak</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo aide --check --config /etc/aide/aide.conf</code></div></div>Ben test için bilerek /etc/passwd dosyasına bir test kullanıcısı ekledim. Çıktının özeti şuna benziyordu:<br />
<br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=258" loading="lazy"  alt="[Resim: attachment.php?aid=258]" class="mycode_img" /></div>
<br />
Çıktıdaki satır başındaki harf dosya tipini (f: dosya, d: dizin), ardından gelen sütunlar hangi özniteliğin değiştiğini gösterir. Örneğin boyut, mtime, ctime ve hash değişmişse ilgili sütunlarda işaret görürsünüz. Raporun alt kısmında "Detailed information about changes" bölümü eski ve yeni hash değerlerini tek tek listeler.<br />
<br />
Çıkış kodu da önemlidir: AIDE değişiklik bulduğunda sıfırdan farklı bir kodla çıkar. Betiklerde bunu kullanarak alarm üretebilirsiniz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Gürültüyü azaltmak: kural yazımı</span></span><br />
Varsayılan yapılandırma ilk günlerde çok fazla satır üretir: log dosyaları, önbellekler, /var/lib altında sürekli değişen veriler... Bunları izlemenin anlamı yok. Kendi kurallarımı Debian'da /etc/aide/aide.conf.d/ altına ayrı bir dosya olarak koyuyorum:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># /etc/aide/aide.conf.d/99_yerel
!/var/log
!/var/cache
!/var/lib/apt/lists
!/home/.*/&#92;.cache
/etc        CONTENT_EX
/usr/bin    CONTENT_EX
/usr/sbin   CONTENT_EX
/boot       CONTENT_EX</code></div></div>Ünlem işareti (!) hariç tutma anlamına gelir. CONTENT_EX gibi grup adları ana yapılandırmada tanımlıdır; kendi grubunuzu da tanımlayabilirsiniz:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>BENIM = p+u+g+s+m+c+sha256
/opt/uygulama BENIM</code></div></div>Buradaki harfler: p izinler, u kullanıcı, g grup, s boyut, m mtime, c ctime. Tam liste için man 5 aide.conf kılavuzuna bakın.<br />
<br />
Yapılandırmayı değiştirdikten sonra sözdizimini test etmek için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo aide --config-check --config /etc/aide/aide.conf</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Meşru değişikliklerden sonra veritabanını güncellemek</span></span><br />
Paket güncellemesi yaptığınızda yüzlerce dosya değişir. Bu durumda önce raporu gözden geçirip değişikliklerin beklenen olduğundan emin olun, sonra veritabanını yenileyin:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo aide --update --config /etc/aide/aide.conf
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db</code></div></div>Benim alışkanlığım: her "apt upgrade" sonrası bir kontrol, rapor temizse güncelleme. Kontrol etmeden körlemesine güncelleme yapmak AIDE'yi anlamsız kılar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Günlük otomatik kontrol</span></span><br />
Debian paketi zaten /etc/cron.daily/aide betiğiyle günlük kontrol kurar ve sonuçları e-posta ile gönderir (MAILTO ayarı /etc/default/aide içinde). Systemd kullanan dağıtımlarda dailyaidecheck.timer da gelebilir:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>systemctl list-timers | grep -i aide</code></div></div>Kendi betiğinizi yazmak isterseniz basit bir örnek:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>#!/bin/bash
LOG=/var/log/aide/aide-&#36;(date +%F).log
mkdir -p /var/log/aide
/usr/bin/aide --check --config /etc/aide/aide.conf &gt; "&#36;LOG" 2&gt;&amp;1
if [ &#36;? -ne 0 ]; then
  logger -t aide "AIDE değişiklik tespit etti: &#36;LOG"
fi</code></div></div>logger ile syslog'a yazınca SIEM'iniz bu satırı yakalayıp alarm üretebilir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Veritabanını korumak</span></span><br />
AIDE'nin en zayıf noktası şudur: root yetkisi alan bir saldırgan veritabanını da güncelleyebilir. Bu yüzden temiz veritabanının bir kopyasını salt okunur bir ortama alın, kontrol öncesi hash doğrulayın ve mümkünse AIDE binary'sinin kendisini de güvenilir bir kopyadan çalıştırın.<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sha256sum /var/lib/aide/aide.db &gt; /root/aide.db.sha256</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">AIDE ne değildir?</span></span><br />
AIDE size "ne değişti" der, "neden değişti" demez. Bir değişikliğin saldırı mı yoksa yönetici işlemi mi olduğunu anlamak için auditd kayıtları, paket yöneticisi geçmişi ve oturum loglarıyla birlikte değerlendirmek gerekir. Rootkit tespiti için de tek başına yeterli değildir.<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>AIDE resmi proje sayfası: aide.github.io<br />
</li>
<li>man aide, man 5 aide.conf<br />
</li>
<li>Red Hat Enterprise Linux Security Hardening belgesi, "Checking integrity with AIDE" bölümü<br />
</li>
</ul>
<br />
Siz FIM için hangi aracı kullanıyorsunuz? Wazuh syscheck ile AIDE'yi karşılaştıran olduysa deneyimini merak ediyorum.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Paket güncellemesi sonrası kontrol rutini</span></span><br />
Üretimde unattended-upgrades veya Ansible ile yama dağıtıyorsanız AIDE veritabanını körlemesine güncellemek yerine şu sırayı kullanın: yama penceresi bitince aide --check, değişen dosyaların paket listesiyle kesişimini doğrula (dpkg -S /path veya rpm -qf), ardından --update. Kesişmeyen dosyalar (ör. /etc altında elle değiştirilmiş config) ayrı ticket ister.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Wazuh syscheck ile fark</span></span><br />
Wazuh syscheck gerçek zamanlıa daha yakın (inotify) çalışabilir ve merkezi yöneticiden politika iter. AIDE ise ajan gerektirmeyen, tek makinelik, denetim izine kolay eklenen bir araçtır. Küçük lab veya internete kapalı sunucuda AIDE yeter; filo yönetiminde Wazuh/OSSEC ailesi daha ölçeklenir. İkisini birlikte kullananlar: AIDE'yi "altın imaj doğrulama", Wazuh'u "sürekli izleme" diye ayırır.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sık sorulanlar</span></span><br />
AIDE veritabanını NFS'e koymayın; saldırgan orayı da yazabilir. cron mail çalışmıyorsa logger + SIEM yolunu kullanın. İlk kurulumda /var ve /home'u olduğu gibi izlemek gürültü tsunami'sidir; önce /etc /bin /sbin /usr/bin /boot ile başlayın, sonra genişletin. Sunucu immutable infrastructure ise her deploy'da yeni baseline alın; AIDE'yi golden image pipeline'ının son adımı yapın.<br />
<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=257" target="_blank" title="">100-n01-a26bb9.png</a> (Dosya Boyutu: 66.93 KB / İndirme Sayısı: 10)
<!-- 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=258" target="_blank" title="">n01-inner.png</a> (Dosya Boyutu: 19.37 KB / İndirme Sayısı: 12)
<!-- 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=257" loading="lazy"  alt="[Resim: attachment.php?aid=257]" class="mycode_img" /></div>
<br />
Selam arkadaşlar,<br />
<br />
Geçen ay bir test sunucusunda /usr/bin altındaki bir dosyanın tarihi dikkatimi çekti. Sonradan paket güncellemesi olduğu ortaya çıktı ama o an "bu dosya gerçekten değişti mi, ne zaman değişti?" sorusuna elimde net bir cevap yoktu. O günden beri kurduğum her Linux makinede ilk işlerden biri AIDE oluyor. Bu konuda AIDE'yi (Advanced Intrusion Detection Environment) sıfırdan kurmayı, ilk veritabanını oluşturmayı, gürültüyü azaltmayı ve kontrolü otomatiğe bağlamayı anlatacağım. Örnekler Debian 12 / Ubuntu 24.04 üzerinde; RHEL tarafındaki farkları da not düştüm.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">AIDE tam olarak ne yapar?</span></span><br />
AIDE bir dosya bütünlüğü izleme (FIM) aracıdır. Mantığı basit: sistem temizken seçtiğiniz dizinlerdeki dosyaların özniteliklerini (izinler, sahip, boyut, inode, değişiklik zamanı) ve hash değerlerini (SHA-256, SHA-512 vb.) bir veritabanına yazar. Sonraki her kontrolde mevcut durumu bu veritabanıyla karşılaştırır ve eklenen, silinen, değişen dosyaları raporlar.<br />
<br />
Önemli nokta: AIDE gerçek zamanlı değildir. Bir saldırganın değiştirdiği dosyayı anında yakalamaz, bir sonraki taramada yakalar. Gerçek zamanlı izleme istiyorsanız auditd veya Wazuh'un syscheck modülü gibi araçlara bakmak gerekir. AIDE'nin gücü sadeliği ve bağımsız çalışabilmesidir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kurulum</span></span><br />
Debian/Ubuntu:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt update
sudo apt install aide aide-common
aide --version</code></div></div>RHEL / Rocky / Alma:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo dnf install aide</code></div></div>Debian paketinde yapılandırma /etc/aide/aide.conf ve /etc/aide/aide.conf.d/ altında parçalı tutulur. RHEL tarafında tek dosya olarak /etc/aide.conf vardır. Bu fark, internetteki örnekleri birebir kopyalarken en sık takıldığım yer oldu.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">İlk veritabanını oluşturmak</span></span><br />
Debian ailesinde paketle gelen yardımcı betik işi kolaylaştırır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo aideinit</code></div></div>Bu komut veritabanını /var/lib/aide/aide.db.new dosyasına yazar ve ardından aide.db olarak kopyalar. RHEL tarafında elle yapılır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo aide --init
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz</code></div></div>İlk tarama disk boyutuna göre birkaç dakikadan yarım saate kadar sürebilir. Benim 40 GB'lık test VM'imde yaklaşık 6 dakika sürdü.<br />
<br />
Çok kritik bir uyarı: veritabanını mutlaka <span style="font-weight: bold;" class="mycode_b">temiz olduğundan emin olduğunuz</span> bir anda oluşturun. Zaten ele geçirilmiş bir sistemde oluşturulan veritabanı, saldırganın değişikliklerini "normal" kabul eder.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kontrol çalıştırmak ve çıktıyı okumak</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo aide --check --config /etc/aide/aide.conf</code></div></div>Ben test için bilerek /etc/passwd dosyasına bir test kullanıcısı ekledim. Çıktının özeti şuna benziyordu:<br />
<br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=258" loading="lazy"  alt="[Resim: attachment.php?aid=258]" class="mycode_img" /></div>
<br />
Çıktıdaki satır başındaki harf dosya tipini (f: dosya, d: dizin), ardından gelen sütunlar hangi özniteliğin değiştiğini gösterir. Örneğin boyut, mtime, ctime ve hash değişmişse ilgili sütunlarda işaret görürsünüz. Raporun alt kısmında "Detailed information about changes" bölümü eski ve yeni hash değerlerini tek tek listeler.<br />
<br />
Çıkış kodu da önemlidir: AIDE değişiklik bulduğunda sıfırdan farklı bir kodla çıkar. Betiklerde bunu kullanarak alarm üretebilirsiniz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Gürültüyü azaltmak: kural yazımı</span></span><br />
Varsayılan yapılandırma ilk günlerde çok fazla satır üretir: log dosyaları, önbellekler, /var/lib altında sürekli değişen veriler... Bunları izlemenin anlamı yok. Kendi kurallarımı Debian'da /etc/aide/aide.conf.d/ altına ayrı bir dosya olarak koyuyorum:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># /etc/aide/aide.conf.d/99_yerel
!/var/log
!/var/cache
!/var/lib/apt/lists
!/home/.*/&#92;.cache
/etc        CONTENT_EX
/usr/bin    CONTENT_EX
/usr/sbin   CONTENT_EX
/boot       CONTENT_EX</code></div></div>Ünlem işareti (!) hariç tutma anlamına gelir. CONTENT_EX gibi grup adları ana yapılandırmada tanımlıdır; kendi grubunuzu da tanımlayabilirsiniz:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>BENIM = p+u+g+s+m+c+sha256
/opt/uygulama BENIM</code></div></div>Buradaki harfler: p izinler, u kullanıcı, g grup, s boyut, m mtime, c ctime. Tam liste için man 5 aide.conf kılavuzuna bakın.<br />
<br />
Yapılandırmayı değiştirdikten sonra sözdizimini test etmek için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo aide --config-check --config /etc/aide/aide.conf</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Meşru değişikliklerden sonra veritabanını güncellemek</span></span><br />
Paket güncellemesi yaptığınızda yüzlerce dosya değişir. Bu durumda önce raporu gözden geçirip değişikliklerin beklenen olduğundan emin olun, sonra veritabanını yenileyin:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo aide --update --config /etc/aide/aide.conf
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db</code></div></div>Benim alışkanlığım: her "apt upgrade" sonrası bir kontrol, rapor temizse güncelleme. Kontrol etmeden körlemesine güncelleme yapmak AIDE'yi anlamsız kılar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Günlük otomatik kontrol</span></span><br />
Debian paketi zaten /etc/cron.daily/aide betiğiyle günlük kontrol kurar ve sonuçları e-posta ile gönderir (MAILTO ayarı /etc/default/aide içinde). Systemd kullanan dağıtımlarda dailyaidecheck.timer da gelebilir:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>systemctl list-timers | grep -i aide</code></div></div>Kendi betiğinizi yazmak isterseniz basit bir örnek:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>#!/bin/bash
LOG=/var/log/aide/aide-&#36;(date +%F).log
mkdir -p /var/log/aide
/usr/bin/aide --check --config /etc/aide/aide.conf &gt; "&#36;LOG" 2&gt;&amp;1
if [ &#36;? -ne 0 ]; then
  logger -t aide "AIDE değişiklik tespit etti: &#36;LOG"
fi</code></div></div>logger ile syslog'a yazınca SIEM'iniz bu satırı yakalayıp alarm üretebilir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Veritabanını korumak</span></span><br />
AIDE'nin en zayıf noktası şudur: root yetkisi alan bir saldırgan veritabanını da güncelleyebilir. Bu yüzden temiz veritabanının bir kopyasını salt okunur bir ortama alın, kontrol öncesi hash doğrulayın ve mümkünse AIDE binary'sinin kendisini de güvenilir bir kopyadan çalıştırın.<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sha256sum /var/lib/aide/aide.db &gt; /root/aide.db.sha256</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">AIDE ne değildir?</span></span><br />
AIDE size "ne değişti" der, "neden değişti" demez. Bir değişikliğin saldırı mı yoksa yönetici işlemi mi olduğunu anlamak için auditd kayıtları, paket yöneticisi geçmişi ve oturum loglarıyla birlikte değerlendirmek gerekir. Rootkit tespiti için de tek başına yeterli değildir.<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>AIDE resmi proje sayfası: aide.github.io<br />
</li>
<li>man aide, man 5 aide.conf<br />
</li>
<li>Red Hat Enterprise Linux Security Hardening belgesi, "Checking integrity with AIDE" bölümü<br />
</li>
</ul>
<br />
Siz FIM için hangi aracı kullanıyorsunuz? Wazuh syscheck ile AIDE'yi karşılaştıran olduysa deneyimini merak ediyorum.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Paket güncellemesi sonrası kontrol rutini</span></span><br />
Üretimde unattended-upgrades veya Ansible ile yama dağıtıyorsanız AIDE veritabanını körlemesine güncellemek yerine şu sırayı kullanın: yama penceresi bitince aide --check, değişen dosyaların paket listesiyle kesişimini doğrula (dpkg -S /path veya rpm -qf), ardından --update. Kesişmeyen dosyalar (ör. /etc altında elle değiştirilmiş config) ayrı ticket ister.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Wazuh syscheck ile fark</span></span><br />
Wazuh syscheck gerçek zamanlıa daha yakın (inotify) çalışabilir ve merkezi yöneticiden politika iter. AIDE ise ajan gerektirmeyen, tek makinelik, denetim izine kolay eklenen bir araçtır. Küçük lab veya internete kapalı sunucuda AIDE yeter; filo yönetiminde Wazuh/OSSEC ailesi daha ölçeklenir. İkisini birlikte kullananlar: AIDE'yi "altın imaj doğrulama", Wazuh'u "sürekli izleme" diye ayırır.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sık sorulanlar</span></span><br />
AIDE veritabanını NFS'e koymayın; saldırgan orayı da yazabilir. cron mail çalışmıyorsa logger + SIEM yolunu kullanın. İlk kurulumda /var ve /home'u olduğu gibi izlemek gürültü tsunami'sidir; önce /etc /bin /sbin /usr/bin /boot ile başlayın, sonra genişletin. Sunucu immutable infrastructure ise her deploy'da yeni baseline alın; AIDE'yi golden image pipeline'ının son adımı yapın.<br />
<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=257" target="_blank" title="">100-n01-a26bb9.png</a> (Dosya Boyutu: 66.93 KB / İndirme Sayısı: 10)
<!-- 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=258" target="_blank" title="">n01-inner.png</a> (Dosya Boyutu: 19.37 KB / İndirme Sayısı: 12)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Linux Kullanıcı ve İzin Yönetimi: chmod, chown, umask ve ACL Rehberi]]></title>
			<link>https://www.turkteam.org/konu-linux-kullanici-ve-izin-yonetimi-chmod-chown-umask-ve-acl-rehberi.html</link>
			<pubDate>Sun, 18 Oct 2026 21:34:05 +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-linux-kullanici-ve-izin-yonetimi-chmod-chown-umask-ve-acl-rehberi.html</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Selam TurkTeam,</span><br />
<br />
Linux'ta güvenliğin temeli izinlerdir. "Bu dosyayı kim okuyabilir, kim çalıştırabilir, kim değiştirebilir?" sorusunun cevabı; bir sunucunun ne kadar sağlam ya da ne kadar savunmasız olduğunu doğrudan belirler. Bu rehberde Linux izin modelini sıfırdan ele alıyor; chmod, chown, umask, özel izin bitleri (SUID/SGID/sticky) ve klasik modelin yetmediği yerde devreye giren ACL'yi uygulamalı olarak anlatıyoruz.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>Linux izin modeli: kullanıcı/grup/diğer ve rwx<br />
</li>
<li>chmod: sembolik ve sayısal (oktal) kullanım<br />
</li>
<li>chown ve chgrp: sahiplik yönetimi<br />
</li>
<li>umask: varsayılan izinlerin belirlenmesi<br />
</li>
<li>Özel bitler: SUID, SGID, sticky bit<br />
</li>
<li>ACL: getfacl / setfacl ile ince ayar<br />
</li>
<li>Sonuç, kaynakça ve yasal uyarı<br />
</li>
</ol>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. İzin Modeli: Üç Sınıf, Üç Yetki</span></span><br />
Her dosya ve dizinin bir <span style="font-weight: bold;" class="mycode_b">sahibi</span> (user), bir <span style="font-weight: bold;" class="mycode_b">grubu</span> (group) ve bir de <span style="font-weight: bold;" class="mycode_b">diğerleri</span> (others) sınıfı vardır. Her sınıf için üç yetki tanımlanır: okuma &reg;, yazma (w) ve çalıştırma (x). İzinleri görmek için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ls -l dosya.txt</code></div></div>Çıktı şuna benzer:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>-rw-r--r-- 1 ahmet ekip 1024 Oct 17 14:00 dosya.txt</code></div></div>Baştaki 10 karakteri çözelim: ilk karakter tür (- dosya, d dizin, l sembolik bağ), sonraki üçlü sahip (rw-), ortadaki üçlü grup (r--), son üçlü diğerleri (r--) izinleridir. Yani sahibi okuyup yazabilir, grup ve diğerleri yalnızca okuyabilir.<br />
<br />
Dizinlerde <span style="font-weight: bold;" class="mycode_b">x</span> yetkisinin anlamı özeldir: bir dizine "girip" içindeki yollara erişebilmek için x gerekir; r ise yalnızca listeleme yetkisidir.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. chmod: İzin Değiştirme</span></span><br />
chmod'u iki biçimde kullanırsınız: sembolik ve sayısal (oktal).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Sembolik kullanım</span> (u=user, g=group, o=other, a=all; +ekle, -kaldır, =eşitle):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>chmod u+x script.sh          # sahibe çalıştırma ekle
chmod go-w dosya.txt         # grup ve diğerlerinden yazmayı kaldır
chmod a=r dosya.txt          # herkese yalnızca okuma</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Sayısal (oktal) kullanım:</span> r=4, w=2, x=1 değerlerinin toplamı her sınıf için bir rakam verir:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>chmod 644 dosya.txt    # rw-r--r--
chmod 755 script.sh    # rwxr-xr-x
chmod 600 gizli.key    # rw------- (yalnızca sahibi)</code></div></div>Dizinleri özyinelemeli değiştirmek için -R kullanın, ancak dikkatli olun:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>chmod -R 750 /opt/uygulama</code></div></div><div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=250" loading="lazy"  alt="[Resim: attachment.php?aid=250]" class="mycode_img" /></div>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. chown ve chgrp: Sahiplik</span></span><br />
Bir dosyanın sahibini ve/veya grubunu değiştirmek için chown kullanılır (genelde root yetkisi gerekir):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo chown ahmet dosya.txt           # sahibi değiştir
sudo chown ahmet:ekip dosya.txt      # sahip ve grup
sudo chgrp ekip dosya.txt            # yalnızca grup
sudo chown -R ahmet:ekip /srv/proje  # özyinelemeli</code></div></div>Sahiplik, izinlerle birlikte düşünülmelidir: 600 izinli bir anahtar dosyası, yanlış kullanıcıya ait olursa koruması anlamını yitirir.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. umask: Varsayılan İzinler</span></span><br />
Yeni oluşturulan dosya ve dizinler, umask değerine göre izin alır. umask, verilmeyecek bitleri maskeler. Tipik varsayılan 022'dir:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>umask          # mevcut değeri göster
umask 027      # yeni dosyalara daha sıkı varsayılan</code></div></div>Hesaplama mantığı: dosyalarda taban 666, dizinlerde 777'dir ve umask bundan çıkarılır. 022 umask ile yeni dosya 644, yeni dizin 755 olur. 027 ile dosya 640, dizin 750 olur; yani "diğerleri" hiçbir erişim almaz. Kalıcı yapmak için ~/.bashrc veya /etc/profile içine umask satırı eklenir.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Özel Bitler: SUID, SGID, Sticky</span></span><br />
Klasik rwx'in üstünde üç özel bit vardır ve güvenlik açısından kritiktir.<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">SUID (4):</span> Çalıştırılabilir dosya, sahibinin yetkisiyle çalışır. Örnek: passwd komutu root SUID'lidir, böylece sıradan kullanıcı parolasını değiştirebilir.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">SGID (2):</span> Dosyada grup yetkisiyle çalıştırma; dizinde ise içinde oluşturulan dosyaların dizin grubunu devralmasını sağlar (ortak çalışma dizinleri için idealdir).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Sticky bit (1):</span> Dizinde, bir kullanıcının yalnızca kendi dosyasını silebilmesini sağlar. /tmp dizini buna klasik örnektir.<br />
</li>
</ul>
Ayarlama:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>chmod u+s program       # SUID
chmod g+s paylasim/      # SGID dizin
chmod +t /ortak/alan     # sticky bit</code></div></div>Sistemdeki SUID dosyaları denetim için önemlidir; yanlış yapılandırılmış bir SUID, yetki yükseltmeye yol açabilir:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>find / -perm -4000 -type f 2&gt;/dev/null</code></div></div>Bu komut root SUID'li ikilileri listeler; beklenmedik bir giriş varsa incelenmelidir.<br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=251" loading="lazy"  alt="[Resim: attachment.php?aid=251]" class="mycode_img" /></div>
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=252" loading="lazy"  alt="[Resim: attachment.php?aid=252]" class="mycode_img" /></div>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. ACL: getfacl ve setfacl</span></span><br />
Klasik model yalnızca tek sahip, tek grup ve diğerlerini tanımlar. "Bu dosyaya Ayşe de yazsın ama başka kimse değil" gibi ince ihtiyaçlarda ACL (Access Control List) devreye girer.<br />
<span style="font-weight: bold;" class="mycode_b">Mevcut ACL'yi görme:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>getfacl dosya.txt</code></div></div><span style="font-weight: bold;" class="mycode_b">Belirli bir kullanıcıya izin verme:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>setfacl -m u:ayse:rw dosya.txt</code></div></div><span style="font-weight: bold;" class="mycode_b">Bir gruba izin ve varsayılan (yeni dosyalara miras) ACL:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>setfacl -m g:ekip:rx klasor/
setfacl -d -m g:ekip:rx klasor/</code></div></div><span style="font-weight: bold;" class="mycode_b">ACL kaldırma:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>setfacl -x u:ayse dosya.txt   # tek kayıt
setfacl -b dosya.txt          # tüm ACL</code></div></div>ls -l çıktısında izinlerin sonundaki "+" işareti, o dosyada ek ACL kayıtları olduğunu gösterir. ACL güçlüdür ancak karmaşıklığı artırır; yalnızca klasik modelin yetmediği yerde kullanın.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">7. İleri Seviye ve İyi Uygulamalar</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">En az ayrıcalık:</span> Her zaman gereken en dar izni verin; 777'den kaçının, bu neredeyse her zaman hatalı bir çözümdür.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Anahtar ve sır dosyaları:</span> SSH özel anahtarları 600 olmalı, aksi halde istemci bağlanmayı reddeder.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Düzenli denetim:</span> Dünyaya yazılabilir dosyaları bulun: <div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>find / -perm -0002 -type f 2&gt;/dev/null</code></div></div></li>
<li><span style="font-weight: bold;" class="mycode_b">Değişmezlik:</span> Kritik dosyaları kazara değişikliğe karşı chattr +i ile değişmez yapabilirsiniz (ext4): <div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo chattr +i /etc/onemli.conf</code></div></div></li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
Linux izin yönetimi, karmaşık görünse de birkaç sağlam kavrama dayanır: üç sınıf, üç yetki, özel bitler ve gerektiğinde ACL. chmod/chown/umask üçlüsünü ve SUID/SGID/sticky mantığını iyi oturtmak, hem sistemlerinizi sertleştirmenizi hem de bir denetimde zayıf noktaları hızla görmenizi sağlar. "En az ayrıcalık" ilkesini her kararın merkezine koyun.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynakça</span></span><ul class="mycode_list"><li>GNU Coreutils El Kitabı (chmod, chown) - <a href="https://www.gnu.org/software/coreutils/manual/" target="_blank" rel="noopener" class="mycode_url">https://www.gnu.org/software/coreutils/manual/</a><br />
</li>
<li>chmod(1), chown(1), umask(1p) man sayfaları<br />
</li>
<li>setfacl(1) / getfacl(1) man sayfaları - <a href="https://man7.org/linux/man-pages/man1/setfacl.1.html" target="_blank" rel="noopener" class="mycode_url">https://man7.org/linux/man-pages/man1/setfacl.1.html</a><br />
</li>
<li>Arch Wiki: File permissions and attributes - <a href="https://wiki.archlinux.org/title/File_permissions_and_attributes" target="_blank" rel="noopener" class="mycode_url">https://wiki.archlinux.org/title/File_pe...attributes</a><br />
</li>
<li>Debian Yönetici El Kitabı - <a href="https://www.debian.org/doc/" target="_blank" rel="noopener" class="mycode_url">https://www.debian.org/doc/</a><br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal Uyarı</span></span><br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite>İzin ve sahiplik değişiklikleri yalnızca kendi sistemlerinizde veya yönetim yetkiniz olan sistemlerde yapılmalıdır. Başkasının sistemine izinsiz müdahale Türk Ceza Kanunu 243-245. maddeleri kapsamında suçtur.</blockquote>
<br />
<span style="font-style: italic;" class="mycode_i">Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).</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=250" target="_blank" title="">000-team-new-fc305f.png</a> (Dosya Boyutu: 59.69 KB / İndirme Sayısı: 10)
<!-- 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=251" target="_blank" title="">konu-07-1.png</a> (Dosya Boyutu: 53.79 KB / İndirme Sayısı: 11)
<!-- 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=252" target="_blank" title="">konu-07-2.png</a> (Dosya Boyutu: 56.07 KB / İndirme Sayısı: 8)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Selam TurkTeam,</span><br />
<br />
Linux'ta güvenliğin temeli izinlerdir. "Bu dosyayı kim okuyabilir, kim çalıştırabilir, kim değiştirebilir?" sorusunun cevabı; bir sunucunun ne kadar sağlam ya da ne kadar savunmasız olduğunu doğrudan belirler. Bu rehberde Linux izin modelini sıfırdan ele alıyor; chmod, chown, umask, özel izin bitleri (SUID/SGID/sticky) ve klasik modelin yetmediği yerde devreye giren ACL'yi uygulamalı olarak anlatıyoruz.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>Linux izin modeli: kullanıcı/grup/diğer ve rwx<br />
</li>
<li>chmod: sembolik ve sayısal (oktal) kullanım<br />
</li>
<li>chown ve chgrp: sahiplik yönetimi<br />
</li>
<li>umask: varsayılan izinlerin belirlenmesi<br />
</li>
<li>Özel bitler: SUID, SGID, sticky bit<br />
</li>
<li>ACL: getfacl / setfacl ile ince ayar<br />
</li>
<li>Sonuç, kaynakça ve yasal uyarı<br />
</li>
</ol>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. İzin Modeli: Üç Sınıf, Üç Yetki</span></span><br />
Her dosya ve dizinin bir <span style="font-weight: bold;" class="mycode_b">sahibi</span> (user), bir <span style="font-weight: bold;" class="mycode_b">grubu</span> (group) ve bir de <span style="font-weight: bold;" class="mycode_b">diğerleri</span> (others) sınıfı vardır. Her sınıf için üç yetki tanımlanır: okuma &reg;, yazma (w) ve çalıştırma (x). İzinleri görmek için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ls -l dosya.txt</code></div></div>Çıktı şuna benzer:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>-rw-r--r-- 1 ahmet ekip 1024 Oct 17 14:00 dosya.txt</code></div></div>Baştaki 10 karakteri çözelim: ilk karakter tür (- dosya, d dizin, l sembolik bağ), sonraki üçlü sahip (rw-), ortadaki üçlü grup (r--), son üçlü diğerleri (r--) izinleridir. Yani sahibi okuyup yazabilir, grup ve diğerleri yalnızca okuyabilir.<br />
<br />
Dizinlerde <span style="font-weight: bold;" class="mycode_b">x</span> yetkisinin anlamı özeldir: bir dizine "girip" içindeki yollara erişebilmek için x gerekir; r ise yalnızca listeleme yetkisidir.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. chmod: İzin Değiştirme</span></span><br />
chmod'u iki biçimde kullanırsınız: sembolik ve sayısal (oktal).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Sembolik kullanım</span> (u=user, g=group, o=other, a=all; +ekle, -kaldır, =eşitle):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>chmod u+x script.sh          # sahibe çalıştırma ekle
chmod go-w dosya.txt         # grup ve diğerlerinden yazmayı kaldır
chmod a=r dosya.txt          # herkese yalnızca okuma</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Sayısal (oktal) kullanım:</span> r=4, w=2, x=1 değerlerinin toplamı her sınıf için bir rakam verir:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>chmod 644 dosya.txt    # rw-r--r--
chmod 755 script.sh    # rwxr-xr-x
chmod 600 gizli.key    # rw------- (yalnızca sahibi)</code></div></div>Dizinleri özyinelemeli değiştirmek için -R kullanın, ancak dikkatli olun:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>chmod -R 750 /opt/uygulama</code></div></div><div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=250" loading="lazy"  alt="[Resim: attachment.php?aid=250]" class="mycode_img" /></div>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. chown ve chgrp: Sahiplik</span></span><br />
Bir dosyanın sahibini ve/veya grubunu değiştirmek için chown kullanılır (genelde root yetkisi gerekir):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo chown ahmet dosya.txt           # sahibi değiştir
sudo chown ahmet:ekip dosya.txt      # sahip ve grup
sudo chgrp ekip dosya.txt            # yalnızca grup
sudo chown -R ahmet:ekip /srv/proje  # özyinelemeli</code></div></div>Sahiplik, izinlerle birlikte düşünülmelidir: 600 izinli bir anahtar dosyası, yanlış kullanıcıya ait olursa koruması anlamını yitirir.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. umask: Varsayılan İzinler</span></span><br />
Yeni oluşturulan dosya ve dizinler, umask değerine göre izin alır. umask, verilmeyecek bitleri maskeler. Tipik varsayılan 022'dir:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>umask          # mevcut değeri göster
umask 027      # yeni dosyalara daha sıkı varsayılan</code></div></div>Hesaplama mantığı: dosyalarda taban 666, dizinlerde 777'dir ve umask bundan çıkarılır. 022 umask ile yeni dosya 644, yeni dizin 755 olur. 027 ile dosya 640, dizin 750 olur; yani "diğerleri" hiçbir erişim almaz. Kalıcı yapmak için ~/.bashrc veya /etc/profile içine umask satırı eklenir.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Özel Bitler: SUID, SGID, Sticky</span></span><br />
Klasik rwx'in üstünde üç özel bit vardır ve güvenlik açısından kritiktir.<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">SUID (4):</span> Çalıştırılabilir dosya, sahibinin yetkisiyle çalışır. Örnek: passwd komutu root SUID'lidir, böylece sıradan kullanıcı parolasını değiştirebilir.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">SGID (2):</span> Dosyada grup yetkisiyle çalıştırma; dizinde ise içinde oluşturulan dosyaların dizin grubunu devralmasını sağlar (ortak çalışma dizinleri için idealdir).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Sticky bit (1):</span> Dizinde, bir kullanıcının yalnızca kendi dosyasını silebilmesini sağlar. /tmp dizini buna klasik örnektir.<br />
</li>
</ul>
Ayarlama:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>chmod u+s program       # SUID
chmod g+s paylasim/      # SGID dizin
chmod +t /ortak/alan     # sticky bit</code></div></div>Sistemdeki SUID dosyaları denetim için önemlidir; yanlış yapılandırılmış bir SUID, yetki yükseltmeye yol açabilir:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>find / -perm -4000 -type f 2&gt;/dev/null</code></div></div>Bu komut root SUID'li ikilileri listeler; beklenmedik bir giriş varsa incelenmelidir.<br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=251" loading="lazy"  alt="[Resim: attachment.php?aid=251]" class="mycode_img" /></div>
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=252" loading="lazy"  alt="[Resim: attachment.php?aid=252]" class="mycode_img" /></div>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. ACL: getfacl ve setfacl</span></span><br />
Klasik model yalnızca tek sahip, tek grup ve diğerlerini tanımlar. "Bu dosyaya Ayşe de yazsın ama başka kimse değil" gibi ince ihtiyaçlarda ACL (Access Control List) devreye girer.<br />
<span style="font-weight: bold;" class="mycode_b">Mevcut ACL'yi görme:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>getfacl dosya.txt</code></div></div><span style="font-weight: bold;" class="mycode_b">Belirli bir kullanıcıya izin verme:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>setfacl -m u:ayse:rw dosya.txt</code></div></div><span style="font-weight: bold;" class="mycode_b">Bir gruba izin ve varsayılan (yeni dosyalara miras) ACL:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>setfacl -m g:ekip:rx klasor/
setfacl -d -m g:ekip:rx klasor/</code></div></div><span style="font-weight: bold;" class="mycode_b">ACL kaldırma:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>setfacl -x u:ayse dosya.txt   # tek kayıt
setfacl -b dosya.txt          # tüm ACL</code></div></div>ls -l çıktısında izinlerin sonundaki "+" işareti, o dosyada ek ACL kayıtları olduğunu gösterir. ACL güçlüdür ancak karmaşıklığı artırır; yalnızca klasik modelin yetmediği yerde kullanın.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">7. İleri Seviye ve İyi Uygulamalar</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">En az ayrıcalık:</span> Her zaman gereken en dar izni verin; 777'den kaçının, bu neredeyse her zaman hatalı bir çözümdür.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Anahtar ve sır dosyaları:</span> SSH özel anahtarları 600 olmalı, aksi halde istemci bağlanmayı reddeder.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Düzenli denetim:</span> Dünyaya yazılabilir dosyaları bulun: <div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>find / -perm -0002 -type f 2&gt;/dev/null</code></div></div></li>
<li><span style="font-weight: bold;" class="mycode_b">Değişmezlik:</span> Kritik dosyaları kazara değişikliğe karşı chattr +i ile değişmez yapabilirsiniz (ext4): <div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo chattr +i /etc/onemli.conf</code></div></div></li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
Linux izin yönetimi, karmaşık görünse de birkaç sağlam kavrama dayanır: üç sınıf, üç yetki, özel bitler ve gerektiğinde ACL. chmod/chown/umask üçlüsünü ve SUID/SGID/sticky mantığını iyi oturtmak, hem sistemlerinizi sertleştirmenizi hem de bir denetimde zayıf noktaları hızla görmenizi sağlar. "En az ayrıcalık" ilkesini her kararın merkezine koyun.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynakça</span></span><ul class="mycode_list"><li>GNU Coreutils El Kitabı (chmod, chown) - <a href="https://www.gnu.org/software/coreutils/manual/" target="_blank" rel="noopener" class="mycode_url">https://www.gnu.org/software/coreutils/manual/</a><br />
</li>
<li>chmod(1), chown(1), umask(1p) man sayfaları<br />
</li>
<li>setfacl(1) / getfacl(1) man sayfaları - <a href="https://man7.org/linux/man-pages/man1/setfacl.1.html" target="_blank" rel="noopener" class="mycode_url">https://man7.org/linux/man-pages/man1/setfacl.1.html</a><br />
</li>
<li>Arch Wiki: File permissions and attributes - <a href="https://wiki.archlinux.org/title/File_permissions_and_attributes" target="_blank" rel="noopener" class="mycode_url">https://wiki.archlinux.org/title/File_pe...attributes</a><br />
</li>
<li>Debian Yönetici El Kitabı - <a href="https://www.debian.org/doc/" target="_blank" rel="noopener" class="mycode_url">https://www.debian.org/doc/</a><br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal Uyarı</span></span><br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite>İzin ve sahiplik değişiklikleri yalnızca kendi sistemlerinizde veya yönetim yetkiniz olan sistemlerde yapılmalıdır. Başkasının sistemine izinsiz müdahale Türk Ceza Kanunu 243-245. maddeleri kapsamında suçtur.</blockquote>
<br />
<span style="font-style: italic;" class="mycode_i">Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).</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=250" target="_blank" title="">000-team-new-fc305f.png</a> (Dosya Boyutu: 59.69 KB / İndirme Sayısı: 10)
<!-- 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=251" target="_blank" title="">konu-07-1.png</a> (Dosya Boyutu: 53.79 KB / İndirme Sayısı: 11)
<!-- 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=252" target="_blank" title="">konu-07-2.png</a> (Dosya Boyutu: 56.07 KB / İndirme Sayısı: 8)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[tmux ile Terminal Verimliliği: Pentest İçin Oturum ve Panel Yönetimi]]></title>
			<link>https://www.turkteam.org/konu-tmux-ile-terminal-verimliligi-pentest-icin-oturum-ve-panel-yonetimi.html</link>
			<pubDate>Sun, 18 Oct 2026 21:32:47 +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-tmux-ile-terminal-verimliligi-pentest-icin-oturum-ve-panel-yonetimi.html</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Merhaba TurkTeam,</span><br />
<br />
Uzun süren taramalar, SSH üzerinden yönetilen hedefler ve aynı anda koşan onlarca komut... Bir pentest ya da sistem yönetimi oturumunda en büyük düşmanınız, bağlantı koptuğunda çalışan işlerinizin de ölmesidir. İşte <span style="font-weight: bold;" class="mycode_b">tmux</span> (terminal multiplexer) tam burada devreye girer: tek bir terminalde birden çok oturum, pencere ve paneli yönetmenizi, bağlantı kopsa bile işlerin arka planda sürmesini sağlar. Bu rehberde tmux'u sıfırdan, pentest akışına odaklanarak ele alıyoruz.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>tmux nedir, neden kullanılır (session/window/pane kavramları)<br />
</li>
<li>Kurulum ve ilk çalıştırma<br />
</li>
<li>Prefix tuşu ve temel kısayol referansı<br />
</li>
<li>Uygulamalı: kopan bağlantıya dayanıklı tarama oturumu<br />
</li>
<li>Panel bölme, pencere yönetimi ve kopyalama modu<br />
</li>
<li>İleri seviye: ~/.tmux.conf ile özelleştirme<br />
</li>
<li>Sonuç, kaynakça ve yasal uyarı<br />
</li>
</ol>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. tmux Nedir, Neden Kullanılır?</span></span><br />
tmux, tek bir terminal penceresini birden çok sanal terminale bölen bir "terminal çoğullayıcı"dır. Üç temel kavramı vardır:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Session (oturum):</span> İçinde pencere ve panellerin barındığı en üst kapsayıcı. Oturumdan "detach" olup (ayrılıp) daha sonra "attach" ile geri dönebilirsiniz.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Window (pencere):</span> Oturum içindeki bir sekme gibidir; her biri tam ekrandır.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Pane (panel):</span> Bir pencerenin yatay/dikey bölünmüş parçası; aynı ekranda birden çok kabuk.<br />
</li>
</ul>
Pentest'te en kritik faydası kalıcılıktır: SSH ile bir sunucuya bağlanıp uzun bir Nmap/Gobuster taraması başlattığınızda, bağlantı koparsa klasik kabukta iş ölür. tmux oturumunda ise iş sürmeye devam eder; yeniden bağlanıp attach olduğunuzda kaldığınız yerden devam edersiniz.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Kurulum ve İlk Çalıştırma</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt update
sudo apt install tmux
tmux -V</code></div></div>İsimli bir oturum başlatmak, sonradan bulmayı kolaylaştırır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>tmux new -s denetim</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Prefix Tuşu ve Kısayol Referansı</span></span><br />
tmux komutlarının çoğu bir <span style="font-weight: bold;" class="mycode_b">prefix</span> tuşundan sonra verilir. Varsayılan prefix <span style="font-weight: bold;" class="mycode_b">Ctrl+b</span>'dir (aşağıda "C-b" olarak gösterilir). Önce prefix'e, sonra ilgili tuşa basarsınız.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Oturumdan ayrılma (detach):</span> İş sürerken terminale geri dönmek için.<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b d</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Dikey panel bölme:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b %</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Yatay panel bölme:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b "</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Paneller arası geçiş:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b ok-tuşları</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Yeni pencere / pencereler arası geçiş:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b c      (yeni pencere)
C-b n      (sonraki)
C-b p      (önceki)
C-b 0..9   (numaraya git)</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Paneli kapatma:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b x</code></div></div><br />
Komut satırından oturum yönetimi (prefix'siz):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>tmux ls                 # oturumları listele
tmux attach -t denetim  # oturuma geri dön
tmux kill-session -t denetim</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Uygulamalı: Kopmaya Dayanıklı Tarama Oturumu</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Adım 1 - Oturum aç ve uzun bir iş başlat:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>tmux new -s tarama
nmap -sV -p- 192.168.56.101 -oN tam_tarama.txt</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Adım 2 - Oturumdan ayrıl (iş arkada sürer):</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b d</code></div></div>Terminalde "[detached (from session tarama)]" mesajını görürsünüz. Artık SSH bağlantınız kopsa bile Nmap çalışmaya devam eder.<br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=247" loading="lazy"  alt="[Resim: attachment.php?aid=247]" class="mycode_img" /></div>
<br />
<span style="font-weight: bold;" class="mycode_b">Adım 3 - Daha sonra geri dön:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>tmux attach -t tarama</code></div></div>Tarama devam ediyorsa onu görürsünüz; bittiyse çıktıyı tam_tarama.txt dosyasında bulursunuz:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>tail -n 20 tam_tarama.txt</code></div></div><div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=248" loading="lazy"  alt="[Resim: attachment.php?aid=248]" class="mycode_img" /></div>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Panel ve Pencere ile Çoklu İş</span></span><br />
Pentest'te sık senaryo: bir panelde tarama, diğerinde notlar, üçüncüsünde hedefe açık bir SSH. Bir pencereyi ikiye bölüp ikisinde ayrı iş yürütün:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b %        # dikey böl
C-b "        # alt paneli yatay böl</code></div></div>Panel boyutunu ayarlamak için prefix'i basılı tutup ok tuşlarıyla yeniden boyutlandırabilir (C-b sonrası alt+ok veya :resize-pane komutu) veya bir paneli tam ekran yapıp geri küçültebilirsiniz:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b z        # aktif paneli büyüt/küçült (zoom)</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Kopyalama modu:</span> Uzun çıktıda yukarı kaydırmak ve metin kopyalamak için kopyalama moduna girin:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b [        # kopyalama moduna gir, ok/PageUp ile gez, q ile çık</code></div></div>Bu mod, kaydırma çubuğu olmayan uzak oturumlarda çıktı incelemeyi çok kolaylaştırır.<br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=249" loading="lazy"  alt="[Resim: attachment.php?aid=249]" class="mycode_img" /></div>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. İleri Seviye: ~/.tmux.conf ile Özelleştirme</span></span><br />
Varsayılan prefix (C-b) bazılarına rahatsız gelir; birçok kullanıcı onu C-a yapar. Ayrıca fare desteği ve daha büyük geçmiş tamponu verimliliği artırır. Örnek bir yapılandırma:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># ~/.tmux.conf
set -g prefix C-a
unbind C-b
bind C-a send-prefix
set -g mouse on
set -g history-limit 100000
setw -g mode-keys vi</code></div></div>Değişiklikleri çalışan oturuma uygulamak için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>tmux source-file ~/.tmux.conf</code></div></div><span style="font-weight: bold;" class="mycode_b">mouse on</span> ile paneller fareyle seçilip boyutlandırılabilir; <span style="font-weight: bold;" class="mycode_b">history-limit</span> uzun tarama çıktılarının kaybolmamasını sağlar. vi kip tuşları kopyalama modunda vi alışkanlıklarını getirir.<br />
<br />
Bir diğer güçlü alışkanlık, iş bazlı isimli oturumlardır: her müşteri/hedef için ayrı bir oturum (tmux new -s musteri1) açmak, işleri birbirine karıştırmadan paralel yürütmeyi sağlar. Günün sonunda tmux ls ile tüm aktif işlerinizi tek bakışta görürsünüz.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6.1. tmux, screen ve Pratik Alışkanlıklar</span></span><br />
tmux'un en yakın alternatifi GNU screen'dir. screen daha eski ve yaygın olarak çoğu sunucuda hazır bulunur; tmux ise daha modern yapılandırma, daha güçlü panel yönetimi ve daha okunur bir durum çubuğu sunar. Yeni bir alışkanlık ediniyorsanız tmux'a yatırım yapmanızı öneririm, ancak bir sunucuda yalnızca screen varsa benzer mantıkla (Ctrl+a tabanlı kısayollar) iş görebileceğinizi bilin. İkisinin de ortak amacı aynıdır: oturumu kabuktan ayırıp işi yaşatmak.<br />
<br />
Pentest sırasında tmux'u asıl değerli kılan, bir hedefe uzun süren bir işlem başlatıp bağlantıyı güvenle bırakabilmenizdir. Örneğin saatler sürebilecek bir tam port taraması, bir dizin keşfi ya da bir parola denetimi başlattığınızda, dizüstünüzü uyku moduna alıp eve gidebilir, ertesi gün attach olup kaldığınız yerden devam edebilirsiniz. Bu, özellikle sınırlı zaman penceresi olan kurumsal testlerde zaman kazandırır ve kesintiye bağlı veri kaybını önler.<br />
<br />
Verimliliği artıran birkaç alışkanlık: her göreve anlamlı bir oturum adı verin, böylece tmux ls çıktısı okunur kalsın; sık kullandığınız panel düzenini bir kabuk fonksiyonu veya tmux betiğiyle otomatikleştirin; uzun çıktıları dosyaya da yazdırın (-oN, tee gibi) ki tmux geçmiş tamponuna bel bağlamayın. Son olarak, durum çubuğunu özelleştirerek saat, oturum adı ve aktif pencereyi görünür kılmak, aynı anda birçok iş yürütürken kafa karışıklığını ciddi biçimde azaltır.<br />
<br />
Bir uyarı: tmux oturumu makine yeniden başlatıldığında kaybolur; kalıcılık yalnızca aynı oturum açıkken geçerlidir. Gerçekten kritik, günlerce sürecek işler için işleri bir servis veya nohup ile arka plana almayı da değerlendirin. tmux, insan etkileşimli oturumları yaşatmakta mükemmeldir; uzun ömürlü otomasyon için ise servisleştirme daha doğru bir yaklaşımdır.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
tmux, terminalde çalışan herkesin verimliliğini kökten artıran bir araçtır; pentest'te ise bağlantı kopmalarına karşı sigortanızdır. Önce session/window/pane üçlüsünü ve prefix mantığını oturtun, ardından ~/.tmux.conf ile kendinize göre ayarlayın. Birkaç gün bilinçli kullanımdan sonra kısayollar kas hafızanıza yerleşir ve geri dönmek istemezsiniz.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynakça</span></span><ul class="mycode_list"><li>tmux Resmi Deposu ve Wiki - <a href="https://github.com/tmux/tmux/wiki" target="_blank" rel="noopener" class="mycode_url">https://github.com/tmux/tmux/wiki</a><br />
</li>
<li>tmux(1) Man Sayfası - <a href="https://man.openbsd.org/tmux.1" target="_blank" rel="noopener" class="mycode_url">https://man.openbsd.org/tmux.1</a><br />
</li>
<li>tmux Getting Started - <a href="https://github.com/tmux/tmux/wiki/Getting-Started" target="_blank" rel="noopener" class="mycode_url">https://github.com/tmux/tmux/wiki/Getting-Started</a><br />
</li>
<li>Kali Belgeleri - <a href="https://www.kali.org/docs/" target="_blank" rel="noopener" class="mycode_url">https://www.kali.org/docs/</a><br />
</li>
<li>man tmux (yerel man sayfası)<br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal Uyarı</span></span><br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite>tmux bir verimlilik aracıdır; onunla yürüttüğünüz tüm testler yalnızca kendi sistemlerinizde veya yazılı izinli hedeflerde yapılmalıdır. İzinsiz erişim ve test Türk Ceza Kanunu 243-245. maddeleri kapsamında suçtur.</blockquote>
<br />
<span style="font-style: italic;" class="mycode_i">Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).</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=247" target="_blank" title="">000-team-new-f79a96.png</a> (Dosya Boyutu: 56.6 KB / İndirme Sayısı: 11)
<!-- 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=248" target="_blank" title="">konu-06-1.png</a> (Dosya Boyutu: 51.56 KB / İndirme Sayısı: 11)
<!-- 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=249" target="_blank" title="">konu-06-2.png</a> (Dosya Boyutu: 54.93 KB / İndirme Sayısı: 11)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Merhaba TurkTeam,</span><br />
<br />
Uzun süren taramalar, SSH üzerinden yönetilen hedefler ve aynı anda koşan onlarca komut... Bir pentest ya da sistem yönetimi oturumunda en büyük düşmanınız, bağlantı koptuğunda çalışan işlerinizin de ölmesidir. İşte <span style="font-weight: bold;" class="mycode_b">tmux</span> (terminal multiplexer) tam burada devreye girer: tek bir terminalde birden çok oturum, pencere ve paneli yönetmenizi, bağlantı kopsa bile işlerin arka planda sürmesini sağlar. Bu rehberde tmux'u sıfırdan, pentest akışına odaklanarak ele alıyoruz.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>tmux nedir, neden kullanılır (session/window/pane kavramları)<br />
</li>
<li>Kurulum ve ilk çalıştırma<br />
</li>
<li>Prefix tuşu ve temel kısayol referansı<br />
</li>
<li>Uygulamalı: kopan bağlantıya dayanıklı tarama oturumu<br />
</li>
<li>Panel bölme, pencere yönetimi ve kopyalama modu<br />
</li>
<li>İleri seviye: ~/.tmux.conf ile özelleştirme<br />
</li>
<li>Sonuç, kaynakça ve yasal uyarı<br />
</li>
</ol>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. tmux Nedir, Neden Kullanılır?</span></span><br />
tmux, tek bir terminal penceresini birden çok sanal terminale bölen bir "terminal çoğullayıcı"dır. Üç temel kavramı vardır:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Session (oturum):</span> İçinde pencere ve panellerin barındığı en üst kapsayıcı. Oturumdan "detach" olup (ayrılıp) daha sonra "attach" ile geri dönebilirsiniz.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Window (pencere):</span> Oturum içindeki bir sekme gibidir; her biri tam ekrandır.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Pane (panel):</span> Bir pencerenin yatay/dikey bölünmüş parçası; aynı ekranda birden çok kabuk.<br />
</li>
</ul>
Pentest'te en kritik faydası kalıcılıktır: SSH ile bir sunucuya bağlanıp uzun bir Nmap/Gobuster taraması başlattığınızda, bağlantı koparsa klasik kabukta iş ölür. tmux oturumunda ise iş sürmeye devam eder; yeniden bağlanıp attach olduğunuzda kaldığınız yerden devam edersiniz.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Kurulum ve İlk Çalıştırma</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt update
sudo apt install tmux
tmux -V</code></div></div>İsimli bir oturum başlatmak, sonradan bulmayı kolaylaştırır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>tmux new -s denetim</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Prefix Tuşu ve Kısayol Referansı</span></span><br />
tmux komutlarının çoğu bir <span style="font-weight: bold;" class="mycode_b">prefix</span> tuşundan sonra verilir. Varsayılan prefix <span style="font-weight: bold;" class="mycode_b">Ctrl+b</span>'dir (aşağıda "C-b" olarak gösterilir). Önce prefix'e, sonra ilgili tuşa basarsınız.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Oturumdan ayrılma (detach):</span> İş sürerken terminale geri dönmek için.<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b d</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Dikey panel bölme:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b %</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Yatay panel bölme:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b "</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Paneller arası geçiş:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b ok-tuşları</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Yeni pencere / pencereler arası geçiş:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b c      (yeni pencere)
C-b n      (sonraki)
C-b p      (önceki)
C-b 0..9   (numaraya git)</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Paneli kapatma:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b x</code></div></div><br />
Komut satırından oturum yönetimi (prefix'siz):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>tmux ls                 # oturumları listele
tmux attach -t denetim  # oturuma geri dön
tmux kill-session -t denetim</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Uygulamalı: Kopmaya Dayanıklı Tarama Oturumu</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Adım 1 - Oturum aç ve uzun bir iş başlat:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>tmux new -s tarama
nmap -sV -p- 192.168.56.101 -oN tam_tarama.txt</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Adım 2 - Oturumdan ayrıl (iş arkada sürer):</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b d</code></div></div>Terminalde "[detached (from session tarama)]" mesajını görürsünüz. Artık SSH bağlantınız kopsa bile Nmap çalışmaya devam eder.<br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=247" loading="lazy"  alt="[Resim: attachment.php?aid=247]" class="mycode_img" /></div>
<br />
<span style="font-weight: bold;" class="mycode_b">Adım 3 - Daha sonra geri dön:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>tmux attach -t tarama</code></div></div>Tarama devam ediyorsa onu görürsünüz; bittiyse çıktıyı tam_tarama.txt dosyasında bulursunuz:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>tail -n 20 tam_tarama.txt</code></div></div><div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=248" loading="lazy"  alt="[Resim: attachment.php?aid=248]" class="mycode_img" /></div>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Panel ve Pencere ile Çoklu İş</span></span><br />
Pentest'te sık senaryo: bir panelde tarama, diğerinde notlar, üçüncüsünde hedefe açık bir SSH. Bir pencereyi ikiye bölüp ikisinde ayrı iş yürütün:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b %        # dikey böl
C-b "        # alt paneli yatay böl</code></div></div>Panel boyutunu ayarlamak için prefix'i basılı tutup ok tuşlarıyla yeniden boyutlandırabilir (C-b sonrası alt+ok veya :resize-pane komutu) veya bir paneli tam ekran yapıp geri küçültebilirsiniz:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b z        # aktif paneli büyüt/küçült (zoom)</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Kopyalama modu:</span> Uzun çıktıda yukarı kaydırmak ve metin kopyalamak için kopyalama moduna girin:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>C-b [        # kopyalama moduna gir, ok/PageUp ile gez, q ile çık</code></div></div>Bu mod, kaydırma çubuğu olmayan uzak oturumlarda çıktı incelemeyi çok kolaylaştırır.<br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=249" loading="lazy"  alt="[Resim: attachment.php?aid=249]" class="mycode_img" /></div>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. İleri Seviye: ~/.tmux.conf ile Özelleştirme</span></span><br />
Varsayılan prefix (C-b) bazılarına rahatsız gelir; birçok kullanıcı onu C-a yapar. Ayrıca fare desteği ve daha büyük geçmiş tamponu verimliliği artırır. Örnek bir yapılandırma:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># ~/.tmux.conf
set -g prefix C-a
unbind C-b
bind C-a send-prefix
set -g mouse on
set -g history-limit 100000
setw -g mode-keys vi</code></div></div>Değişiklikleri çalışan oturuma uygulamak için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>tmux source-file ~/.tmux.conf</code></div></div><span style="font-weight: bold;" class="mycode_b">mouse on</span> ile paneller fareyle seçilip boyutlandırılabilir; <span style="font-weight: bold;" class="mycode_b">history-limit</span> uzun tarama çıktılarının kaybolmamasını sağlar. vi kip tuşları kopyalama modunda vi alışkanlıklarını getirir.<br />
<br />
Bir diğer güçlü alışkanlık, iş bazlı isimli oturumlardır: her müşteri/hedef için ayrı bir oturum (tmux new -s musteri1) açmak, işleri birbirine karıştırmadan paralel yürütmeyi sağlar. Günün sonunda tmux ls ile tüm aktif işlerinizi tek bakışta görürsünüz.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6.1. tmux, screen ve Pratik Alışkanlıklar</span></span><br />
tmux'un en yakın alternatifi GNU screen'dir. screen daha eski ve yaygın olarak çoğu sunucuda hazır bulunur; tmux ise daha modern yapılandırma, daha güçlü panel yönetimi ve daha okunur bir durum çubuğu sunar. Yeni bir alışkanlık ediniyorsanız tmux'a yatırım yapmanızı öneririm, ancak bir sunucuda yalnızca screen varsa benzer mantıkla (Ctrl+a tabanlı kısayollar) iş görebileceğinizi bilin. İkisinin de ortak amacı aynıdır: oturumu kabuktan ayırıp işi yaşatmak.<br />
<br />
Pentest sırasında tmux'u asıl değerli kılan, bir hedefe uzun süren bir işlem başlatıp bağlantıyı güvenle bırakabilmenizdir. Örneğin saatler sürebilecek bir tam port taraması, bir dizin keşfi ya da bir parola denetimi başlattığınızda, dizüstünüzü uyku moduna alıp eve gidebilir, ertesi gün attach olup kaldığınız yerden devam edebilirsiniz. Bu, özellikle sınırlı zaman penceresi olan kurumsal testlerde zaman kazandırır ve kesintiye bağlı veri kaybını önler.<br />
<br />
Verimliliği artıran birkaç alışkanlık: her göreve anlamlı bir oturum adı verin, böylece tmux ls çıktısı okunur kalsın; sık kullandığınız panel düzenini bir kabuk fonksiyonu veya tmux betiğiyle otomatikleştirin; uzun çıktıları dosyaya da yazdırın (-oN, tee gibi) ki tmux geçmiş tamponuna bel bağlamayın. Son olarak, durum çubuğunu özelleştirerek saat, oturum adı ve aktif pencereyi görünür kılmak, aynı anda birçok iş yürütürken kafa karışıklığını ciddi biçimde azaltır.<br />
<br />
Bir uyarı: tmux oturumu makine yeniden başlatıldığında kaybolur; kalıcılık yalnızca aynı oturum açıkken geçerlidir. Gerçekten kritik, günlerce sürecek işler için işleri bir servis veya nohup ile arka plana almayı da değerlendirin. tmux, insan etkileşimli oturumları yaşatmakta mükemmeldir; uzun ömürlü otomasyon için ise servisleştirme daha doğru bir yaklaşımdır.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
tmux, terminalde çalışan herkesin verimliliğini kökten artıran bir araçtır; pentest'te ise bağlantı kopmalarına karşı sigortanızdır. Önce session/window/pane üçlüsünü ve prefix mantığını oturtun, ardından ~/.tmux.conf ile kendinize göre ayarlayın. Birkaç gün bilinçli kullanımdan sonra kısayollar kas hafızanıza yerleşir ve geri dönmek istemezsiniz.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynakça</span></span><ul class="mycode_list"><li>tmux Resmi Deposu ve Wiki - <a href="https://github.com/tmux/tmux/wiki" target="_blank" rel="noopener" class="mycode_url">https://github.com/tmux/tmux/wiki</a><br />
</li>
<li>tmux(1) Man Sayfası - <a href="https://man.openbsd.org/tmux.1" target="_blank" rel="noopener" class="mycode_url">https://man.openbsd.org/tmux.1</a><br />
</li>
<li>tmux Getting Started - <a href="https://github.com/tmux/tmux/wiki/Getting-Started" target="_blank" rel="noopener" class="mycode_url">https://github.com/tmux/tmux/wiki/Getting-Started</a><br />
</li>
<li>Kali Belgeleri - <a href="https://www.kali.org/docs/" target="_blank" rel="noopener" class="mycode_url">https://www.kali.org/docs/</a><br />
</li>
<li>man tmux (yerel man sayfası)<br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal Uyarı</span></span><br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite>tmux bir verimlilik aracıdır; onunla yürüttüğünüz tüm testler yalnızca kendi sistemlerinizde veya yazılı izinli hedeflerde yapılmalıdır. İzinsiz erişim ve test Türk Ceza Kanunu 243-245. maddeleri kapsamında suçtur.</blockquote>
<br />
<span style="font-style: italic;" class="mycode_i">Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).</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=247" target="_blank" title="">000-team-new-f79a96.png</a> (Dosya Boyutu: 56.6 KB / İndirme Sayısı: 11)
<!-- 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=248" target="_blank" title="">konu-06-1.png</a> (Dosya Boyutu: 51.56 KB / İndirme Sayısı: 11)
<!-- 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=249" target="_blank" title="">konu-06-2.png</a> (Dosya Boyutu: 54.93 KB / İndirme Sayısı: 11)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Bash Scripting ile Basit Güvenlik Otomasyonu: Sıfırdan Giriş]]></title>
			<link>https://www.turkteam.org/konu-bash-scripting-ile-basit-guvenlik-otomasyonu-sifirdan-giris.html</link>
			<pubDate>Sun, 18 Oct 2026 11:20:27 +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-scripting-ile-basit-guvenlik-otomasyonu-sifirdan-giris.html</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Merhaba TurkTeam,</span><br />
<br />
Güvenlikte tekrarlayan işleri elle yapmak hem zaman kaybı hem de hata kaynağıdır. "Her gün açık portları kontrol et", "yeni SUID dosyası var mı bak", "başarısız giriş sayısını say" gibi işleri bir kez yazıp otomatikleştirmek, hem tutarlılık hem de hız kazandırır. Bu rehber, Bash betik yazımını sıfırdan ele alıyor ve sonunda işe yarar, küçük bir güvenlik kontrol betiği çıkarıyoruz. Amaç, saldırı değil; kendi sisteminizi düzenli denetlemek.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>Bash betiği nedir, shebang ve çalıştırma<br />
</li>
<li>Değişkenler, komut ikamesi ve tırnak kuralları<br />
</li>
<li>Koşullar, karşılaştırmalar ve çıkış kodları<br />
</li>
<li>Döngüler ve fonksiyonlar<br />
</li>
<li>Uygulamalı: güvenlik kontrol betiği<br />
</li>
<li>Güvenli betik yazımı ve zamanlama (cron)<br />
</li>
<li>Sonuç, kaynakça ve yasal uyarı<br />
</li>
</ol>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. İlk Betik: Shebang ve Çalıştırma</span></span><br />
Bir Bash betiği, ilk satırında yorumlayıcıyı belirten "shebang" ile başlar:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>#!/usr/bin/env bash
echo "Merhaba TurkTeam"</code></div></div>Dosyayı kaydedip çalıştırılabilir yapın ve çalıştırın:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>chmod +x betik.sh
./betik.sh</code></div></div>Betiklerinizi sağlamlaştırmak için başa güvenli kipi eklemek iyi bir alışkanlıktır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>#!/usr/bin/env bash
set -euo pipefail</code></div></div>Burada -e hata olunca durur, -u tanımsız değişkende hata verir, pipefail boru hattındaki hatayı yakalar. Bu üçlü, sessiz hataların önüne geçer.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Değişkenler, Komut İkamesi ve Tırnak</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ad="TurkTeam"
tarih=&#36;(date +%F)
echo "Rapor: &#36;ad - &#36;tarih"</code></div></div><span style="font-weight: bold;" class="mycode_b">Kritik kural:</span> Değişkenleri daima çift tırnak içinde kullanın; aksi halde boşluk içeren değerler bölünür ve betik beklenmedik davranır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>dosya="rapor 2026.txt"
# yanlış: cat &#36;dosya   -&gt; iki argüman
cat "&#36;dosya"           # doğru</code></div></div>Komut ikamesi &#36;(...) ile bir komutun çıktısını değişkene alırsınız; bu, otomasyonun temel taşıdır.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Koşullar, Karşılaştırmalar ve Çıkış Kodları</span></span><br />
Her komut bir çıkış kodu döndürür: 0 başarı, sıfırdan farklısı hata. Bunu koşullarda kullanırsınız:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>if systemctl is-active --quiet ssh; then
  echo "SSH çalışıyor"
else
  echo "SSH kapalı!"
fi</code></div></div>Sayısal ve metinsel karşılaştırmalar [[ ]] içinde yapılır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sayi=5
if [[ "&#36;sayi" -gt 3 ]]; then echo "üçten büyük"; fi

if [[ -f /etc/passwd ]]; then echo "dosya var"; fi</code></div></div>Burada -gt sayısal "büyüktür", -f "dosya mevcut mu" testidir. Dizin için -d, okunabilirlik için -r kullanılır.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Döngüler ve Fonksiyonlar</span></span><br />
<span style="font-weight: bold;" class="mycode_b">for döngüsü</span> bir liste üzerinde gezer:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>for servis in ssh cron auditd; do
  systemctl is-active --quiet "&#36;servis" &#92;
    &amp;&amp; echo "&#36;servis: aktif" &#92;
    || echo "&#36;servis: PASİF"
done</code></div></div><span style="font-weight: bold;" class="mycode_b">while read</span> ile bir dosyayı satır satır okursunuz:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>while IFS= read -r satir; do
  echo "Kontrol: &#36;satir"
done &lt; hedefler.txt</code></div></div><span style="font-weight: bold;" class="mycode_b">Fonksiyonlar</span> tekrarı önler ve betiği okunur kılar:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>log() {
  echo "[&#36;(date +%T)] &#36;*"
}
log "Tarama başladı"</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Uygulamalı: Güvenlik Kontrol Betiği</span></span><br />
Şimdi öğrendiklerimizi, kendi makinenizde çalıştırabileceğiniz küçük bir günlük kontrol betiğinde birleştirelim:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>#!/usr/bin/env bash
set -euo pipefail

log() { echo "[&#36;(date +%F_%T)] &#36;*"; }

log "== Dinlenen portlar =="
ss -tulnp

log "== Root SUID dosyaları =="
find / -perm -4000 -type f 2&gt;/dev/null

log "== Son başarısız SSH girişleri (sayı) =="
if command -v journalctl &gt;/dev/null; then
  journalctl -u ssh --since "today" 2&gt;/dev/null &#92;
    | grep -c "Failed password" || true
fi

log "== Kontrol tamamlandı =="</code></div></div>Betiği çalıştırın:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>chmod +x guvenlik_kontrol.sh
./guvenlik_kontrol.sh</code></div></div>Çıktı; açık portları, root SUID ikililerini ve bugünkü başarısız SSH giriş sayısını zaman damgalı satırlarla özetler. Beklenmedik bir açık port veya yeni bir SUID dosyası, incelenmesi gereken ilk sinyallerdir.<br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=157" loading="lazy"  alt="[Resim: attachment.php?aid=157]" class="mycode_img" /></div>
<br />
<span style="font-weight: bold;" class="mycode_b">Çıktıyı dosyaya kaydetme:</span> Raporu tarihli bir dosyaya yazdırmak için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>./guvenlik_kontrol.sh | tee "rapor_&#36;(date +%F).txt"</code></div></div><div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=184" loading="lazy"  alt="[Resim: attachment.php?aid=184]" class="mycode_img" /></div>
<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. Güvenli Betik Yazımı ve Zamanlama</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">set -euo pipefail</span> kullanın; sessiz hataları yakalar.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Değişkenleri tırnaklayın</span> ve kullanıcı girdisini asla doğrudan komuta gömmeyin (komut enjeksiyonu riski).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mutlak yollar:</span> Otomatik çalışan betiklerde komutları tam yoluyla veya kontrollü bir PATH ile çağırın.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">shellcheck ile denetleyin:</span> <div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt install shellcheck &amp;&amp; shellcheck guvenlik_kontrol.sh</code></div></div> Bu araç, yaygın hataları ve riskli kalıpları işaretler.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">cron ile zamanlama:</span> Betiği her gün 07:00'de çalıştırmak için kullanıcı crontab'ına ekleyin: <div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>crontab -e</code></div></div> ve satır: <div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>0 7 * * * /home/kullanici/guvenlik_kontrol.sh &gt;&gt; /home/kullanici/gunluk.log 2&gt;&amp;1</code></div></div></li>
</ul>
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=185" loading="lazy"  alt="[Resim: attachment.php?aid=185]" class="mycode_img" /></div>
<br />
Betiklerinizi küçük tutun, her birini tek bir işe odaklayın ve çıktıyı makinece okunur (örn. anahtar=değer) biçimde tasarlarsanız, ileride bir uyarı sistemine bağlamak kolaylaşır.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6.1. Betik Otomasyonunda Sık Yapılan Hatalar</span></span><br />
Yeni başlayanların güvenlik betiklerinde en sık düştüğü tuzak, tırnaksız değişken kullanımıdır. Bir dosya adında veya bir log satırında boşluk, yıldız veya özel karakter bulunduğunda, tırnaksız bir değişken beklenmedik biçimde bölünür ya da genişler; bu hem hatalı sonuç hem de ciddi güvenlik açığı doğurabilir. Kural basittir: hemen her zaman "&#36;degisken" yazın. İkinci sık hata, kullanıcıdan veya dış bir dosyadan gelen veriyi doğrudan bir komuta gömmektir; bu, komut enjeksiyonuna kapı açar. Dış veriyi her zaman güvenilmez kabul edin ve mümkün olduğunca değişken olarak, tırnaklı biçimde kullanın.<br />
<br />
Bir diğer önemli nokta, betiğin hatasız çalıştığını varsaymaktır. set -euo pipefail olmadan yazılmış bir betik, ortasında bir komut başarısız olsa bile çalışmaya devam eder ve yanıltıcı bir "başarıyla tamamlandı" çıktısı üretebilir. Örneğin disk dolu olduğu için rapor dosyası yazılamazsa, güvenli kip olmadan betik bunu fark etmeden ilerler. Güvenli kip ve anlamlı çıkış kodları, otomasyona güvenebilmenin ön koşuludur; çünkü otomasyonun değeri, siz izlemezken bile doğru çalışmasındadır.<br />
<br />
Son olarak, bir betiği cron ile zamanlamadan önce mutlaka elle birkaç kez çalıştırıp çıktısını doğrulayın. cron ortamı etkileşimli kabuğunuzdan farklıdır: PATH daha dardır, bazı ortam değişkenleri tanımsızdır ve ev dizini farklı bağlamda çözülebilir. Bu yüzden cron ile çalışacak betiklerde komutları tam yoluyla çağırmak veya betiğin başında gerekli PATH'i açıkça ayarlamak, "elimde çalışıyordu ama cron'da çalışmadı" sorununu baştan engeller. Çıktıyı bir log dosyasına yönlendirmek de (&gt;&gt; gunluk.log 2&gt;&amp;1) sorun ayıklamayı kolaylaştırır.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
Bash, güvenlik otomasyonuna başlamak için en erişilebilir araçtır: her Linux sisteminde hazırdır ve birkaç temel yapıyla (değişken, koşul, döngü, fonksiyon) güçlü kontroller yazabilirsiniz. Önce güvenli kip ve tırnak disiplinini oturtun, shellcheck ile denetleyin, sonra cron ile düzenli çalıştırın. Karmaşık işler büyüdüğünde Python'a geçebilirsiniz, ama günlük denetimlerin çoğu için iyi yazılmış bir Bash betiği fazlasıyla yeterlidir.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynakça</span></span><ul class="mycode_list"><li>GNU Bash Resmi El Kitabı - <a href="https://www.gnu.org/software/bash/manual/" target="_blank" rel="noopener" class="mycode_url">https://www.gnu.org/software/bash/manual/</a><br />
</li>
<li>Bash(1) Man Sayfası - <a href="https://man7.org/linux/man-pages/man1/bash.1.html" target="_blank" rel="noopener" class="mycode_url">https://man7.org/linux/man-pages/man1/bash.1.html</a><br />
</li>
<li>ShellCheck - <a href="https://www.shellcheck.net/" target="_blank" rel="noopener" class="mycode_url">https://www.shellcheck.net/</a><br />
</li>
<li>Google Shell Style Guide - <a href="https://google.github.io/styleguide/shellguide.html" target="_blank" rel="noopener" class="mycode_url">https://google.github.io/styleguide/shellguide.html</a><br />
</li>
<li>crontab(5) Man Sayfası - <a href="https://man7.org/linux/man-pages/man5/crontab.5.html" target="_blank" rel="noopener" class="mycode_url">https://man7.org/linux/man-pages/man5/crontab.5.html</a><br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal Uyarı</span></span><br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite>Buradaki betikler yalnızca kendi sistemlerinizde veya yönetim yetkiniz olan sistemlerde çalıştırılmalıdır. Başkasının sistemine izinsiz müdahale Türk Ceza Kanunu 243-245. maddeleri kapsamında suçtur.</blockquote>
<br />
<span style="font-style: italic;" class="mycode_i">Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).</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=157" target="_blank" title="">000-team-gb-konu-14.png</a> (Dosya Boyutu: 62.8 KB / İndirme Sayısı: 8)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Merhaba TurkTeam,</span><br />
<br />
Güvenlikte tekrarlayan işleri elle yapmak hem zaman kaybı hem de hata kaynağıdır. "Her gün açık portları kontrol et", "yeni SUID dosyası var mı bak", "başarısız giriş sayısını say" gibi işleri bir kez yazıp otomatikleştirmek, hem tutarlılık hem de hız kazandırır. Bu rehber, Bash betik yazımını sıfırdan ele alıyor ve sonunda işe yarar, küçük bir güvenlik kontrol betiği çıkarıyoruz. Amaç, saldırı değil; kendi sisteminizi düzenli denetlemek.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>Bash betiği nedir, shebang ve çalıştırma<br />
</li>
<li>Değişkenler, komut ikamesi ve tırnak kuralları<br />
</li>
<li>Koşullar, karşılaştırmalar ve çıkış kodları<br />
</li>
<li>Döngüler ve fonksiyonlar<br />
</li>
<li>Uygulamalı: güvenlik kontrol betiği<br />
</li>
<li>Güvenli betik yazımı ve zamanlama (cron)<br />
</li>
<li>Sonuç, kaynakça ve yasal uyarı<br />
</li>
</ol>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. İlk Betik: Shebang ve Çalıştırma</span></span><br />
Bir Bash betiği, ilk satırında yorumlayıcıyı belirten "shebang" ile başlar:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>#!/usr/bin/env bash
echo "Merhaba TurkTeam"</code></div></div>Dosyayı kaydedip çalıştırılabilir yapın ve çalıştırın:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>chmod +x betik.sh
./betik.sh</code></div></div>Betiklerinizi sağlamlaştırmak için başa güvenli kipi eklemek iyi bir alışkanlıktır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>#!/usr/bin/env bash
set -euo pipefail</code></div></div>Burada -e hata olunca durur, -u tanımsız değişkende hata verir, pipefail boru hattındaki hatayı yakalar. Bu üçlü, sessiz hataların önüne geçer.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Değişkenler, Komut İkamesi ve Tırnak</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ad="TurkTeam"
tarih=&#36;(date +%F)
echo "Rapor: &#36;ad - &#36;tarih"</code></div></div><span style="font-weight: bold;" class="mycode_b">Kritik kural:</span> Değişkenleri daima çift tırnak içinde kullanın; aksi halde boşluk içeren değerler bölünür ve betik beklenmedik davranır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>dosya="rapor 2026.txt"
# yanlış: cat &#36;dosya   -&gt; iki argüman
cat "&#36;dosya"           # doğru</code></div></div>Komut ikamesi &#36;(...) ile bir komutun çıktısını değişkene alırsınız; bu, otomasyonun temel taşıdır.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Koşullar, Karşılaştırmalar ve Çıkış Kodları</span></span><br />
Her komut bir çıkış kodu döndürür: 0 başarı, sıfırdan farklısı hata. Bunu koşullarda kullanırsınız:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>if systemctl is-active --quiet ssh; then
  echo "SSH çalışıyor"
else
  echo "SSH kapalı!"
fi</code></div></div>Sayısal ve metinsel karşılaştırmalar [[ ]] içinde yapılır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sayi=5
if [[ "&#36;sayi" -gt 3 ]]; then echo "üçten büyük"; fi

if [[ -f /etc/passwd ]]; then echo "dosya var"; fi</code></div></div>Burada -gt sayısal "büyüktür", -f "dosya mevcut mu" testidir. Dizin için -d, okunabilirlik için -r kullanılır.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Döngüler ve Fonksiyonlar</span></span><br />
<span style="font-weight: bold;" class="mycode_b">for döngüsü</span> bir liste üzerinde gezer:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>for servis in ssh cron auditd; do
  systemctl is-active --quiet "&#36;servis" &#92;
    &amp;&amp; echo "&#36;servis: aktif" &#92;
    || echo "&#36;servis: PASİF"
done</code></div></div><span style="font-weight: bold;" class="mycode_b">while read</span> ile bir dosyayı satır satır okursunuz:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>while IFS= read -r satir; do
  echo "Kontrol: &#36;satir"
done &lt; hedefler.txt</code></div></div><span style="font-weight: bold;" class="mycode_b">Fonksiyonlar</span> tekrarı önler ve betiği okunur kılar:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>log() {
  echo "[&#36;(date +%T)] &#36;*"
}
log "Tarama başladı"</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Uygulamalı: Güvenlik Kontrol Betiği</span></span><br />
Şimdi öğrendiklerimizi, kendi makinenizde çalıştırabileceğiniz küçük bir günlük kontrol betiğinde birleştirelim:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>#!/usr/bin/env bash
set -euo pipefail

log() { echo "[&#36;(date +%F_%T)] &#36;*"; }

log "== Dinlenen portlar =="
ss -tulnp

log "== Root SUID dosyaları =="
find / -perm -4000 -type f 2&gt;/dev/null

log "== Son başarısız SSH girişleri (sayı) =="
if command -v journalctl &gt;/dev/null; then
  journalctl -u ssh --since "today" 2&gt;/dev/null &#92;
    | grep -c "Failed password" || true
fi

log "== Kontrol tamamlandı =="</code></div></div>Betiği çalıştırın:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>chmod +x guvenlik_kontrol.sh
./guvenlik_kontrol.sh</code></div></div>Çıktı; açık portları, root SUID ikililerini ve bugünkü başarısız SSH giriş sayısını zaman damgalı satırlarla özetler. Beklenmedik bir açık port veya yeni bir SUID dosyası, incelenmesi gereken ilk sinyallerdir.<br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=157" loading="lazy"  alt="[Resim: attachment.php?aid=157]" class="mycode_img" /></div>
<br />
<span style="font-weight: bold;" class="mycode_b">Çıktıyı dosyaya kaydetme:</span> Raporu tarihli bir dosyaya yazdırmak için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>./guvenlik_kontrol.sh | tee "rapor_&#36;(date +%F).txt"</code></div></div><div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=184" loading="lazy"  alt="[Resim: attachment.php?aid=184]" class="mycode_img" /></div>
<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. Güvenli Betik Yazımı ve Zamanlama</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">set -euo pipefail</span> kullanın; sessiz hataları yakalar.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Değişkenleri tırnaklayın</span> ve kullanıcı girdisini asla doğrudan komuta gömmeyin (komut enjeksiyonu riski).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mutlak yollar:</span> Otomatik çalışan betiklerde komutları tam yoluyla veya kontrollü bir PATH ile çağırın.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">shellcheck ile denetleyin:</span> <div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt install shellcheck &amp;&amp; shellcheck guvenlik_kontrol.sh</code></div></div> Bu araç, yaygın hataları ve riskli kalıpları işaretler.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">cron ile zamanlama:</span> Betiği her gün 07:00'de çalıştırmak için kullanıcı crontab'ına ekleyin: <div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>crontab -e</code></div></div> ve satır: <div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>0 7 * * * /home/kullanici/guvenlik_kontrol.sh &gt;&gt; /home/kullanici/gunluk.log 2&gt;&amp;1</code></div></div></li>
</ul>
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=185" loading="lazy"  alt="[Resim: attachment.php?aid=185]" class="mycode_img" /></div>
<br />
Betiklerinizi küçük tutun, her birini tek bir işe odaklayın ve çıktıyı makinece okunur (örn. anahtar=değer) biçimde tasarlarsanız, ileride bir uyarı sistemine bağlamak kolaylaşır.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6.1. Betik Otomasyonunda Sık Yapılan Hatalar</span></span><br />
Yeni başlayanların güvenlik betiklerinde en sık düştüğü tuzak, tırnaksız değişken kullanımıdır. Bir dosya adında veya bir log satırında boşluk, yıldız veya özel karakter bulunduğunda, tırnaksız bir değişken beklenmedik biçimde bölünür ya da genişler; bu hem hatalı sonuç hem de ciddi güvenlik açığı doğurabilir. Kural basittir: hemen her zaman "&#36;degisken" yazın. İkinci sık hata, kullanıcıdan veya dış bir dosyadan gelen veriyi doğrudan bir komuta gömmektir; bu, komut enjeksiyonuna kapı açar. Dış veriyi her zaman güvenilmez kabul edin ve mümkün olduğunca değişken olarak, tırnaklı biçimde kullanın.<br />
<br />
Bir diğer önemli nokta, betiğin hatasız çalıştığını varsaymaktır. set -euo pipefail olmadan yazılmış bir betik, ortasında bir komut başarısız olsa bile çalışmaya devam eder ve yanıltıcı bir "başarıyla tamamlandı" çıktısı üretebilir. Örneğin disk dolu olduğu için rapor dosyası yazılamazsa, güvenli kip olmadan betik bunu fark etmeden ilerler. Güvenli kip ve anlamlı çıkış kodları, otomasyona güvenebilmenin ön koşuludur; çünkü otomasyonun değeri, siz izlemezken bile doğru çalışmasındadır.<br />
<br />
Son olarak, bir betiği cron ile zamanlamadan önce mutlaka elle birkaç kez çalıştırıp çıktısını doğrulayın. cron ortamı etkileşimli kabuğunuzdan farklıdır: PATH daha dardır, bazı ortam değişkenleri tanımsızdır ve ev dizini farklı bağlamda çözülebilir. Bu yüzden cron ile çalışacak betiklerde komutları tam yoluyla çağırmak veya betiğin başında gerekli PATH'i açıkça ayarlamak, "elimde çalışıyordu ama cron'da çalışmadı" sorununu baştan engeller. Çıktıyı bir log dosyasına yönlendirmek de (&gt;&gt; gunluk.log 2&gt;&amp;1) sorun ayıklamayı kolaylaştırır.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
Bash, güvenlik otomasyonuna başlamak için en erişilebilir araçtır: her Linux sisteminde hazırdır ve birkaç temel yapıyla (değişken, koşul, döngü, fonksiyon) güçlü kontroller yazabilirsiniz. Önce güvenli kip ve tırnak disiplinini oturtun, shellcheck ile denetleyin, sonra cron ile düzenli çalıştırın. Karmaşık işler büyüdüğünde Python'a geçebilirsiniz, ama günlük denetimlerin çoğu için iyi yazılmış bir Bash betiği fazlasıyla yeterlidir.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynakça</span></span><ul class="mycode_list"><li>GNU Bash Resmi El Kitabı - <a href="https://www.gnu.org/software/bash/manual/" target="_blank" rel="noopener" class="mycode_url">https://www.gnu.org/software/bash/manual/</a><br />
</li>
<li>Bash(1) Man Sayfası - <a href="https://man7.org/linux/man-pages/man1/bash.1.html" target="_blank" rel="noopener" class="mycode_url">https://man7.org/linux/man-pages/man1/bash.1.html</a><br />
</li>
<li>ShellCheck - <a href="https://www.shellcheck.net/" target="_blank" rel="noopener" class="mycode_url">https://www.shellcheck.net/</a><br />
</li>
<li>Google Shell Style Guide - <a href="https://google.github.io/styleguide/shellguide.html" target="_blank" rel="noopener" class="mycode_url">https://google.github.io/styleguide/shellguide.html</a><br />
</li>
<li>crontab(5) Man Sayfası - <a href="https://man7.org/linux/man-pages/man5/crontab.5.html" target="_blank" rel="noopener" class="mycode_url">https://man7.org/linux/man-pages/man5/crontab.5.html</a><br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal Uyarı</span></span><br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite>Buradaki betikler yalnızca kendi sistemlerinizde veya yönetim yetkiniz olan sistemlerde çalıştırılmalıdır. Başkasının sistemine izinsiz müdahale Türk Ceza Kanunu 243-245. maddeleri kapsamında suçtur.</blockquote>
<br />
<span style="font-style: italic;" class="mycode_i">Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).</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=157" target="_blank" title="">000-team-gb-konu-14.png</a> (Dosya Boyutu: 62.8 KB / İndirme Sayısı: 8)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[auditd ile Linux Olay Denetimi: Kural Yazımı ve Log İnceleme]]></title>
			<link>https://www.turkteam.org/konu-auditd-ile-linux-olay-denetimi-kural-yazimi-ve-log-inceleme.html</link>
			<pubDate>Sun, 18 Oct 2026 11:11:15 +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-auditd-ile-linux-olay-denetimi-kural-yazimi-ve-log-inceleme.html</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Merhaba TurkTeam,</span><br />
<br />
Bir Linux sistemde "kim, ne zaman, hangi dosyaya dokundu veya hangi komutu çalıştırdı?" sorusunun kesin cevabını veren bileşen <span style="font-weight: bold;" class="mycode_b">auditd</span>'dir. Linux Audit alt sistemi, çekirdek düzeyinde olayları yakalayıp standart bir denetim kaydına yazar; bu da hem güvenlik izleme (mavi takım) hem de uyumluluk (PCI-DSS, CIS) için paha biçilmezdir. Bu rehberde auditd'yi kurulumdan kural yazımına ve log incelemeye kadar uygulamalı ele alıyoruz.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>Linux Audit alt sistemi nedir, syslog'dan farkı<br />
</li>
<li>Kurulum ve servis yönetimi<br />
</li>
<li>Dosya izleme (watch) ve syscall kuralları<br />
</li>
<li>auditctl, ausearch ve aureport referansı<br />
</li>
<li>Uygulamalı: hassas dosya ve komut denetimi<br />
</li>
<li>Kalıcı kurallar ve ileri ipuçları<br />
</li>
<li>Sonuç, kaynakça ve yasal uyarı<br />
</li>
</ol>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. Linux Audit Alt Sistemi Nedir?</span></span><br />
Linux Audit, çekirdekteki olayları (dosya erişimleri, sistem çağrıları, kullanıcı oturumları, yetki değişiklikleri) yakalayan bir denetim çerçevesidir. Kullanıcı uzayındaki <span style="font-weight: bold;" class="mycode_b">auditd</span> servisi bu olayları toplayıp genelde /var/log/audit/audit.log dosyasına yazar. Sıradan syslog'dan farkı, çekirdek düzeyinde ve değiştirilmesi zor, ince ayarlı bir denetim izi sunmasıdır: Örneğin "bu dosya her değiştirildiğinde kaydet" veya "her execve sistem çağrısını kaydet" gibi kurallar yazabilirsiniz. Bu, bir olay sonrası adli incelemenin ve gerçek zamanlı tespitin temelini oluşturur.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Kurulum ve Servis Yönetimi</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt update
sudo apt install auditd audispd-plugins
sudo systemctl enable --now auditd
sudo systemctl status auditd</code></div></div>Çalışan kuralları ve durumu görmek için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -s      # durum (enabled, backlog vb.)
sudo auditctl -l      # yüklü kurallar</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Dosya İzleme ve Syscall Kuralları</span></span><br />
auditd iki temel kural türü kullanır: <span style="font-weight: bold;" class="mycode_b">watch</span> (dosya/dizin izleme) ve <span style="font-weight: bold;" class="mycode_b">syscall</span> (sistem çağrısı izleme).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Dosya izleme (-w):</span> -p ile izin türleri (r okuma, w yazma, x çalıştırma, a öznitelik), -k ile arama anahtarı:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -w /etc/passwd -p wa -k passwd_degisiklik</code></div></div>Bu kural, /etc/passwd her yazıldığında veya özniteliği değiştiğinde bir kayıt üretir ve "passwd_degisiklik" anahtarıyla etiketler.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Syscall kuralı (-a):</span> mimari (-F arch), çağrı (-S) ve koşullarla:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -a always,exit -F arch=b64 -S execve -k komut_calistirma</code></div></div>Bu kural, 64-bit sistemde çalıştırılan her komutu (execve) kaydeder. "always,exit" çağrı tamamlandığında her zaman kaydet anlamına gelir.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Belirli kullanıcıyı hedefleme (-F auid):</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -a always,exit -F arch=b64 -S execve -F auid=1000 -k kullanici1000_komut</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. auditctl, ausearch ve aureport Referansı</span></span><br />
<span style="font-weight: bold;" class="mycode_b">auditctl</span> - kuralları canlı yönetir (yeniden başlatınca kaybolur, kalıcı için bkz. 6. bölüm):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -l        # listele
sudo auditctl -D        # tüm kuralları sil</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">ausearch</span> - denetim kayıtlarında arama (anahtara, kullanıcıya, zamana göre):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo ausearch -k passwd_degisiklik
sudo ausearch -ui 1000 --start today
sudo ausearch -m EXECVE --start recent</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">aureport</span> - özet raporlar:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo aureport --summary
sudo aureport -au        # kimlik doğrulama olayları
sudo aureport -f         # dosya olayları</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Uygulamalı: Hassas Dosya ve Komut Denetimi</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Adım 1 - /etc/shadow izleme kuralı ekleyin:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -w /etc/shadow -p wa -k shadow_izleme</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Adım 2 - Dosyaya dokunarak olay üretin (lab):</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo touch /etc/shadow</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Adım 3 - İlgili kaydı arayın:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo ausearch -k shadow_izleme --start recent</code></div></div>Dönen kayıt şuna benzer alanlar içerir; type=SYSCALL satırında syscall, başarı durumu (success=yes), komut (comm="touch"), çalıştıran kullanıcı (auid) ve anahtar (key="shadow_izleme") yer alır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>type=SYSCALL ... syscall=... success=yes ... comm="touch" exe="/usr/bin/touch" ... auid=1000 ... key="shadow_izleme"</code></div></div>Bu çıktı, hangi kullanıcının hangi komutla dosyaya dokunduğunu net biçimde gösterir.<br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=146" loading="lazy"  alt="[Resim: attachment.php?aid=146]" class="mycode_img" /></div>
<br />
<span style="font-weight: bold;" class="mycode_b">Adım 4 - Komut çalıştırma denetimi ve özet rapor:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -a always,exit -F arch=b64 -S execve -k tum_komutlar
# birkaç komut çalıştırdıktan sonra
sudo aureport -x --summary</code></div></div>aureport -x çalıştırılabilir dosya (executable) bazında özet verir; anormal bir ikili (örn. beklenmedik bir yoldan çalışan kabuk) hemen göze çarpar.<br />
<br />
<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. Kalıcı Kurallar ve İleri İpuçları</span></span><br />
auditctl ile eklenen kurallar yeniden başlatmada kaybolur. Kalıcılık için kuralları /etc/audit/rules.d/ altında bir .rules dosyasına yazın:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># /etc/audit/rules.d/ozel.rules
-w /etc/passwd -p wa -k passwd_degisiklik
-w /etc/shadow -p wa -k shadow_izleme
-a always,exit -F arch=b64 -S execve -k komut_calistirma</code></div></div>Ardından kuralları derleyip yükleyin:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo augenrules --load
sudo auditctl -l</code></div></div><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Hazır kural setleri:</span> CIS ve STIG uyumlu örnek kurallar için topluluk kural dosyalarını (ör. Neo23x0/auditd) başlangıç olarak inceleyebilirsiniz.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Değişmezlik:</span> rules dosyasının sonuna "-e 2" eklemek, kural setini sonraki yeniden başlatmaya kadar kilitler; saldırganın denetimi kapatmasını zorlaştırır.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Performans:</span> Her execve'yi kaydetmek yoğun sistemlerde çok log üretir; kapsamı anahtar dosyalar ve kritik çağrılarla sınırlayın.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Merkezileştirme:</span> audispd eklentileriyle kayıtları bir SIEM'e iletebilirsiniz; yerelde kalan log, saldırgan tarafından silinebilir.<br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6.1. auditd ve Olay İzlemeyi Birlikte Düşünmek</span></span><br />
auditd tek başına bir "tespit" aracı değildir; o, güvenilir bir ham kayıt üretir. Asıl değer, bu kayıtların düzenli olarak incelenmesi ve bir uyarı mekanizmasına bağlanmasıyla ortaya çıkar. Pratikte çoğu kurum auditd kayıtlarını audispd eklentileri aracılığıyla merkezi bir toplama noktasına (SIEM) iletir; çünkü yerelde kalan bir log, makineyi ele geçiren bir saldırgan tarafından silinebilir veya değiştirilebilir. Kayıtları ulaşıldığı anda ağ üzerinden dışarı taşımak, delil bütünlüğünü korumanın en sağlam yoludur.<br />
<br />
Kural tasarlarken "her şeyi kaydet" tuzağına düşmeyin. Çekirdek düzeyinde her sistem çağrısını yakalamak teknik olarak mümkündür, ama yoğun bir sunucuda bu, dakikalar içinde gigabaytlarca log ve ciddi bir performans maliyeti anlamına gelir. Bunun yerine tehdit modelinize odaklanın: hassas yapılandırma dosyaları (/etc/passwd, /etc/shadow, /etc/sudoers), yetki yükseltme ile ilişkili ikililer, kimlik doğrulama olayları ve kritik dizinlerdeki değişiklikler. Az ama anlamlı kurallar, çok ama gürültülü kurallardan her zaman daha kullanışlıdır.<br />
<br />
Son olarak, auditd kayıtlarını okumayı öğrenmek bir beceridir. type=SYSCALL, type=PATH ve type=EXECVE gibi farklı kayıt tipleri aynı olayın farklı yönlerini anlatır; ausearch bunları olay kimliğiyle gruplar. Bir kaydı incelerken auid (asıl oturum açan kullanıcı) ile uid (etkin kullanıcı) ayrımına özellikle dikkat edin: bir saldırgan sudo ile yetki yükseltse bile auid, gerçekte kimin oturum açtığını ele verir. Bu küçük detay, adli incelemede failin kim olduğunu belirlemenin anahtarıdır.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
auditd, Linux'ta denetim izinin altın standardıdır: ince ayarlı kurallarla kimin neyi ne zaman yaptığını güvenilir biçimde kaydeder. watch ve syscall kurallarını, ausearch/aureport ile inceleme alışkanlığını ve kalıcı kural yönetimini oturttuğunuzda, hem tespit hem de adli inceleme kapasiteniz ciddi biçimde artar. Kuralları kritik varlıklara odaklayın ve mümkünse kayıtları merkezi bir sisteme iletin.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynakça</span></span><ul class="mycode_list"><li>Linux Audit Projesi (resmi) - <a href="https://github.com/linux-audit/audit-documentation" target="_blank" rel="noopener" class="mycode_url">https://github.com/linux-audit/audit-documentation</a><br />
</li>
<li>auditctl(8) Man Sayfası - <a href="https://man7.org/linux/man-pages/man8/auditctl.8.html" target="_blank" rel="noopener" class="mycode_url">https://man7.org/linux/man-pages/man8/auditctl.8.html</a><br />
</li>
<li>ausearch(8) ve aureport(8) man sayfaları - <a href="https://man7.org/linux/man-pages/man8/ausearch.8.html" target="_blank" rel="noopener" class="mycode_url">https://man7.org/linux/man-pages/man8/ausearch.8.html</a><br />
</li>
<li>Red Hat: Linux Audit Sistemi - <a href="https://access.redhat.com/documentation" target="_blank" rel="noopener" class="mycode_url">https://access.redhat.com/documentation</a><br />
</li>
<li>CIS Benchmarks - <a href="https://www.cisecurity.org/cis-benchmarks" target="_blank" rel="noopener" class="mycode_url">https://www.cisecurity.org/cis-benchmarks</a><br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal Uyarı</span></span><br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite>Denetim yapılandırması yalnızca kendi sistemlerinizde veya yönetim yetkiniz olan sistemlerde uygulanmalıdır. Başkasının sistemine izinsiz müdahale Türk Ceza Kanunu 243-245. maddeleri kapsamında suçtur.</blockquote>
<br />
<span style="font-style: italic;" class="mycode_i">Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).</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=146" target="_blank" title="">000-team-gb-konu-12.png</a> (Dosya Boyutu: 56.67 KB / İndirme Sayısı: 10)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Merhaba TurkTeam,</span><br />
<br />
Bir Linux sistemde "kim, ne zaman, hangi dosyaya dokundu veya hangi komutu çalıştırdı?" sorusunun kesin cevabını veren bileşen <span style="font-weight: bold;" class="mycode_b">auditd</span>'dir. Linux Audit alt sistemi, çekirdek düzeyinde olayları yakalayıp standart bir denetim kaydına yazar; bu da hem güvenlik izleme (mavi takım) hem de uyumluluk (PCI-DSS, CIS) için paha biçilmezdir. Bu rehberde auditd'yi kurulumdan kural yazımına ve log incelemeye kadar uygulamalı ele alıyoruz.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>Linux Audit alt sistemi nedir, syslog'dan farkı<br />
</li>
<li>Kurulum ve servis yönetimi<br />
</li>
<li>Dosya izleme (watch) ve syscall kuralları<br />
</li>
<li>auditctl, ausearch ve aureport referansı<br />
</li>
<li>Uygulamalı: hassas dosya ve komut denetimi<br />
</li>
<li>Kalıcı kurallar ve ileri ipuçları<br />
</li>
<li>Sonuç, kaynakça ve yasal uyarı<br />
</li>
</ol>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. Linux Audit Alt Sistemi Nedir?</span></span><br />
Linux Audit, çekirdekteki olayları (dosya erişimleri, sistem çağrıları, kullanıcı oturumları, yetki değişiklikleri) yakalayan bir denetim çerçevesidir. Kullanıcı uzayındaki <span style="font-weight: bold;" class="mycode_b">auditd</span> servisi bu olayları toplayıp genelde /var/log/audit/audit.log dosyasına yazar. Sıradan syslog'dan farkı, çekirdek düzeyinde ve değiştirilmesi zor, ince ayarlı bir denetim izi sunmasıdır: Örneğin "bu dosya her değiştirildiğinde kaydet" veya "her execve sistem çağrısını kaydet" gibi kurallar yazabilirsiniz. Bu, bir olay sonrası adli incelemenin ve gerçek zamanlı tespitin temelini oluşturur.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Kurulum ve Servis Yönetimi</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt update
sudo apt install auditd audispd-plugins
sudo systemctl enable --now auditd
sudo systemctl status auditd</code></div></div>Çalışan kuralları ve durumu görmek için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -s      # durum (enabled, backlog vb.)
sudo auditctl -l      # yüklü kurallar</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Dosya İzleme ve Syscall Kuralları</span></span><br />
auditd iki temel kural türü kullanır: <span style="font-weight: bold;" class="mycode_b">watch</span> (dosya/dizin izleme) ve <span style="font-weight: bold;" class="mycode_b">syscall</span> (sistem çağrısı izleme).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Dosya izleme (-w):</span> -p ile izin türleri (r okuma, w yazma, x çalıştırma, a öznitelik), -k ile arama anahtarı:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -w /etc/passwd -p wa -k passwd_degisiklik</code></div></div>Bu kural, /etc/passwd her yazıldığında veya özniteliği değiştiğinde bir kayıt üretir ve "passwd_degisiklik" anahtarıyla etiketler.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Syscall kuralı (-a):</span> mimari (-F arch), çağrı (-S) ve koşullarla:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -a always,exit -F arch=b64 -S execve -k komut_calistirma</code></div></div>Bu kural, 64-bit sistemde çalıştırılan her komutu (execve) kaydeder. "always,exit" çağrı tamamlandığında her zaman kaydet anlamına gelir.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Belirli kullanıcıyı hedefleme (-F auid):</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -a always,exit -F arch=b64 -S execve -F auid=1000 -k kullanici1000_komut</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. auditctl, ausearch ve aureport Referansı</span></span><br />
<span style="font-weight: bold;" class="mycode_b">auditctl</span> - kuralları canlı yönetir (yeniden başlatınca kaybolur, kalıcı için bkz. 6. bölüm):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -l        # listele
sudo auditctl -D        # tüm kuralları sil</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">ausearch</span> - denetim kayıtlarında arama (anahtara, kullanıcıya, zamana göre):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo ausearch -k passwd_degisiklik
sudo ausearch -ui 1000 --start today
sudo ausearch -m EXECVE --start recent</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">aureport</span> - özet raporlar:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo aureport --summary
sudo aureport -au        # kimlik doğrulama olayları
sudo aureport -f         # dosya olayları</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Uygulamalı: Hassas Dosya ve Komut Denetimi</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Adım 1 - /etc/shadow izleme kuralı ekleyin:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -w /etc/shadow -p wa -k shadow_izleme</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Adım 2 - Dosyaya dokunarak olay üretin (lab):</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo touch /etc/shadow</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Adım 3 - İlgili kaydı arayın:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo ausearch -k shadow_izleme --start recent</code></div></div>Dönen kayıt şuna benzer alanlar içerir; type=SYSCALL satırında syscall, başarı durumu (success=yes), komut (comm="touch"), çalıştıran kullanıcı (auid) ve anahtar (key="shadow_izleme") yer alır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>type=SYSCALL ... syscall=... success=yes ... comm="touch" exe="/usr/bin/touch" ... auid=1000 ... key="shadow_izleme"</code></div></div>Bu çıktı, hangi kullanıcının hangi komutla dosyaya dokunduğunu net biçimde gösterir.<br />
<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=146" loading="lazy"  alt="[Resim: attachment.php?aid=146]" class="mycode_img" /></div>
<br />
<span style="font-weight: bold;" class="mycode_b">Adım 4 - Komut çalıştırma denetimi ve özet rapor:</span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo auditctl -a always,exit -F arch=b64 -S execve -k tum_komutlar
# birkaç komut çalıştırdıktan sonra
sudo aureport -x --summary</code></div></div>aureport -x çalıştırılabilir dosya (executable) bazında özet verir; anormal bir ikili (örn. beklenmedik bir yoldan çalışan kabuk) hemen göze çarpar.<br />
<br />
<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. Kalıcı Kurallar ve İleri İpuçları</span></span><br />
auditctl ile eklenen kurallar yeniden başlatmada kaybolur. Kalıcılık için kuralları /etc/audit/rules.d/ altında bir .rules dosyasına yazın:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># /etc/audit/rules.d/ozel.rules
-w /etc/passwd -p wa -k passwd_degisiklik
-w /etc/shadow -p wa -k shadow_izleme
-a always,exit -F arch=b64 -S execve -k komut_calistirma</code></div></div>Ardından kuralları derleyip yükleyin:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo augenrules --load
sudo auditctl -l</code></div></div><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Hazır kural setleri:</span> CIS ve STIG uyumlu örnek kurallar için topluluk kural dosyalarını (ör. Neo23x0/auditd) başlangıç olarak inceleyebilirsiniz.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Değişmezlik:</span> rules dosyasının sonuna "-e 2" eklemek, kural setini sonraki yeniden başlatmaya kadar kilitler; saldırganın denetimi kapatmasını zorlaştırır.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Performans:</span> Her execve'yi kaydetmek yoğun sistemlerde çok log üretir; kapsamı anahtar dosyalar ve kritik çağrılarla sınırlayın.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Merkezileştirme:</span> audispd eklentileriyle kayıtları bir SIEM'e iletebilirsiniz; yerelde kalan log, saldırgan tarafından silinebilir.<br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6.1. auditd ve Olay İzlemeyi Birlikte Düşünmek</span></span><br />
auditd tek başına bir "tespit" aracı değildir; o, güvenilir bir ham kayıt üretir. Asıl değer, bu kayıtların düzenli olarak incelenmesi ve bir uyarı mekanizmasına bağlanmasıyla ortaya çıkar. Pratikte çoğu kurum auditd kayıtlarını audispd eklentileri aracılığıyla merkezi bir toplama noktasına (SIEM) iletir; çünkü yerelde kalan bir log, makineyi ele geçiren bir saldırgan tarafından silinebilir veya değiştirilebilir. Kayıtları ulaşıldığı anda ağ üzerinden dışarı taşımak, delil bütünlüğünü korumanın en sağlam yoludur.<br />
<br />
Kural tasarlarken "her şeyi kaydet" tuzağına düşmeyin. Çekirdek düzeyinde her sistem çağrısını yakalamak teknik olarak mümkündür, ama yoğun bir sunucuda bu, dakikalar içinde gigabaytlarca log ve ciddi bir performans maliyeti anlamına gelir. Bunun yerine tehdit modelinize odaklanın: hassas yapılandırma dosyaları (/etc/passwd, /etc/shadow, /etc/sudoers), yetki yükseltme ile ilişkili ikililer, kimlik doğrulama olayları ve kritik dizinlerdeki değişiklikler. Az ama anlamlı kurallar, çok ama gürültülü kurallardan her zaman daha kullanışlıdır.<br />
<br />
Son olarak, auditd kayıtlarını okumayı öğrenmek bir beceridir. type=SYSCALL, type=PATH ve type=EXECVE gibi farklı kayıt tipleri aynı olayın farklı yönlerini anlatır; ausearch bunları olay kimliğiyle gruplar. Bir kaydı incelerken auid (asıl oturum açan kullanıcı) ile uid (etkin kullanıcı) ayrımına özellikle dikkat edin: bir saldırgan sudo ile yetki yükseltse bile auid, gerçekte kimin oturum açtığını ele verir. Bu küçük detay, adli incelemede failin kim olduğunu belirlemenin anahtarıdır.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
auditd, Linux'ta denetim izinin altın standardıdır: ince ayarlı kurallarla kimin neyi ne zaman yaptığını güvenilir biçimde kaydeder. watch ve syscall kurallarını, ausearch/aureport ile inceleme alışkanlığını ve kalıcı kural yönetimini oturttuğunuzda, hem tespit hem de adli inceleme kapasiteniz ciddi biçimde artar. Kuralları kritik varlıklara odaklayın ve mümkünse kayıtları merkezi bir sisteme iletin.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynakça</span></span><ul class="mycode_list"><li>Linux Audit Projesi (resmi) - <a href="https://github.com/linux-audit/audit-documentation" target="_blank" rel="noopener" class="mycode_url">https://github.com/linux-audit/audit-documentation</a><br />
</li>
<li>auditctl(8) Man Sayfası - <a href="https://man7.org/linux/man-pages/man8/auditctl.8.html" target="_blank" rel="noopener" class="mycode_url">https://man7.org/linux/man-pages/man8/auditctl.8.html</a><br />
</li>
<li>ausearch(8) ve aureport(8) man sayfaları - <a href="https://man7.org/linux/man-pages/man8/ausearch.8.html" target="_blank" rel="noopener" class="mycode_url">https://man7.org/linux/man-pages/man8/ausearch.8.html</a><br />
</li>
<li>Red Hat: Linux Audit Sistemi - <a href="https://access.redhat.com/documentation" target="_blank" rel="noopener" class="mycode_url">https://access.redhat.com/documentation</a><br />
</li>
<li>CIS Benchmarks - <a href="https://www.cisecurity.org/cis-benchmarks" target="_blank" rel="noopener" class="mycode_url">https://www.cisecurity.org/cis-benchmarks</a><br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal Uyarı</span></span><br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite>Denetim yapılandırması yalnızca kendi sistemlerinizde veya yönetim yetkiniz olan sistemlerde uygulanmalıdır. Başkasının sistemine izinsiz müdahale Türk Ceza Kanunu 243-245. maddeleri kapsamında suçtur.</blockquote>
<br />
<span style="font-style: italic;" class="mycode_i">Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).</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=146" target="_blank" title="">000-team-gb-konu-12.png</a> (Dosya Boyutu: 56.67 KB / İndirme Sayısı: 10)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[SSH Sertleştirme: Anahtar Tabanlı Giriş, Port ve Fail2ban Rehberi]]></title>
			<link>https://www.turkteam.org/konu-ssh-sertlestirme-anahtar-tabanli-giris-port-ve-fail2ban-rehberi.html</link>
			<pubDate>Sun, 18 Oct 2026 11:03:43 +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-ssh-sertlestirme-anahtar-tabanli-giris-port-ve-fail2ban-rehberi.html</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Selam TurkTeam,</span><br />
<br />
SSH, uzak sunucu yönetiminin bel kemiğidir; aynı nedenle de saldırganların en çok kaba kuvvet denediği servislerden biridir. İnternete açık bir SSH servisi, saatler içinde otomatik parola denemeleriyle dolar. Bu rehberde SSH'ı adım adım sertleştiriyoruz: anahtar tabanlı kimlik doğrulama, parola girişinin kapatılması, güvenli sunucu yapılandırması ve <span style="font-weight: bold;" class="mycode_b">Fail2ban</span> ile otomatik engelleme. Tüm adımlar kendi sunucunuz içindir.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>SSH neden hedeftir, tehdit modeli<br />
</li>
<li>Anahtar çifti oluşturma ve sunucuya kurma<br />
</li>
<li>sshd_config ile güvenli yapılandırma<br />
</li>
<li>Önemli yapılandırma parametreleri referansı<br />
</li>
<li>Fail2ban kurulumu ve sshd jail yapılandırması<br />
</li>
<li>Doğrulama ve ileri ipuçları<br />
</li>
<li>Sonuç, kaynakça ve yasal uyarı<br />
</li>
</ol>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. SSH Neden Hedeftir?</span></span><br />
SSH genelde 22 portunda, internete açık çalışır ve doğrudan kabuk erişimi sağlar. Bu yüzden botnet'ler sürekli olarak yaygın kullanıcı adları (root, admin, ubuntu) ve zayıf parolalarla otomatik deneme yapar. Savunmanın özü iki ilkedir: tahmin edilebilir kimlik doğrulamayı (parola) ortadan kaldırmak ve kötü niyetli deneme trafiğini otomatik engellemek. Anahtar tabanlı giriş birincisini, Fail2ban ikincisini çözer.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Anahtar Çifti Oluşturma ve Kurma</span></span><br />
İstemci makinenizde modern ve güçlü bir anahtar türü olan ed25519 ile çift oluşturun:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ssh-keygen -t ed25519 -C "kullanici@ismakinesi"</code></div></div>Varsayılan olarak ~/.ssh/id_ed25519 (özel) ve id_ed25519.pub (açık) dosyaları oluşur. Parola koruması (passphrase) belirlemeniz, anahtar çalınsa bile koruma sağlar.<br />
<br />
Açık anahtarı sunucuya kolayca kurmak için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ssh-copy-id -i ~/.ssh/id_ed25519.pub kullanici@sunucu_ip</code></div></div>Bu komut, açık anahtarı sunucudaki ~/.ssh/authorized_keys dosyasına ekler. Artık anahtarla giriş yapabilmelisiniz:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ssh kullanici@sunucu_ip</code></div></div><div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=139" loading="lazy"  alt="[Resim: attachment.php?aid=139]" class="mycode_img" /></div>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. sshd_config ile Güvenli Yapılandırma</span></span><br />
Sunucuda /etc/ssh/sshd_config dosyasını düzenleyin (bir yedek alın):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_config</code></div></div>Önerilen ayarlar:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
MaxAuthTries 3
X11Forwarding no
AllowUsers kullanici</code></div></div>Değişiklikten önce söz dizimini test edin, sonra servisi yeniden başlatın:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo sshd -t
sudo systemctl restart ssh</code></div></div><span style="font-weight: bold;" class="mycode_b">Kritik uyarı:</span> PasswordAuthentication no yapmadan önce anahtarla girebildiğinizden kesinlikle emin olun; aksi halde kendinizi kilitlersiniz. İlk bağlantıyı açık tutarak ikinci bir oturumdan test etmek güvenli bir alışkanlıktır.<br />
<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Önemli Parametreler Referansı</span></span><br />
<span style="font-weight: bold;" class="mycode_b">PermitRootLogin no</span> - Root ile doğrudan girişi kapatır; yönetici işleri sudo ile yapılır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>PermitRootLogin no</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">PasswordAuthentication no</span> - Parola girişini tamamen kapatır, yalnızca anahtar kalır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>PasswordAuthentication no</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">MaxAuthTries</span> - Bir bağlantıda izin verilen deneme sayısı:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>MaxAuthTries 3</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">AllowUsers / AllowGroups</span> - Yalnızca belirli kullanıcı/grupların girişine izin:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>AllowUsers ahmet mehmet</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Port</span> - Standart dışı port, otomatik tarama gürültüsünü azaltır (güvenlik önlemi değil, sadece gürültü azaltma):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>Port 2222</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">ClientAliveInterval / ClientAliveCountMax</span> - Atıl oturumları kapatma:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ClientAliveInterval 300
ClientAliveCountMax 2</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Fail2ban ile Otomatik Engelleme</span></span><br />
Fail2ban, log dosyalarını izleyip belirli sayıda başarısız girişten sonra kaynak IP'yi güvenlik duvarında geçici olarak engeller.<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt update
sudo apt install fail2ban</code></div></div>Yerel ayarlarınızı varsayılanı ezmeyecek şekilde jail.local içine yazın:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo nano /etc/fail2ban/jail.local</code></div></div><div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>[sshd]
enabled = true
maxretry = 4
findtime = 10m
bantime = 1h</code></div></div>Burada <span style="font-weight: bold;" class="mycode_b">maxretry</span> izin verilen başarısız deneme sayısını, <span style="font-weight: bold;" class="mycode_b">findtime</span> bu denemelerin sayılacağı pencereyi, <span style="font-weight: bold;" class="mycode_b">bantime</span> engel süresini belirtir. Servisi başlatıp etkinleştirin:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo systemctl enable --now fail2ban</code></div></div>Durumu ve engellenen IP'leri görün:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo fail2ban-client status sshd</code></div></div>Çıktı, aktif engelleri ve toplam yakalanan deneme sayısını gösterir:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>Status for the jail: sshd
|- Filter
|  `- Currently failed: 1
`- Actions
   |- Currently banned: 2
   `- Banned IP list: 203.0.113.10 198.51.100.20</code></div></div><br />
<br />
Bir IP'yi elle engelden çıkarmak için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo fail2ban-client set sshd unbanip 203.0.113.10</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. Doğrulama ve İleri İpuçları</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Yapılandırmayı doğrulayın:</span> Yeni bir terminalden anahtarla bağlanın; parola istenmemsini ve root girişinin reddedildiğini kontrol edin.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">2FA ekleyin:</span> Kritik sunucularda Google Authenticator PAM modülüyle anahtar + TOTP ikili doğrulama kurulabilir.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Güvenlik duvarı:</span> UFW/nftables ile SSH portunu yalnızca gereken ağlara açın; mümkünse bir VPN arkasına alın.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Anahtar hijyeni:</span> Özel anahtar dosyası 600 izinli olmalı ve bir passphrase ile korunmalı; eski/yetkisiz anahtarları authorized_keys'ten temizleyin.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">İzleme:</span> Başarılı girişleri de izleyin; beklenmedik bir kaynaktan başarılı giriş, en önemli alarmdır.<br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6.1. Neden Anahtar Tabanlı Giriş Parolayı Yener?</span></span><br />
Anahtar tabanlı kimlik doğrulamanın parolaya üstünlüğünü anlamak, bu sertleştirmenin neden bu kadar etkili olduğunu kavramanın anahtarıdır. Parola, tahmin edilebilen ve tekrar kullanılan bir sırdır; bir botnet saniyede yüzlerce parolayı deneyebilir ve zayıf bir parola er ya da geç bulunur. SSH anahtarı ise asimetrik kriptografiye dayanır: sunucu yalnızca açık anahtarı tutar, özel anahtar hiçbir zaman ağdan geçmez. Bir ed25519 anahtarını kaba kuvvetle bulmak pratikte imkansızdır. Dolayısıyla PasswordAuthentication no yaptığınız anda, saldırganların en sık kullandığı saldırı yüzeyini tamamen ortadan kaldırmış olursunuz; loglardaki başarısız giriş selinin aniden kesilmesi bunun gözle görülür kanıtıdır.<br />
<br />
Bu noktada sık sorulan bir soru şudur: "Anahtar giriş zaten bu kadar güçlüyse Fail2ban'a ne gerek var?" Cevap katmanlı savunmadır. Fail2ban yalnızca parola denemelerini değil, portunuzu sürekli yoklayan gürültülü tarayıcıları da engelleyerek log kirliliğini ve kaynak tüketimini azaltır; ayrıca anahtar girişe geçişi henüz tamamlamadığınız veya bir servisin geçici olarak parola kullandığı durumlarda ek bir güvenlik ağı sağlar. Güvenlik tek bir mükemmel önleme değil, birbirini tamamlayan birden çok katmana dayanır.<br />
<br />
Son bir pratik tavsiye: standart dışı port kullanımını bir güvenlik önlemi sanmayın. Portu 2222'ye almak otomatik tarama gürültüsünü azaltır, ancak hedefli bir saldırgan birkaç saniyede gerçek portu bulur. Gerçek güvenliği anahtar tabanlı giriş, root erişiminin kapatılması, güvenlik duvarı kısıtlaması ve mümkünse VPN sağlar; port değişikliği yalnızca bunların üstüne eklenen küçük bir konfordur, onların yerine geçmez.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
SSH sertleştirmenin özü nettir: parolayı anahtarla değiştir, root ve gereksiz kullanıcı girişini kapat, deneme trafiğini Fail2ban ile otomatik engelle ve servisi güvenlik duvarı/VPN ile sınırla. Bu katmanlar birlikte, internete açık bir SSH'ı kaba kuvvete karşı pratikte işe yaramaz hale getirir. Her değişiklikten önce yedek alın, söz dizimini test edin ve kendinizi kilitlemeyin.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynakça</span></span><ul class="mycode_list"><li>OpenSSH Resmi Kılavuzu - <a href="https://www.openssh.com/manual.html" target="_blank" rel="noopener" class="mycode_url">https://www.openssh.com/manual.html</a><br />
</li>
<li>sshd_config(5) Man Sayfası - <a href="https://man.openbsd.org/sshd_config.5" target="_blank" rel="noopener" class="mycode_url">https://man.openbsd.org/sshd_config.5</a><br />
</li>
<li>ssh-keygen(1) Man Sayfası - <a href="https://man.openbsd.org/ssh-keygen.1" target="_blank" rel="noopener" class="mycode_url">https://man.openbsd.org/ssh-keygen.1</a><br />
</li>
<li>Fail2ban Resmi Wiki - <a href="https://github.com/fail2ban/fail2ban/wiki" target="_blank" rel="noopener" class="mycode_url">https://github.com/fail2ban/fail2ban/wiki</a><br />
</li>
<li>Debian Wiki: Fail2ban - <a href="https://wiki.debian.org/fail2ban" target="_blank" rel="noopener" class="mycode_url">https://wiki.debian.org/fail2ban</a><br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal Uyarı</span></span><br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite>Bu yapılandırmalar yalnızca kendi sunucularınızda veya yönetim yetkiniz olan sistemlerde uygulanmalıdır. Başkasının sistemine izinsiz erişim Türk Ceza Kanunu 243-245. maddeleri kapsamında suçtur.</blockquote>
<br />
<span style="font-style: italic;" class="mycode_i">Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).</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=139" target="_blank" title="">000-team-gb-konu-13.png</a> (Dosya Boyutu: 56.25 KB / İndirme Sayısı: 10)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Selam TurkTeam,</span><br />
<br />
SSH, uzak sunucu yönetiminin bel kemiğidir; aynı nedenle de saldırganların en çok kaba kuvvet denediği servislerden biridir. İnternete açık bir SSH servisi, saatler içinde otomatik parola denemeleriyle dolar. Bu rehberde SSH'ı adım adım sertleştiriyoruz: anahtar tabanlı kimlik doğrulama, parola girişinin kapatılması, güvenli sunucu yapılandırması ve <span style="font-weight: bold;" class="mycode_b">Fail2ban</span> ile otomatik engelleme. Tüm adımlar kendi sunucunuz içindir.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda Anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>SSH neden hedeftir, tehdit modeli<br />
</li>
<li>Anahtar çifti oluşturma ve sunucuya kurma<br />
</li>
<li>sshd_config ile güvenli yapılandırma<br />
</li>
<li>Önemli yapılandırma parametreleri referansı<br />
</li>
<li>Fail2ban kurulumu ve sshd jail yapılandırması<br />
</li>
<li>Doğrulama ve ileri ipuçları<br />
</li>
<li>Sonuç, kaynakça ve yasal uyarı<br />
</li>
</ol>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. SSH Neden Hedeftir?</span></span><br />
SSH genelde 22 portunda, internete açık çalışır ve doğrudan kabuk erişimi sağlar. Bu yüzden botnet'ler sürekli olarak yaygın kullanıcı adları (root, admin, ubuntu) ve zayıf parolalarla otomatik deneme yapar. Savunmanın özü iki ilkedir: tahmin edilebilir kimlik doğrulamayı (parola) ortadan kaldırmak ve kötü niyetli deneme trafiğini otomatik engellemek. Anahtar tabanlı giriş birincisini, Fail2ban ikincisini çözer.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Anahtar Çifti Oluşturma ve Kurma</span></span><br />
İstemci makinenizde modern ve güçlü bir anahtar türü olan ed25519 ile çift oluşturun:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ssh-keygen -t ed25519 -C "kullanici@ismakinesi"</code></div></div>Varsayılan olarak ~/.ssh/id_ed25519 (özel) ve id_ed25519.pub (açık) dosyaları oluşur. Parola koruması (passphrase) belirlemeniz, anahtar çalınsa bile koruma sağlar.<br />
<br />
Açık anahtarı sunucuya kolayca kurmak için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ssh-copy-id -i ~/.ssh/id_ed25519.pub kullanici@sunucu_ip</code></div></div>Bu komut, açık anahtarı sunucudaki ~/.ssh/authorized_keys dosyasına ekler. Artık anahtarla giriş yapabilmelisiniz:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ssh kullanici@sunucu_ip</code></div></div><div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=139" loading="lazy"  alt="[Resim: attachment.php?aid=139]" class="mycode_img" /></div>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. sshd_config ile Güvenli Yapılandırma</span></span><br />
Sunucuda /etc/ssh/sshd_config dosyasını düzenleyin (bir yedek alın):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_config</code></div></div>Önerilen ayarlar:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
MaxAuthTries 3
X11Forwarding no
AllowUsers kullanici</code></div></div>Değişiklikten önce söz dizimini test edin, sonra servisi yeniden başlatın:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo sshd -t
sudo systemctl restart ssh</code></div></div><span style="font-weight: bold;" class="mycode_b">Kritik uyarı:</span> PasswordAuthentication no yapmadan önce anahtarla girebildiğinizden kesinlikle emin olun; aksi halde kendinizi kilitlersiniz. İlk bağlantıyı açık tutarak ikinci bir oturumdan test etmek güvenli bir alışkanlıktır.<br />
<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Önemli Parametreler Referansı</span></span><br />
<span style="font-weight: bold;" class="mycode_b">PermitRootLogin no</span> - Root ile doğrudan girişi kapatır; yönetici işleri sudo ile yapılır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>PermitRootLogin no</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">PasswordAuthentication no</span> - Parola girişini tamamen kapatır, yalnızca anahtar kalır:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>PasswordAuthentication no</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">MaxAuthTries</span> - Bir bağlantıda izin verilen deneme sayısı:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>MaxAuthTries 3</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">AllowUsers / AllowGroups</span> - Yalnızca belirli kullanıcı/grupların girişine izin:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>AllowUsers ahmet mehmet</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Port</span> - Standart dışı port, otomatik tarama gürültüsünü azaltır (güvenlik önlemi değil, sadece gürültü azaltma):<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>Port 2222</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">ClientAliveInterval / ClientAliveCountMax</span> - Atıl oturumları kapatma:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ClientAliveInterval 300
ClientAliveCountMax 2</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Fail2ban ile Otomatik Engelleme</span></span><br />
Fail2ban, log dosyalarını izleyip belirli sayıda başarısız girişten sonra kaynak IP'yi güvenlik duvarında geçici olarak engeller.<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt update
sudo apt install fail2ban</code></div></div>Yerel ayarlarınızı varsayılanı ezmeyecek şekilde jail.local içine yazın:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo nano /etc/fail2ban/jail.local</code></div></div><div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>[sshd]
enabled = true
maxretry = 4
findtime = 10m
bantime = 1h</code></div></div>Burada <span style="font-weight: bold;" class="mycode_b">maxretry</span> izin verilen başarısız deneme sayısını, <span style="font-weight: bold;" class="mycode_b">findtime</span> bu denemelerin sayılacağı pencereyi, <span style="font-weight: bold;" class="mycode_b">bantime</span> engel süresini belirtir. Servisi başlatıp etkinleştirin:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo systemctl enable --now fail2ban</code></div></div>Durumu ve engellenen IP'leri görün:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo fail2ban-client status sshd</code></div></div>Çıktı, aktif engelleri ve toplam yakalanan deneme sayısını gösterir:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>Status for the jail: sshd
|- Filter
|  `- Currently failed: 1
`- Actions
   |- Currently banned: 2
   `- Banned IP list: 203.0.113.10 198.51.100.20</code></div></div><br />
<br />
Bir IP'yi elle engelden çıkarmak için:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo fail2ban-client set sshd unbanip 203.0.113.10</code></div></div><br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. Doğrulama ve İleri İpuçları</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Yapılandırmayı doğrulayın:</span> Yeni bir terminalden anahtarla bağlanın; parola istenmemsini ve root girişinin reddedildiğini kontrol edin.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">2FA ekleyin:</span> Kritik sunucularda Google Authenticator PAM modülüyle anahtar + TOTP ikili doğrulama kurulabilir.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Güvenlik duvarı:</span> UFW/nftables ile SSH portunu yalnızca gereken ağlara açın; mümkünse bir VPN arkasına alın.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Anahtar hijyeni:</span> Özel anahtar dosyası 600 izinli olmalı ve bir passphrase ile korunmalı; eski/yetkisiz anahtarları authorized_keys'ten temizleyin.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">İzleme:</span> Başarılı girişleri de izleyin; beklenmedik bir kaynaktan başarılı giriş, en önemli alarmdır.<br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6.1. Neden Anahtar Tabanlı Giriş Parolayı Yener?</span></span><br />
Anahtar tabanlı kimlik doğrulamanın parolaya üstünlüğünü anlamak, bu sertleştirmenin neden bu kadar etkili olduğunu kavramanın anahtarıdır. Parola, tahmin edilebilen ve tekrar kullanılan bir sırdır; bir botnet saniyede yüzlerce parolayı deneyebilir ve zayıf bir parola er ya da geç bulunur. SSH anahtarı ise asimetrik kriptografiye dayanır: sunucu yalnızca açık anahtarı tutar, özel anahtar hiçbir zaman ağdan geçmez. Bir ed25519 anahtarını kaba kuvvetle bulmak pratikte imkansızdır. Dolayısıyla PasswordAuthentication no yaptığınız anda, saldırganların en sık kullandığı saldırı yüzeyini tamamen ortadan kaldırmış olursunuz; loglardaki başarısız giriş selinin aniden kesilmesi bunun gözle görülür kanıtıdır.<br />
<br />
Bu noktada sık sorulan bir soru şudur: "Anahtar giriş zaten bu kadar güçlüyse Fail2ban'a ne gerek var?" Cevap katmanlı savunmadır. Fail2ban yalnızca parola denemelerini değil, portunuzu sürekli yoklayan gürültülü tarayıcıları da engelleyerek log kirliliğini ve kaynak tüketimini azaltır; ayrıca anahtar girişe geçişi henüz tamamlamadığınız veya bir servisin geçici olarak parola kullandığı durumlarda ek bir güvenlik ağı sağlar. Güvenlik tek bir mükemmel önleme değil, birbirini tamamlayan birden çok katmana dayanır.<br />
<br />
Son bir pratik tavsiye: standart dışı port kullanımını bir güvenlik önlemi sanmayın. Portu 2222'ye almak otomatik tarama gürültüsünü azaltır, ancak hedefli bir saldırgan birkaç saniyede gerçek portu bulur. Gerçek güvenliği anahtar tabanlı giriş, root erişiminin kapatılması, güvenlik duvarı kısıtlaması ve mümkünse VPN sağlar; port değişikliği yalnızca bunların üstüne eklenen küçük bir konfordur, onların yerine geçmez.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
SSH sertleştirmenin özü nettir: parolayı anahtarla değiştir, root ve gereksiz kullanıcı girişini kapat, deneme trafiğini Fail2ban ile otomatik engelle ve servisi güvenlik duvarı/VPN ile sınırla. Bu katmanlar birlikte, internete açık bir SSH'ı kaba kuvvete karşı pratikte işe yaramaz hale getirir. Her değişiklikten önce yedek alın, söz dizimini test edin ve kendinizi kilitlemeyin.<br />
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynakça</span></span><ul class="mycode_list"><li>OpenSSH Resmi Kılavuzu - <a href="https://www.openssh.com/manual.html" target="_blank" rel="noopener" class="mycode_url">https://www.openssh.com/manual.html</a><br />
</li>
<li>sshd_config(5) Man Sayfası - <a href="https://man.openbsd.org/sshd_config.5" target="_blank" rel="noopener" class="mycode_url">https://man.openbsd.org/sshd_config.5</a><br />
</li>
<li>ssh-keygen(1) Man Sayfası - <a href="https://man.openbsd.org/ssh-keygen.1" target="_blank" rel="noopener" class="mycode_url">https://man.openbsd.org/ssh-keygen.1</a><br />
</li>
<li>Fail2ban Resmi Wiki - <a href="https://github.com/fail2ban/fail2ban/wiki" target="_blank" rel="noopener" class="mycode_url">https://github.com/fail2ban/fail2ban/wiki</a><br />
</li>
<li>Debian Wiki: Fail2ban - <a href="https://wiki.debian.org/fail2ban" target="_blank" rel="noopener" class="mycode_url">https://wiki.debian.org/fail2ban</a><br />
</li>
</ul>
<br />
<span style="font-size: 4pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal Uyarı</span></span><br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite>Bu yapılandırmalar yalnızca kendi sunucularınızda veya yönetim yetkiniz olan sistemlerde uygulanmalıdır. Başkasının sistemine izinsiz erişim Türk Ceza Kanunu 243-245. maddeleri kapsamında suçtur.</blockquote>
<br />
<span style="font-style: italic;" class="mycode_i">Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).</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=139" target="_blank" title="">000-team-gb-konu-13.png</a> (Dosya Boyutu: 56.25 KB / İndirme Sayısı: 10)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Linux Güvenlik Duvarı Rehberi: UFW ve nftables ile Sıfırdan Kural Yazımı]]></title>
			<link>https://www.turkteam.org/konu-linux-guvenlik-duvari-rehberi-ufw-ve-nftables-ile-sifirdan-kural-yazimi.html</link>
			<pubDate>Sat, 17 Oct 2026 11:27:03 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.turkteam.org/member.php?action=profile&uid=2">Tonyukuk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.turkteam.org/konu-linux-guvenlik-duvari-rehberi-ufw-ve-nftables-ile-sifirdan-kural-yazimi.html</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=104" loading="lazy"  alt="[Resim: attachment.php?aid=104]" class="mycode_img" /></div>
<br />
Bir sunucuyu kiralayıp hemen hizmet açmak kolay; onu güvenli hale getirmek ise genelde ertelenen iş. Oysa ilk saatlerde yapılması gereken en temel adımlardan biri güvenlik duvarını kurmak. Bu rehberde Linux'ta iki pratik yolu, yeni başlayanlar için UFW'yi ve altta yatan modern motor nftables'ı sıfırdan anlatıyorum.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Konuda anlatılacaklar</span><br />
<ol type="1" class="mycode_list"><li>Linux güvenlik duvarı katmanları (netfilter, iptables, nftables, UFW)<br />
</li>
<li>UFW ile hızlı başlangıç<br />
</li>
<li>Sık kullanılan UFW kuralları<br />
</li>
<li>nftables mantığı ve temel yapı<br />
</li>
<li>Örnek nftables kural seti<br />
</li>
<li>Test etme ve sık hatalar<br />
</li>
<li>Yasal/operasyonel not<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Katmanları Anlamak</span></span><br />
<br />
Linux'ta paket filtreleme çekirdekteki <span style="font-weight: bold;" class="mycode_b">netfilter</span> altyapısına dayanır. Üstünde tarihsel olarak iptables vardı; modern dağıtımlar artık <span style="font-weight: bold;" class="mycode_b">nftables</span> kullanıyor. UFW (Uncomplicated Firewall) ise bunların üzerine oturan, insan dostu bir ön yüzdür. Yani:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>UFW  --&gt;  (arka planda) nftables/iptables  --&gt;  netfilter (çekirdek)</code></div></div><br />
Yeni başlıyorsanız UFW ile başlayın; ne yaptığınızı anlamak isterseniz nftables'a inin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">UFW ile Hızlı Başlangıç</span></span><br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt install ufw

# Varsayilan politika: gelen reddet, giden izin ver
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH'i ACMADAN once izin verin, yoksa kendinizi kilitlersiniz!
sudo ufw allow 22/tcp

sudo ufw enable
sudo ufw status verbose</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Çok önemli uyarı:</span> Uzak bir sunucuda UFW'yi SSH portuna izin vermeden etkinleştirirseniz bağlantınız kopar ve dışarıda kalırsınız. Önce SSH'e izin, sonra enable.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sık Kullanılan UFW Kuralları</span></span><br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Web sunucusu
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Belirli bir IP'den SSH
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp

# Bir portu kapatma / kuralı silme
sudo ufw deny 23/tcp
sudo ufw delete allow 80/tcp

# Oran sinirlama (brute force'a karsi SSH)
sudo ufw limit 22/tcp</code></div></div><br />
ufw limit, aynı IP'den kısa sürede çok bağlantı gelirse engeller; SSH kaba kuvvetine karşı basit ama etkili bir önlem.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">nftables Mantığı</span></span><br />
<br />
nftables'ta yapı şöyledir: <span style="font-weight: bold;" class="mycode_b">table</span> (aile: ip, ip6, inet) içinde <span style="font-weight: bold;" class="mycode_b">chain</span>'ler, chain içinde <span style="font-weight: bold;" class="mycode_b">rule</span>'lar bulunur. "inet" ailesi hem IPv4 hem IPv6 için tek yerde kural yazmayı sağlar.<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt install nftables
sudo systemctl enable --now nftables</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Örnek nftables Kural Seti</span></span><br />
<br />
/etc/nftables.conf içine temel ve güvenli bir başlangıç:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>#!/usr/sbin/nft -f
flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;

        # Mevcut baglantilar ve loopback
        ct state established,related accept
        iif "lo" accept

        # ICMP (ping) - istege bagli
        ip protocol icmp accept
        ip6 nexthdr icmpv6 accept

        # SSH (oran sinirli)
        tcp dport 22 ct state new limit rate 10/minute accept

        # Web
        tcp dport { 80, 443 } accept

        # Geri kalan her sey dusurulur (policy drop)
    }

    chain forward { type filter hook forward priority 0; policy drop; }
    chain output  { type filter hook output  priority 0; policy accept; }
}</code></div></div><br />
Yüklemek ve kontrol:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo nft -f /etc/nftables.conf
sudo nft list ruleset</code></div></div><br />
Burada da aynı uyarı geçerli: policy drop koymadan önce SSH kuralının doğru olduğundan emin olun.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Test Etme ve Sık Hatalar</span></span><br />
<ul class="mycode_list"><li>Değişiklik öncesi ikinci bir oturum/konsol erişimi (ör. sağlayıcının web konsolu) hazır tutun.<br />
</li>
<li>Kuralları başka bir makineden nmap ile doğrulayın: sadece beklenen portlar açık mı?<br />
</li>
<li>UFW ve ham nftables kurallarını aynı anda elle karıştırmayın; birini seçin.<br />
</li>
<li>Giden (output) trafiği gereksiz yere tamamen kapatmak sistem güncellemelerini bozabilir; dikkatli daraltın.<br />
</li>
<li>IPv6'yı unutmayın; sadece IPv4 kuralı yazmak yanıltıcı bir güvenlik hissi verir.<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
<br />
Güvenlik duvarı, sunucu sertleştirmenin ilk ve en ucuz adımı. UFW ile başlayın, mantığı oturunca nftables ile ince ayara geçin. Siz sunucularınızda hangi varsayılan kural setini kullanıyorsunuz, yorumlarda paylaşın; güzel bir şablon arşivi çıkabilir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal/Operasyonel Not</span></span><br />
<br />
Bu rehber kendi sunucunuzu/sisteminizi korumak içindir. Yapılandırmayı yalnızca yönettiğiniz sistemlerde uygulayın; yanlış kural uzaktan erişiminizi kesebilir, önce test ortamında deneyin.<br />
<br />
Görsel: TurkTeam özgün kapak görseli<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=104" target="_blank" title="">tonyukuk-14-firewall.jpg</a> (Dosya Boyutu: 77.7 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=104" loading="lazy"  alt="[Resim: attachment.php?aid=104]" class="mycode_img" /></div>
<br />
Bir sunucuyu kiralayıp hemen hizmet açmak kolay; onu güvenli hale getirmek ise genelde ertelenen iş. Oysa ilk saatlerde yapılması gereken en temel adımlardan biri güvenlik duvarını kurmak. Bu rehberde Linux'ta iki pratik yolu, yeni başlayanlar için UFW'yi ve altta yatan modern motor nftables'ı sıfırdan anlatıyorum.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Konuda anlatılacaklar</span><br />
<ol type="1" class="mycode_list"><li>Linux güvenlik duvarı katmanları (netfilter, iptables, nftables, UFW)<br />
</li>
<li>UFW ile hızlı başlangıç<br />
</li>
<li>Sık kullanılan UFW kuralları<br />
</li>
<li>nftables mantığı ve temel yapı<br />
</li>
<li>Örnek nftables kural seti<br />
</li>
<li>Test etme ve sık hatalar<br />
</li>
<li>Yasal/operasyonel not<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Katmanları Anlamak</span></span><br />
<br />
Linux'ta paket filtreleme çekirdekteki <span style="font-weight: bold;" class="mycode_b">netfilter</span> altyapısına dayanır. Üstünde tarihsel olarak iptables vardı; modern dağıtımlar artık <span style="font-weight: bold;" class="mycode_b">nftables</span> kullanıyor. UFW (Uncomplicated Firewall) ise bunların üzerine oturan, insan dostu bir ön yüzdür. Yani:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>UFW  --&gt;  (arka planda) nftables/iptables  --&gt;  netfilter (çekirdek)</code></div></div><br />
Yeni başlıyorsanız UFW ile başlayın; ne yaptığınızı anlamak isterseniz nftables'a inin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">UFW ile Hızlı Başlangıç</span></span><br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt install ufw

# Varsayilan politika: gelen reddet, giden izin ver
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH'i ACMADAN once izin verin, yoksa kendinizi kilitlersiniz!
sudo ufw allow 22/tcp

sudo ufw enable
sudo ufw status verbose</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Çok önemli uyarı:</span> Uzak bir sunucuda UFW'yi SSH portuna izin vermeden etkinleştirirseniz bağlantınız kopar ve dışarıda kalırsınız. Önce SSH'e izin, sonra enable.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sık Kullanılan UFW Kuralları</span></span><br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Web sunucusu
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Belirli bir IP'den SSH
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp

# Bir portu kapatma / kuralı silme
sudo ufw deny 23/tcp
sudo ufw delete allow 80/tcp

# Oran sinirlama (brute force'a karsi SSH)
sudo ufw limit 22/tcp</code></div></div><br />
ufw limit, aynı IP'den kısa sürede çok bağlantı gelirse engeller; SSH kaba kuvvetine karşı basit ama etkili bir önlem.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">nftables Mantığı</span></span><br />
<br />
nftables'ta yapı şöyledir: <span style="font-weight: bold;" class="mycode_b">table</span> (aile: ip, ip6, inet) içinde <span style="font-weight: bold;" class="mycode_b">chain</span>'ler, chain içinde <span style="font-weight: bold;" class="mycode_b">rule</span>'lar bulunur. "inet" ailesi hem IPv4 hem IPv6 için tek yerde kural yazmayı sağlar.<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt install nftables
sudo systemctl enable --now nftables</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Örnek nftables Kural Seti</span></span><br />
<br />
/etc/nftables.conf içine temel ve güvenli bir başlangıç:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>#!/usr/sbin/nft -f
flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;

        # Mevcut baglantilar ve loopback
        ct state established,related accept
        iif "lo" accept

        # ICMP (ping) - istege bagli
        ip protocol icmp accept
        ip6 nexthdr icmpv6 accept

        # SSH (oran sinirli)
        tcp dport 22 ct state new limit rate 10/minute accept

        # Web
        tcp dport { 80, 443 } accept

        # Geri kalan her sey dusurulur (policy drop)
    }

    chain forward { type filter hook forward priority 0; policy drop; }
    chain output  { type filter hook output  priority 0; policy accept; }
}</code></div></div><br />
Yüklemek ve kontrol:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo nft -f /etc/nftables.conf
sudo nft list ruleset</code></div></div><br />
Burada da aynı uyarı geçerli: policy drop koymadan önce SSH kuralının doğru olduğundan emin olun.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Test Etme ve Sık Hatalar</span></span><br />
<ul class="mycode_list"><li>Değişiklik öncesi ikinci bir oturum/konsol erişimi (ör. sağlayıcının web konsolu) hazır tutun.<br />
</li>
<li>Kuralları başka bir makineden nmap ile doğrulayın: sadece beklenen portlar açık mı?<br />
</li>
<li>UFW ve ham nftables kurallarını aynı anda elle karıştırmayın; birini seçin.<br />
</li>
<li>Giden (output) trafiği gereksiz yere tamamen kapatmak sistem güncellemelerini bozabilir; dikkatli daraltın.<br />
</li>
<li>IPv6'yı unutmayın; sadece IPv4 kuralı yazmak yanıltıcı bir güvenlik hissi verir.<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
<br />
Güvenlik duvarı, sunucu sertleştirmenin ilk ve en ucuz adımı. UFW ile başlayın, mantığı oturunca nftables ile ince ayara geçin. Siz sunucularınızda hangi varsayılan kural setini kullanıyorsunuz, yorumlarda paylaşın; güzel bir şablon arşivi çıkabilir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal/Operasyonel Not</span></span><br />
<br />
Bu rehber kendi sunucunuzu/sisteminizi korumak içindir. Yapılandırmayı yalnızca yönettiğiniz sistemlerde uygulayın; yanlış kural uzaktan erişiminizi kesebilir, önce test ortamında deneyin.<br />
<br />
Görsel: TurkTeam özgün kapak görseli<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=104" target="_blank" title="">tonyukuk-14-firewall.jpg</a> (Dosya Boyutu: 77.7 KB / İndirme Sayısı: 9)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Linux Terminal Ipuclari: Her Guvenlikcinin Bilmesi Gereken 25 Komut]]></title>
			<link>https://www.turkteam.org/konu-linux-terminal-ipuclari-her-guvenlikcinin-bilmesi-gereken-25-komut.html</link>
			<pubDate>Sat, 17 Oct 2026 11:20:31 +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-linux-terminal-ipuclari-her-guvenlikcinin-bilmesi-gereken-25-komut.html</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=65" loading="lazy"  alt="[Resim: attachment.php?aid=65]" class="mycode_img" /></div>
<br />
Selam millet,<br />
<br />
Ise siber guvenlikte yeni baslayan arkadaslarda en sik gordugum eksik, terminalde rahat olmamak. Araclari biliyorlar ama kabukta (shell) takiliyorlar. Kendi notlarimdan derledigim, gunluk islerde surekli kullandigim 25 komutu paylasiyorum. Ezber degil, pratik hedef.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1) Dosya ve Dizin</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ls -lah          # detayli, okunur boyutlar
find / -name "*.conf" 2&gt;/dev/null
tree -L 2         # dizin agaci
du -sh *          # klasor boyutlari
stat dosya        # dosya meta verisi</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2) Metin Isleme (en degerlisi)</span></span><br />
Log analizinin belkemigi bu ucludur:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>grep -rIn "hata" /var/log
awk '{print &#36;1}' access.log | sort | uniq -c | sort -nr | head
sed -n '10,20p' dosya.txt
cut -d: -f1 /etc/passwd</code></div></div>En cok IP'yi bulan tek satir, SOC'ta surekli ise yarar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3) Surec ve Sistem</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ps aux --sort=-%mem | head
top            # veya htop
lsof -i        # hangi surec hangi portu dinliyor
kill -9 PID</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4) Ag</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ss -tulnp      # dinlenen portlar
ip a           # arayuzler
curl -I https://ornek.com
dig ornek.com</code></div></div>netstat yerine artik <span style="font-weight: bold;" class="mycode_b">ss</span> kullanin, cok daha hizli.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5) Yetki ve Kullanici</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo -l               # neyi sudo ile calistirabilirim
id
chmod / chown
history | grep ssh</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6) Hayat Kurtaranlar</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>!!            # son komutu tekrarla
sudo !!       # son komutu sudo ile
Ctrl+R        # komut gecmisinde arama
tmux          # oturumu koparsan bile surer</code></div></div><br />
Benim en sevdigim <span style="font-weight: bold;" class="mycode_b">Ctrl+R</span>; uzun bir komutu tekrar yazmak yerine gecmiste ariyorum. tmux da uzun taramalarda SSH kopunca isi kurtariyor.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kucuk Tavsiye</span></span><br />
Bu komutlari tek tek ezberlemeye calismayin. Bir lab kurun, gercek bir gorev yapin (orn. bir logdan en cok istek atan IP'yi bulun), takildikca man sayfasina bakin. Birkac hafta sonra parmaklariniz kendiliginden yaziyor olacak.<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://linuxcommand.org/" target="_blank" rel="noopener" class="mycode_url">LinuxCommand.org</a><br />
</li>
<li><a href="https://explainshell.com/" target="_blank" rel="noopener" class="mycode_url">explainshell.com (komutu parcalayip aciklar)</a><br />
</li>
</ul>
<br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite><span style="font-weight: bold;" class="mycode_b">Not:</span> Komutlari once kendi lab makinenizde deneyin; find / gibi genis taramalar uretim sunucusunda yuk yaratabilir.</blockquote>
<br />
Sizin listeden eksik, olmazsa olmaz komutunuz hangisi?<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=65" target="_blank" title="">kultigin-k01.png</a> (Dosya Boyutu: 81.73 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=65" loading="lazy"  alt="[Resim: attachment.php?aid=65]" class="mycode_img" /></div>
<br />
Selam millet,<br />
<br />
Ise siber guvenlikte yeni baslayan arkadaslarda en sik gordugum eksik, terminalde rahat olmamak. Araclari biliyorlar ama kabukta (shell) takiliyorlar. Kendi notlarimdan derledigim, gunluk islerde surekli kullandigim 25 komutu paylasiyorum. Ezber degil, pratik hedef.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1) Dosya ve Dizin</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ls -lah          # detayli, okunur boyutlar
find / -name "*.conf" 2&gt;/dev/null
tree -L 2         # dizin agaci
du -sh *          # klasor boyutlari
stat dosya        # dosya meta verisi</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2) Metin Isleme (en degerlisi)</span></span><br />
Log analizinin belkemigi bu ucludur:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>grep -rIn "hata" /var/log
awk '{print &#36;1}' access.log | sort | uniq -c | sort -nr | head
sed -n '10,20p' dosya.txt
cut -d: -f1 /etc/passwd</code></div></div>En cok IP'yi bulan tek satir, SOC'ta surekli ise yarar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3) Surec ve Sistem</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ps aux --sort=-%mem | head
top            # veya htop
lsof -i        # hangi surec hangi portu dinliyor
kill -9 PID</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4) Ag</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>ss -tulnp      # dinlenen portlar
ip a           # arayuzler
curl -I https://ornek.com
dig ornek.com</code></div></div>netstat yerine artik <span style="font-weight: bold;" class="mycode_b">ss</span> kullanin, cok daha hizli.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5) Yetki ve Kullanici</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo -l               # neyi sudo ile calistirabilirim
id
chmod / chown
history | grep ssh</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6) Hayat Kurtaranlar</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>!!            # son komutu tekrarla
sudo !!       # son komutu sudo ile
Ctrl+R        # komut gecmisinde arama
tmux          # oturumu koparsan bile surer</code></div></div><br />
Benim en sevdigim <span style="font-weight: bold;" class="mycode_b">Ctrl+R</span>; uzun bir komutu tekrar yazmak yerine gecmiste ariyorum. tmux da uzun taramalarda SSH kopunca isi kurtariyor.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kucuk Tavsiye</span></span><br />
Bu komutlari tek tek ezberlemeye calismayin. Bir lab kurun, gercek bir gorev yapin (orn. bir logdan en cok istek atan IP'yi bulun), takildikca man sayfasina bakin. Birkac hafta sonra parmaklariniz kendiliginden yaziyor olacak.<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://linuxcommand.org/" target="_blank" rel="noopener" class="mycode_url">LinuxCommand.org</a><br />
</li>
<li><a href="https://explainshell.com/" target="_blank" rel="noopener" class="mycode_url">explainshell.com (komutu parcalayip aciklar)</a><br />
</li>
</ul>
<br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite><span style="font-weight: bold;" class="mycode_b">Not:</span> Komutlari once kendi lab makinenizde deneyin; find / gibi genis taramalar uretim sunucusunda yuk yaratabilir.</blockquote>
<br />
Sizin listeden eksik, olmazsa olmaz komutunuz hangisi?<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=65" target="_blank" title="">kultigin-k01.png</a> (Dosya Boyutu: 81.73 KB / İndirme Sayısı: 9)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[journalctl ile SSH Log Analizi: Debian 12+ için auth.log Alternatifi]]></title>
			<link>https://www.turkteam.org/konu-journalctl-ile-ssh-log-analizi-debian-12-icin-auth-log-alternatifi.html</link>
			<pubDate>Fri, 16 Oct 2026 11:13:50 +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-journalctl-ile-ssh-log-analizi-debian-12-icin-auth-log-alternatifi.html</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=11" loading="lazy"  alt="[Resim: attachment.php?aid=11]" class="mycode_img" /></div>
<br />
Selamlar,<br />
<br />
Ubuntu'dan Debian 12'ye geçtiğimde ilk şaşırdığım şeylerden biri /var/log/auth.log dosyasının hiç oluşmaması oldu. rsyslog varsayılan kurulumda gelmiyor, her şey systemd journal içinde. Bu konuda "auth.log yok, SSH loglarım nerede?" diyenler için journalctl ile pratik bir rehber bırakı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>Neden auth.log yok?<br />
</li>
<li>Servis adı: ssh mi, sshd mi?<br />
</li>
<li>Zaman aralığı, çıktı formatı ve filtreler<br />
</li>
<li>Dosyaya yazma ve Python ile birleştirme<br />
</li>
<li>Kalıcı log isterseniz rsyslog kurmak<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1) Neden auth.log Yok?</span></span><br />
Debian 12 (Bookworm) ve sonrasında varsayılan kurulumda rsyslog paketi gelmez. Loglar binary olarak /var/log/journal altına yazılır. Ubuntu'da rsyslog hâlâ varsayılan olduğu için auth.log alışkanlığı devam ediyor. İkisi de doğru; sadece araç değişiyor.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2) Servis Adı Dikkat</span></span><br />
Debian/Ubuntu paketlerinde OpenSSH servisinin birimi çoğu zaman <span style="font-weight: bold;" class="mycode_b">ssh.service</span>, bazı eski veya özel kurulumlarda <span style="font-weight: bold;" class="mycode_b">sshd.service</span> olabilir. Hangisi aktifse onu kullanın:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>systemctl status ssh
# Unit ssh.service could not be found. ise:
systemctl status sshd</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3) Temel Komutlar</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Bugünün SSH logları, ham metin (scriptlere uygun)
sudo journalctl -u ssh --since today -o cat

# Son 2 saat, saat damgalı
sudo journalctl -u ssh --since "2 hours ago" -o short-iso

# Belirli bir IP'yi ara
sudo journalctl -u ssh --since yesterday | grep "198.51.100.7"

# Sadece hatalı denemeler
sudo journalctl -u ssh --since today | grep -E "Failed|Invalid user"</code></div></div><br />
[-o cat] satır başındaki zaman damgasını kaldırıdığı için Python regex'lerinizi temiz tutar. Zaman damgası istiyorsanız [-o short-iso] kullanın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4) Dosyaya Yazma ve Script</span></span><br />
Forumdaki Python SSH analiz scripti stdin okuyabiliyor. journalctl çıktısını doğrudan borulayabilirsiniz:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo journalctl -u ssh --since yesterday --until today -o cat | python3 ssh_tespit.py --esik 10</code></div></div><br />
Kalıcı bir günlük özet dosyası için:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo journalctl -u ssh --since yesterday --until today -o short-iso &gt;&gt; /var/log/ssh_gunluk.log</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5) Klasik auth.log İsterseniz</span></span><br />
Zorunlu değil ama alışkanlık için rsyslog kurulabilir:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt update &amp;&amp; sudo apt install -y rsyslog
sudo systemctl enable --now rsyslog
# Kısa süre sonra /var/log/auth.log oluşmaya başlar</code></div></div><br />
Ben journalctl'ye alışmayı tercih ediyorum: tek komutla servis, zaman ve öncelik filtresi yapabiliyorsunuz.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Bonus: journald Boyut ve Kalıcılık</span></span><br />
Laptop'ta lab çalıştırıyorsanız journal disk doldurabilir. /etc/systemd/journald.conf içinde SystemMaxUse=500M gibi bir sınır koyabilirsiniz. Kalıcı journal için /var/log/journal dizininin var olduğundan emin olun (Debian'da genelde vardır).<br />
<br />
Ayrıca "öncelik" filtresi işe yarar: <div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo journalctl -u ssh -p err..alert --since today</code></div></div> sadece hata ve üstü mesajları getirir. Brute force botları Failed satırlarını info seviyesinde yazar; bu yüzden brute force analizi için -p kullanmayın, grep kullanın.<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://www.freedesktop.org/software/systemd/man/latest/journalctl.html" target="_blank" rel="noopener" class="mycode_url">journalctl resmi kılavuz</a><br />
</li>
<li><a href="https://wiki.debian.org/systemd" target="_blank" rel="noopener" class="mycode_url">Debian Wiki: systemd</a><br />
</li>
</ul>
<br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite><span style="font-weight: bold;" class="mycode_b">Yasal not:</span> Yalnızca kendi yönettiğiniz sistemlerde kullanın. TCK 243-245.</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=11" target="_blank" title="">bilgekagan-02.png</a> (Dosya Boyutu: 83.35 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=11" loading="lazy"  alt="[Resim: attachment.php?aid=11]" class="mycode_img" /></div>
<br />
Selamlar,<br />
<br />
Ubuntu'dan Debian 12'ye geçtiğimde ilk şaşırdığım şeylerden biri /var/log/auth.log dosyasının hiç oluşmaması oldu. rsyslog varsayılan kurulumda gelmiyor, her şey systemd journal içinde. Bu konuda "auth.log yok, SSH loglarım nerede?" diyenler için journalctl ile pratik bir rehber bırakı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>Neden auth.log yok?<br />
</li>
<li>Servis adı: ssh mi, sshd mi?<br />
</li>
<li>Zaman aralığı, çıktı formatı ve filtreler<br />
</li>
<li>Dosyaya yazma ve Python ile birleştirme<br />
</li>
<li>Kalıcı log isterseniz rsyslog kurmak<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1) Neden auth.log Yok?</span></span><br />
Debian 12 (Bookworm) ve sonrasında varsayılan kurulumda rsyslog paketi gelmez. Loglar binary olarak /var/log/journal altına yazılır. Ubuntu'da rsyslog hâlâ varsayılan olduğu için auth.log alışkanlığı devam ediyor. İkisi de doğru; sadece araç değişiyor.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2) Servis Adı Dikkat</span></span><br />
Debian/Ubuntu paketlerinde OpenSSH servisinin birimi çoğu zaman <span style="font-weight: bold;" class="mycode_b">ssh.service</span>, bazı eski veya özel kurulumlarda <span style="font-weight: bold;" class="mycode_b">sshd.service</span> olabilir. Hangisi aktifse onu kullanın:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>systemctl status ssh
# Unit ssh.service could not be found. ise:
systemctl status sshd</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3) Temel Komutlar</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Bugünün SSH logları, ham metin (scriptlere uygun)
sudo journalctl -u ssh --since today -o cat

# Son 2 saat, saat damgalı
sudo journalctl -u ssh --since "2 hours ago" -o short-iso

# Belirli bir IP'yi ara
sudo journalctl -u ssh --since yesterday | grep "198.51.100.7"

# Sadece hatalı denemeler
sudo journalctl -u ssh --since today | grep -E "Failed|Invalid user"</code></div></div><br />
[-o cat] satır başındaki zaman damgasını kaldırıdığı için Python regex'lerinizi temiz tutar. Zaman damgası istiyorsanız [-o short-iso] kullanın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4) Dosyaya Yazma ve Script</span></span><br />
Forumdaki Python SSH analiz scripti stdin okuyabiliyor. journalctl çıktısını doğrudan borulayabilirsiniz:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo journalctl -u ssh --since yesterday --until today -o cat | python3 ssh_tespit.py --esik 10</code></div></div><br />
Kalıcı bir günlük özet dosyası için:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo journalctl -u ssh --since yesterday --until today -o short-iso &gt;&gt; /var/log/ssh_gunluk.log</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5) Klasik auth.log İsterseniz</span></span><br />
Zorunlu değil ama alışkanlık için rsyslog kurulabilir:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo apt update &amp;&amp; sudo apt install -y rsyslog
sudo systemctl enable --now rsyslog
# Kısa süre sonra /var/log/auth.log oluşmaya başlar</code></div></div><br />
Ben journalctl'ye alışmayı tercih ediyorum: tek komutla servis, zaman ve öncelik filtresi yapabiliyorsunuz.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Bonus: journald Boyut ve Kalıcılık</span></span><br />
Laptop'ta lab çalıştırıyorsanız journal disk doldurabilir. /etc/systemd/journald.conf içinde SystemMaxUse=500M gibi bir sınır koyabilirsiniz. Kalıcı journal için /var/log/journal dizininin var olduğundan emin olun (Debian'da genelde vardır).<br />
<br />
Ayrıca "öncelik" filtresi işe yarar: <div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>sudo journalctl -u ssh -p err..alert --since today</code></div></div> sadece hata ve üstü mesajları getirir. Brute force botları Failed satırlarını info seviyesinde yazar; bu yüzden brute force analizi için -p kullanmayın, grep kullanın.<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://www.freedesktop.org/software/systemd/man/latest/journalctl.html" target="_blank" rel="noopener" class="mycode_url">journalctl resmi kılavuz</a><br />
</li>
<li><a href="https://wiki.debian.org/systemd" target="_blank" rel="noopener" class="mycode_url">Debian Wiki: systemd</a><br />
</li>
</ul>
<br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite><span style="font-weight: bold;" class="mycode_b">Yasal not:</span> Yalnızca kendi yönettiğiniz sistemlerde kullanın. TCK 243-245.</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=11" target="_blank" title="">bilgekagan-02.png</a> (Dosya Boyutu: 83.35 KB / İndirme Sayısı: 9)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
	</channel>
</rss>