Konfigurasi dan Contoh IPTable Mudah di Ubuntu 16.04

Pengenalan

iptablesadalah alat yang kuat yang digunakan untuk mengkonfigurasi firewall bersepadu kernel Linux. Ia sudah terpasang pada sebilangan besar pengedaran Ubuntu, namun jika anda menggunakan versi Ubuntu yang disesuaikan atau berjalan di dalam bekas, kemungkinan besar anda harus memasangnya secara manual.

sudo apt-get install iptables iptables-persistent

Selepas pemasangan, jika anda ditanya sama ada menyimpan peraturan semasa anda, tidak menjadi masalah buat masa ini kerana anda akan membuang atau membuat peraturan baru nanti.

Petua

Anda boleh menggunakan netcatperintah (pada komputer yang berbeza daripada pelayan anda) untuk menguji port mana yang terbuka atau ditutup.

nc -z -w5 -v SERVER_IP PORT
  • nc adalah arahan netcat.
  • -z hanya hantar sebungkus tanpa muatan.
  • -w5 tunggu sehingga 5 saat untuk mendapatkan tindak balas.
  • -v mod verbose.
  • Ganti SERVER_IPdengan alamat pelayan anda.
  • Ganti PORTdengan port yang ingin anda uji jika ia terbuka (contohnya 22).

Di pelayan anda, anda boleh menggunakan netstatperintah untuk melihat port mana yang sedang mendengar sambungan.

sudo netstat -tulpn

Catatan: Walaupun netstatmudah untuk mencari port yang ingin anda bekerjasama, anda harus mengetahui aplikasi yang anda pasang pada pelayan anda dan port mana yang sedang mendengar, anda tidak perlu membenarkan setiap port yang anda temukan dalam netstatoutput .

Sintaks

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTtambahkan peraturan ke INPUTrantai, rantai adalah sekumpulan peraturan, yang paling sering kita gunakan dalam panduan ini adalah INPUT, OUTPUTdan PREROUTING.
  • -p tcpditetapkan tcpsebagai protokol peraturan ini akan berlaku, Anda juga dapat menggunakan protokol lain seperti udp, icmpatau all.
  • -m tcpgunakan tcpmodul. iptablesmenyokong ciri tambahan melalui modul, beberapa di antaranya sudah diprapasang dengan yang iptableslain, seperti geoipmodul.
  • --dport 22perintah yang dimulakan dengan --menunjukkan pilihan tambahan untuk modul yang digunakan sebelumnya, dalam hal ini kita akan memberitahu tcpmodul tersebut hanya berlaku pada port 22.
  • -m geoipgunakan geoipmodul. Ini akan mengehadkan paket berdasarkan negara (lebih banyak maklumat pada langkah 5).
  • --src-cc PEsuruh geoipmodul untuk mengehadkan paket masuk kepada yang datang dari Peru. Untuk lebih banyak kod negara cari ISO 3166 country codesdi internet.
  • -j ACCEPTyang -jhujah memberitahu iptablesapa yang perlu dilakukan jika paket sepadan dengan kekangan yang dinyatakan dalam hujahan terdahulu. Dalam kes ini ACCEPT, paket-paket itu, pilihan lain adalah REJECT, DROPdan banyak lagi. Anda boleh mencari lebih banyak pilihan dengan mencari iptables jump targetsdi internet.

1. Asas

Senaraikan semua peraturan.

sudo iptables -L

Senaraikan semua perintah yang digunakan untuk membuat peraturan yang sedang digunakan, berguna untuk mengedit atau menghapus peraturan.

sudo iptables -S

Untuk menghapus peraturan tertentu pilih peraturan dari sudo iptables -Sdan ganti -Adengan -D.

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

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

Senaraikan semua peraturan bernombor dalam INPUTrantai.

sudo iptables -L INPUT --line-numbers

Padamkan peraturan bernombor.

sudo iptables -D INPUT 2

Untuk membersihkan semua peraturan.

sudo iptables -F

Amaran: anda mungkin terputus hubungan jika dihubungkan dengan SSH .

Hanya jelas peraturan dalam OUTPUTrantai.

sudo iptables -F OUTPUT

2. Buat peraturan awal

Benarkan SSHpada eth0antara muka

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 gunakan peraturan ke antara muka tertentu, untuk membenarkan dari antara muka mana-mana menghapus perintah ini.

Untuk menghadkan paket masuk ke IP tertentu (iaitu 10.0.3.1/32).

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 menentukan IP / subnet untuk membenarkan sambungan dari.

Tetapkan peraturan rantai lalai.

Amaran: sebelum meneruskan pastikan anda telah menerapkan peraturan SSH yang betul jika bekerja di pelayan jauh .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP menolak semua paket masuk (iaitu tidak ada yang dapat menyambung ke pelayan anda yang sedang berjalan seperti Apache, SQL, dll).
  • -P FORWARD DROP menolak semua paket yang diteruskan (iaitu ketika anda menggunakan sistem anda sebagai penghala).
  • -P OUTPUT ACCEPTmembenarkan semua paket keluar (iaitu ketika anda melakukan HTTPpermintaan).

Benarkan semua lalu lintas pada antara muka loopback ( disyorkan ).

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

3. Buat peraturan berterusan

Simpan iptablesperaturan semasa .

sudo netfilter-persistent save
sudo netfilter-persistent reload

Sekiranya anda berjalan di dalam bekas, netfilter-persistentkemungkinan besar arahan tersebut tidak akan berfungsi, jadi anda perlu mengkonfigurasi semula iptables-persistentpakej.

sudo dpkg-reconfigure iptables-persistent

4. Benarkan sambungan keluar

Benarkan pertanyaan DNS.

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

Gunakan statemodul untuk membenarkan RELATEDdan ESTABLISHEDkeluar paket.

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

Benarkan port yang diingini; dalam kes ini, HTTPpelabuhan.

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

Lebih banyak port yang mungkin anda mahu gunakan.

  • FTP: tcp di port 21
  • HTTPS: tcp di port 443
  • DHCP: udp di pelabuhan 67
  • NTP: udp di pelabuhan 123

Catatan: Sekiranya anda mahu membenarkan apt-get, mungkin perlu untuk membenarkan FTPdanHTTPS .

Benarkan lalu lintas yang dikembalikan hanya untuk RELATEDdan sudah ada ESTABLISHEDsambungan ( disyorkan kerana kadang-kadang diperlukan komunikasi dua arah).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Peraturan berguna lain

Benarkan permintaan ping dari luar.

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

Meneruskan lalu lintas di eth0port 2200ke 10.0.3.21:22(berguna jika anda ingin mendedahkan pelayan SSH yang berjalan di dalam bekas).

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

Sekiranya anda berjaya masuk ke pelayan anda dengan menggunakan SSH, sambungan berterusan akan dibuat (iaitu tidak ada sambungan baru walaupun anda disambungkan selama lebih dari 1 jam). Sekiranya anda gagal dan cuba masuk semula, sambungan baru akan dibuat. Ini akan menyekat percubaan masuk SSH yang berterusan dengan menghadkan sambungan baru setiap jam.

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

Ubah semua permintaan pada port 443ke port 4430(berguna jika anda mahu mengikat port 443tanpa 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 antara muka rangkaian.
  • -m geoip modul blok negara (lihat langkah 5).

Amaran: Jangan gunakan lo, OS akan membuang semua paket yang diarahkan ke antara muka loopback .

5. Benarkan atau blok seluruh negara

5.1 Pasang xtables-addons

Anda boleh memasang xtables-addonsmodul menggunakan pelbagai kaedah, sila gunakan kaedah pemasangan yang paling sesuai untuk anda.

  • Pasang menggunakan apt-get.

    sudo apt-get install xtables-addons-common
    
  • Pasang menggunakan module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • Pasang dari sumber.

    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
    

Bina pangkalan data "negara".

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

Nyalakan semula sistem anda.

sudo reboot

Setelah xtables-addonsberjaya dipasang, selepas reboot pertama, jalankan depmodjika sekatan negara tidak akan berfungsi dengan baik (ini hanya diperlukan untuk kali pertama).

sudo depmod 

Buat skrip di /etc/cron.monthly/geoip-updateruntuk mengemas kini geoippangkalan data setiap bulan.

#!/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

Menjadikan /etc/cron.monthly/geoip-updaterboleh dilaksanakan.

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

5.2 Contoh peraturan

_Catatan: Jika anda menerima iptables: No chain/target/match by that nameralat ketika mencoba menerapkan geoipperaturan, kemungkinan itu xtables-addonsbelum dipasang dengan betul. Cuba kaedah pemasangan lain.

Sekat semua paket masuk dari China, Hong Kong, Rusia dan Korea.

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

Benarkan paket masuk di pelabuhan 80dari mana-mana sahaja kecuali negara-negara di atas.

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

Benarkan paket masuk di ens3antara muka di port 22hanya dari Peru (jangan ragu untuk memilih kod negara yang anda mahu terima dari paket, misalnya, USuntuk Amerika Syarikat).

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

Benarkan paket masuk di pelabuhan 443hanya dari Peru.

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


Leave a Comment

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut