Menyediakan tembok api menggunakan iptables dalam masa lima minit. Asas iptables menggunakan Debian sebagai contoh melalui mata bayi

Pengenalan dan sejarah

Penapis bersih- firewall (aka firewall, aka firewall, aka firewall...) telah dibina ke dalam kernel Linux sejak versi 2.4. Netfilter dikawal oleh utiliti iptables(Untuk IPv6 - ip6tables). Sebelum ini netfilter/iptables adalah Ipchains, yang disertakan dalam kernel Linux 2.2. Sebelum ipchains dalam Linux terdapat apa yang dipanggil ipfw (Tembok api IPv4), dialihkan dari BSD. Utiliti pengurusan - ipfwadm. Projek netfilter/iptables telah diasaskan pada tahun 1998. Pengarangnya ialah Rusty Russell (dia juga mengetuai perkembangan masa lalu). Pada tahun 1999, Pasukan Teras Netfilter (disingkat sebagai coreteam) telah ditubuhkan. Firewall yang dibangunkan secara rasmi dinamakan netfilter. Pada Ogos 2003, Harald Welte menjadi ketua pasukan teras.

Projek ipchains Dan ipfwadm menukar operasi susunan protokol kernel Linux, sejak sebelum kemunculan penapis bersih Tiada peruntukan dalam seni bina kernel untuk menambah modul pengurusan pakej tambahan. iptables mengekalkan idea utama ipfwadm- senarai peraturan yang terdiri daripada kriteria dan tindakan yang dilakukan jika paket memenuhi kriteria. DALAM ipchains konsep baru diperkenalkan - keupayaan untuk mencipta rangkaian peraturan baharu dan memindahkan paket antara rantai, dan dalam iptables konsep itu diperluaskan kepada empat jadual (dalam netfilter moden - lebih daripada empat), membatasi rantai peraturan mengikut tugas: penapisan, NAT, dan pengubahsuaian paket. Selain itu, iptables telah mengembangkan keupayaan pengesanan keadaan Linux, membolehkan penciptaan tembok api yang beroperasi pada peringkat sesi.

Seni bina Netfilter/iptables

Prasyarat ()

Seperti yang dinyatakan di atas, untuk Netfilter berfungsi, anda memerlukan versi kernel 2.6 (atau sekurang-kurangnya 2.3.15). Selain itu, jika perlu, tetapan CONFIG_NETFILTER, CONFIG_IP_NF_IPTABLES, CONFIG_IP_NF_FILTER (jadual penapis), CONFIG_IP_NF_NAT (jadual nat), CONFIG_BRIDGE_NETFILTER, serta banyak modul tambahan: CONFIG_IP_NF_CONN_TRACK penjejakan (modul penjejakan CONFIG_IP_NF_IP_TRACK) (modul penjejakan penyambungan CONFIG_IP_NF_IP_IP) ), CONFIG_IP_ NF_MATCH_* ( jenis tambahan corak padanan paket: LIMIT, MAC, MARK, MULTIPORT, TOS, TCPMSS, NEGERI, NAJI, PEMILIK), CONFIG_IP_NF_TARGET_* (tindakan tambahan dalam peraturan: TOLAK, MASQUERADE, REDIRECT, LOG, LOG, TCPMSS) keserasian dengan ipchains, CONFIG_BRIDGE_NF_EBTABLES dan CONFIG_BRIDGE_EBT_* untuk bekerja dalam mod jambatan, yang lain CONFIG_IP_NF_* dan CONFIG_IP6_NF_*. Ia juga berguna untuk menentukan CONFIG_PACKET.

Seperti yang dilihat, meja nat Dan mangle boleh mengubah suai penerima atau penghantar paket rangkaian. Inilah sebabnya mengapa paket rangkaian diperiksa beberapa kali terhadap jadual penghalaan.

Mekanisme pengesanan keadaan (conntrack)

Di atas dalam teks, konsep "takrif negeri" telah disebutkan beberapa kali; ia patut mendapat topik yang berasingan untuk perbincangan, tetapi bagaimanapun, saya akan menyentuh secara ringkas isu ini dalam siaran semasa. Secara umum, mekanisme untuk menentukan keadaan (aka mesin keadaan, aka samb eksi trek ing, aka conntrack) ialah sebahagian daripada penapis paket dan membolehkan anda menentukan sambungan/sesi mana satu paket itu dimiliki. Conntrack menganalisis keadaan semua pakej kecuali yang ditanda sebagai NOTRACK dalam jadual mentah. Berdasarkan keadaan ini, pakej kepunyaan ditentukan baru sambungan (negeri BARU), sudah ditubuhkan sambungan (negeri DITUBUHKAN), tambahan kepada yang sedia ada ( BERKAITAN), atau kepada " kepada yang lain Sambungan " (tidak dapat dikesan) (keadaan TIDAK SAH). Keadaan paket ditentukan dengan menganalisis pengepala paket TCP yang dihantar. modul conntrack membolehkan anda melaksanakan tembok api peringkat sesi (kelima). Untuk mengawal mekanisme ini, gunakan utiliti conntrack, serta parameter utiliti iptables: -m conntrack atau -m negeri(usang). conntrack menyimpan keadaan sambungan semasa dalam kernel. Mereka boleh dilihat dalam fail /proc/net/nf_conntrack (atau /proc/net/ip_conntrack) .

Untuk mengelakkan pemikiran daripada bertukar menjadi bubur, saya rasa maklumat ringkas ini sudah cukup untuk memahami bahan selanjutnya.

Menguruskan peraturan penapisan rangkaian Netfilter (menggunakan arahan iptables)

utiliti iptables ialah antara muka untuk kawalan tembok api netfilter. Perintah ini membolehkan anda mengedit peraturan jadual, jadual dan rantai. Seperti yang saya telah katakan - setiap peraturan ialah rekod/rentetan yang mengandungi pilihan paket rangkaian dan paket yang sepadan dengan peraturan yang diberikan. arahan iptables Memerlukan hak akar untuk beroperasi.

Secara umum, format arahan adalah seperti berikut:

Iptables [-t ]

Semua parameter dalam kurungan segi empat sama - pilihan. Lalai ialah jadual penapis, jika anda perlu menentukan jadual lain, maka anda harus menggunakan kekunci -t menunjukkan nama. Selepas nama jadual ditunjukkan yang mentakrifkan tindakan ( Sebagai contoh: masukkan peraturan, atau tambahkan peraturan pada penghujung rantaian, atau padamkan peraturan). menetapkan parameter pemilihan. menunjukkan tindakan yang perlu dilakukan jika kriteria pemilihan dalam peraturan sepadan ( Sebagai contoh: hantar paket ke rangkaian peraturan lain, "jatuhkan" paket, keluarkan mesej ralat kepada sumber...).

Di bawah ialah arahan dan parameter utiliti iptables:

Parameter Penerangan Contoh
Pasukan
--tambah (-A) Tambahkan peraturan yang ditentukan pada TAMAT senarai dalam rantai yang ditentukan dan jadual yang ditentukan. iptables -A kriteria HADAPAN -j tindakan
--padam (-D) Mengalih keluar peraturan yang ditentukan oleh nombor atau peraturan. Contoh pertama memadamkan semua peraturan dengan nombor 10,12 dalam semua rantai, dalam jadual penapis, contoh kedua memadamkan peraturan yang ditentukan daripada jadual mangle dalam rantai PREROUTING. iptables -D 10.12
iptables -t mangle -D PREROUTING kriteria -j tindakan
--rename-chain (-E) Tukar nama rantai. iptables -E OLD_CHAIN ​​​​NEW_CHAIN
--siram (-F) Kosongkan semua peraturan jadual semasa. Untuk semua paket yang berkaitan dengan sambungan yang telah ditetapkan, gunakan tindakan terminal ACCEPT - langkau iptables -F
--masukkan (-I) Memasukkan peraturan yang ditentukan di lokasi yang ditentukan oleh nombor. iptables -I HADAPAN 5 kriteria -j tindakan
--senarai (disingkat -L) Lihat peraturan sedia ada (tanpa menyatakan jadual secara jelas - jadual penapis semua rantai dipaparkan). iptables -L
--dasar (-P) Menetapkan dasar lalai untuk rantaian yang diberikan. iptables -t mangle -P PREROUTING DROP
--ganti (-R) Menggantikan peraturan yang ditentukan oleh nombor dengan yang ditentukan dalam kriteria. iptables -R POSROUTING 7 | kriteria -j tindakan
--padam-rantai (-X) Keluarkan SEMUA rantai yang dibuat secara manual (simpan hanya INPUT, OUTPUT, FORWARD, PREROUTING dan POSTROUTING standard). iptables -X
--sifar (-Z) Menetapkan semula pembilang data yang dihantar dalam rantai. iptables -Z INPUT
Pilihan
--numerik (-n) Tidak menyelesaikan alamat dan protokol semasa output.
--nombor baris Nyatakan nombor peraturan dalam output (boleh digunakan bersama -L). iptables -L --nombor baris
--bantuan (-h) di manakah kita tanpa dia?
-t jadual Menentukan nama jadual di mana tindakan itu perlu dilakukan. Contoh menetapkan semula jadual nat dalam semua rantai. iptables -t nat -F
--verbose (-v) Kesimpulan terperinci. iptables -L -v

Kriteria (parameter) untuk memilih paket rangkaian perintah iptables

Kriteria untuk memilih paket rangkaian secara rahsia dibahagikan kepada beberapa kumpulan: Kriteria umum, Kriteria tersirat, Kriteria eksplisit. boleh digunakan dalam mana-mana peraturan, mereka tidak bergantung pada jenis protokol dan tidak memerlukan modul sambungan memuatkan. (Saya akan memanggilnya bukan umum), kriteria yang dimuatkan secara tersirat dan tersedia, sebagai contoh, apabila menentukan kriteria umum --protokol tcp|udp|icmp. Sebelum digunakan, anda perlu menyambung pengembangan tambahan(ini adalah pelik pemalam untuk penapis bersih). Sambungan tambahan dimuatkan menggunakan parameter -m atau --perlawanan. Jadi sebagai contoh, jika kita akan menggunakan kriteria negeri, maka kita mesti menyatakan ini secara eksplisit dalam baris peraturan: -m negeri di sebelah kiri kriteria yang digunakan. Perbezaan antara jelas Dan tersirat bukan umum Kriterianya ialah yang tersurat perlu dimuatkan secara eksplisit, dan yang tersirat dimuatkan secara automatik.

Boleh digunakan dalam semua kriteria tanda! sebelum nilai kriteria. Ini bermakna peraturan ini meliputi semua paket itu tidak sepadan dengan parameter ini. Sebagai contoh: kriteria --protokol ! tcp akan bermakna bahawa semua paket itu Tidak adakah protokol TCP tertakluk kepada peraturan. Walau bagaimanapun, versi terkini iptables (khususnya, 1.4.3.2 dan lebih tinggi) tidak lagi menyokong sintaks ini dan memerlukan penggunaan --protokol ! tcp, A ! --protokol tcp, memberikan ralat berikut:

Menggunakan penolakan intraposisi (`--option ! this`) ditamatkan dan digantikan dengan extraposition (`! --option this`).

Di bawah diberikan dalam bentuk jadual Parameter pemilihan paket yang biasa digunakan:

Parameter Penerangan Contoh
Parameter biasa
--protokol
(disingkat -p)
Mentakrifkan protokol. Pilihan tcp, udp, icmp, semua atau mana-mana protokol lain yang ditakrifkan dalam /etc/protocols iptables -A INPUT -p tcp
--sumber
(-s, --src)
Alamat IP sumber paket. Boleh ditakrifkan dalam beberapa cara:
  • Hos tunggal: hos.domain.tld, atau alamat IP: 10.10.10.3
  • Kolam alamat (subnet): 10.10.10.3/24 atau 10.10.10.3/255.255.255.0

Adalah amat disyorkan untuk tidak menggunakan nama domain yang memerlukan pertanyaan DNS untuk penyelesaian, kerana DNS penapis bersih mungkin tidak berfungsi dengan betul semasa peringkat konfigurasi. Juga, ambil perhatian bahawa nama diselesaikan sekali sahaja - apabila menambahkan peraturan pada rantaian. Selepas itu, alamat IP yang sepadan dengan nama ini mungkin berubah, tetapi ini tidak akan menjejaskan peraturan yang telah ditulis (alamat lama akan kekal di dalamnya). Jika anda menentukan nama domain yang menyelesaikan kepada beberapa alamat IP, peraturan yang berasingan akan ditambahkan untuk setiap alamat.

iptables -A INPUT -s 10.10.10.3
--destinasi
(-d)
Alamat IP destinasi paket. Boleh ditakrifkan dalam beberapa cara (lihat --source). iptables -A INPUT --destinasi 192.168.1.0/24
--dalam-antara muka
(-i)
Mengenal pasti antara muka di mana paket tiba. Berguna untuk NAT dan mesin dengan pelbagai antara muka rangkaian. Digunakan dalam rantai INPUT, FORWARD dan PREROUTING. Anda boleh menggunakan tanda "+", maka ia bermaksud penggunaan semua antara muka bermula dengan nama + (contohnya, eth+ - semua antara muka eth). iptables -t nat -A PREROUTING --in-interface eth0
--luar-antara muka
(-o)
Mentakrifkan antara muka dari mana paket akan pergi. Berguna untuk NAT dan mesin dengan pelbagai antara muka rangkaian. Digunakan dalam rantai OUTPUT, FORWARD dan POSTROUTING. Anda boleh menggunakan tanda "+". iptables -t nat -A POSTROUTING --dalam-antara muka eth1
Parameter tersirat (tidak dikongsi).
-p proto -h memaparkan bantuan pada parameter tersirat protokol proto. iptables -p icmp -h
--source-port
(--sukan)
Port sumber, hanya mungkin untuk --protocol tcp, atau --protocol udp protocols iptables -A INPUT --protocol tcp --source-port 25
--Pelabuhan destinasi
(--dport)
Port destinasi, hanya mungkin untuk --protocol tcp, atau --protemocol udp protocols iptables -A INPUT --protocol udp --destination-port 67
Parameter Eksplisit
-m state --state (tidak digunakan lagi)
aka
-m conntrack --ctstate

Status sambungan. Pilihan yang tersedia:

  • BARU(Semua pakej mewujudkan sambungan baharu)
  • DITUBUHKAN(Semua paket kepunyaan sambungan yang telah ditetapkan)
  • BERKAITAN(Paket yang bukan milik sambungan yang telah ditetapkan, tetapi dikaitkan dengannya. Contohnya, FTP dalam mod aktif menggunakan sambungan yang berbeza untuk memindahkan data. Sambungan ini dikaitkan.)
  • TIDAK SAH(Paket yang tidak dapat dikenal pasti untuk satu sebab atau yang lain. Contohnya, ralat ICMP yang bukan milik sambungan sedia ada)
  • dsb. (butiran lanjut dalam dokumentasi)
iptables -A INPUT -m keadaan --state NEW,ESTABLISHEDiptables -A INPUT -m conntrack --ctstate NEW,ESTABLISHED
-m mac --mac-source Menentukan alamat MAC nod rangkaian yang menghantar paket. Alamat MAC mesti dinyatakan dalam bentuk XX:XX:XX:XX:XX:XX. -m mac --mac-source 00:00:00:00:00:0

Tindakan pada pakej

Tajuk ini akan diungkapkan semula dengan lebih tepat sebagai " Tindakan pada pakej yang sepadan dengan kriteria pemilihan". Jadi, untuk mencapai apa-apa tindakan pada pakej, anda perlu menentukan kunci -j (--lompat) dan nyatakan tindakan khusus yang perlu diambil.

Tindakan pada pakej boleh mengambil nilai berikut:

  • TERIMA- paket meninggalkan rantai ini dan dipindahkan ke yang seterusnya (secara literal - TERIMA).
  • JATUHKAN- buang paket yang memenuhi syarat, manakala paket tidak dihantar ke jadual/rantai lain.
  • TOLAK- buang paket dengan menghantar mesej ICMP kepada penghantar, manakala paket tidak dihantar ke jadual/rantai lain.
  • KEMBALI- kembalikan paket ke rantai sebelumnya dan teruskan laluannya bermula dari peraturan seterusnya.
  • SNAT sumber dalam bungkusan. Hanya boleh digunakan dalam rantai POSTROUTING dan OUTPUT dalam jadual nat.
  • DNAT- memohon terjemahan alamat janji temu dalam bungkusan. Boleh digunakan dalam rantai PREROUTING dalam jadual nat. (dalam kes luar biasa - dalam rantai OUTPUT)
  • LOG- log paket (dihantar kepada daemon) dan proseskannya dengan peraturan lain.
  • BERTOKOR- digunakan sebaliknya SNAT jika terdapat sambungan dengan IP dinamik (ia dibenarkan untuk menunjukkan hanya dalam rantai POSTROUTING jadual nat).
  • TANDA- digunakan untuk menetapkan label pada paket dan diteruskan kepada peraturan selanjutnya untuk pemprosesan.
  • dan sebagainya.

Sebagai tambahan kepada tindakan ini, terdapat yang lain yang boleh didapati dalam dokumentasi (mungkin saya akan menambah artikel tidak lama lagi semasa saya mengembangkan topik). Sesetengah tindakan mempunyai parameter tambahan.

Jadual di bawah menyediakan contoh dan perihalan parameter tambahan:

Parameter Penerangan Contoh
DNAT (Terjemahan Alamat Rangkaian Destinasi)
--ke-destinasi menentukan alamat IP mana yang harus digantikan sebagai alamat destinasi. Dalam contoh, dalam semua paket protokol tcp yang tiba di alamat 1.2.3.4, alamat ini akan digantikan dengan 4.3.2.1. iptables -t nat -A PREROUTING -p tcp -d 1.2.3.4 -j DNAT --ke-destinasi 4.3.2.1
LOG
--peringkat-log Digunakan untuk menetapkan tahap pengelogan (). Dalam contoh, tahap pengelogan maksimum ditetapkan untuk semua paket tcp dalam jadual penapis rantai FORWARD. iptables -A FORWARD -p tcp -j LOG --log-level debug
--log-awalan Menentukan teks (awalan) yang akan mendahului semua mesej iptables. (sangat mudah untuk kemudian) Awalan boleh mengandungi sehingga 29 aksara, termasuk ruang. Dalam contoh, semua paket tcp dalam jadual penapis rantai INPUT dengan awalan penapis INRUT dihantar ke syslog. iptables -A INPUT -p tcp -j LOG --log-prefix "INRUT-filter"
--log-ip-pilihan Membolehkan anda memasukkan pelbagai maklumat daripada pengepala paket IP. iptables -A FORWARD -p tcp -j LOG --log-ip-options
dan lain-lain...

Ini menyimpulkan teori tentang penapis rangkaian netfilter/iptables. Dalam artikel seterusnya saya akan memberikan contoh praktikal untuk menguasai teori ini.

Ringkasan

