Ubuntu 16.04te Kolay IPTable Yapılandırması ve Örnekler

Giriş

iptablesLinux çekirdeğinin entegre güvenlik duvarını yapılandırmak için kullanılan güçlü bir araçtır. Çoğu Ubuntu dağıtımında önceden yüklenmiş olarak gelir, ancak özelleştirilmiş bir Ubuntu sürümü kullanıyorsanız veya bir kabın içinde çalıştırıyorsanız, büyük olasılıkla manuel olarak yüklemeniz gerekecektir.

sudo apt-get install iptables iptables-persistent

Kurulumdan sonra, mevcut kurallarınızı kaydetmek isteyip istemediğiniz sorulursa, şu anda önemli değildir, çünkü daha sonra yeni kuralları kaldıracak veya oluşturacaksınız.

İpuçları

Hangi bağlantı noktalarının açık veya kapalı olduğunu test etmek için netcatkomutu ( sunucunuzdan farklı bir bilgisayarda) kullanabilirsiniz.

nc -z -w5 -v SERVER_IP PORT
  • nc netcat komutudur.
  • -z sadece yükü olmayan bir paket gönderin.
  • -w5 yanıt için 5 saniye kadar bekleyin.
  • -v ayrıntılı mod.
  • SERVER_IPSunucu adresinizle değiştirin .
  • PORTAçık olup olmadığını test etmek istediğiniz bağlantı noktasıyla değiştirin (örn. 22).

Sunucunuzda netstatşu anda hangi bağlantı noktalarını dinlediğini görmek için komutu kullanabilirsiniz .

sudo netstat -tulpn

Not: netstatÇalışmak istediğiniz bağlantı noktalarını bulmak kullanışlı olsa da, sunucunuza şu anda yüklediğiniz uygulamaların ve hangi bağlantı noktalarının dinlendiğinin farkında olmalısınız , çıktıda bulduğunuz her bağlantı noktasına izin vermeniz gerekmeznetstat .

Sözdizimi

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTBir kural eklemek INPUTzinciri, bir zincir kurallar grubudur, bu kılavuzun üzerinde en çok kullandığınız olanlar olacaktır INPUT, OUTPUTve PREROUTING.
  • -p tcptcpBu kuralın uygulanacağı protokol olarak ayarlandığında udp, icmpveya gibi diğer protokolleri de kullanabilirsiniz all.
  • -m tcptcpmodülü kullanın . iptablesbazıları önceden yüklenmiş iptablesolarak gelen geoipmodüller ve diğerleri gibi modüller aracılığıyla ek özellikleri destekler .
  • --dport 22ile başlayan komutlar --daha önce kullanılan modül için ek seçenekleri belirtir, bu durumda tcpmodüle yalnızca bağlantı noktasına uygulanmasını söyleriz 22.
  • -m geoipgeoipmodülü kullanın . Paketleri ülke bazında sınırlayacaktır (5. adımda daha fazla bilgi).
  • --src-cc PEgeoipModüle gelen paketleri Peru'dan gelen paketlerle sınırlamasını söyleyin . Daha fazla ülke kodu için ISO 3166 country codesinternette arama yapın .
  • -j ACCEPT-jargüman anlatır iptablespaket önceki argümanlar belirtilen kısıtlamaları eşleşirse ne yapacağını. Bu durumda olacaktır ACCEPT, başka seçenekler bu paketler vardır REJECT, DROPve daha fazlası. iptables jump targetsİnternette arama yaparak daha fazla seçenek bulabilirsiniz .

1. Temel Bilgiler

Tüm kuralları listele.

sudo iptables -L

Geçerli olarak kullanılan kuralları oluşturmak için kullanılan ve kuralları düzenlemek veya silmek için kullanılan tüm komutları listeleyin.

sudo iptables -S

Belirli bir kuralı silmek için bir kural seçin sudo iptables -Sve -Aonunla değiştirin -D.

# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT

INPUTZincirdeki tüm numaralı kuralları listeler .

sudo iptables -L INPUT --line-numbers

Numaralandırılmış bir kuralı silin.

sudo iptables -D INPUT 2

Tüm kuralları temizlemek için.

sudo iptables -F

Uyarı: SSH ile bağlanırsanız bağlantınızı kaybedebilirsiniz .

Yalnızca OUTPUTzincirdeki kuralları temizleyin .

sudo iptables -F OUTPUT

2. İlk kuralları oluşturun

İzin SSHüzerine eth0arayüzüne

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 Herhangi bir arabirimden bu komutu kaldırmasına izin vermek için belirli bir arabirime kural uygula.

Gelen paketleri belirli bir IP (yani 10.0.3.1/32) ile sınırlamak için .

sudo iptables -A INPUT -i eth0 -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
  • -s 10.0.3.1/32 bağlantılara izin verilecek bir IP / alt ağ belirtir.

Varsayılan zincir kurallarını ayarlayın.

Uyarı: devam etmeden önce, uzak bir sunucuda çalışıyorsa doğru SSH kurallarını uyguladığınızdan emin olun .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP tüm gelen paketleri reddeder (yani hiç kimse Apache, SQL vb. çalışan sunucularınıza bağlanamaz).
  • -P FORWARD DROP yönlendirilen tüm paketleri reddeder (yani sisteminizi yönlendirici olarak kullandığınızda).
  • -P OUTPUT ACCEPTtüm giden paketlere izin verir (yani bir HTTPistek gerçekleştirdiğinizde ).

Geri döngü arayüzündeki tüm trafiğe izin ver ( önerilir ).

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

3. Kuralları kalıcı hale getirin

Geçerli iptableskuralları kaydedin .

sudo netfilter-persistent save
sudo netfilter-persistent reload

Bir kabın içinde çalışıyorsanız netfilter-persistentkomut büyük olasılıkla çalışmayacaktır, bu nedenle iptables-persistentpaketi yeniden yapılandırmanız gerekir .

sudo dpkg-reconfigure iptables-persistent

4. Giden bağlantılara izin ver

DNS sorgularına izin ver.

sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

İzin verilen ve giden paketlere stateizin vermek için modülü kullanın .RELATEDESTABLISHED

sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

İstenen bağlantı noktalarına izin verin; bu durumda, HTTPbağlantı noktaları.

sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

Kullanmak isteyebileceğiniz daha fazla bağlantı noktası.

  • FTP: 21 numaralı bağlantı noktasında tcp
  • HTTPS: 443 numaralı bağlantı noktasında tcp
  • DHCP: 67 numaralı bağlantı noktasında udp
  • NTP: 123 numaralı bağlantı noktasında udp

Not: Eğer izin vermek istiyorsanız apt-getbunu sağlamak için gerekli olabilir FTPveHTTPS .

Yalnızca RELATEDve zaten ESTABLISHEDbağlantılar için döndürülen trafiğe izin verin ( bazen çift yönlü iletişim gerektiğinden önerilir ).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Diğer faydalı kurallar

Dışarıdan ping isteklerine izin ver.

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

Üzerinde İleri trafik eth0portuna 2200için 10.0.3.21:22(eğer bir konteynerin içinde çalışan bir SSH sunucusuna açığa istiyorsanız kullanışlıdır).

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22

Sunucunuza SSH kullanarak başarılı bir şekilde oturum açarsanız, kalıcı bir bağlantı oluşturulur (yani 1 saatten fazla bağlı olsanız bile yeni bağlantı olmaz). Başarısız olursanız ve tekrar oturum açmayı denerseniz, yeni bir bağlantı oluşturulur. Bu, saatte yeni bağlantıları sınırlandırarak sürekli SSH giriş denemelerini engelleyecektir.

sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP

Bağlantı noktasında tüm istekleri yeniden yönlendirme 443bağlantı noktasına 4430(eğer bağlantı noktasına bağlamak istediğinizde yararlı 443olmadan root).

sudo iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 443 -j REDIRECT --to-port 4430
sudo iptables -A INPUT -p tcp -m tcp --dport 4430 -m geoip --src-cc PE -j ACCEPT
  • ens3 ağ arayüzü.
  • -m geoip ülke blok modülü (bkz. adım 5).

Uyarı: Kullanmayın lo, işletim sistemi geri döngü arayüzüne yönlendirilen tüm paketleri atar .

5. Tüm ülkelere izin ver veya engelle

5.1 Kurulum xtables-addons

xtables-addonsModülü çeşitli yöntemler kullanarak kurabilirsiniz, sizin için en uygun kurulum yöntemini kullanmaktan çekinmeyin.

  • Kullanarak yükleyin apt-get.

    sudo apt-get install xtables-addons-common
    
  • Kullanarak yükleyin module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • Kaynaktan yükleyin.

    sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
    git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
    cd xtables-addons
    ./autogen.sh
    ./configure
    make
    sudo make install
    

Bir "ülkeler" veritabanı oluşturun.

sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv

Sisteminizi yeniden başlatın.

sudo reboot

Sonra xtables-addonsbaşarıyla kuruldu, ilk yeniden başlatma sonrasında, çalıştırmak depmodaksi takdirde ülkenin engelleme (bu sadece ilk sefer için gereklidir) düzgün çalışmaz.

sudo depmod 

Veritabanını aylık /etc/cron.monthly/geoip-updaterolarak güncellemek için bir komut dosyası oluşturun geoip.

#!/usr/bin/env bash
# this script is intended to run with sudo privileges

echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip

echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl

echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater

Make /etc/cron.monthly/geoip-updaterçalıştırılabilir.

sudo chmod +x /etc/cron.monthly/geoip-updater

5.2 Örnek kurallar

_Not: iptables: No chain/target/match by that nameBir geoipkural uygulamaya çalışırken bir hata alıyorsanız , xtables-addonsdoğru yüklenmemiş olabilir. Başka bir yükleme yöntemi deneyin.

Çin, Hong Kong, Rusya ve Kore'den gelen tüm paketleri engelleyin.

sudo iptables -A INPUT -m geoip --src-cc CN,HK,RU,KR -j DROP

80Yukarıdaki ülkeler dışında her yerden limanda gelen paketlere izin verin .

sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Yalnızca Peru'dan gelen ens3bağlantı noktasındaki arabirimde gelen paketlere izin verin 22(örneğin USAmerika Birleşik Devletleri için paketleri kabul etmek istediğiniz ülke kodunu seçmekten çekinmeyin ).

sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT

443Yalnızca Peru'dan gelen bağlantı noktasına gelen paketlere izin verin .

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc PE -j ACCEPT


Leave a Comment

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.

Hala Teslim Edilmeyen Teknoloji Sözleri

Hala Teslim Edilmeyen Teknoloji Sözleri

Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun