In anterior göndermek IPTable'ların yapılandırmasının bir Güvenlik Duvarı işlevi göreceğini gördük. Artık bu komut dosyalarını nasıl oluşturacağımızı görebiliriz, böylece sistem başladığında kuralların otomatik olarak yürütülmesi ve ayrıca bu kuralları bir an için nasıl ortadan kaldırabilir veya durdurabiliriz.
Senaryoyu yapmadan ve size nasıl göründüğünü göstermeden önce biraz NAT ve bu ekipmanla ne yapmak istediğimizin konseptinden bahsedelim.
Örneğin NAT ve Bağlamı.
NAT hakkında konuştuğumuzda, bunu yönlendirme ile karıştırabiliriz, çünkü her ikisi de iki farklı ağı birbirine bağlamakla görevlidir. Gerçek fark, yönlendirmenin bir yerel ağdan diğerine gitmek için uygulanması ve bu diğer ağın bir yönlendiriciye bağlanıp İnternete çıkabilmesidir.
Oysa NAT hakkında konuştuğumuzda, paketleri yerel veya özel bir ağdan genel bir ağa veya İnternete yönlendirmekten bahsediyoruz. Bunu, internete gittiği genel IP'yi koyarak paketleri maskeleyerek yapar. Diğer bir deyişle, bir yönlendiriciye ihtiyacımız yoktur, çünkü genel IP doğrudan GNU / Linux bilgisayara aittir.
Bunu, yerel bir ağdan İnternete çıkmak için Linux'umuzu bir yönlendirici / güvenlik duvarı olarak kullandığımız sloganıyla çalışacağız. Ancak burada iki senaryo ortaya çıkabilir.
- Linux'umuzun servis sağlayıcının yönlendiricisi ile yerel ağ arasında olduğu.
Bu durumda, yönlendirici ile Linux'umuz arasında bir ağ olacaktı ve Linux ile yerel ağ arasında başka bir farklı ağ olacaktır. Bu, yönlendiricimizin aşağıda açıklandığı gibi basit bir trafik yönlendirmesiyle NAT yapmak zorunda olmayacağı anlamına gelir. anterior göndermek İyi olurdu.
- Linux'umuzun yerel ağa bağlı bir arabirime sahip olduğu ve diğer arabirim aracılığıyla doğrudan gezindiği genel bir IP aldığı.
Bu, paketlerin İnternet'e erişebilmesi için Linux'umuzun NAT yapması gerektiği anlamına gelir.
Bu küçük laboratuvarın amaçları doğrultusunda, Linux'umuzun doğrudan bir genel IP aldığını ve böylece NAT'ın etkilerini test edebileceğini söyleyeceğiz.
NAT yapmak için sözdizimini kullanıyoruz
iptables -t nat -A SONRAKİ İŞLEME -O eth1 -j MASQUERADE
Eth1, genel IP'yi aldığımız, yani İnternete gittiğimiz arayüzdür.
İptables komut dosyası oluşturma
Diyelim ki: 172.26.0.0 bizim yerel ağımız ve 81.2.3.4 İnternete gittiğimiz genel IP. (bu statik bir iptir). Eth0 (Yerel ağ) arayüzlerine sahibim
eth1 (Genel ağ).
Temel olarak /etc/init.d/firestop (örneğin) 'den çağrılabilen bir betik oluşturmaktan ibarettir. ve bu komut dizisinden, herhangi bir sistem arka plan programında yaptığımız gibi yapılandırmamızın durumunu başlatabilir, durdurabilir veya kontrol edebiliriz.
IPTABLES kurallarımın:
#! / bin / bash # Evimin güvenlik duvarı. # Dosya adı / etc / firewall_on # Jlcmux tarafından Twitter: @Jlcmux # # Temel politika. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # #NAT interneti eth0'dan eth1'e paylaşmak için iptables -t nat -A POSTROUTING -O eth1 -j SNAT - kaynağa 81.2.3.4 # # İptables'ım tarafından başlatılan gelen bağlantılara izin ver -A YÖNLENDİRME -m durumu - durum KURULDU, İLGİLİ -j KABUL # # Yetkili giden trafik iptables -A İLERİ -i eth0 -o eth1 -p tcp --dport 80 -j iptables KABUL -A İLERİ -i eth0 -o eth1 -p tcp --dport 443 -j iptables KABUL ET -A İLERİ -i eth0 -o eth1 -p udp --dport 53 -j KABUL
Açıklama:
Komut dosyası temelde şunları yapar:
- Önce tüm navigasyonu, bağlantıları ve trafiği kısıtlayın. (Temel Güvenlik Duvarı Politikaları)
- Ardından, eth1 hedefiyle NAT'ı oluşturun. statik bir genel IP'ye sahip olduğumuzu belirten «81.2.3.4»
- Başlattığım bağlantı paketlerini almak için gerekli bağlantı noktalarını açar.
- Giden HTTP, HTTPS ve DNS trafiğini kabul eder.
Ekipmanımızı gezinmek için kullanmak istiyorsak, satırları tekrarlamalı ve FORWARD'ı uygun şekilde INPUT veya OUTPUT olarak değiştirmeliyiz.
Komut dosyasını iptal edin.
Şimdi yukarıdakilerin hepsini geçersiz kılan ve bilgisayarı tüm bunlardan arındıran bir betik oluşturacağız. (Test amacıyla veya sadece güvenlik duvarını kapatmak istiyoruz).
#! / bin / bash # Evimin güvenlik duvarı. # Dosya adı / etc / firewall_off # Jlcmux tarafından Twitter: @Jlcmux # # iptables Kurallarını Silme -F # # Varsayılan ilkeleri uygulama (tüm trafik kabul edildi) iptables -P GİRDİ KABUL iptables -P ÇIKTI KABUL iptables -P İLERİ KABUL
Otomatikleştiriliyor.
Şimdi senaryoyu içeride oluşturmalıyız /etc/init.d/ ve hizmet otomatik olarak başlar ve daha rahat bir şekilde yönetebiliriz.
#! / bin / bash # Evimin güvenlik duvarı. # Dosya adı /etc/init.d/ firewall # Jlcmux tarafından Twitter: @Jlcmux case $ 1 başlangıçta) / etc / firewall_on ;; durdur) / etc / firewall_off ;; durum) iptables -L ;; *) echo "Yanlış sözdizimi. Valid = /etc/init.d/ güvenlik duvarı start | stop | status ;; esac
Açıklama:
Bu koyduğumuz son senaryo /etc/init.d/ isimle güvenlik duvarı. Yani güvenlik duvarını yönetmek istiyorsak şu komutu kullanabiliriz: /etc/init.d/ güvenlik duvarı başlangıcı. Aynı şekilde onu durdurabilir veya durumu görebiliriz.
Şimdi dosyayı düzenleyeceğiz /etc/rc.local ve şöyle bir şey koyarız: /etc/init.d/ güvenlik duvarı başlangıcı sistemle başlamak için.
Ayrıca. Bu ikinci kısımdır. Umarım hepinize bir şeyler getirir. Sonraki bölümde Proxy ve IDS görüyoruz.
Debian kullanıyorsanız, depoda tam olarak bunu yapan bir paket var (iptables-persistent), kullandığınız şeye bağlı olarak /etc/iptables/rules.v4 veya v6'daki mevcut kuralları döker ve sonra size uygular. sistemi kaldırdığınızda.
Pratikte, geleneksel bir iptables güvenlik duvarının konfigürasyonunu temizlemek için (ve benim bakış açıma göre NAT kullanmak bu olmazdı), çoğu durumda bir kural temizliği ve varsayılan politikaları KABUL'e sıfırlamak yeterli olacaktır.
Ancak teoride ve bildiğim kadarıyla buna ek olarak, varsayılan olmayan dizeleri temizlemeniz ve sayaçları sıfırlamanız gerekir. "Filtreleme" ye ek olarak başka tablolar da olduğu akılda tutularak gerçekleştirilecek işlemler (bunun için "/ proc / net / ip_tables_names" dosyasının okunması zorunludur).
Bu arada, ortodoksluk, ağ kurulmadan önce bir güvenlik duvarının zaten açık olması gerektiğini söylüyor. Diğer Linux sistemlerinde bunun nasıl elde edildiğini bilmiyorum, ancak Debian sistemlerinde komut dosyası uyarlanabilir ve "/etc/network/if-pre-up.d/" dizinine yerleştirilebilir.
Herkesi güvenlik duvarı için iyi. 😉
Merhaba, gönderi çok güzel. 2 cildin tamamını okudum.
Bir sonrakini bekliyorum 🙂
Cehaletimden gelen bir soru, iptables ile devam ediyoruz, ancak birkaç çekirdek sürümünde nftables var, zaten test ediyorum, sorular şu, nftables iptables ile karşılaştırıldığında beta bir şey mi? İptables daha uzun süre kullanılmaya devam edecek mi?
Teşekkür ederim.
nftables iptables, ip6tables, arptables ve ebtables'ın tüm işlevlerini içerir ve bunların tümü hem çekirdek alanında hem de kullanıcı alanında yeni bir altyapı kullanır, bu da daha iyi performans ve gelişmiş işlevsellik sağlar. nftables iptables ve bahsedilen diğer tüm araçların yerini alacak, ancak şimdilik değil, en azından bu tür nftable'ların daha yaygın kullanımı olana kadar değil.
çok güzel bir gönderi, çok iyi anlatıldığı için daha fazlasını okumak istedim .. selamlar teşekkürler büyük katkı
Merhaba! Her iki gönderi de çok iyi.
Bir katkı olarak bu bölümün sonuna ekleyebilirsiniz:
"Şimdi /etc/rc.local dosyasını düzenleyeceğiz ve şöyle bir şey koyacağız: /etc/init.d/firestop start, böylece sistemle başlasın."
Bunu rc.local'a ekleyin.
eğer [-x /etc/init.d/ firewall]; sonra
/etc/init.d/ güvenlik duvarı başlangıcı
fi
Bu, "güvenlik duvarının" yürütme izinlerine sahip olması durumunda, yoksa, çalıştırmanız anlamına gelir.
"Güvenlik duvarının" başlamamasını istiyorsanız, sadece izinleri kaldırmanız gerekir.
Örneğin: chmod + x /etc/init.d/ firewall
her başlangıçta çalışmasını sağlamak veya ...
chmod -x /etc/init.d/ güvenlik duvarı
tamamen devre dışı bırakmak için.
Selamlar!