Bloğa geri dön

Linux'ta Iptables ile Port Yönlendirme: Nasıl Yapılır Rehberi

Linux'ta Iptables ile Port Yönlendirme: Nasıl Yapılır Rehberi

Port yönlendirme (port eşleme olarak da adlandırılır), uzak cihazların özel yerel alan ağınız (LAN) içindeki belirli bir hizmete bağlanmasına izin veren bir yöntemdir. Adından da anlaşılacağı gibi, bu işlem belirli bir port için gelen isteklerin başka bir porta veya ağa yönlendirilmesini içerir. Paket hareket halindeyken hedefini değiştirir ve bir ağ adresi çevirisi (NAT) işlemi olarak kabul edilir.

Port yönlendirmenin etkinleştirilmesi, dahili ağa bağlı olmayan cihazların veya ana bilgisayarların birbirine erişmesine olanak tanır; aksi takdirde devre dışı bırakıldığında bu erişim kısıtlanır. Hedef web sitelerini engellemek, güvenliği artırmak ve istediğiniz zaman NAT güvenlik duvarının etrafından dolaşmak için port yönlendirmenin avantajlarından yararlanabilirsiniz.

In this tutorial, Linux'ta iptables ile port yönlendirme adımlarında size rehberlik edeceğiz.

Gereksinimler

Bu öğreticiyi takip etmek için şunlara ihtiyacınız olacak:

Ana Bilgisayar Detayları

İlk olarak, çalışan sunucuların arayüz ve adres detaylarını bilmemiz gerekiyor. Sistemimizin ağ arayüzlerini kontrol edelim:

Şu çıktıyı göreceksiniz:

Burada, vurgulanan çıktı iki arayüz göstermektedir; birincisi eth0 şu adrese atanmış olan: 192.51.100.45, ve ikincisi eth1 şu adrese atanmış olan: 192.168.1.5. Bu iki arayüzden biri genel, diğeri ise özeldir. İkisini birbirinden ayırt etmek ve varsayılan ağ geçidinize bağlı olan genel arayüzü bulmak için bir komut çalıştıracağız. Ayırt etmek için şunu yazın:

Şu çıktıyı göreceksiniz:

Öğretici için Örnek Veriler

Bu öğretici boyunca örnek adresler ve arayüz atamaları kullanacağız. Bu verileri kullanmakta veya kendi isteğinize göre değiştirmekte serbestsiniz.

Web sunucusu ağ detayları:

  • Genel IP Adresi: 203.0.113.2

  • Özel IP Adresi: 192.0.2.2

  • Genel Arayüz: eth0

  • Özel Arayüz: eth1

Güvenlik duvarı ağ detayları:

  • Genel IP Adresi: 203.0.113.15

  • Özel IP Adresi: 192.0.2.15

  • Genel Arayüz: eth0

  • Özel Arayüz: eth1

Web Sunucusu Kurulumu

Web sunucusu ana bilgisayarımızla başlayalım. İlk olarak, sudo kullanıcınızla giriş yapın.

Nginx Kurulumu

İlk olarak, web sunucusu ana bilgisayarımıza Nginx kuracağız ve yalnızca kendi özel arayüzünü dinleyecek şekilde kilitleyeceğiz. Bu, web sunucumuzun yalnızca port yönlendirmeyi doğru bir şekilde ayarladığımızda kullanılabilir olmasını sağlayacaktır.

Ardından, yerel paket önbelleğini güncelleyin ve Nginx'i indirip kurmak için apt kullanın:

Kısıtlamalar Ekleme

Web sunucusu ana bilgisayarımıza Nginx'i kurduktan sonra, yalnızca özel arayüzlerden gelen girişleri kabul etmesini ve başka hiçbir yerden kabul etmemesini sağlamak için kilitleyeceğiz. Ayrıca bu, web sunucularımızın yalnızca port yönlendirme kurulumu doğruysa aktif olmasını sağlayacaktır.

Kısıtlamalar eklemek için varsayılan sunucu bloğu yapılandırma dosyasını açın: /etc/nginx/sites-enabled/default tercih ettiğiniz herhangi bir metin düzenleyicide (burada nano metin düzenleyiciyi kullanıyoruz) açın ve şunu yazın:

Çıktıda, listen yönergesinin iki kez göründüğünü göreceksiniz:

Port Forwarding Nginx Default File

Bu öğreticide, IPv4 yönlendirmesini göstermek için ilk yönergeyi kullanıyoruz. IPv6 için yapılandırılmış olan ikincisi kaldırılabilir. Nginx'e yalnızca özel arayüzden gelen girdileri almasını bildirmek için web sunucunuzun özel IP adresini 80'in hemen önüne iki nokta üst üste ile ekleyin. Ardından, yönergeyi düzenleyin:

Port Forwarding Nginx Edited Default File

İşlem tamamlandığında dosyayı kaydedip kapatın. Devam etmeden önce herhangi bir sözdizimi hatası olmadığından emin olun. Dosyayı test edelim:

Nginx T

Herhangi bir hata görüntülenmezse, Nginx'i yeniden başlatıp yeni yapılandırmayı etkinleştirebilirsiniz:

Ağ Kısıtlamasının Doğrulanması

Web sunucumuza olan erişim düzeyimizi doğrulayalım. Özel arayüzü kullanarak web sunucusuna erişmeyi deneyin. Bunun için curl komutunu kullanın:

Şu çıktıyı göreceksiniz:

Port Forwarding Nginx Output1

Genel arayüzü kullanmaya çalışırsak, bağlantı kuramayız:

Bu tam olarak beklediğimiz şeydir.

Güvenlik Duvarını Port 80'i Yönlendirecek Şekilde Yapılandırın

Güvenlik duvarı makinemizde port yönlendirmeyi uygulayarak çalışmamıza devam edelim.

Çekirdekte Yönlendirmeyi Etkinleştirin

Varsayılan olarak, çoğu sistemde port yönlendirme KAPALI durumdadır. Birkaç düzenleme yaparak port yönlendirmeyi AÇIK duruma getireceğiz. Ayrıca, sonraki adımlarda gösterildiği gibi sudo yetkilerini kullanarak port yönlendirmeyi kalıcı olarak AÇIK duruma getirme seçeneği de vardır.

Çekirdek düzeyinde trafik yönlendirmeyi AÇIK duruma getirmek için şunu yazın:

Port yönlendirmeyi kalıcı olarak AÇIK duruma getirmek için /etc/sysctl.conf dosyasını düzenleyin. Dosyayı sudo yetkileriyle açın ve şunu yazın:

İçerisinde, şu şekilde görünen satırı bulun ve başındaki yorum işaretini kaldırın:

İşlem tamamlandığında dosyayı kaydedip kapatın. Ardından, sysctl komutlarını kullanarak ayarlardaki değişiklikleri uygulayın:

Temel Güvenlik Duvarı Kurulumu

İlk olarak, temel bir güvenlik duvarının nasıl kurulacağına ilişkin kılavuzu inceleyin. Tamamladığınızda şunlara sahip olacaksınız:

  • Şunu yüklemiş olacaksınız: iptables-persistent
  • Varsayılan kural kümesini şuraya kaydetmiş olacaksınız: /etc/iptables/rules.v4
  • Şu komutu kullanarak kural ekleme ve değiştirme konusunda kapsamlı bilgi: iptables komutu

Ayrıca, şuna da göz atabilirsiniz: iptables Güvenlik Duvarı kurallarını listeleme ve silme.

Yönlendirme Kurallarını Ekleme

Güvenlik duvarımızı, genel arayüzümüze ( eth0 ) gelen trafiğin, port 80 üzerinden özel arayüzümüze ( eth1) yönlendirilmesini sağlayacak şekilde yapılandıracağız. Varsayılan olarak, temel güvenlik duvarımızda FORWARD zinciri, trafiği DROP edecek şekilde ayarlanmıştır. Güvenlik duvarı kuralları eklemek, web sunucumuza giden bağlantıların yönlendirilmesine izin verecektir. Güvenlik eklemek için, yönlendirme isteklerine izin verecek şekilde güvenlik duvarı kurallarını kilitleyeceğiz.

Şu zincirde: FORWARD genel arayüzümüzden gelen ve özel arayüzümüze giden, port 80 hedefli yeni bağlantıları kabul edeceğiz. Yeni bağlantıları conntrack uzantısı yardımıyla tanımlayacağız ve bunları bir TCP SYN paketi ile temsil edeceğiz:

Gelen bağlantıdan kaynaklanan her iki yöndeki sonraki tüm trafiğe izin vermeniz gerekir. Genel ve özel arayüzlerimiz arasında ESTABLISHED ve RELATED trafiğine izin vermek için aşağıdaki komutları yazın:

zincirindeki politikamızın FORWARD olarak ayarlandığını doğrulayalım: DROP:

Şu ana kadar, genel ve özel arayüzlerimiz arasındaki trafiğin güvenlik duvarımızdan geçmesine izin veren birkaç kural ekledik. Ancak, iptables trafiği yönlendirmek için henüz bilgilendirilmedi çünkü güvenlik duvarı kuralları yapılandırması henüz tamamlanmadı. Sonraki adımlarda, trafiği yönlendirmek için NAT kurallarını ekleyeceğiz ve kalıcı kural kümesini ayarlayacağız.

Paketleri Yönlendirmek için NAT Kurallarını Ekleme

