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

Cara Memasang Platform Keranjang Belanja LiteCart di Ubuntu 16.04

Cara Memasang Platform Keranjang Belanja LiteCart di Ubuntu 16.04

LiteCart adalah platform keranjang belanja sumber terbuka dan bebas yang ditulis dalam PHP, jQuery, dan HTML 5. Ia adalah perisian elektronik e-dagang yang ringkas, ringan, dan mudah digunakan

Sediakan NFS Share di Debian

Sediakan NFS Share di Debian

NFS adalah sistem fail berasaskan rangkaian yang membolehkan komputer mengakses fail di seluruh rangkaian komputer. Panduan ini menerangkan bagaimana anda boleh mendedahkan folder di atas NF

Cara Memasang Matomo Analytics di Fedora 28

Cara Memasang Matomo Analytics di Fedora 28

Menggunakan Sistem Berbeza? Matomo (dahulunya Piwik) adalah platform analitik sumber terbuka, alternatif terbuka kepada Google Analytics. Sumber Matomo dihoskan o

Sediakan Pelayan TeamTalk di Linux

Sediakan Pelayan TeamTalk di Linux

TeamTalk adalah sistem persidangan yang membolehkan pengguna melakukan perbincangan audio / video berkualiti tinggi, sembang teks, memindahkan fail, dan berbagi layar. Ia i

Cara Pasang dan Konfigur CyberPanel pada Server CentOS 7 anda

Cara Pasang dan Konfigur CyberPanel pada Server CentOS 7 anda

Menggunakan Sistem Berbeza? Pengenalan CyberPanel adalah salah satu panel kawalan pertama di pasaran yang merupakan sumber terbuka dan menggunakan OpenLiteSpeed. Apa itu

Cara Memasang Apache Maven 3.5 di CentOS 7

Cara Memasang Apache Maven 3.5 di CentOS 7

Apache Maven adalah alat pengurusan projek perisian sumber terbuka dan bebas yang banyak digunakan untuk menyebarkan aplikasi berbasis Java. Prasyarat yang baru

Cara Memasang Backdrop CMS 1.8.0 pada VPS CentOS 7 LAMP

Cara Memasang Backdrop CMS 1.8.0 pada VPS CentOS 7 LAMP

Menggunakan Sistem Berbeza? Backdrop CMS 1.8.0 adalah Sistem Pengurusan Kandungan (CMS) sumber mudah alih, mudah alih, percuma dan terbuka yang membolehkan kami

Cara Mengakses VPS Vultr Anda

Cara Mengakses VPS Vultr Anda

Vultr menyediakan beberapa cara yang berbeza untuk mengakses VPS anda untuk mengkonfigurasi, memasang, dan menggunakan. Akses Kredensial Kelayakan akses lalai untuk VPS anda

Cara Membangun Brotli Dari Sumber di Ubuntu 18.04 LTS

Cara Membangun Brotli Dari Sumber di Ubuntu 18.04 LTS

Menggunakan Sistem Berbeza? Brotli adalah kaedah pemampatan baru dengan nisbah mampatan yang lebih baik daripada GZIP. Kod sumbernya dihoskan secara umum di Githu ini

Menggunakan Paparan MySQL pada Debian 7

Menggunakan Paparan MySQL pada Debian 7

Pengenalan MySQL mempunyai ciri hebat yang dikenali sebagai pandangan. Paparan adalah pertanyaan yang disimpan. Anggap mereka sebagai alias untuk pertanyaan yang panjang. Dalam panduan ini,

Cara Pasang AirSonic pada CentOS 7

Cara Pasang AirSonic pada CentOS 7

Menggunakan Sistem Berbeza? AirSonic adalah pelayan streaming media sumber terbuka dan terbuka. Dalam tutorial ini, saya akan membimbing anda melalui proses penyebaran a

Cara Pasang CD Strider pada Ubuntu 18.04

Cara Pasang CD Strider pada Ubuntu 18.04

Pengenalan CD Strider adalah platform penyebaran sumber terbuka berterusan. Aplikasi ini ditulis dalam Node.js dan menggunakan MongoDB sebagai backend penyimpanan. Selesaikan

Cara Memasang Subrion 4.1 CMS pada Ubuntu 16.04 LAMP VPS

Cara Memasang Subrion 4.1 CMS pada Ubuntu 16.04 LAMP VPS

Menggunakan Sistem Berbeza? Subrion 4.1 CMS adalah Sistem Pengurusan Kandungan sumber terbuka (CMS) yang kuat dan fleksibel yang membawa kandungan intuitif dan jelas

Cara Pasang DokuWiki pada Ubuntu 16.04 LTS

Cara Pasang DokuWiki pada Ubuntu 16.04 LTS

Menggunakan Sistem Berbeza? DokuWiki adalah program wiki sumber terbuka yang ditulis dalam PHP yang tidak memerlukan pangkalan data. Ia menyimpan data dalam fail teks. DokuWik

Siapkan Komposer Untuk Ketergantungan PHP Di CentOS 6

Siapkan Komposer Untuk Ketergantungan PHP Di CentOS 6

Pengenalan Komposer adalah pengurus pergantungan yang popular untuk PHP yang dapat mempermudah pemasangan dan kemas kini perpustakaan yang diperlukan untuk projek anda

Menyiapkan Chroot di Debian

Menyiapkan Chroot di Debian

Artikel ini akan mengajar anda cara menyediakan penjara chroot di Debian. Saya menganggap bahawa anda menggunakan Debian 7.x. Sekiranya anda menjalankan Debian 6 atau 8, ini mungkin berfungsi,

Cara Memasang PiVPN pada Debian

Cara Memasang PiVPN pada Debian

Pengenalan Cara mudah untuk menyediakan pelayan VPN di Debian adalah dengan PiVPN. PiVPN adalah pemasang dan pembungkus untuk OpenVPN. Ini membuat perintah mudah untuk anda

Cara Pasang Edisi Komuniti GitLab (CE) 11.x pada Debian 9

Cara Pasang Edisi Komuniti GitLab (CE) 11.x pada Debian 9

Menggunakan Sistem Berbeza? Sejak GitHub diambil alih oleh Microsoft, sebilangan besar pembangun telah merancang untuk memindahkan repositori kod mereka sendiri dari github.co

Pasang PBX dalam Flash 5 pada Debian 8

Pasang PBX dalam Flash 5 pada Debian 8

PBX In A Flash 5 (PIAF5) adalah sistem operasi berasaskan Debian 8 yang menjadikan Vultr VPS anda menjadi PBX lengkap. Ia mempunyai ciri-ciri berikut, dan banyak lagi.

Cara Pasang dan Konfigurasi CyberPanel pada Ubuntu 18.04 LTS

Cara Pasang dan Konfigurasi CyberPanel pada Ubuntu 18.04 LTS

Menggunakan Sistem Berbeza? Pengenalan CyberPanel adalah salah satu panel kawalan pertama di pasaran yang merupakan sumber terbuka dan menggunakan OpenLiteSpeed. Apa itu

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