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

CentOS 7de Tavşan Kümesini Kümeleme

CentOS 7de Tavşan Kümesini Kümeleme

RabbitMQ, AMQP, STOMP ve diğer iletişim teknolojilerini destekleyen açık kaynaklı bir mesaj aracısıdır. Kurumsal uygulamalarda yaygın olarak kullanılan bir

Debianda NFS Paylaşımı Ayarla

Debianda NFS Paylaşımı Ayarla

NFS, bilgisayarların bilgisayar ağı üzerindeki dosyalara erişmesine izin veren ağ tabanlı bir dosya sistemidir. Bu kılavuz, klasörleri NF üzerinden nasıl açığa çıkarabileceğinizi açıklar

GitBucket Ubuntu 16.04 Kurulumu

GitBucket Ubuntu 16.04 Kurulumu

Bu kılavuz, Ubuntu 16.04 çalıştıran bir Vultr örneği için GitBucketin temel kurulumunu ve kurulumunu kapsar ve komutları şu şekilde yürüttüğünüzü varsayar:

Bir Fedora 26 LAMP VPSye Directus 6.4 CMS Yükleme

Bir Fedora 26 LAMP VPSye Directus 6.4 CMS Yükleme

Farklı Bir Sistem mi Kullanıyorsunuz? Directus 6.4 CMS, geliştirici sağlayan güçlü ve esnek, ücretsiz ve açık kaynaklı Başsız İçerik Yönetim Sistemidir (CMS)

Ubuntu 16.04 Üzerine Mattermost 5.2 Kurulumu

Ubuntu 16.04 Üzerine Mattermost 5.2 Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Mattermost, Slack SAAS mesajlaşma servisine açık kaynaklı, kendi kendine barındırılan bir alternatiftir. Başka bir deyişle, Mattermost ile,

Linuxta TeamTalk Sunucusu Kurma

Linuxta TeamTalk Sunucusu Kurma

TeamTalk, kullanıcıların yüksek kaliteli sesli / görüntülü konuşmalara, metin sohbetine, dosya aktarımına ve ekranları paylaşmasına olanak tanıyan bir konferans sistemidir. Ben

Pagekit CMSyi CentOS 7ye Yükleme

Pagekit CMSyi CentOS 7ye Yükleme

Farklı Bir Sistem mi Kullanıyorsunuz? Pagekit PHP ile yazılmış açık kaynaklı bir CMSdir. Pagekit kaynak kodu GitHubda herkese açık olarak barındırılıyor. Bu kılavuz size

Kök olmayan kullanıcılara giriş yapmak için SSH anahtarınızı kullanma

Kök olmayan kullanıcılara giriş yapmak için SSH anahtarınızı kullanma

Vultr, yeni bir örnek oluşturduktan sonra SSH anahtarlarını önceden yüklemenizi sağlayan bir özellik sağlar. Bu, sunucu kök kullanıcısına erişmenizi sağlar, ancak

Debian 9da Diaspora ile Sosyal Ağınızı Kurun

Debian 9da Diaspora ile Sosyal Ağınızı Kurun

Farklı Bir Sistem mi Kullanıyorsunuz? Diaspora gizliliğe duyarlı, açık kaynaklı bir sosyal ağdır. Bu derste, bir Diaspora posının nasıl kurulacağını ve yapılandırılacağını öğreneceksiniz

Debian 9 Üzerinde Yakıt CMS Kurulumu

Debian 9 Üzerinde Yakıt CMS Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Fuel CMS, CodeIgniter tabanlı bir içerik yönetim sistemidir. Kaynak kodu GitHubda barındırılmaktadır. Bu kılavuz size

Arch Linux Üzerinde PostgreSQL 11.1 Kurulumu

Arch Linux Üzerinde PostgreSQL 11.1 Kurulumu

Önkoşullar Güncel Arch Linux çalıştıran bir Vultr sunucusu (bu makaleye bakın.) Sudo erişimi. Kök olarak çalıştırılması gereken komutların önüne # ve bir

Ubuntu 16.10 Üzerinde Snipe-IT Kurulumu

Ubuntu 16.10 Üzerinde Snipe-IT Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Snipe-IT, BT varlık yönetimi için ücretsiz ve açık kaynaklı bir web uygulamasıdır. Laravel 5.2 çerçevesi ve kullanımı üzerine yazılmıştır.

SSL / TLS ile vsFTPd Nasıl Güvenli Hale Getirilir

SSL / TLS ile vsFTPd Nasıl Güvenli Hale Getirilir

Çok Güvenli FTP arka plan programı, ya da sadece vsFTPd, özelleştirme yeteneği olan hafif bir yazılım parçasıdır. Bu derste bir müttefikimiz olacak

Linuxta Ranger Terminal Dosya Yöneticisini Yükleme

Linuxta Ranger Terminal Dosya Yöneticisini Yükleme

Ranger, VI anahtar bağlamaları olan komut satırı tabanlı bir dosya yöneticisidir. Dizin hiyerarşisi manzaralı minimalist ve hoş bir curses arayüzü sağlar

Ubuntu 18.04 LTS Kaynaktan Brotli Nasıl Yapılır

Ubuntu 18.04 LTS Kaynaktan Brotli Nasıl Yapılır

Farklı Bir Sistem mi Kullanıyorsunuz? Brotli, GZIPden daha iyi bir sıkıştırma oranına sahip yeni bir sıkıştırma yöntemidir. Kaynak kodu bu Githuda herkese açık olarak barındırılıyor

CentOS 7de Yalnızca SFTP Kullanıcı Hesaplarını Kurma

CentOS 7de Yalnızca SFTP Kullanıcı Hesaplarını Kurma

Belirli durumlarda, Sistem Yöneticisinin bir kullanıcı hesabı oluşturması ve yalnızca kendi dosyalarını sFTP yoluyla yönetmek için erişimini kısıtlaması gerekebilir, ancak b

Ubuntu 16.04 LAMBA VPS Üzerine Omeka Classic 2.4 CMS Kurulumu

Ubuntu 16.04 LAMBA VPS Üzerine Omeka Classic 2.4 CMS Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Omeka Classic 2.4 CMS, digita paylaşımı için ücretsiz ve açık kaynaklı bir dijital yayıncılık platformu ve İçerik Yönetim Sistemidir (CMS)

Arch Linux Üzerinde Nginx 1.14 Kurulumu

Arch Linux Üzerinde Nginx 1.14 Kurulumu

Önkoşullar Güncel Arch Linux çalıştıran bir Vultr sunucusu (bu makaleye bakın.) Sudo erişimi. Kök olarak çalıştırılması gereken komutların başına # işareti gelir. th

Linuxta SSH ile Kök Girişini Devre Dışı Bırakma veya Kısıtlama

Linuxta SSH ile Kök Girişini Devre Dışı Bırakma veya Kısıtlama

SSH üzerinden kök girişine izin vermek, teknoloji endüstrisinde genellikle zayıf bir güvenlik uygulaması olarak kabul edilir. Bunun yerine, hassas yönetim gerçekleştirebilirsiniz

Ubuntu 16.04 Üzerine RabbitMQ Kurulumu

Ubuntu 16.04 Üzerine RabbitMQ Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? RabbitMQ, Erlang programlama dilinde yazılmış, yaygın olarak kullanılan açık kaynaklı bir mesaj aracısıdır. Mesaj odaklı bir ara katman yazılımı olarak

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7 üzerinde LibreNMS kullanarak ağ cihazlarınızı etkili bir şekilde izleyin. Ağ izleme için gerekli adımları ve yapılandırmaları öğrenin.

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive sunucusu kurmak için gerekli adımlar. Gerekli araçlar ve yükleme süreci hakkında bilgi.

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

OpenNMS, çok sayıda cihazı izlemek ve yönetmek için kullanılabilen bir açık kaynak ağ yönetim platformudur. Ubuntu 16.04 LTS üzerinde OpenNMS kurulumu için tüm adımları keşfedin.

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Farklı Bir Sistem mi Kullanıyorsunuz? LibreNMS tam özellikli bir açık kaynak ağ izleme sistemidir.

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?