Bloğa geri dön

Linux'ta Netcat Aracı: Netcat ile bir VPS üzerinde TCP/UDP Bağlantılarını Test Etme

Linux'ta Netcat Aracı: Netcat ile bir VPS üzerinde TCP/UDP Bağlantılarını Test Etme

Giriş

Kullanmanın en büyük avantajlarından biri Linux sunduğu çok sayıda yararlı yardımcı programdır. Program içi özellikler genellikle çoğu programcının işini yapması için yeterlidir. Bu, çoğu zaman harici programlar ve yazılımlar indirmenize gerek kalmayacağı anlamına gelir. Yerleşik araçlar size yeterli faydayı sağlayacaktır. Bu yararlı özellikler arasında netcat yardımcı programı da bulunmaktadır.

Ağ araçları dünyası söz konusu olduğunda, netcat adeta aşırı güçlü bir silahtır. Birden fazla amaç için kullanabileceğiniz inanılmaz derecede çok yönlü bir komuttur. Örneğin, sisteminizin bağlantıları üzerinden her türlü dosya ve veriyi izlemek, test etmek ve aktarmak için bu tek aracı kullanabilirsiniz. Bu kılavuzda, tüm bu eylemleri bir VPS üzerinde netcat kullanarak nasıl gerçekleştireceğimizi inceleyeceğiz.

Netcat'i Bulma

Netcat genellikle tüm modern Linux dağıtımlarında mevcuttur. Bu, büyük olasılıkla zaten sahip olduğunuz ve yüklemek için ekstra bir çaba sarf etmenize gerek olmadığı anlamına gelir. Eğitimimizde Ubuntu 12.04 VPS kullanacağız. Eğitimimizi takip ederek kendi Ubuntu sunucunuzu kurabilirsiniz.  Ubuntu normalde netcat yardımcı programının BSD varyantı ile birlikte gelir. Başka bir sürüme sahipseniz, biraz farklı çalışabileceğini unutmayın.

Temel Sözdiziminin Üzerinden Geçmek

Netcat yardımcı programında çalışan genel sözdizimini öğrenerek başlıyoruz. Bir TCP connection başlatarak netcat'i çalıştırabilirsiniz. Bağlantının uzak bir ana bilgisayara başlatılması gerekir. İşte netcat için temel sözdizimi:

Bu komut, uzak bir ana bilgisayara TCP bağlantısı başlatmaya çalışacaktır. Hangi ana bilgisayara bağlanacağı, komutta belirttiğiniz port numarasına bağlıdır. Bağlantı şifrelenmemiş olacaktır. Gördüğünüz gibi, bu komut telnet komutunun çalışma şekline benzer şekilde çalışır.

Öte yandan, bir UDP collection da başlatabilirsiniz. TCP yerine bir UDP paketi göndermek için -u seçeneğini kullanmanız gerekir. Şöyle görünecektir:

Dilerseniz bir port aralığı da belirtebilirsiniz. Bunu yapmak için ilk ve son port arasına bir tire koymanız gerekir. İşte bir örnek:

Buna daha fazla bayrak da ekleyebilirsiniz. Dikkat edilmesi gereken bir diğer husus da netcat ve nc komutlarını birbirinin yerine kullanabileceğinizdir. Sizi aynı komuta yönlendirirler, yani birbirlerinin takma adlarıdır (alias).

Port Tarama için Netcat Kullanımı

Başlangıç olarak, netcat'in en yaygın kullanım alanlarından birini inceleyelim. Onu bir port tarayıcı olarak nasıl kullanacağımızı öğreneceğiz. Çoğu durumda, nmap gibi bir araç kullanmanız daha iyi olacaktır. Ancak, yalnızca basit port taramaları yapmanız gerekiyorsa, netcat kullanışlıdır. Açık portları kolayca tespit etmenize yardımcı olabilir.

Netcat'i port tarayıcı olarak kullanmak için port aralığını belirtmeniz gerekir. Bunu -z seçeneğini kullanarak yapacaksınız. Böylece sistem, bağlantı kurmaya çalışmak yerine port aralığını tarayacaktır. Diyelim ki port 1'den port 1000'e kadar tarama yapmak istiyoruz:

-z komutuna ek olarak, -v seçeneğini de kullandık. İkincisi, komuta daha fazla bilgi vermemizi sağlar. Daha 'ayrıntılı' (verbose) olmamızı sağlar.

Karşılığında şöyle bir çıktı alacaksınız:

port scanning netcat utility

Çıktı, her bir port için birçok bilgi gösterir. Her portun bağlantı durumunu bilirsiniz. Öte yandan, biliyorsanız alan adı yerine IP adresini de kullanabilirsiniz. Bu, işlemi çok daha hızlı hale getirir. İşte bir örnek:

Sistemin IP adresini çözümlemek için DNS kullanması gerekmediğini belirtmek için -n bayrağını kullandık.

Genellikle, geri dönen mesajlar standart hataya (standard error) gönderilir. Sonuçları daha hızlı filtrelemek için bunları standart çıktıya (standard out) yönlendirebilirsiniz. Bunu yapmak için 2>&1 bash sözdizimini kullanacağız. Sonrasında, grep kullanarak sonuçları filtreleyeceğiz. Bunu örneğimize uygulayalım:

Çıktı şuna benzer görünecektir:

port scan succeeded

Çıktı, verilen aralıkta bağlantı için yalnızca port 22'nin açık olduğunu gösteriyor. Port 22, geleneksel SSH portudur.

Netcat Aracılığıyla İletişim: Nasıl Çalışır?

Sırada, TCP ve UDP paketleri göndermek için netcat'i nasıl kullanabileceğinizi göreceğiz. Sadece bu da değil, aynı zamanda çeşitli portlardan paketler de alabilir. Bu yeteneğin bir sonucu olarak, bir istemci-sunucu ilişkisi oluşturmak için iki netcat örneği kullanabilirsiniz. Başlangıçta, istemciyi ve sunucuyu belirleyeceksiniz. İlk yapılandırmadan sonra, her iki istemci de her iki yönde paket gönderip alabilir.

Doğal olarak, bir sistemde netcat'i bir port üzerinden bağlantıları dinleyecek şekilde yapılandırmanız gerekecektir. Bunu yapmak için -l parametresini kullanmalısınız. Bununla, tercih ettiğiniz portu şu şekilde seçebilirsiniz:

Artık bu makinedeki TCP, 4444 numaralı port üzerinden bağlantıları dinliyor olacak. Unutulmaması gereken bir nokta, root olmayan veya normal bir kullanıcıysanız, 1000'in altındaki portlara erişemeyeceğinizdir.

Ardından, bağlantı kurmak için ikinci bir makineyi yapılandırmanız gerekir. Aynı port numarasını kullanacak ve şu şekilde belirli bir alan adı belirteceksiniz:

Bu komutu çalıştırmak size herhangi bir çıktı vermeyecektir. Ancak bağlantıyı kuracaktır. Bu, sunuculardan herhangi birinden diğerine mesaj göndermeye başlayabileceğiniz anlamına gelir. Bunu yapmak için tek yapmanız gereken mesajı yazıp ardından ENTER tuşuna basmaktır. Mesaj her iki ekranda da görünecektir.

İşiniz bittiğinde, CTRL+D tuşlarına basarak TCP bağlantısını kapatabilirsiniz.

Netcat Kullanarak Dosya Gönderebilir misiniz?

Sırada, netcat aracılığıyla nasıl dosya gönderebileceğinizi göstereceğiz. Bir TCP bağlantısı ile mesajların yanı sıra diğer veri türlerini de gönderebilirsiniz. Başlamak için, bağlantıları dinlemek üzere bir makine seçmelisiniz. Ancak, bilgileri komuta yazmak yerine, şu şekilde bir dosyaya yerleştireceğiz:

Diğer makinede yeni bir metin dosyası oluşturmanız gerekecek. Kullanılacak komut şudur:

Dosyayı iletmek için, dinleyen bilgisayardaki bağlantı için bir girdi olarak kullanacaksınız:

Diğer bilgisayarda 'received_file' adında yeni bir dosya görünecektir. Bu dosya, yazdığımız tüm bilgileri içerecektir:

file transmissionBu yardımcı programı kullanabilir ve bir dosya aktarım programına dönüştürebilirsiniz. Diyelim ki bir dizinin içeriğini aktarmak istiyorsunuz. Bunu, sisteme aktaracağımız ve uzak dizine açacağımız isimsiz bir tarball oluşturarak yapacağız. Diğer makinede, dosyayı almaya hazır olmamız gerekir. Dosyayı açıp çıkartmamız gerekeceğini biliyoruz. Bunu yapmak için şu komutu verin:

Tire işareti, tar'ın standart girdi üzerinde çalışacağını belirtir. Bu, ilk bağlantıyı kurduğumuzda ilk sunucudaki netcat'ten gelir.

Son olarak, tüm dizinin içeriğini bir tarball içine koyabilir ve netcat aracılığıyla şu şekilde gönderebiliriz:

tar komutundaki tire işareti, sisteme dizin içeriğini tar ve zip yapmasını söylediğimizi gösterir. Ayrıca sonucu standart çıktıya yazmasını talimatlandırır. Dosya, TCP bağlantısı üzerinden diğer uca gidecektir. Alıcı sunucu dosyayı açacak ve mevcut uzak dizine kaydedecektir.

Tıpkı bunun gibi, netcat aracılığıyla diğer veri türlerini de aktarabilirsiniz. Birçok kişi diskleri imajlamak ve aktarmak için dd komutunu kullanır. Veri ve dosya aktarmanın başka bir yolu için SFTP ile dosya aktarırken güvenliğin nasıl sağlanacağını gösteren kılavuzumuza göz atın.

Netcat'i Web Sunucusu Olarak Kullanma

netcat'in bir diğer kullanışlı işlevi de sayfalarınızı test etmek için kullanabilmenizdir. Diyelim ki bunun gibi bir HTML dosyası oluşturmak için bir sunucu kullanıyoruz:

Dosyanın içerdiği HTML kodu şudur:

Bunu dosyaya girin, ardından kaydedip kapatın. Genellikle, port 80 varsayılan web portudur. Normal, root olmayan bir kullanıcı olarak 8888 portunu seçeceğiz. Sayfayı bir kez sunmak ve kontrol etmek istediğinizi varsayarsak, şu komutu kullanmalısınız:

Dosyanın içeriğini görüntülemek için tarayıcınıza gidin. Şunu ziyaret edin:

HTML dosyası ile kodladığınız sayfayı görebileceksiniz:

output html page netcat utility

Sayfayı aldığınızda, netcat bağlantısı kapanacaktır. Bu, sayfayı yenilemenin içerik yerine bir hata vereceği anlamına gelir. Bunun nedeni, sayfayı yalnızca bir kez sunacak şekilde yapılandırmış olmamızdır. Sayfayı süresiz olarak görmek için bağlantı almaya devam etmek istiyorsanız, farklı bir kod kullanacaksınız:

Burada, son komutu sonsuz bir döngüye aldık. Döngüyü durdurmak istiyorsanız tek yapmanız gereken CTRL-C tuşlarına basmaktır. Artık ilk bağlantı kapandıktan sonra bile sayfanızı ve oluşturulmuş halini görüntülemeye devam edebilirsiniz. Ancak bu, netcat aracını bir web sunucusu olarak kullanarak elde edebileceğiniz maksimum işlevselliktir. Herhangi bir güvenlik sağlamadığı için gerçek web sitelerini sunmak amacıyla kullanmayı denemeyin. Bunun yerine, Nginx gibi web sunucusu yazılımlarının nasıl kurulacağı veya Apache.

Sonuç

Bu öğreticide, netcat aracını ele aldık ve Ubuntu üzerinde bir araç olarak çok yönlülüğünü inceledik. Yukarıdaki bölümlerde ele aldığımız gibi, bunu iletişim, veri aktarımı ve sayfa sunma amaçları için kullanabilirsiniz. TCP/UDP bağlantıları aracılığıyla sunucular arasındaki hızlı etkileşimler için mükemmel şekilde çalışır. Birçok temel düzeydeki işlevsellik ve teşhis için oldukça yardımcı bir özelliktir.

Keyifli Bilişimler!

author

Akshay Nagpal

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.