Etiket arşivi: linux komutları

Siber Güvenlik İçin Linux Temelleri: Kapsamlı Başlangıç Rehberi

Siber güvenlik dünyasına adım atan her uzmanın ve meraklının bilmesi gereken en temel konulardan biri Linux işletim sistemidir. Günümüzde sunucuların, bulut altyapılarının, ağ cihazlarının ve güvenlik araçlarının büyük bir kısmı Linux çekirdeği üzerinde çalışır.

1. Linux Nedir?

Linux; sunucularda, bulut sistemlerinde, masaüstü bilgisayarlarda, ağ cihazlarında, gömülü sistemlerde ve siber güvenlik araçlarında yaygın olarak kullanılan açık kaynaklı, Unix benzeri bir işletim sistemi çekirdeğidir.

  • Öne Çıkan Özellikleri: Kararlı (stable), esnek, betiklenebilir (scriptable) ve yüksek derecede özelleştirilebilir bir yapıya sahiptir.

  • Ana Hedef: Siber güvenlikte daha etkili ve verimli bir operatör olmak için Linux sistemlerine hakim olmaktır.

2. Siber Güvenlikte Neden Linux Tercih Edilir?

Siber güvenlik uzmanlarının ve sızma testi (penetrasyon) uzmanlarının Linux kullanmasının başlıca nedenleri şunlardır:

  • Açık Kaynak ve Şeffaflık: Kod yapısının açık olması, sistemin arka planında ne çalıştığını tam olarak görmenizi sağlar.

  • Güçlü İzin Modeli: Kullanıcı ve dosya yetkilendirme mimarisi oldukça güvenlidir.

  • Güçlü Komut Satırı ve Betik Desteği: İşlemleri otomatize etmek ve gelişmiş komut satırı (CLI) araçlarını kullanmak son derece kolaydır.

  • Hafif ve Verimli: Sistem kaynaklarını bilindik kapalı işletim sistemlerine göre çok daha az tüketir, hızlı çalışır.

  • Geniş Araç Desteği: Güvenlik ve test araçlarının büyük çoğunluğu öncelikli olarak Linux için geliştirilir.

  • Tekrarlanabilirlik (Repeatability): Otomasyon sayesinde güvenlik testleri kolayca tekrarlanabilir.

3. Popüler Linux Dağıtımları (Distros)

Farklı kullanım amaçlarına göre özelleştirilmiş birçok Linux dağıtımı mevcuttur:

  • Kali Linux: Sızma testleri ve güvenlik denetimleri için özel araçlarla yüklü gelir.

  • Parrot Security: Güvenlik testleri, gizlilik ve adli bilişim (forensics) odaklı dağıtımdır.

  • Ubuntu: Genel kullanım ve başlangıç seviyesi için en popüler dağıtımdır. Normal kullanıcı ihtiyaçlarını tam olarak karşılar.

  • Debian: Kararlılığıyla bilinen, birçok dağıtımın (Kali ve Ubuntu dahil) temelini oluşturan sistemdir.

  • Rocky Linux: Kurumsal seviyede ve sunucu altyapılarında tercih edilen RHEL tabanlı dağıtımdır. CentOS kurucularının CentOS devamı niteliğinde kurduğu bir dağıtımdır.

  • Arch Linux: Tamamen kullanıcı tarafından özelleştirilebilen minimalist bir yapıdır.

4. Linux Dosya Sistemi Hiyerarşisi

Linux’ta her şey bir dosyadır ve hiyerarşi kök (/) dizininden başlar:

DizinKullanım Amacı
/

Kök (root) dizin. Bütün dosya sisteminin başlangıç noktasıdır.

/bin

Temel sistem komutları ve çalıştırılabilir ikili (binary) dosyalar.

/etc

Sistem yapılandırma dosyaları.

/home

Kullanıcıların kişisel dosya dizinleri.

/var

Loglar, önbellek ve değişken verilerin tutulduğu alan.

/usr

Kullanıcı programları ve paylaşılan veriler.

/tmp

Geçici dosyalar (sistem yeniden başladığında genellikle temizlenir).

/opt

İsteğe bağlı / üçüncü taraf yazılımların kurulduğu dizin.

5. Mutlaka Bilinmesi Gereken Temel Komutlar

Linux terminalinde en çok karşılaşacağınız temel komutlar (bazıları MS-DOS ve MacOS komutları ile aynıdır) şunlardır:

  • ls: Dosya ve dizinleri listeler.

  • cd: Dizin değiştirir.

  • pwd: Bulunduğunuz mevcut dizin yolunu gösterir.

  • cat [dosya]: Dosya içeriğini gösterir.

  • less [dosya]: Dosya içeriğini sayfa sayfa görüntüler.

  • cp [kaynak] [hedef]: Dosya veya dizinleri kopyalar.

  • mv [kaynak] [hedef]: Dosyayı taşır veya adını değiştirir.

  • rm [dosya]: Dosyayı siler.

  • touch [dosya]: Boş bir dosya oluşturur.

  • mkdir dir: Yeni bir dizin (klasör) oluşturur.

  • rmdir dir: Boş dizini siler.

  • man cmd: Komutun kullanım kılavuzunu açar.

  • history: Geçmişte çalıştırılan komutları listeler.

  • clear: Terminal ekranını temizler.

  • whoami: Aktif olan kullanıcı adını gösterir.

  • id: Kullanıcı ve grup kimlik (ID) bilgilerini verir.

  • uname -a: Çekirdek ve sistem bilgilerini gösterir.

6. Dosya İzinleri (File Permissions) ve Yetkilendirme

Linux’ta dosya güvenliği izinler üzerinden sağlanır. ls -l script.sh komutunu çalıştırdığınızda şu çıktıyı görürsünüz:

-rwxr-x--- 1 user group 1234 January 01 11:00 script.sh

İzin Yapısı:

  1. Dosya Tipi (-): Normal dosya (-) veya dizin (d).

  2. Sahibi (Owner – rwx): Dosya sahibinin okuma, yazma ve çalıştırma izinleri.

  3. Grubu (Group – r-x): Grubun izinleri.

  4. Diğerleri (Others – ---): Diğer tüm kullanıcıların izinleri.

İzin Değerleri:

  • r (read / okuma) = 4

  • w (write / yazma) = 2

  • x (execute / çalıştırma) = 1

Örnek Kullanım: chmod 750 script.sh (Sahibine rwx=7, Gruba r-x=5, Diğerlerine =0 verir). Sahiplik Değiştirme: chown user:group script.sh

Siber Güvenlik İlkesi (En Az Yetki Prensibi – Least Privilege): Kullanıcılara ve süreçlere yalnızca ihtiyaç duydukları minimum izinler verilmelidir.

7. Süreç (Process) Yönetimi

Sistemde çalışan süreçleri izlemek ve yönetmek için kullanılan komutlar:

  • ps aux: Çalışan tüm süreçleri detaylıca listeler.

  • top: Çalışan süreçleri canlı/anlık olarak izler.

  • htop: top komutunun daha gelişmiş ve görsel halidir.

  • kill [PID]: Belirtilen Süreç Kimliğine (PID) sahip süreci sonlandırır.

  • kill -9 [PID]: Süreci zorla sonlandırır (dikkatli kullanılmalıdır).

  • pgrep [isim]: İsme göre süreçlerin PID numarasını bulur.

8. Kullanıcı Yönetimi

Kullanıcı ve grup yönetimi komutları:

  • sudo adduser [kullanıcı]: Yeni kullanıcı ekler.

  • sudo userdel [kullanıcı]: Kullanıcıyı siler.

  • sudo usermod -aG [grup] [kullanıcı]: Kullanıcıyı bir gruba ekler.

  • su - [kullanıcı]: Başka bir kullanıcıya geçiş yapar.

  • whoami: Mevcut kullanıcıyı gösterir.

  • cat /etc/passwd: Sistemdeki kullanıcı hesaplarının listesini görüntüler.

9. Paket Yönetimi (Yazılım Kurulumu)

Farklı Linux dağıtımları farklı paket yöneticileri kullanır:

Debian / Ubuntu Tabancı (apt):

sudo apt update          # Paket indeksini günceller
sudo apt upgrade         # Kurulu paketleri yükseltir
sudo apt install <pkg>   # Yeni paket kurar
sudo apt remove <pkg>    # Paketi kaldırır

RHEL / Rocky / Fedora Tabancı (dnf / yum):

sudo dnf check-update # Güncellemeleri kontrol eder
sudo dnf install <pkg> # Paket kurar 
sudo dnf remove <pkg> # Paketi kaldırır

10. Arama ve Bulma Komutları

Sistemde dosya veya içerik ararken kullanılan komutlar:

  • find / -name dosya.txt — Dosya adıyla arama yapar.

  • find / -type d -name test — Dizin bazlı arama yapar.

  • grep -r "metin" /path — Belirtilen yolda metin içeriğini özyinelemeli (recursive) arar.

  • locate dosya — Hızlı veritabanı indeksli arama yapar.

  • updatedb — Veritabanını günceller.

11. Metin İşleme (Text Processing)

Log analizi ve veri süzme için kritik komutlar:

  • head dosya.txt — Dosyanın ilk satırlarını gösterir.

  • tail dosya.txt — Dosyanın son satırlarını gösterir (Log takibi için idealdir).

  • cut -d ':' -f1 /etc/passwd — Belirli alanları / sütunları kesip alır.

  • sort dosya.txt — Satırları sıralar.

  • uniq dosya.txt — Tekrarlayan satırları temizler.

  • wc dosya.txt — Satır, kelime ve bayt sayısını verir.

  • awk '{print $1}' dosya.txt — Belirli sütunları çeker ve işler.

12. Temel Ağ Komutları

Ağ durumunu incelemek ve bağlantıları doğrulama komutları:

  • ip a — IP adreslerini ve ağ arayüzlerini gösterir.

  • ip r — Yönlendirme (routing) tablosunu listeler.

  • ping example.com — Erişilebilirlik ve bağlantı kontrolü yapar.

  • ss -tulpn — Dinlenen bağlantı noktalarını (listening sockets) ve portları gösterir.

  • curl [http://example.com](http://example.com) — Web sayfasından veri / HTTP isteği çeker.

  • dig example.com — DNS sorgusu yapar.

13. Arşiv ve Sıkıştırma İşlemleri

  • tar -czf dosya.tar.gz /path — .tar.gz arşivi oluşturur.

  • tar -xzf dosya.tar.gz — .tar.gz arşivini çıkartır.

  • zip -r dosya.zip /path — .zip dosyası oluşturur.

  • unzip dosya.zip — .zip dosyasını çıkartır.

14. Sistem Bilgisi Alma

  • uname -a — Çekirdek (kernel) bilgisi.

  • hostnamectl — Ana bilgisayar adı ve OS bilgisi.

  • df -h — Disk kullanımı (insan tarafından okunabilir formatta).

  • free -h — Bellek (RAM) kullanımı.

  • du -sh /path — Belirtilen dizinin kapladığı alan.

  • uptime — Sistemin ne kadar süredir açık olduğu.

15. Shell Betik Yazımına Giriş (Bash Scripting)

Otomasyon için basit bir Bash betiği oluşturma adımları:

  1. Dosya oluşturun: nano script.sh

  2. Shebang satırını ve komutları ekleyin:

    #!/bin/bash
    whoami
    date
    echo "Hello, Linux"
    ```
    
  3. Çalıştırılabilir yapın: chmod +x script.sh

  4. Betiği çalıştırın: ./script.sh

16. Kullanışlı Terminal Kısayolları

  • Ctrl + A — Satırın başına gider.

  • Ctrl + E — Satırın sonuna gider.

  • Ctrl + R — Komut geçmişinde arama yapar.

  • Ctrl + C — Çalışan mevcut komutu durdurur.

  • Ctrl + L — Ekranı temizler.

  • Tab — Komut veya dosya adını otomatik tamamlar.

17. Temel Siber Güvenlik İpuçları

  1. Sistemi Güncel Tutun: Güvenlik yamalarını düzenli olarak uygulayın.

  2. Güçlü Parolalar Kullanın: Karmaşık parola ve parola cümleleri tercih edin.

  3. sudo Kullanımına Dikkat Edin: Gereksiz yere root yetkisiyle komut çalıştırmayın.

  4. Gereksiz Servisleri Kapatın: Kullanılmayan servisleri devre dışı bırakın.

  5. Logları İnceleyin: Sistem ve güvenlik loglarını düzenli kontrol edin.

  6. Minimum Yetki İlkesini Uygulayın: Kullanıcılara sadece ihtiyaçları olan izinleri verin.

  7. SSH Anahtarlarını Tercih Edin: Mümkün olan yerlerde parola yerine SSH Key tabanlı doğrulama kullanın.

Temel Linux Komutları

DOSYALAR VE GEZİNME

Is – dizin listesi (geçerli dizindeki tüm dosyaları/klasörleri listeler)
Is -I – biçimlendirilmiş liste
Is -la – gizli dosyalar da dahil olmak üzere biçimlendirilmiş liste
cd dir – dizini dir olarak değiştir (dir, dizin adı olacaktır)
cd. – ana dizine değiştir
cd ../dir – üst dizinde dir olarak değiştirin
cd – ana dizine geç
pwd – geçerli dizini göster
mkdir dir – bir dizin oluştur
rm file – dosyayı sil
rm -f dir – dosyayı kaldırmaya zorla
rm -r dir – dizini sil
rm -rf dir – dizini kaldır
rm-rf / – tüm içeriği siler, dikkatli kullanılması gerekir
cp dosya1 dosya2 – dosya1’i dosya2’ye kopyala
mv dosya1 dosya2 – dosya1’i dosya2 olarak yeniden adlandırın
mv dosya1 dir/dosya2 – dosyayı dosya2 olarak dizine taşı
touch file – dosya oluşturun veya güncelleyin
cat file – dosyanın çıktı içeriği
cat > file – standart girdiyi dosyaya yaz
cat»file – standart girdiyi dosyaya ekle
tail -f file – dosyanın içeriği büyüdükçe çıktısını alır

AĞ

ping host – ping host
whois domain – get whois for domain
dig domain – get DNS for domain
dig-x host – reserve lookup host
wget file – download file
wget -c file – continue stopped download
wget -r url – reciirively download files from url
curl url – outputs the wobpago from url
curl -o meh.html url – writes the page to meh.html
ssh user@host – connect to host as user
ssh -p port user@host – connect using port
ssh -D user@host – connect & use bind port

SİSTEM BİLGİSİ

date – geçerli tarihi/saati göster
uptime – çalışma süresini göster
whoami – who you’re logged in as
w – kimin çevrimiçi olduğunu göster
cat /prac/cpuinfo – display cpu info
cat /proc/meminfo – memory info
free – show memory and swap usage
du – dizin alanı kullanımını göster
du -sh – displays readable sizes in GB
df – show disk usage
uname -a – show kernel config

SIKIŞTIRMA

tar cf file.tar files – tar files into file.tar
tar xf file.tar – untar into current directory
tar tf file.tar – show contents of archive

options:
c – create archive
t – table of contents
x – extract
z – use zip/gzip
f – specify filename
j – bzip2 compression
w – ask for comfirmation
k – do not overwrite
T – files from file
V – verbose

İZİNLER

chmod octal file – dosyanın izinlerini değiştirir

4 – read (r)
2 – write (w)
1 – execute (x)

order: owner/group/world
chmod 777 – rwx for everyone
chmod 755 – rw for owner, rx for group world

İŞLEMLER

ps – şu anda aktif olan işlemleri göster
ps aux – detailed outputs
kill pid – kill process with process id (pid)
killail proc – kill all processes named proc

DİĞER

grep pattern files – search in files for pattern
grep -r pattern dir – search for pattern recursively in dir
locate file – find all instances of file
whereis app – show possible locations of app
man command – show manual page for command