Dalam artikel ini, kami melihat secara ringkas konsep asas penapis rangkaian di Linux. Jadi, subsistem netfilter/iptables adalah sebahagian daripada kernel Linux dan digunakan untuk mengatur pelbagai skim penapisan dan memanipulasi paket rangkaian. Dalam kes ini, setiap paket lulus dari antara muka rangkaian yang ia tiba dan lebih jauh di sepanjang laluan rantaian tertentu, bergantung pada sama ada ia bertujuan untuk sistem tempatan atau "bukan tempatan". Setiap rantai terdiri daripada satu set jadual yang mengandungi set peraturan yang berurutan. Setiap peraturan terdiri daripada kriteria/kriteria tertentu untuk memilih paket rangkaian dan beberapa tindakan dengan paket yang memenuhi kriteria ini. Selaras dengan peraturan yang diberikan, sebarang tindakan boleh dilakukan pada paket (Contohnya, pindahkan ke rantai seterusnya/lain, set semula paket, pengubahsuaian kandungan atau pengepala, dsb.). Setiap rantai dan setiap jadual mempunyai tujuan, fungsi dan tempat tersendiri dalam laluan pakej. Sebagai contoh, untuk menapis paket, jadual penapis digunakan, yang terkandung dalam tiga rantai standard dan boleh terkandung dalam rantai yang ditentukan oleh pengguna. Laluan paket berakhir sama ada pada antara muka rangkaian keluar atau melalui penghantaran ke proses/aplikasi tempatan.

kesusasteraan

Banyak maklumat menarik dalam bahasa Rusia terkandung di sini:

  • http://www.opennet.ru/docs/RUS/iptables/
  • http://ru.wikibooks.org/wiki/Iptables

Bahan yang lebih mendalam boleh didapati dalam bahasa borjuasi di sini:

  • http://www.frozentux.net/documents/ipsysctl-tutorial/
  • http://www.netfilter.org/documentation/index.html

Salam sejahtera, McSim!

Iptables bertanggungjawab terutamanya untuk penapisan paket. Mengkonfigurasi Iptables secara manual adalah tugas yang agak sukar. Jangan mengharapkan untuk memikirkan perkara ini "tergesa-gesa". Nasib baik, terdapat banyak alat yang boleh membantu anda jika anda masih belum mengetahui iptables, tetapi perlu segera mengamankan sistem: fwbuilder, firestarter, guarddog, arno firewall - pada asasnya ini adalah GUI untuk iptables. Tiada jawapan yang jelas mana yang lebih baik. Pilihan adalah milik anda. Walau bagaimanapun, artikel hari ini didedikasikan khusus untuk iptables dan dibahagikan kepada dua bahagian: teori dan amalan. Yang paling tidak sabar boleh segera melengkapkan bahagian praktikal, walaupun pendekatan ini tidak disyorkan.

Perhatian! Semua tindakan dengan iptables dilakukan bagi pihak pengguna istimewa!

Teori

format kemasukan iptables iptables [-t jadual] [perintah] [tindakan] Contoh: iptables -t penapis -A INPUT TERIMA

Tindakan

  • TERIMA - Terima pakej
  • DROP - Jatuhkan satu paket
  • DNAT - Tukar Alamat Destinasi
  • SNAT - Tukar alamat IP keluar dalam pengepala paket
  • LOG - Pengelogan paket dan acara
  • MARK - Tetapkan tanda pada bungkusan
  • MASQUERADE - Tukar alamat IP keluar dalam pengepala paket (perbezaan daripada SNAT - berfungsi dengan IP dinamik)
  • QUEUE - Beratur satu paket untuk diproses
  • REDIRECT - Ubah hala paket/aliran ke port lain
  • TOLAK - Lepaskan paket + maklumkan sistem jauh mengenainya. bahawa pakejnya telah ditolak
  • RETURN - Hentikan paket daripada bergerak sepanjang rantai semasa dan kembalikan ke rantai panggilan

Pasukan

  • -A - Tambahkan peraturan pada rantai
  • -D - Alih keluar peraturan daripada rantai
  • -R - Gantikan satu peraturan dengan peraturan yang lain
  • -I - Masukkan peraturan baharu
  • -L - Senaraikan peraturan sedia ada
  • -F - Tetapkan semula peraturan
  • -Z - Tetapkan semula pembilang dalam rantaian tertentu
  • -N - Buat rantaian baharu dengan nama yang diberikan
  • -X - Padam rantai
  • -P - Tetapkan dasar lalai untuk rantai yang dipilih
  • -E - Namakan semula rangkaian pengguna

Kriteria (umum)

  • -p - Tentukan jenis protokol
  • -s - alamat IP sumber paket
  • -d - Alamat IP penerima paket
  • -j - Tentukan tindakan untuk peraturan
  • -i - Antara muka dari mana paket itu diterima
  • -o - Nyatakan nama antara muka keluaran
  • -f - Sebarkan peraturan kepada semua serpihan paket

Kriteria TCP:

  • –tcp-flags - Tentukan topeng paket dan bendera

Kriteria UDP:

  • –sukan - Port dari mana paket itu dihantar
  • –dport - Port ke mana paket dialamatkan

Butiran lanjut dalam man iptables

berlatih

Lihat konfigurasi semasa

$ sudo iptables -L Rantaian INPUT (dasar TERIMA) sasaran prot opt ​​sumber destinasi Rantaian FORWARD (dasar TERIMA) sasaran prot opt ​​sumber destinasi Rantaian OUTPUT (dasar TERIMA) sasaran prot opt ​​sumber destinasi

Jika anda melihat sesuatu seperti ini, ini bermakna tembok api anda belum dikonfigurasikan dan membenarkan segala-galanya. Mari kita betulkan keadaan.

Menetapkan Dasar Lalai

  • iptables -P INPUT DROP - menyekat paket masuk
  • iptables -P OUTPUT ACCEPT - benarkan paket keluar
  • iptables -P FORWARD DROP - pemprosesan paket yang telah sampai ke pelayan dari mesin lain dan sedang menunggu penghantaran selanjutnya. Dalam contoh ia disekat. Dalam kes ini, anda perlu menambah peraturan untuk mesin yang dipercayai.

Memandangkan paket INPUT masuk disekat, kami akan menulis peraturan berikut:

$ sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j TERIMA

Ini akan membolehkan menerima paket daripada sambungan yang telah ditetapkan sebelum ini dan menerima paket baharu yang dihasilkan oleh sambungan ini.

Atau menunjukkan jenis protokol:

$ sudo iptables -A INPUT -p TCP -m keadaan --state ESTABLISHED,RELATED -j TERIMA $ sudo iptables -A INPUT -p UDP -m keadaan --state ESTABLISHED,RELATED -j TERIMA

Sekarang antara muka tempatan:

$ sudo iptables -A INPUT -i lo -j TERIMA

  • BARU - data memulakan sambungan baharu.
  • DITUBUHKAN - paket yang datang daripada sambungan yang telah ditetapkan.
  • BERKAITAN - paket data baharu, tetapi dijana oleh sambungan lama yang telah ditetapkan
  • TIDAK SAH - jadi jelas

$ sudo iptables-save > /etc/iptables.up.rules

Dayakan peraturan ini:

$sudo iptables-restore< /etc/iptables.up.rules

Dan lihat perbezaannya:

$sudo iptables -L

Lancarkan iptables pada permulaan sistem:

Dalam direktori /etc/init.d, cipta fail yang dipanggil iptables

$ sudo touch /etc/init.d/iptables

Kami menulis perkara berikut di dalamnya:

#!/bin/sh /sbin/iptables-restore< /etc/iptables.up.rules

Menjadikan fail iptables boleh dilaksanakan:

$ sudo chmod +x /etc/init.d/iptables

Tambahkannya pada autorun

$ sudo update-rc.d -n iptables lalai

Lancarkan iptables apabila disambungkan ke rangkaian:

$ sudo echo "#! /sbin/iptables-restore" > /etc/network/if-up.d/iptables.up.rules $ sudo iptables-save >> /etc/network/if-up.d/iptables. up.rules $ sudo chmod +x /etc/network/if-up.d/iptables.up.rules

Catatan: pada bila-bila masa anda boleh menyemak sama ada peraturan anda dimuatkan dengan hanya memasukkan iptables-save sebagai root

Untuk archlinux, menyimpan peraturan iptables dilakukan dengan arahan:

$ sudo rc.d simpan iptables

Konsep utama iptables ialah:

    Peraturan - terdiri daripada kriteria, tindakan dan pembilang. Jika paket memenuhi kriteria, tindakan akan diambil ke atasnya dan ia dikira di kaunter. Mungkin tidak ada kriteria - maka kriteria "semua paket" diandaikan secara tersirat. Ia juga tidak perlu untuk menentukan tindakan - jika tiada tindakan, peraturan hanya akan berfungsi sebagai kaunter. Peraturan untuk setiap rantaian dicetuskan mengikut susunan ia muncul, jadi susunan itu penting.

    • Kriteria - ungkapan logik yang menganalisis sifat paket dan/atau sambungan dan menentukan sama ada paket tertentu ini tertakluk kepada peraturan semasa. Kriteria disambungkan dengan logik "DAN".

      Tindakan - perihalan tindakan yang perlu dilakukan dengan paket dan/atau sambungan jika ia termasuk dalam skop peraturan ini. Tindakan akan diterangkan dengan lebih terperinci di bawah.

      Kaunter ialah komponen peraturan yang menyediakan perakaunan bilangan paket yang berada di bawah kriteria peraturan tertentu. Kaunter juga mengambil kira jumlah volum paket tersebut dalam bait.

    Rantaian ialah urutan peraturan yang tersusun. Rantaian boleh dibahagikan kepada adat dan asas.

    • Rantaian asas ialah rantaian yang dicipta secara lalai apabila jadual dimulakan. Setiap paket, bergantung pada sama ada ia bertujuan untuk hos itu sendiri, yang dijana olehnya atau sedang transit, mesti melalui set rantai asas pelbagai jadual yang diberikan kepadanya. Selain itu, rantaian asas berbeza daripada rantaian pengguna dengan adanya "dasar lalai". Tindakan ini digunakan pada paket yang belum diproses oleh peraturan lain dalam rantai ini dan rantai yang dipanggil daripadanya. Nama rantai asas sentiasa ditulis dalam huruf besar (PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING).

      Rantaian pengguna - rantaian yang dibuat oleh pengguna. Hanya boleh digunakan dalam jadualnya sendiri. Adalah disyorkan untuk tidak menggunakan nama huruf besar untuk rantai sedemikian untuk mengelakkan kekeliruan dengan rantai asas dan tindakan terbina dalam.

    Jadual ialah koleksi rantai asas dan pengguna yang disatukan oleh tujuan fungsian yang sama. Nama jadual (serta modul kriteria) ditulis dalam huruf kecil, kerana pada dasarnya mereka tidak boleh bertentangan dengan nama rantai pengguna. Apabila memanggil arahan iptables, jadual ditentukan dalam format -t table_name. Jika tidak dinyatakan secara eksplisit, jadual penapis digunakan.