aracının iptables paketleri doğru şekilde değiştirmesi ve istemciler ile web sunucusu arasındaki iletişimi kolaylaştırması için iki ayrı işlem gerçekleştireceğiz.

DNAT, PREROUTING zincirini başlatan ve nat tablosunda yer alan ilk işlemdir. Bu işlem, paketin hedef adresini değiştirir ve ağlar arasında geçerken doğru şekilde yönlendirilmesini sağlar. Ancak, genel ağdaki istemciler güvenlik duvarı sunucumuza bağlanacak ve özel ağ topolojimiz hakkında hiçbir bilgiye sahip olmayacaklardır. Özel ağ ile bilgi aktarmak için, hedef web sunucumuza doğru şekilde ulaşmasını sağlamak üzere her paketin hedef adresini değiştirin.

Bağlantı noktası yönlendirmeyi (port forwarding) yapılandırmaya odaklandığımızı belirtmek önemlidir. Güvenlik duvarına ulaşan her pakette NAT işlemi gerçekleştirmek bu kılavuzun bir parçası değildir. numaralı bağlantı noktasındaki paketleri 80 web sunucumuzun özel IP adresiyle eşleştireceğiz:

Paket, istemcinin orijinal adresini kaynak adres olarak içerecek şekilde web sunucumuza doğru bir şekilde yönlendirilecektir. Sunucunun yanıtı doğrudan bu adrese gönderme girişimlerine rağmen, meşru bir TCP bağlantısı kurma olasılığı olmayacaktır.

Doğru yönlendirmeyi yapılandırmak için paketin kaynak adresini değiştireceğiz. Kaynak adresi, güvenlik duvarı sunucumuzun özel IP adresiyle değiştirelim. Değişiklikten sonra yanıt, güvenlik duvarına geri gönderilecek ve o da bunu istemciye iletecektir.

Bu işlevi etkinleştirmek için, paketler ağa gönderilmeden hemen önce değerlendirilen POSTROUTING zincirine ve nat tablosuna bir kural ekleyin. Ardından, web sunucumuz için belirlenen paketleri IP adresi ve bağlantı noktasına göre eşleştirin:

Bu kural yürürlüğe girdiğinde, web tarayıcımızı güvenlik duvarı makinemizin genel adresine yönlendirerek web sunucumuza erişilebilir olmalıdır:

Şu çıktıyı göreceksiniz:

Nginx Output2

Bağlantı noktası yönlendirme kurulumumuz tamamlandı.

Kalıcı Kural Kümesini Ayarlama

Bağlantı noktası yönlendirme kurulumunu tamamladıktan sonra, bunu kalıcı kural kümemize kaydedeceğiz. Mevcut kural kümesindeki yorumları korumak istiyorsanız, kurallarınızı kaydetmek için iptables-persistent servisini kullanın:

Dosyanızdaki yorumları korumak için dosyayı açıp manuel olarak da düzenleyebilirsiniz:

Ardından, sırasıyla filter tablosunu ve nat tablosunu yapılandırarak FORWARD zinciri kurallarını ve ROUTING kurallarını ekleyin. nat tablosunu ayarlamak, PREROUTING ve POSTROUTING kurallarını aşağıdaki örnekte gösterildiği gibi eklememize olanak tanıyacaktır:

Yukarıdaki değerleri ekledikten sonra dosyayı kaydedip kapatın. Ardından, kurallarınızın sözdizimini test etmek için aşağıdaki komutu yazın:

Herhangi bir hata görmüyorsanız, kural kümesini yükleyin:

Web sunucumuzun güvenlik duvarınızın genel IP adresi üzerinden hala erişilebilir olduğunu doğrulayalım:

Sonuç

Bu eğitimin sonunda, iptables ile bir Linux sunucusunda bağlantı noktası yönlendirme konusunda kendinizi rahat hissediyor olmalısınız. Ağ geçidi güvenlik duvarı makineniz üzerinden hizmet trafiğinin serbestçe akmasını sağlarken, özel ağınızın topolojisini gizlemek için bağlantı noktası yönlendirme özelliklerinden yararlanabilirsiniz.

Bu işlem doğrudan ağ güvenliğinize ve kullanılan bağlantı noktalarına bağlı olduğundan güvenlidir. Ağınızda bir güvenlik duvarı veya VPN güvenliği yoksa bir risk olasılığı olabilir. Bu nedenle, güvenlik duvarını bu eğitimde açıklandığı gibi yapılandırmanız önerilir. Bu kılavuzun, özel ağınızı kullanırken internette güvende kalmanıza yardımcı olacağını umuyoruz.

Sisteminizde uygulayabileceğiniz daha fazla güvenlik duvarı çözümünü keşfetmek için şu kaynaklara göz atın: blogumuz:

Keyifli Bilişimler!

author

Pranay Kapgate

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.