Menghuraikan:

# Buang peraturan jadual penapis$ sudo iptables-save -c -t penapis # Penapis jadual * penapis # Rantaian INPUT, HADAPAN, OUTPUT, dasar dan kaunternya:INPUT TERIMA [ 19302 :9473669 ] :MAJU TERIMA [ 0 :0 ] :OUTPUT TERIMA [ 5462736 :4247599532 ] # Peraturan: "" - pembilang peraturan, "-A INPUT" - rantai, "-i em1 -p tcp -m tcp --dport 22" - kriteria, "-j ACCEPT" - tindakan[ 17:1020 ] -A INPUT -i em1 -p tcp -m tcp --dport 22 -j TERIMA KOMIT

Seni bina

Dalam sistem penapis bersih, paket dihantar melalui rantai. Rantaian ialah senarai peraturan yang tersusun, dan setiap peraturan boleh mengandungi kriteria dan tindakan atau peralihan. Apabila paket melalui rantai, sistem netfilter menyemak satu demi satu sama ada paket itu memenuhi semua kriteria peraturan seterusnya, dan jika ya, ia melakukan tindakan (jika tiada kriteria dalam peraturan, maka tindakan dilakukan untuk semua paket yang melalui peraturan). Terdapat banyak kriteria yang mungkin. Sebagai contoh, paket sepadan dengan kriteria –sumber 192.168.1.1 jika pengepala paket menunjukkan bahawa sumbernya ialah 192.168.1.1. Jenis lompatan yang paling mudah, –jump, hanya memajukan paket ke permulaan rantai lain. Anda juga boleh menentukan tindakan menggunakan –jump. Tindakan standard yang tersedia dalam semua rantai ialah ACCEPT (langkau), DROP (padam), QUEUE (hantar ke program luaran untuk analisis) dan RETURN (kembali ke rantaian sebelumnya untuk analisis). Contohnya, arahan

Iptables -A INPUT --source 192.168.1.1 --lompat TERIMA iptables -A INPUT --lompat other_chain

bermaksud "tambahkan peraturan berikut pada penghujung rantai INPUT: langkau paket dari 192.168.1.1, dan hantar semua yang tinggal untuk analisis ke other_chain."

rantai

Terdapat 5 jenis rantai standard yang dibina ke dalam sistem:

    PREROUTING - untuk pemprosesan awal paket masuk.

    INPUT - untuk paket masuk yang dialamatkan terus ke proses tempatan (klien atau pelayan).

    FORWARD - untuk paket masuk yang dimajukan ke output (perhatikan bahawa paket yang dimajukan terlebih dahulu melalui rantai PREROUTING, kemudian FORWARD dan POSTROUTING).

    OUTPUT - untuk paket yang dihasilkan oleh proses tempatan.

    POSTROUTING - untuk pemprosesan akhir paket keluar.

Anda juga boleh mencipta dan memusnahkan rantai anda sendiri menggunakan utiliti iptables.

Meja

Rantaian disusun menjadi 4 jadual:

    Raw - dilihat sebelum menghantar paket ke sistem pengesanan keadaan. Jarang digunakan, contohnya untuk menandakan paket yang TIDAK sepatutnya diproses oleh sistem pengesanan negeri. Untuk melakukan ini, peraturan menentukan tindakan NOTRACK. Mengandungi rantai PREROUTING dan OUTPUT.

    Mangle - mengandungi peraturan untuk mengubah suai (biasanya pengepala) paket IP. Antara lain, ia menyokong TTL (Masa untuk hidup), TOS (Jenis Perkhidmatan) dan tindakan MARK (untuk menukar medan TTL dan TOS, dan untuk menukar penanda paket). Jarang diperlukan dan mungkin berbahaya. Mengandungi semua lima rantai standard.

    Nat - Melihat hanya pada paket yang mencipta sambungan baharu (mengikut sistem pengesanan keadaan). Menyokong tindakan DNAT, SNAT, MASQUERADE, REDIRECT. Mengandungi rantai PREROUTING, OUTPUT dan POSTROUTING.

    Penapis - jadual utama, digunakan secara lalai jika nama jadual tidak dinyatakan. Mengandungi rantai INPUT, FORWARD dan OUTPUT.

Rantaian dengan nama yang sama, tetapi dalam jadual yang berbeza, adalah objek bebas sepenuhnya. Contohnya, PREROUTING mentah dan PREROUTING mangle biasanya mengandungi set peraturan yang berbeza; paket mula-mula melalui rantai PREROUTING mentah, dan kemudian melalui rantai PREROUTING mangle.

negeri

Dalam sistem penapis bersih, setiap paket yang melalui mekanisme keadaan boleh mempunyai satu daripada empat keadaan yang mungkin:

    BARU - pakej membuka sesi baharu. Contoh klasik ialah paket TCP dengan bendera SYN.

    DITUBUHKAN - Paket adalah sebahagian daripada sesi yang sedia ada.

    BERKAITAN - Pakej membuka sesi baharu yang dikaitkan dengan sesi yang sudah dibuka. Sebagai contoh, semasa sesi FTP pasif, pelanggan menyambung ke port 21 pelayan, pelayan memberitahu pelanggan nombor satu saat, port yang dipilih secara rawak, selepas itu pelanggan menyambung ke port kedua untuk memindahkan fail. Dalam kes ini, sesi kedua (pemindahan fail pada port kedua) dikaitkan dengan sesi yang sedia ada (sambungan asal ke port 21).

    TIDAK SAH - semua pakej lain.

Gambar rajah laluan jadual dan rantai

Gambar rajah ringkas laluan jadual dan rantai:

Gambar rajah terperinci:

Konfigurasi asas

Di bawah ialah contoh konfigurasi iptables statik asas. Apabila menyimpan dan memuatkan konfigurasi sedemikian, anda mesti mengambil kira kemungkinan perubahan padanya daripada perkhidmatan lain, contohnya Fail2ban. Selain itu, apabila menggunakan pengalamatan IPv6, konfigurasi untuk IPv6 harus dilakukan secara bebas daripada IPv4.

IPv4

sudo iptables-save

Buat skrip dengan pembuangan peraturan iptables:

sudo nano / etc/ network/ if-up.d/ iptables-rules

Salin kod berikut:

#!/sbin/iptables-restore -A INPUT -p icmp -j TERIMA -A INPUT -i lo -j TERIMA -A INPUT -j TOLAK --tolak-dengan icmp-host-dilarang -A FORWARD -m conntrack -- ctstate BERKAITAN, DIBUAT -j TERIMA -A HADAPAN -p icmp -j TERIMA -A HADAPAN -j TOLAK --tolak-dengan icmp-host-dilarang #-A OUTPUT -p icmp -j TERIMA #-A OUTPUT -o lo - j TERIMA #-A OUTPUT -j REJECT --reject-dengan icmp-host-dilarang KOMITED

Kami menambah dengan peraturan yang diperlukan dengan mengambil kira iptables-save.

sudo chmod +x / etc/ network/ if-up.d/ iptables-rules sudo / etc/ network/ if-up.d/ iptables-rules

IPv6

Lihat konfigurasi semasa:

sudo ip6tables-save

Buat skrip dengan pembuangan peraturan ip6tables:

sudo nano / etc/ network/ if-up.d/ ip6tables-rules

Salin kod berikut:

#!/sbin/ip6tables-restore # Jadual penapis dan rantainya* penapis:INPUT TERIMA [ 0 :0 ] :MAJU TERIMA [ 0 :0 ] :OUTPUT TERIMA [ 0:0 ] # Benarkan sambungan yang disambungkan dan diwujudkan-A INPUT -m conntrack --ctstate BERKAITAN, DIBUAT -j TERIMA # Benarkan trafik icmp perkhidmatan-A INPUT -p ipv6-icmp -j TERIMA # Benarkan trafik yang dipercayai ke antara muka gelung balik-A INPUT -i lo -j TERIMA # Peraturan tambahan untuk rantai INPUT boleh dimasukkan di sini # Lumpuhkan semua yang lain untuk INPUT-A INPUT -j REJECT --reject-dengan icmp6-adm-dilarang # Susunan dan maksud peraturan untuk rantaian FORWARD dan OUTPUT adalah serupa dengan INPUT-A FORWARD -m conntrack --ctstate RELATED, ESTABLISHED -j TERIMA -A FORWARD -p ipv6-icmp -j TERIMA -A FORWARD -j TOLAK --tolak-dengan icmp6-adm-dilarang # Penapisan rantai OUTPUT adalah sangat tidak digalakkan #-A OUTPUT -m conntrack --ctstate BERKAITAN, DIBUAT -j TERIMA #-A OUTPUT -p ipv6-icmp -j TERIMA#-A OUTPUT -o lo -j TERIMA #-A OUTPUT -j REJECT --reject-dengan icmp6-adm-dilarang KOMITED

Kami menambah dengan peraturan yang diperlukan dengan mengambil kira ip6tables-save.

Simpan dan tutup: Ctrl + O, Enter, Ctrl + X

Jadikan skrip boleh laku dan muatkan peraturan iptables:

sudo chmod +x / etc/ network/ if-up.d/ ip6tables-rules sudo / etc/ network/ if-up.d/ ip6tables-rules

Peraturan tambahan

Di bawah adalah beberapa peraturan yang agak biasa digunakan. Rantaian INPUT/OUTPUT digunakan untuk menapis trafik tempatan. Untuk trafik transit, anda mesti menggunakan rantaian FORWARD.

Akses jauh

# remote.ssh -A INPUT -p tcp -m conntrack --ctstate BARU -m tcp --dport 22 -j TERIMA # remote.rdp -A INPUT -p tcp -m conntrack --ctstate BARU -m tcp --dport 3389 -j TERIMA # remote.vnc -A INPUT -p tcp -m conntrack --ctstate BARU -m tcp --dport 5900 -j TERIMA

Perkhidmatan web dan fail

# web.http, web.https -A INPUT -p tcp -m conntrack --ctstate BARU -m multiport -A INPUT -p tcp -m conntrack --ctstate BARU -m tcp --dport 21 -j TERIMA

Mel dan mesej segera

# mail.pop3, mail.pop3s -A INPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 110,995 -j TERIMA # mail.imap, mail.imaps -A INPUT -p tcp -m conntrack -- ctstate NEW -m multiport --dports 143 ,993 -j TERIMA # mail.smtp, mail.smtps -A INPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 25 ,465 -j TERIMA # im. xmpp -A INPUT -p tcp -m conntrack --ctstate BARU -m multiport --dports 5222 ,5223 -j TERIMA # im.icq.oscar -A INPUT -p tcp -m conntrack --ctstate BARU -m tcp -- dport 5190 -j TERIMA

Perkhidmatan Rangkaian

# network.openvpn.vpn -A INPUT -p udp -m conntrack --ctstate BARU -m udp --dport 1194 -j TERIMA # network.squid.proxy -A INPUT -p udp -m conntrack --ctstate BARU -m udp --dport 3128 -j TERIMA # network.dns -A INPUT -p tcp -m conntrack --ctstate BARU -m tcp --dport 53 -j TERIMA -A INPUT -p udp -m conntrack --ctstate BARU -m udp --dport 53 -j TERIMA # rangkaian.ntp -A INPUT -p udp -m conntrack --ctstate BAHARU -A INPUT -p udp -m conntrack --ctstate BAHARU -m udp --dport 69 -j TERIMA # network.dhserver.dhcp.discover-request-A INPUT -p udp -m conntrack --ctstate BARU -m udp --sukan 68 --dport 67 -j TERIMA # network.dhclient.dhcp.discover-request #-A OUTPUT -p udp -m conntrack --ctstate BARU -m udp --sukan 68 --dport 67 -j TERIMA # network.dhserver.dhcp.offer-ack #-A OUTPUT -p udp -m conntrack --ctstate BARU -m udp --sukan 67 --dport 68 -j TERIMA

Menguji dan Menyahpepijat

Lihat konfigurasi semasa untuk IPv4 dan IPv6:

sudo iptables-save sudo ip6tables-save

Pembalakan

Menjejak

Modul kernel

Lihat modul yang dimuatkan:

lsmod | grep -E "^ip|^nf" | menyusun

Untuk memuatkan modul tambahan adalah mudah untuk menggunakan autolengkap: Tab 2x

sudo modprobe nf sudo modprobe modules-load.d

iptables ialah utiliti baris arahan yang merupakan antara muka standard untuk menguruskan operasi tembok api (firewall) penapis bersih untuk kernel Linux versi 2.4 dan 2.6. Keistimewaan diperlukan untuk menggunakan utiliti iptables superuser(root).Kadangkala perkataan iptables merujuk kepada firewall netfilter itu sendiri.

1. Apakah tembok api dan mengapa ia diperlukan?

Firewall- satu set perkakasan atau perisian yang memantau dan menapis paket rangkaian yang melaluinya pada pelbagai peringkat model OSI mengikut peraturan yang ditetapkan.


Tugas utama firewall adalah untuk melindungi rangkaian komputer atau nod individu daripada capaian yang tidak dibenarkan. Juga, tembok api sering dipanggil penapis, kerana tugas utamanya adalah untuk tidak membenarkan (penapis) paket yang tidak memenuhi kriteria yang ditentukan dalam konfigurasi.

2. Bagaimana iptables berfungsi

Apabila paket tiba di tembok api kami, ia mula-mula mencecah peranti rangkaian, dipintas oleh pemacu yang sesuai dan kemudian dihantar ke kernel. Seterusnya, paket itu melalui beberapa jadual dan kemudian dipindahkan sama ada ke aplikasi tempatan atau dimajukan ke mesin lain.

Iptables menggunakan tiga jenis jadual:

  1. Mangle- rantai ini biasanya digunakan untuk membuat perubahan pada pengepala paket, contohnya untuk menukar bit TOS, dll.
  2. Nat- rantaian ini digunakan untuk menterjemah alamat rangkaian (Terjemahan Alamat Rangkaian Destinasi). Terjemahan Alamat Rangkaian Sumber dilakukan kemudian, dalam rantaian lain. Sebarang jenis penapisan dalam rantaian ini hanya boleh dilakukan dalam kes luar biasa.
  3. Penapis- trafik ditapis di sini. Ingat bahawa semua paket masuk yang ditujukan kepada kami melalui rantaian ini, tanpa mengira antara muka yang mana ia datang.

Sehubungan itu, kami berminat dengan jadual Penapis ketiga. Jadual ini mempunyai tiga rantai terbina dalam:

  1. INPUT - untuk paket masuk.
  2. HADAPAN - untuk mereka yang melalui mesin ini ke mesin lain.
  3. OUTPUT - untuk keluar.

Satu paket yang melalui rantaian ini, berdasarkan peraturan, boleh diluluskan (TERIMA) atau dibuang (DROP).

Program Iptables membolehkan anda mengedit peraturan melalui terminal dengan memasukkan arahan.

Sedikit tentang peraturan penulisan:

Setiap peraturan ialah rentetan yang mengandungi kriteria yang menentukan sama ada paket sepadan dengan peraturan tertentu dan tindakan yang mesti dilakukan jika kriteria dipenuhi. Secara umum, peraturan ditulis seperti ini:

Iptables [-t nama jadual ] perintah [corak] [ -j tindakan ]

Pilihan -t menentukan meja. Jika pilihan ditinggalkan, lalai adalah menggunakan jadual penapis. Jika anda berhasrat untuk menggunakan jadual lain, maka ini mesti ditunjukkan dengan jelas.

Seterusnya, sejurus selepas nama jadual, mesti ada arahan. Jika tiada penentu jadual, maka arahan mesti sentiasa didahulukan.
Pasukan mentakrifkan tindakan iptables, contohnya: masukkan peraturan, atau tambahkan peraturan pada penghujung rantai, atau padamkan peraturan, dsb.

Senarai arahan:

  • -A nama rantai peraturan (tambah peraturan pada penghujung rantai; suis --set-counters membolehkan anda menetapkan pembilang paket dan bait)
  • -saya nama rantai nombor peraturan (masukkan peraturan dalam rantai sebelum peraturan dengan nombor yang ditentukan, bernombor dari 1; kekunci --set-counters membolehkan anda menetapkan pembilang paket dan bait)
  • -R nama rantai nombor peraturan (ganti;
    suis --set-counters membolehkan anda menetapkan pembilang paket dan bait)
  • -D nama rantai nombor (padamkan peraturan dengan nombor yang ditentukan, penomboran dari 1)
  • -D nama rantai peraturan (alih keluar peraturan mengikut padanan teks)
  • -C nama rantai beg plastik (laluan paket ujian;
    alamat keluar, alamat destinasi, protokol, antara muka, port ditentukan oleh kekunci yang sepadan)
  • -L [nama rantai ] (tunjukkan senarai peraturan; kunci tambahan:
    • -v(paparkan maklumat tambahan, khususnya kaunter)
    • --tepat(tunjukkan pembilang tanpa membundarkan kepada KB, MB, dsb.)
    • --numerik(tunjukkan alamat dan nombor port sebagai nombor)
    • --nombor baris(paparkan nombor peraturan)
  • -F nama rantai (buang semua peraturan dari rantai)
  • -Z nama rantai (set semula kaunter)
  • -N nama rantai (buat rantai)
  • -X nama rantai (padamkan benang kosong yang tidak mempunyai pautan)
  • -P nama rantai tindakan (ubah tindakan lalai: TERIMA,
    JATUHKAN, GILIRAN, KEMBALI)
  • -E nama rantai lama nama-rantai-baru (menamakan semula rantai itu)

Bab sampel menetapkan kriteria pengesahan yang mana ia ditentukan sama ada paket itu tertakluk kepada peraturan ini atau tidak. Di sini anda boleh menentukan pelbagai kriteria - alamat IP sumber paket atau rangkaian, antara muka rangkaian. Alamat IP destinasi, port, protokol, dsb. Parameter lain untuk penapisan boleh didapati dalam bantuan untuk utiliti iptables (man iptables)

Dan akhirnya tindakan menentukan tindakan yang perlu dilakukan jika kriteria dalam peraturan dipenuhi. Di sini anda boleh memaksa kernel untuk memindahkan paket ke rangkaian peraturan lain, "jatuhkan" paket, mengeluarkan mesej ralat kepada sumber, dsb.

Senarai beberapa tindakan:

  • TERIMA - langkau paket; imbasan meja tamat
  • DROP - buang secara senyap; imbasan berakhir bukan sahaja untuk rantai semasa, tetapi juga untuk jadual lain
  • TOLAK - buang, memberitahu pengirim ( --tolak-dengan jenis pemberitahuan )

3. Susunan paket rangkaian yang ditujukan untuk proses/aplikasi setempat:

Untuk aplikasi tempatan

Langkah Jadual rantai Catatan
1 Kabel (iaitu)
2 Input
3 mangle PREROUTING Biasanya digunakan untuk membuat perubahan pada pengepala paket, seperti menetapkan bit TOS, dsb.
4 nat PREROUTING Terjemahan alamat (Terjemahan Alamat Rangkaian Destinasi). Penapisan paket dibenarkan di sini hanya dalam kes luar biasa.
5 Membuat keputusan penghalaan.
6 mangle INPUT Paket berakhir dalam rantai INPUT jadual mangle. Ini akan membuat perubahan pada pengepala paket sebelum ia diserahkan kepada aplikasi tempatan.
7 penapis INPUT Trafik masuk ditapis di sini. Ingat bahawa semua paket masuk yang ditujukan kepada kami melalui rantaian ini, tanpa mengira antara muka yang mana ia datang.
8 Proses/aplikasi setempat (iaitu, program pelayan atau program klien)

Adalah penting untuk diingat bahawa kali ini paket melalui rantai INPUT, dan bukan melalui FORWARD.

Susunan pergerakan paket yang dicipta oleh proses tempatan.

Daripada proses tempatan

Langkah Jadual rantai Catatan
1 Proses setempat (iaitu, program pelayan atau program klien).
2 Membuat keputusan penghalaan. Di sini diputuskan ke mana paket itu akan pergi seterusnya - ke alamat apa, melalui antara muka rangkaian, dsb.
3 mangle PENGELUARAN Di sinilah perubahan dibuat pada pengepala paket. Melakukan penapisan pada rantaian ini boleh membawa kesan negatif.
4 nat PENGELUARAN Rantaian ini digunakan untuk terjemahan alamat rangkaian (NAT) dalam paket yang berasal daripada proses tembok api tempatan.
5 Penapis PENGELUARAN Trafik keluar ditapis di sini.
6 mangle POSTROUTING Rantaian POSTROUTING jadual mangle digunakan terutamanya untuk peraturan yang perlu membuat perubahan pada pengepala paket sebelum ia meninggalkan tembok api, tetapi selepas keputusan penghalaan dibuat. Semua paket, kedua-dua transit dan dicipta oleh proses tembok api tempatan, termasuk dalam rantaian ini.
7 nat POSTROUTING Di sinilah Terjemahan Alamat Rangkaian Sumber dilakukan. Anda tidak seharusnya melakukan penapisan paket dalam rantaian ini untuk mengelakkan kesan sampingan yang tidak diingini. Walau bagaimanapun, di sini juga anda boleh menghentikan paket dengan menggunakan dasar DROP lalai.
8 Antara muka rangkaian (cth eth0)
9 Kabel (iaitu, Internet)

Susunan pergerakan pakej transit

Langkah Jadual rantai Catatan
1 Kabel (iaitu Internet)
2 Antara muka rangkaian (cth eth0)
3 mangle PREROUTING Biasanya rantai ini digunakan untuk membuat perubahan pada pengepala paket, seperti menukar bit TOS, dsb.
4 nat PREROUTING Rantaian ini digunakan untuk Terjemahan Alamat Rangkaian Destinasi. Terjemahan Alamat Rangkaian Sumber dilakukan kemudian, dalam rantaian lain. Sebarang jenis penapisan dalam rantaian ini hanya boleh dilakukan dalam kes luar biasa
5 Memutuskan penghalaan selanjutnya, i.e. pada ketika ini diputuskan ke mana paket itu akan pergi - ke aplikasi tempatan atau ke nod rangkaian lain.
6 mangle KE HADAPAN Paket kemudiannya memasuki rantaian FORWARD jadual mangle, yang hanya boleh digunakan dalam kes luar biasa apabila perlu membuat beberapa perubahan pada pengepala paket antara dua titik keputusan penghalaan.
7 Penapis KE HADAPAN Hanya paket yang pergi ke hos lain memasuki rantaian FORWARD. Semua penapisan trafik transit harus dilakukan di sini. Jangan lupa bahawa trafik melalui rantaian ini dalam kedua-dua arah; pastikan anda mengambil kira perkara ini semasa menulis peraturan penapisan.
8 mangle POSTROUTING Rantaian ini bertujuan untuk membuat perubahan pada pengepala paket selepas keputusan penghalaan terakhir dibuat.
9 nat POSTROUTING Rantaian ini ditujukan terutamanya untuk Terjemahan Alamat Rangkaian Sumber. Jangan gunakannya untuk menapis melainkan benar-benar perlu. Penyamaran juga dilakukan di sini.
10 Antara muka rangkaian output (contohnya, eth1).
11 Kabel (biar LAN).

Terdapat tiga pilihan berbeza untuk menghantar paket.

1. Dari luar ke perkhidmatan tempatan (pelayan) komputer ini (INPUT).

2. Dari perkhidmatan tempatan (server) komputer ini ke luar (OUTPUT).

3. Melepasi, pintu masuk, melepasi antara muka rangkaian komputer ini (MAJU).

4. Beberapa contoh konfigurasi:

contoh skrip:

#set pembolehubah untuk menetapkan antara muka rangkaian luaran dan dalaman

LOCAL_IF="eth0"
INET_IF="eth0:g"

#=======================
# Alih keluar semua peraturan daripada rantai.
#=======================
iptables -F
iptables -X

#=======================
# Tetapkan dasar lalai.
#=======================

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P HADAPAN TERIMA

#=======================
# Buat peraturan untuk semua antara muka.
#=======================

# http - buka port 80
iptables -A INPUT -i SEMUA -p tcp -m tcp --dport 80 -j TERIMA
iptables -A INPUT -i SEMUA -p icmp -j TERIMA

#=======================
# Buat peraturan untuk antara muka dalaman.
#=======================

# ssh - buka 22

iptables -A INPUT -p tcp -i $LOCAL_IF -m tcp --dport 22 -j TERIMA

Yang tinggal hanyalah menjalankan skrip

contoh rantai individu:

Kami membenarkan segala-galanya pada antara muka dalaman (lo, eth0, eth1 - antara muka dalaman)
iptables -A INPUT -i eth1 -j TERIMA
iptables -A INPUT -i eth0 -j TERIMA
iptables -A INPUT -i lo -j TERIMA

Benarkan akses ke port tertentu daripada Internet
iptables -A INPUT -p tcp -m tcp -d external_ip --dport 80 -j TERIMA

Membuka protokol
iptables -A INPUT -p gre -j TERIMA

5. Pautan ke dokumentasi untuk mengkonfigurasi iptables

http://www.posix.ru/network/iptables/ - artikel oleh Dmitry Kulakov "Mengkonfigurasi tembok api Iptables"

http://www.opennet.ru/docs/RUS/iptables/ - artikel oleh Oscar Anderson diterjemahkan oleh Andrey Kiselev "Panduan IPtables"

http://system-administrators.info/?p=396 - artikel "netfilter dan iptables dalam Linux: prinsip operasi, konfigurasi"

http://www.iptables.ru/ - konfigurasi langkah demi langkah bagi iptables. sokongan teknikal


Tinggalkan komen anda!

Salam sejahtera semua! Sebagai sambungan, saya menerbitkan artikel praktikal ini tentang Penapis rangkaian Linux. Dalam artikel saya akan pertimbangkan contoh tipikal untuk melaksanakan peraturan iptables dalam Linux, dan juga pertimbangkan cara menyimpan konfigurasi iptables yang dibuat.

Menyediakan netfilter/iptables untuk stesen kerja

Mari kita mulakan dengan tugas asas - pelaksanaan tembok api Linux pada desktop. Dalam kebanyakan kes, pada pengedaran Linux desktop tidak ada keperluan mendesak untuk menggunakan tembok api, kerana Pengedaran sedemikian tidak menjalankan apa-apa perkhidmatan yang mendengar port rangkaian, tetapi demi pencegahan, ia tidak akan berlebihan untuk mengatur perlindungan. Kerana intinya juga tidak kebal terhadap lubang. Jadi, kami mempunyai Linux, dengan eth0, tidak kira melalui DHCP atau secara statik...

Untuk tetapan tembok api Saya cuba mematuhi dasar berikut: mengharamkan segala-galanya, dan kemudian apa yang perlu dibenarkan. Itulah yang akan kita lakukan dalam kes ini. Jika anda mempunyai sistem yang baru dipasang dan anda belum cuba mengkonfigurasi penapis rangkaian padanya, maka peraturan akan kelihatan seperti ini:

Netfilter:~# iptables -L Rantaian INPUT (dasar TERIMA) sasaran sumber pilihan prot destinasi Rantaian HADAPAN (dasar TERIMA) sasaran prot pilihan sumber destinasi Rantaian OUTPUT (dasar TERIMA) sasaran prot sumber opt destinasi

Ini bermakna bahawa dasar lalai untuk jadual penapis dalam semua rantai - TERIMA dan tidak ada peraturan lain yang melarang sesuatu. Jadi kita mula-mula mengharamkan SEMUA, termasuk pakej(jangan cuba lakukan ini dari jauh, anda akan kehilangan akses serta-merta):

Netfilter:~# iptables -P INPUT DROP netfilter:~# iptables -P OUTPUT DROP netfilter:~# iptables -P FORWARD DROP

Dengan arahan ini kami memasang JATUHKAN lalai. Ini bermakna bahawa mana-mana paket yang tidak mempunyai peraturan secara eksplisit yang membenarkannya dibuang secara automatik. Memandangkan kami belum lagi menetapkan satu peraturan, semua paket yang tiba pada komputer anda akan ditolak, serta paket yang anda cuba hantar ke rangkaian. Sebagai demonstrasi, anda boleh cuba ping komputer anda melalui antara muka gelung balik:

Penapis Net:~# ping -c2 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bait data. ping: sendmsg: Operasi tidak dibenarkan ping: sendmsg: Operasi tidak dibenarkan --- statistik ping localhost --- 2 paket dihantar, 0 diterima, kehilangan paket 100%, masa 1004ms

Sebenarnya, ini adalah rangkaian yang tidak berfungsi sepenuhnya dan ini tidak begitu baik, kerana... Sesetengah daemon menggunakan antara muka loopback untuk berkomunikasi antara satu sama lain, yang tidak lagi berfungsi selepas tindakan telah diambil. Ini boleh mengganggu operasi perkhidmatan tersebut. Oleh itu, pertama sekali, ia adalah mustahak mari benarkan paket dihantar melalui antara muka gelung balik masuk dan antara muka gelung balik keluar dalam jadual INPUT(untuk dapat menerima pakej yang dihantar) dan PENGELUARAN(untuk keupayaan untuk menghantar pakej) sewajarnya. Jadi, pastikan anda melakukan:

Netfilter:~# iptables -A INPUT -i lo -j TERIMA netfilter:~# iptables -A OUTPUT -o lo -j TERIMA

Selepas ini, ping ke localhost akan berfungsi:

Penapis Net:~# ping -c1 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bait data. 64 bait daripada 127.0.0.1 (127.0.0.1): icmp_seq=1 ttl=64 masa=0.116 ms --- 127.0.0.1 statistik ping --- 1 paket dihantar, 1 diterima, 0% kehilangan paket, masa 116ms rtt min/ purata/maks/mdev = 0.116/0.116/0.116/0.116 ms

Jika anda tidak terlalu fanatik tentang menyediakan tembok api, anda boleh membenarkan protokol ICMP berfungsi:

Netfilter:~# iptables -A INPUT -p icmp -j TERIMA netfilter:~# iptables -A OUTPUT -p icmp -j TERIMA

Adalah lebih selamat untuk menentukan perintah iptables yang serupa berikut:

Netfilter:~# iptables -A INPUT -p icmp --icmp-type 0 -j TERIMA netfilter:~# iptables -A INPUT -p icmp --icmp-type 8 -j TERIMA netfilter:~# iptables -A OUTPUT -p icmp -j TERIMA

Perintah ini akan membenarkan jenis paket ICMP menjadi permintaan gema dan balasan gema, yang akan meningkatkan keselamatan.

Mengetahui bahawa komputer kita tidak dijangkiti (adakah?) dan ia hanya mewujudkan sambungan keluar yang selamat. Dan juga, mengetahui bahawa sambungan selamat adalah sambungan daripada apa yang dipanggil. julat port yang tidak lama, yang ditentukan oleh kernel dalam fail /proc/sys/net/ipv4/ip_local_port_range, boleh membenarkan sambungan keluar daripada port selamat ini:

Penapis Net:~# cat /proc/sys/net/ipv4/ip_local_port_range 32768 61000 netfilter:~# iptables -A OUTPUT -p TCP --sukan 32768:61000 -j TERIMA penapis bersih:~# iptables -A UDP-OUTPUT -p sukan 32768:61000 -j TERIMA

Jika anda tidak paranoid tentang mengehadkan paket keluar, maka anda boleh mengehadkan diri anda kepada satu arahan iptables membenarkan semua sambungan keluar op kepada semua protokol dan port:

Netfilter:~# iptables -A OUTPUT -j TERIMA netfilter:~# # atau hanya tetapkan dasar TERIMA lalai untuk rangkaian OUTPUT netfilter:~# iptables -P OUTPUT ACCEPT

Selanjutnya, mengetahui bahawa dalam sambungan rangkaian netfilter mempunyai 4 keadaan ( BARU,DITUBUHKANBERKAITAN danTIDAK SAH) dan sambungan keluar baharu dari komputer tempatan (dengan keadaan BARU) dibenarkan dalam dua perintah iptables terakhir, yang sambungan telah ditetapkan dan yang tambahan mempunyai keadaan DITUBUHKAN danBERKAITAN sewajarnya, dan juga mengetahui bahawa sistem tempatan diakses melalui , kami boleh membenarkan hanya paket TCP dan UDP yang diminta oleh aplikasi tempatan untuk mencapai komputer kami:

Netfilter:~# iptables -A INPUT -p TCP -m keadaan --state ESTABLISHED,RELATED -j TERIMA netfilter:~# iptables -A INPUT -p UDP -m keadaan --state ESTABLISHED,RELATED -j TERIMA

Itu sahaja, sebenarnya! Jika beberapa jenis perkhidmatan rangkaian masih berjalan pada desktop, maka anda perlu menambah peraturan yang sesuai untuk sambungan masuk dan untuk sambungan keluar. Sebagai contoh, untuk menjalankan pelayan ssh yang menerima dan menghantar permintaan pada port TCP 22, anda perlu menambah yang berikut peraturan iptables:

Netfilter:~# iptables -A INPUT -i eth0 -p TCP --dport 22 -j TERIMA netfilter:~# iptables -A OUTPUT -o eth0 -p TCP --sukan 22 -j TERIMA

Itu. untuk sebarang perkhidmatan, anda perlu menambah satu peraturan pada rantai INPUT dan OUTPUT, membenarkan, masing-masing, penerimaan dan penghantaran paket menggunakan port ini untuk antara muka rangkaian tertentu (jika anda tidak menentukan antara muka, maka ia akan dibenarkan untuk menerima/menghantar paket pada mana-mana antara muka).

Mengkonfigurasi netfilter/iptables untuk membenarkan berbilang pelanggan menyambung ke satu sambungan.

Mari kita lihat sekarang Linux sebagai pintu masuk untuk rangkaian tempatan ke Internet luaran. Mari kita berpura-pura itu antara muka eth0 disambungkan ke Internet dan mempunyai IP 198.166.0.200, dan antara muka eth1 disambungkan ke rangkaian tempatan dan mempunyai IP 10.0.0.1. Secara lalai, dalam kernel Linux memajukan paket melalui rantaian FORWARD(pakej yang tidak dimaksudkan untuk sistem setempat) dilumpuhkan. Untuk mendayakan ciri ini, anda mesti menetapkan nilai 1 dalam fail :

Netfilter:~# echo 1 > /proc/sys/net/ipv4/ip_forward

Kepada penghantaran paket disimpan selepas but semula, mesti ada dalam fail /etc/sysctl.conf nyahkomen (atau tambah sahaja) baris net.ipv4.ip_forward=1.

Jadi, kami mempunyai alamat luaran (198.166.0.200), terdapat beberapa klien hipotesis pada rangkaian tempatan yang mempunyai dan menghantar permintaan ke rangkaian luaran. Jika pelanggan ini menghantar permintaan ke rangkaian luaran melalui gerbang "sebagaimana adanya", tanpa penukaran, maka pelayan jauh tidak akan dapat membalasnya, kerana alamat pemulangan akan menjadi penerima daripada "rangkaian tempatan". Agar skim ini berfungsi dengan betul, alamat penghantar perlu diganti dengan alamat luaran get laluan Linux. Ini dicapai melalui (menyamar) dalam , dalam .

Netfilter:~# iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j TERIMA netfilter:~# iptables -A FORWARD -m conntrack --ctstate BARU -i eth1 -s 10.0.0.1/24 -j TERIMA netfilter: ~# iptables -P FORWARD DROP netfilter:~# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Jadi, mengikut urutan dari atas ke bawah, kami menyelesaikan sambungan yang telah sedia ada rantai KE HADAPAN, jadual penapis, maka kami membenarkan sambungan baharu diwujudkan dalam rantai KE HADAPAN, jadual penapis, yang datang daripada antara muka eth1 dan daripada rangkaian 10.0.0.1/24. Semua paket lain yang melaluinya rantai KE HADAPAN- buang. Seterusnya, kami melakukan masking (penggantian alamat pengirim paket dalam pengepala) semua paket yang berasal dari antara muka eth0.

Catatan. Terdapat cadangan umum: gunakan peraturan -j MASQUERADE untuk antara muka dengan IP yang diperoleh secara dinamik (contohnya, melalui DHCP daripada pembekal). Dengan IP statik, -j MASQUERADE boleh digantikan dengan -j SNAT -to-source IP_interface_eth0 yang serupa. Di samping itu, SNAT boleh "mengingat" tentang sambungan yang telah ditetapkan sekiranya antara muka tidak tersedia untuk jangka pendek. Perbandingan MASQUERADE dan SNAT dalam jadual:

Sebagai tambahan kepada peraturan yang ditentukan, anda juga boleh menambah peraturan untuk menapis paket yang ditujukan untuk hos tempatan - seperti yang diterangkan dalam. Iaitu, tambahkan peraturan melarang dan membenarkan untuk sambungan masuk dan keluar:

Netfilter:~# iptables -P INPUT DROP DROP netfilter:~# iptables -P OUTPUT DROP DROP netfilter:~# iptables -A INPUT -i lo -j TERIMA netfilter:~# iptables -A OUTPUT -o lo -j TERIMA penapis bersih:~# iptables -A INPUT -p icmp --icmp-type 0 -j TERIMA netfilter:~# iptables -A INPUT -p icmp --icmp-type 8 -j TERIMA netfilter:~# iptables -A OUTPUT -p icmp -j TERIMA netfilter:~# cat /proc/sys/net/ipv4/ip_local_port_range 32768 61000 netfilter:~# iptables -A OUTPUT -p TCP --sukan 32768:61000 -j TERIMA penapis bersih:~# iptables -A UDP -p OUTPUT -p sukan 32768:61000 -j TERIMA penapis bersih:~# iptables -A INPUT -p TCP -m keadaan --state ESTABLISHED,RELATED -j TERIMA netfilter:~# iptables -A INPUT -p UDP -m keadaan --state ESTABLISHED,BERKAITAN -j TERIMA

Akibatnya, jika salah satu hos rangkaian tempatan, contohnya 10.0.0.2, cuba menghubungi salah satu hos Internet, contohnya, 93.158.134.3 (ya.ru), dengan , alamat sumber mereka akan digantikan dengan luaran alamat get laluan dalam rantai POSTROUTING table nat, iaitu, IP keluar 10.0.0.2 akan digantikan dengan 198.166.0.200. Dari sudut pandangan hos jauh (ya.ru), ia akan kelihatan seolah-olah pintu masuk itu sendiri berkomunikasi dengannya secara langsung. Apabila hos jauh mula menghantar semula data, ia akan mengalamatkannya secara khusus kepada get laluan, iaitu, 198.166.0.200. Walau bagaimanapun, di pintu masuk alamat destinasi paket ini akan ditukar kepada 10.0.0.2, selepas itu paket akan dihantar kepada penerima sebenar pada rangkaian tempatan. Untuk transformasi terbalik seperti itu, tiada peraturan tambahan perlu ditentukan - ini akan dilakukan oleh yang sama operasi MAQUERADE, yang mengingati hos pada rangkaian tempatan yang menghantar permintaan dan hos yang perlu mengembalikan respons yang diterima.

Catatan: sebaiknya diterima secara diam-diam, sebelum semua arahan iptables rantaian yang jelas kepada peraturan yang akan ditambah:

Penapis Net:~# iptables -F CHAIN_NAME

Menyediakan akses kepada perkhidmatan di pintu masuk

Mari kita anggap bahawa perkhidmatan tertentu sedang berjalan pada gerbang kami, yang sepatutnya bertindak balas kepada permintaan yang datang daripada Internet. Katakan ia berfungsi pada beberapa port TCP nn. Untuk menyediakan akses kepada perkhidmatan ini, adalah perlu untuk mengubah suai jadual penapis dalam rantaian INPUT (untuk membenarkan menerima paket rangkaian yang dialamatkan kepada perkhidmatan tempatan) dan jadual penapis dalam rantaian OUTPUT (untuk membenarkan respons kepada permintaan masuk).

Jadi, kita ada, yang menyamar (menggantikan alamat pengirim dengan yang luar) paket ke rangkaian luaran. Dan membenarkan menerima semua sambungan yang telah ditetapkan. Menyediakan akses kepada perkhidmatan akan dijalankan menggunakan peraturan membenarkan berikut:

Netfilter:~# iptables -A INPUT -p TCP --dport nn -j TERIMA netfilter:~# iptables -A OUTPUT -p TCP --sukan nn -j TERIMA

Peraturan ini membenarkan sambungan TCP masuk ke port nn dan sambungan TCP keluar dari port nn. Selain itu, anda boleh menambah parameter sekatan tambahan, contohnya, membenarkan sambungan masuk hanya daripada antara muka luaran eth0 (kunci -i eth0) dan sebagainya.

Menyediakan akses kepada perkhidmatan pada rangkaian tempatan

Mari kita anggap bahawa pada rangkaian tempatan kita terdapat beberapa hos dengan IP X.Y.Z.1, yang mesti bertindak balas kepada permintaan rangkaian daripada rangkaian luaran pada port TCP xxx. Agar tindak balas perkhidmatan yang betul daripada rangkaian tempatan berlaku apabila pelanggan jauh mengakses port IP luaran xxx, adalah perlu untuk memajukan permintaan yang datang ke port IP luaran xxx kepada hos yang sepadan pada rangkaian tempatan. Ini dicapai dengan mengubah suai alamat penerima dalam paket yang tiba di port yang ditentukan. Tindakan ini dipanggil DNAT dan digunakan dalam rantai PREROUTING dalam jadual nat. Dan juga benarkan laluan paket ini dalam rantaian FORWARD dalam jadual penapis.

Sekali lagi, mari kita ambil jalan. Jadi, kita ada, yang menyamar (menggantikan alamat pengirim dengan yang luar) paket ke rangkaian luaran. Dan membenarkan menerima semua sambungan yang telah ditetapkan. Menyediakan akses kepada perkhidmatan akan dijalankan menggunakan peraturan membenarkan berikut:

Netfilter:~# iptables -t nat -A PREROUTING -p tcp -d 198.166.0.200 --dport xxx -j DNAT --to-destination X.Y.Z.1 netfilter:~# iptables -A FORWARD -i eth0 -p tcp -d X.Y.Z. 1 --dport xxx -j TERIMA

Menyimpan peraturan yang dimasukkan semasa but semula

Semua peraturan yang dimasukkan dalam konsol akan ditetapkan semula kepada keadaan asalnya selepas OS dibut semula (baca - dipadam). Untuk simpan semua arahan iptables yang dimasukkan, terdapat beberapa cara. Sebagai contoh, salah satunya ialah menetapkan semua peraturan firewall dalam fail permulaan. Tetapi kaedah ini mempunyai kelemahan yang ketara: sepanjang tempoh masa dari permulaan subsistem rangkaian, sehingga permulaan perkhidmatan terakhir dan kemudian skrip rc.local dari SystemV, sistem pengendalian tidak akan dilindungi. Bayangkan situasi, sebagai contoh, jika sesetengah perkhidmatan (contohnya NFS) bermula terakhir dan beberapa kegagalan berlaku apabila ia bermula dan sebelum skrip rc.local dilancarkan. Oleh itu, rc.local tidak pernah bermula, dan sistem kami bertukar menjadi satu lubang besar.

Oleh itu, idea terbaik adalah mulakan peraturan netfilter/iptables semasa memuatkan. Debian mempunyai alat yang hebat untuk ini - direktori /etc/network/if-up.d/, di mana anda boleh meletakkan skrip yang akan dilancarkan apabila rangkaian bermula. Terdapat juga pasukan iptables-save Dan iptables-restore, yang menyimpan membuat pembuangan peraturan netfilter dari kernel dan memulihkan peraturan dari kernel dengan sewajarnya.

Jadi, Algoritma penjimatan iptables adalah lebih kurang seperti berikut:

  • Kami mengkonfigurasi tembok api untuk memenuhi keperluan anda menggunakan
  • buat pembuangan peraturan yang dibuat menggunakan arahan iptables-save > /etc/iptables.rules
  • cipta skrip import dump dibuat apabila rangkaian bermula (dalam direktori /etc/network/if-up.d/) dan jangan lupa untuk menjadikannya boleh laku:
# cat /etc/network/if-up.d/firewall #!/bin/bash /sbin/iptables-restore< /etc/iptables.rules exit 0 # chmod +x /etc/network/if-up.d/firewall

Lambakan peraturan diterima perintah iptables-save Ia mempunyai format teks dan oleh itu sesuai untuk diedit. Sintaks output untuk perintah iptables-save adalah seperti berikut:

# Dijana oleh iptables-save v1.4.5 pada Sab Dec 24 22:35:13 2011 *penapis:INPUT TERIMA :TERIMA DAHULU ....... # komen -A INPUT -i lo -j TERIMA -A INPUT ! -i lo -d 127.0.0.0/8 -j TOLAK ........... -A HADAPAN -j TOLAK KOMIT # Selesai pada Sab Dis 24 22:35:13 2011 # Dijana oleh iptables-save v1 .4.5 pada Sabtu 24 Dis 22:35:13 2011 *mentah ...... KOMITED

Garisan bermula dengan # - komen, baris pada * - ini ialah nama jadual, antara nama jadual dan perkataan KOMITED mengandungi parameter yang dihantar kepada perintah iptables. Parameter COMMIT- menunjukkan penyiapan parameter untuk jadual di atas. Baris yang bermula dengan titik bertindih menentukan rantai yang mengandungi jadual ini dalam format:

:dasar rantai [paket:bait]

di mana rantai- nama rantai, dasar- dasar rantaian lalai untuk jadual ini, dan kemudian pembilang paket dan bait pada masa perintah itu dilaksanakan.

Di RedHat fungsi storan arahan iptables dilaksanakan apabila rangkaian bermula dan berhenti melaksanakan fail /etc/sysconfig/iptables. Dan pengurusan fail ini terletak pada daemon iptables.

Sebagai pilihan lain untuk menyimpan peraturan, anda boleh mempertimbangkan untuk menggunakan parameter naik dalam fail /etc/network/interfaces dengan hujah dalam bentuk fail yang menyimpan arahan iptables yang menetapkan peraturan yang diperlukan.

Pokoknya

Itu akan cukup untuk hari ini. Saya pasti akan menerbitkan pelaksanaan tembok api yang lebih kompleks dalam artikel akan datang.

Salam sejahtera, McSim!