Parameter iptables. Menguji dan menyahpepijat. Lihat konfigurasi semasa

Firewall yang boleh dipercayai adalah salah satu aspek yang paling penting untuk melindungi mana-mana OS moden. Kebanyakan pengedaran Linux mengandungi beberapa pelbagai instrumen tembok api. Panduan ini didedikasikan untuk salah satu yang paling popular - iptables.

Jadi, iptables adalah firewall standard, disertakan secara lalai dalam kebanyakan pengedaran Linux (nftables sedang dibangunkan untuk menggantikannya). Malah, iptables ialah antara muka pengguna untuk menguruskan sistem penapis bersih, yang seterusnya menguruskan tindanan rangkaian Linux. iptables membandingkan setiap paket yang masuk dengan satu set peraturan yang ditetapkan, dan kemudian memutuskan perkara yang perlu dilakukan dengannya seterusnya.

Perbincangan adalah tentang bagaimana sebenarnya iptables berfungsi. Artikel ini memfokuskan pada contoh praktikal yang menunjukkan cara membuat set peraturan asas untuk pelayan Ubuntu 14.04.

Perintah iptables asas

Bahagian ini mengandungi arahan asas yang boleh digunakan untuk mencipta set peraturan yang kompleks dan mengurus antara muka iptables secara keseluruhan.

Ingat: arahan iptables mesti dijalankan dengan keistimewaan root. Ini bermakna anda perlu melakukan salah satu daripada yang berikut:

  • log masuk sebagai pengguna root;
  • gunakan su atau sudo -i untuk mengembangkan cangkerang akar;
  • mulakan semua arahan dengan sudo (cara yang disyorkan dalam Ubuntu).

DALAM manual ini Pilihan terakhir terpakai.

Jadi, pertama anda perlu melihat senarai semasa peraturan iptables. Untuk melakukan ini, gunakan bendera -L:

sudo iptables -L
INPUT Rantaian (dasar TERIMA)


destinasi sumber pilihan prot sasaran
OUTPUT Rantaian (dasar TERIMA)
destinasi sumber pilihan prot sasaran

Seperti yang anda lihat, senarai itu mengandungi tiga rantai lalai (INPUT, OUTPUT dan FORWARD), setiap satunya mempunyai set dasar lalai (kini TERIMA). Anda juga boleh melihat nama lajur. Tetapi senarai ini tidak termasuk peraturan itu sendiri, kerana Ubuntu tidak disertakan dengan set peraturan lalai.

Menggunakan bendera -S, senarai ini boleh dilihat dalam format berbeza yang mencerminkan arahan yang diperlukan untuk mengaktifkan peraturan dan dasar:

sudo iptables -S
-P INPUT TERIMA
-P HADAPAN TERIMA
-P OUTPUT TERIMA

Untuk meniru konfigurasi, anda hanya perlu menaip sudo iptables pada permulaan setiap baris hasil. (Bergantung pada konfigurasi anda, prosedur ini mungkin sedikit lebih rumit apabila menyambung dari jauh; jika peraturan yang membenarkan sambungan semasa belum ditetapkan, anda tidak seharusnya menetapkan dasar DROP.)

Untuk menetapkan semula peraturan semasa (jika ada), taip:

sudo iptables -F

Sekali lagi, pada di fasa ini Dasar lalai adalah sangat penting kerana ia tidak akan diubah oleh arahan sebelumnya walaupun semua peraturan akan dialih keluar daripada rantai.

Sebelum menetapkan semula peraturan untuk sambungan jauh, anda mesti memastikan bahawa dasar TERIMA ditetapkan dalam rantai INPUT dan OUTPUT. Ini dilakukan seperti ini:

sudo iptables -P INPUT TERIMA
sudo iptables -P OUTPUT TERIMA
sudo iptables -F

Setelah anda membuat peraturan yang membenarkan sambungan jauh, anda boleh menetapkan dasar DROP. Jadi, mari kita teruskan untuk mencipta peraturan.

Mencipta peraturan iptables

Seperti yang dinyatakan di atas, tutorial ini tertumpu pada bekerja dengan rantai INPUT, kerana ia bertanggungjawab untuk trafik masuk. Pertama, kita perlu mempertimbangkan peraturan yang telah disebutkan - peraturan yang membenarkan sambungan SSH semasa.

Ia kelihatan seperti ini:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j TERIMA

Sudah tentu, ia mungkin kelihatan sangat rumit pada mulanya; Untuk memahami peraturan ini, biasakan diri anda dengan komponennya:

  • -INPUT: bendera -A menambah ( tambahkan) peraturan ke hujung rantai. Bahagian arahan ini memberitahu iptables untuk menambah peraturan pada penghujung rantai INPUT.
  • -m conntrack: sebagai tambahan kepada set fungsi asas, iptables juga mempunyai set sambungan, atau modul, yang bertanggungjawab untuk keupayaan tembok api tambahan. Bahagian arahan ini menunjukkan bahawa pengguna memerlukan akses kepada fungsi modul conntrack. Modul ini membolehkan anda menggunakan arahan yang memutuskan perkara yang perlu dilakukan dengan paket berdasarkan hubungannya dengan sambungan sebelumnya.
  • --ctstate: salah satu arahan yang tersedia semasa memanggil modul conntrack. Perintah ini membolehkan anda menjejaki hubungan pakej dengan pakej lain yang telah dilihat sebelum ini. Ia ditetapkan kepada ESTABLISHED (yang menerima paket yang merupakan sebahagian daripada sambungan sedia ada) dan BERKAITAN (menerima paket yang dikaitkan dengan sambungan yang telah ditetapkan). Bahagian peraturan inilah yang bertanggungjawab untuk sesi SSH semasa.
  • jTERIMA: Menentukan tindakan (sasaran) untuk dilakukan pada paket yang sepadan dengan peraturan. Dalam kes ini, iptables akan menerima paket yang memenuhi kriteria sebelumnya.

Peraturan ini mesti diletakkan pada permulaan untuk memastikan sambungan sedia ada sepadan dengan peraturan, diterima dan keluar dari rantaian tanpa mencapai peraturan DROP.

Dengan meminta senarai peraturan, anda boleh melihat perubahan:

sudo iptables -L
INPUT Rantaian (dasar TERIMA)
destinasi sumber pilihan prot sasaran
TERIMA semua -- di mana-mana sahaja ctstate BERKAITAN, DIBUAT
Rantaian FORWARD (dasar TERIMA)
destinasi sumber pilihan prot sasaran
OUTPUT Rantaian (dasar TERIMA)
destinasi sumber pilihan prot sasaran

Sebaik sahaja anda sudah biasa dengan sintaks asas, buat beberapa lagi peraturan yang menerima sambungan.

Menerima sambungan penting lain

Sebelum ini iptables menerima arahan untuk tidak menetapkan semula segala-galanya sambungan semasa, serta menerima semua sambungan yang berkaitan dengannya. Kini anda perlu membuat peraturan yang menerima sambungan yang tidak memenuhi kriteria di atas.

Biarkan dua port terbuka: port SSH(Panduan ini menggunakan port lalai 22; jika nilai yang diberi telah diubah, jangan lupa untuk memasukkan nilai baru); Lebih-lebih lagi, mari kita anggap bahawa pada komputer ini pelayan web berjalan pada port 80 secara lalai (jangan tambah peraturan ini jika tidak).

Jadi, baris yang anda perlu gunakan untuk membuat peraturan sedemikian kelihatan seperti ini:

sudo iptables -A INPUT -p tcp --dport 22 -j TERIMA
sudo iptables -A INPUT -p tcp --dport 80 -j TERIMA

Seperti yang anda lihat, mereka sangat serupa dengan peraturan pertama; mungkin mereka mempunyai struktur yang lebih ringkas. Pilihan baharu:

  • hlmtcp: pilihan ini membenarkan paket yang menggunakan TCP (protokol berorientasikan aliran yang digunakan oleh kebanyakan aplikasi kerana ia menyediakan komunikasi yang boleh dipercayai) melaluinya.
  • dport: Pilihan ini tersedia apabila menggunakan bendera -p tcp. Ia menentukan port masuk yang harus dipadankan oleh port paket. Peraturan pertama melangkau paket TCP, diarahkan ke port 22, dan peraturan kedua menerima trafik TCP ke port 80.

Sekarang kita perlu mencipta satu lagi peraturan ACCEPT untuk memastikan pelayan berfungsi seperti yang diharapkan. Biasanya, perkhidmatan berkomunikasi dengan bertukar-tukar paket; Untuk melakukan ini, mereka menggunakan antara muka cincin pseudo rangkaian - apa yang dipanggil peranti gelung balik, yang mengarahkan trafik kembali ke sumbernya, dan bukan ke komputer lain.

Iaitu, jika perkhidmatan 1 perlu berkomunikasi dengan perkhidmatan 2 mendengar sambungan pada port 4555, maka perkhidmatan 1 menghantar paket ke port 4555 menggunakan peranti gelung balik. Tingkah laku ini mesti dibenarkan kerana ia adalah satu syarat penting operasi yang betul bagi banyak program.

Untuk melakukan ini, tambahkan peraturan berikut:

sudo iptables -I INPUT 1 -i lo -j TERIMA

Ia sedikit berbeza daripada peraturan sebelumnya; lihat dengan lebih dekat:

  • sayaINPUT 1: Bendera -I memberitahu iptables untuk memasukkan peraturan. Bendera ini berbeza daripada bendera -A (yang hanya menambah peraturan pada penghujung rantai); ia menentukan rantai di mana peraturan itu harus ditambah dan lokasi peraturan di dalamnya. Dalam kes ini, peraturan perlu dimasukkan pada awal rantai INPUT, akibatnya semua peraturan akan menggerakkan satu kedudukan. Peraturan ini harus diletakkan pada permulaan rantai, kerana ia adalah salah satu peraturan utama dan tidak harus bergantung pada yang lain.
  • iloh: Komponen peraturan ini membenarkan paket yang menggunakan antara muka lo (“lo” ialah nama lain untuk peranti gelung balik). Ini bermakna bahawa mana-mana pakej yang menggunakan antara muka ini, mesti diterima.

Untuk melihat peraturan semasa, gunakan bendera -S, kerana bendera -L tidak mengeluarkan beberapa maklumat (contohnya, antara muka yang terikat dengan peraturan, yang sangat penting dalam kes peraturan terakhir):

sudo iptables -S
-P INPUT TERIMA
-P HADAPAN TERIMA
-P OUTPUT TERIMA
-A INPUT -i lo -j TERIMA
-A INPUT -m conntrack --ctstate BERKAITAN, DIBUAT -j TERIMA
-A INPUT -p tcp -m tcp --dport 22 -j TERIMA
-A INPUT -p tcp -m tcp --dport 80 -j TERIMA

Mencipta Peraturan DROP

Jadi, pada masa ini, 4 peraturan telah dibuat yang menerima paket berdasarkan kriteria tertentu. Walau bagaimanapun, pelayan tidak menyekat mana-mana paket lain pada masa ini.

Jika paket melalui rantai INPUT dan tidak sepadan dengan mana-mana empat peraturan, dasar lalai (ACCEPT) akan dilaksanakan, yang akan menerima paket satu cara atau yang lain. Sekarang ia perlu diubah.

Ini boleh dilakukan dalam dua cara, yang mempunyai perbezaan yang agak ketara.

Cara pertama ialah mengedit dasar lalai rantai INPUT; untuk melakukan jenis ini:

sudo iptables -P INPUT DROP

Dasar ini akan memantau dan menggugurkan semua paket yang tidak sepadan dengan mana-mana peraturan rantaian INPUT. Satu akibat daripada jenis reka bentuk ini ialah ia akan menggugurkan paket walaupun selepas peraturan itu sendiri telah ditetapkan semula.

Sudah tentu, ini meningkatkan tahap keselamatan pelayan; bagaimanapun, ini boleh membawa akibat yang serius jika pengguna tidak mempunyai cara lain untuk menyambung ke pelayan. Selalunya, penyedia pengehosan menyediakan konsol web untuk menyambung ke pelayan sekiranya berlaku masalah sedemikian. Konsol ini berfungsi sebagai konsol maya sambungan tempatan, jadi iptables tidak akan bertindak balas kepadanya.

Anda boleh meminta pelayan menetapkan semula sambungan secara automatik jika peraturan dipadamkan. Ini akan menjadikan pelayan lebih selamat dan sukar untuk diakses. Ini juga bermakna anda boleh memasukkan peraturan pada penghujung rantai, dan semua paket yang tidak diingini akan digugurkan.

Pendekatan alternatif ialah menambah peraturan di penghujung rantaian yang membuang semua paket yang tidak sepadan, sambil mengekalkan dasar TERIMA.

Untuk mengembalikan dasar TERIMA kepada rantaian INPUT, taip:

sudo iptables -P INPUT TERIMA

Kini anda boleh menambah peraturan pada penghujung rantai ini yang akan menggugurkan semua paket tidak sepadan:

sudo iptables -A INPUT -j DROP

Di bawah keadaan operasi biasa, hasilnya akan sama seperti menggunakan dasar DROP. Peraturan ini menggugurkan setiap paket yang mencapainya, menghalang paket yang tidak sepadan dengan peraturan daripada mencapai pelayan.

Pada asasnya, pendekatan kedua digunakan apabila perlu untuk mengekalkan dasar TERIMA yang menerima trafik. Iaitu, walaupun semua peraturan ditetapkan semula, pengguna masih boleh mengakses mesin pada rangkaian. Pendekatan ini membolehkan anda melakukan tindakan lalai tanpa perlu mengubah dasar yang akan digunakan pada rantaian kosong.

Sudah tentu, ini juga bermakna bahawa mana-mana peraturan yang perlu ditambah pada penghujung rantai mesti datang sebelum peraturan tetapan semula. Ini boleh dilakukan sama ada dengan mengalih keluar peraturan tetapan semula buat sementara waktu:

sudo iptables -D INPUT -j DROP
sudo iptables -A INPUT new_rule
sudo iptables -A INPUT -j DROP

atau dengan memasukkan peraturan baharu pada penghujung rantai (tetapi sebelum peraturan tetapan semula), menyatakan nombor baris. Untuk memasukkan peraturan pada baris 4, taip:

sudo iptables -I INPUT 4 new_rule

Jika terdapat banyak peraturan, pengiraan nombor talian secara manual agak bermasalah; dalam kes ini, iptables boleh menomborkan baris:

sudo iptables -L --line-nombor
INPUT Rantaian (dasar DROP)

1 TERIMA semua -- di mana-mana sahaja
2 TERIMA semua -- di mana-mana sahaja ctstate BERKAITAN, DIBUAT
3 TERIMA tcp -- di mana-mana sahaja tcp dpt:ssh
4 TERIMA tcp -- di mana-mana sahaja tcp dpt:http
Rantaian FORWARD (dasar TERIMA)
num sasaran prot opt ​​sumber destinasi
OUTPUT Rantaian (dasar TERIMA)
num sasaran prot opt ​​sumber destinasi

Ini membolehkan anda mengesahkan bahawa peraturan telah dimasukkan pada baris yang betul.

Menyimpan tetapan iptables

Secara lalai, semua peraturan yang belum disimpan kekal berkuat kuasa sehingga but semula pelayan seterusnya; Sejurus selepas but semula, peraturan yang tidak disimpan akan hilang.

Dalam sesetengah kes, ini berguna kerana ia membolehkan pengguna yang telah menyekat diri mereka secara tidak sengaja mendapat akses kepada pelayan. Walau bagaimanapun, dalam kebanyakan kes ia masih lebih mudah untuk menyimpan peraturan dan memuatkannya apabila pelayan bermula.

Ini boleh dilakukan dalam beberapa cara; Yang paling mudah ialah menggunakan pakej iptables-persistent, yang boleh dimuat turun dari repositori lalai Ubuntu:

sudo apt-get kemas kini
sudo apt-get install iptables-persistent

Semasa pemasangan, pakej akan menentukan sama ada peraturan semasa perlu disimpan untuk kegunaan masa hadapan. muat turun automatik; Jika peraturan semasa telah diuji (membenarkan sambungan SSH) dan memenuhi semua keperluan, peraturan tersebut boleh disimpan.

Setelah pemasangan selesai, perkhidmatan baharu yang dipanggil iptables-persistent akan muncul, yang akan bermula apabila pelayan dibut semula dan menyambung semula peraturan yang dipasang.

Keputusan

Panduan ini membantu anda mengkonfigurasi tembok api mengikut keperluan pengguna. Sudah tentu, terdapat banyak lagi utiliti yang serupa, dan sesetengah daripadanya mungkin lebih mudah digunakan; Namun, iptables adalah salah satu alat yang lebih baik, jika hanya kerana ia menunjukkan beberapa struktur penapis bersih asas dan disertakan dalam banyak sistem.

Tag: ,

Dalam artikel ini kami akan memberitahu anda cara mengkonfigurasi iptables pada Linux. Anda akan mengetahui apa itu dan mengapa anda perlu mengkonfigurasi fungsi ini. Menyediakan iptables pada Linux adalah agak mudah.

Menyediakan iptables pada Linux: Apakah iptables?

Iptables ialah utiliti firewall baris arahan yang menggunakan dasar berantai untuk membenarkan atau menyekat trafik. Apabila sambungan cuba mewujudkan dirinya pada sistem anda, iptables mencari peraturan dalam senarainya untuk memadankannya. Jika ia tidak menemuinya, ia menggunakan tindakan lalai.

Iptables hampir selalu diprapasang pada mana-mana pengedaran Linux. Untuk mengemas kini/memasangnya, cuma muat turun pakej iptables:

sudo apt-get install iptables

Terdapat alternatif GUI kepada iptables seperti Firestarter, tetapi iptables tidak begitu rumit jika anda hanya menjalankan beberapa arahan. Berhati-hati apabila menyediakan peraturan iptables, terutamanya jika anda menggunakan SSH'd pada pelayan, kerana satu arahan yang salah boleh mengunci anda untuk masa yang lama sehingga ia dikomit secara manual pada mesin fizikal.

Menyediakan iptables pada Linux untuk boneka

By the way, kita telah pun bercakap tentang perkara ini sebelum ini. Mungkin ini juga akan menarik untuk anda. Pautan boleh didapati di atas.

Menyediakan iptables pada Linux, seperti yang kami katakan di atas, agak mudah. Tetapi sebelum anda mula menyediakan, anda perlu membiasakan diri dengan konsep umum pilihan.

Jenis litar

Iptables menggunakan tiga litar berbeza: input, forward dan output.

Input- Rantaian ini digunakan untuk mengawal tingkah laku sambungan masuk. Contohnya, jika pengguna cuba SSH ke dalam komputer/pelayan anda, iptables akan cuba memadankan alamat IP dan port kepada peraturan dalam rantaian input.

ke hadapan- Rantaian ini digunakan untuk sambungan masuk yang sebenarnya tidak dihantar secara tempatan. Fikirkan tentang penghala - data sentiasa dihantar kepadanya, tetapi jarang sebenarnya ditakdirkan untuk penghala itu sendiri; Data hanya diubah hala ke halaman pendaratan. Melainkan anda melakukan sebarang penghalaan, NAT atau apa-apa lagi pada sistem anda yang memerlukan pemajuan, anda tidak akan menggunakan rantai ini.

Terdapat satu cara yang boleh dipercayai semak sama ada sistem anda menggunakan atau memerlukan rantai hadapan.

Tangkapan skrin ini adalah pelayan yang telah berjalan selama beberapa minggu dan tidak mempunyai sekatan pada sambungan masuk atau keluar. Seperti yang anda lihat, rantaian input memproses 11 GB paket, dan rantaian output memproses 17 GB. Sebaliknya, rantaian hadapan tidak perlu memproses satu paket. Ini kerana pelayan tidak melakukan sebarang pemajuan atau tidak digunakan sebagai peranti hujung ke hujung.

Output - Rantaian ini digunakan untuk sambungan keluar. Sebagai contoh, jika anda cuba ping tapak linuxinsider, iptables akan menyemak rantaian keluarannya untuk melihat peraturan yang digunakan untuk ping dan linuxinsider sebelum memutuskan sama ada untuk membenarkan atau menolak percubaan sambungan.

Amaran

Walaupun semakan hos luaran kelihatan seperti sesuatu yang hanya perlu melalui rantaian output, perlu diingat bahawa rantaian input juga akan digunakan untuk mengembalikan data. Apabila menggunakan iptables untuk mengunci sistem anda, ingat bahawa banyak protokol memerlukan komunikasi dua hala, jadi kedua-dua rantai input dan output mesti dikonfigurasikan dengan betul. SSH ialah protokol biasa yang orang lupa dayakan pada kedua-dua rantaian.

Gelagat Dasar Lalai

Sebelum anda mula mengkonfigurasi peraturan tertentu, anda mesti memutuskan perkara yang anda mahu gelagat lalai bagi ketiga-tiga rantai ini. Dengan kata lain, apakah yang anda mahu iptables lakukan jika sambungan tidak sepadan dengan mana-mana peraturan sedia ada?

Untuk melihat rantaian dasar yang dikonfigurasikan untuk mengendalikan trafik yang tidak sepadan, jalankan perintah iptables -L.

Seperti yang anda lihat, kami juga menggunakan arahan grep untuk mendapatkan hasil yang lebih bersih. Dalam tangkapan skrin ini, rangkaian kami pada masa ini dikonfigurasikan untuk menerima trafik.

Lebih kerap daripada tidak, anda mahu sistem anda menerima sambungan secara lalai. Melainkan anda telah menukar peraturan rantaian dasar sebelum ini, tetapan ini sepatutnya sudah dikonfigurasikan. Walau apa pun, berikut ialah arahan untuk menerima sambungan lalai:

iptables --dasar INPUT TERIMA
iptables --policy OUTPUT ACCEPT
iptables --polisi HADAPAN TERIMA

Secara lalai, dalam peraturan terima, anda boleh menggunakan iptables untuk menolak alamat IP tertentu atau nombor port sambil terus menerima semua sambungan lain. Kami akan sampai ke arahan tersebut dalam satu minit.

Jika anda lebih suka menolak semua sambungan dan menentukan secara manual yang mana anda ingin benarkan untuk disambungkan, anda mesti menukar dasar lalai litar anda untuk menolak. Ini mungkin hanya berguna untuk pelayan yang mengandungi maklumat sensitif dan hanya akan disambungkan dengan alamat IP yang sama.

iptables --dasar INPUT DROP
iptables --dasar OUTPUT DROP
iptables --policy FORWARD DROP

Jawapan Sambungan

Dengan dasar rantaian lalai dikonfigurasikan, anda boleh mula menambahkan peraturan pada iptables supaya ia tahu apa yang perlu dilakukan apabila ia menemui sambungan ke alamat IP atau port tertentu. Dalam panduan ini, kita akan melihat tiga daripada "jawapan" yang paling biasa dan kerap digunakan.

Terima— membenarkan sambungan.

Jatuhkan- Putuskan sambungan, bertindak seolah-olah ia tidak pernah berlaku. Ini adalah yang terbaik jika anda tidak mahu sumber menyedari bahawa sistem anda wujud.

Tolak— tolak sambungan, tetapi hantar mesej ralat. Ini adalah yang terbaik jika anda tidak mahu sumber tertentu menyambung ke sistem anda, tetapi anda mahu mereka tahu bahawa tembok api anda telah menyekatnya.

Cara terbaik untuk menunjukkan perbezaan antara tiga peraturan ini adalah untuk menunjukkan rupanya apabila PC cuba ping mesin Linux dengan iptables yang dikonfigurasikan untuk setiap pilihan ini.

Kebenaran sambungan:

Mengalih keluar sambungan:

Penolakan Sambungan:

Netmask atau ciri untuk menunjukkan julat alamat IP.

Menyediakan iptables pada Linux: Kaedah sambungan

Jika kita bercakap tentang topik "Menyediakan iptables di Linux", maka kita perlu bercakap tentang kaedah sambungan.

Benarkan atau sekat sambungan tertentu
Dengan dasar yang dikonfigurasikan, anda boleh mengkonfigurasi iptables untuk membenarkan atau menyekat alamat, julat alamat dan port tertentu. Dalam contoh ini, kami akan menetapkan sambungan kepada DROP, tetapi anda boleh menukarnya kepada TERIMA atau TOLAK, bergantung pada keperluan anda dan cara anda mengkonfigurasi rantaian dasar anda.

Catatan. Dalam contoh ini kita akan menggunakan iptables -A untuk menambah peraturan pada rantaian sedia ada. Iptables bermula di bahagian atas senarai dan melalui setiap peraturan sehingga ia menemui peraturan yang sepadan dengannya. Jika anda perlu memasukkan peraturan di atas yang lain, anda boleh menggunakan iptables -I untuk menentukan nombor yang sepatutnya ada dalam senarai.

Sambungan dari alamat IP yang sama

Contoh ini menunjukkan cara menyekat semua sambungan daripada alamat IP 10.10.10.10..

iptables -A INPUT -s 10.10.10.10 -j DROP

Sambungan daripada pelbagai alamat IP

Contoh ini menunjukkan cara untuk menyekat semua alamat IP dalam julat rangkaian 10.10.10.0/24. Anda boleh menggunakan netmask atau garis miring ke hadapan standard untuk menentukan julat alamat IP.

iptables -A INPUT -s 10.10.10.0/24 -j DROP

iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Sambungan ke port tertentu

Contoh ini menunjukkan cara untuk menyekat sambungan SSH dari 10.10.10.10.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

Anda boleh menggantikan "ssh" dengan mana-mana protokol atau nombor port. Bahagian -p tcp kod memberitahu iptables protokol yang digunakan oleh sambungan. Jika anda menyekat protokol yang menggunakan UDP dan bukannya TCP, maka -p udp akan diperlukan sebaliknya.

Contoh ini menunjukkan cara menyekat sambungan SSH daripada sebarang alamat IP.

iptables -A INPUT -p tcp --dport ssh -j DROP

Keadaan sambungan

Seperti yang kami nyatakan sebelum ini, banyak protokol memerlukan komunikasi dua hala. Sebagai contoh, jika anda ingin membenarkan sambungan SSH ke sistem anda, litar input dan output memerlukan peraturan ditambahkan padanya. Tetapi, bagaimana jika anda mahu SSH log masuk ke sistem anda dibenarkan? Tidakkah menambah peraturan pada rantaian output juga akan mengakibatkan percubaan SSH keluar?

Di sinilah keadaan sambungan masuk, yang memberi anda pilihan untuk membenarkan komunikasi dua hala, tetapi hanya membenarkan sambungan sehala dibuat. Lihat contoh ini di mana sambungan SSH DARI 10.10.10.10 dibenarkan, tetapi sambungan SSH KE 10.10.10.10 tidak. Walau bagaimanapun, sistem dibenarkan untuk menghantar semula maklumat melalui SSH semasa sesi telah ditetapkan, menjadikan komunikasi SSH mungkin antara kedua-dua hos.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m negeri --negeri BARU, DITUBUHKAN -j TERIMA

iptables -A OUTPUT -p tcp --sukan 22 -d 10.10.10.10 -m negeri --negeri DITUBUHKAN -j TERIMA

Menyimpan perubahan

Perubahan yang anda buat pada peraturan iptables akan dibuang apabila perkhidmatan iptables dimulakan semula melainkan anda mengeluarkan arahan untuk menyimpan perubahan. Perintah ini mungkin berbeza bergantung pada pengedaran anda:

sudo /sbin/iptables-save

Red Hat/CentOS:

/sbin/service iptables simpan

/etc/init.d/iptables save

Perintah lain

Senarai peraturan iptables yang dikonfigurasikan pada masa ini:

Menambah pilihan -v akan memberi anda maklumat paket dan bait, dan menambah -n akan mengandungi semua nilai angka. Dengan kata lain, nama hos, protokol dan rangkaian disenaraikan sebagai nombor.

Untuk mengosongkan semua peraturan yang dikonfigurasikan pada masa ini, anda boleh menjalankan arahan flush.

Terjemahan daripada sumber bahasa Inggeris yang sangat baik HowToGeek.

Jika anda masih mempunyai sebarang soalan mengenai topik "Menyediakan iptables pada Linux untuk boneka", anda boleh menulisnya dalam borang ulasan di tapak web kami.

Jika anda mendapati ralat, sila serlahkan sekeping teks dan klik Ctrl+Enter.

IPtables ialah utiliti yang digunakan untuk mengurus tembok api di Linux. Ia adalah alat yang berkuasa dan mudah untuk dan sambungan yang tidak diingini. Keseluruhan proses terkandung dalam peraturan iptables, yang boleh diedit dan dilihat. Maklumat lebih terperinci disediakan dalam artikel.

Sejarah penciptaan

Sebelum ini IPTables dalam sistem Linux Firewall IPFW telah digunakan, dipinjam daripada BSD. Kemudian, dengan versi 2.4 kernel Linux, ia mula disertakan dengan tembok api Netfilter dan utiliti IPTables untuk mengurusnya. Dalam metodologi kerjanya, semua aspek dipelihara dan sedikit dikembangkan secara fungsional.

Struktur dan reka bentuk IPTables

Memasuki tembok api, pakej itu melalui beberapa semakan. boleh jadi jumlah semak atau sebarang analisis tahap kernel lain. Kemudian tiba masanya untuk melalui rantaian PREROUTING. Seterusnya, ia diperiksa mengikut mana pengalihan ke rantai seterusnya berlaku. Jika paket tidak mempunyai alamat, seperti, sebagai contoh, dalam TCP, maka ia dihantar ke rantai FORWARD. Dalam kes di mana terdapat alamat tertentu, rantai INPUT mengikuti, dan kemudian kepada daemon atau perkhidmatan yang dimaksudkan. Sambutan daripada mereka juga mesti melalui beberapa rantaian, contohnya OUTPUT. Pautan terakhir dalam proses ini ialah rantai POSTROUTING.

Sekarang sedikit tentang rantai. Setiap daripadanya mengandungi beberapa jadual. Nama mereka mungkin diulang, tetapi ini tidak menjejaskan kerja dalam apa cara sekalipun, kerana mereka tidak saling berkaitan.

Jadual, seterusnya, mengandungi beberapa peraturan. Pada asasnya, peraturan ialah syarat tertentu yang mesti dipenuhi oleh pakej yang diperiksa. Bergantung pada hasilnya, tindakan tertentu dilakukan pada pakej.

Oleh itu, melalui semua peringkat rangkaian, paket melawati semua rantai secara berurutan dan dalam setiap rantaian diperiksa untuk mematuhi syarat peraturan tertentu. Jika jadual tidak dibuat oleh pengguna, maka tindakan lalai dilakukan, pada asasnya TERIMA, yang membolehkan anda terus bergerak ke hadapan, atau DROP, yang menghentikan paket.

Rantaian pratetap datang dalam kategori berikut:

  • PREROUTING. Pemprosesan awal semua pakej masuk.
  • INPUT. Ini termasuk paket yang dihantar terus ke komputer tempatan.
  • KE HADAPAN. Digunakan untuk "paket transit" yang mengikut jadual penghalaan.
  • PENGELUARAN. Digunakan untuk paket keluar.
  • POSTROUTING. Peringkat terakhir dalam laluan paket keluar melalui semua rantai.

Sebagai tambahan kepada rantai terbina dalam, pengguna boleh membuat atau memadam sendiri.

Lihat dan urus peraturan IPtables

Seperti yang dinyatakan sebelum ini, semua rantai mengandungi syarat tertentu untuk pakej. Utiliti IPTables digunakan untuk melihat dan mengurus peraturan IPTables. Setiap peraturan individu adalah baris dengan satu set syarat untuk paket, serta tindakan padanya, bergantung pada hasilnya.

Format arahan kelihatan seperti ini: iptables [-t nama jadual sedang diproses] arahan dipanggil [kriteria] [tindakan dilakukan].

Apa-apa yang terkandung dalam boleh ditinggalkan. Jika ini ialah parameter yang menentukan jadual, maka penapis akan digunakan. Untuk menggunakan nama tertentu, anda perlu menambah suis -t. Perintah yang dipanggil membolehkan anda mencetuskan tindakan yang diperlukan, contohnya, menambah peraturan IPtables atau mengalih keluarnya. "Kriteria" menunjukkan parameter yang mana pemilihan akan berlaku. Dan dalam "tindakan" terdapat tindakan yang perlu dilakukan jika syarat itu dipenuhi.

Perintah untuk mencipta dan melihat peraturan IPtables

  • Tambah(-A). Apabila menggunakan arahan, anda menentukan rantai dan jadual yang anda ingin tambahkan peraturan yang diperlukan. Nilai pasukan adalah bahawa ia melakukan ini pada akhir senarai.
  • Padam (-D). Seperti namanya, ia memadamkan peraturan. Sebagai parameter, anda boleh menentukan kedua-dua nama penuh dan nombor yang diberikan kepada mereka.
  • Namakan semula rantai (-E). Menukar nama rantai. Perintah menentukan nama lama, kemudian nama baru.
  • Siram (-F). Membersihkan sepenuhnya semua peraturan jadual tertentu.
  • Sisipkan(-I). Perintah ini memasukkan peraturan yang diperlukan ke dalam lokasi yang ditunjukkan oleh nombor.
  • Senarai(-L). Lihat peraturan Iptables. Jika tiada jadual ditentukan, penapis lalai akan digunakan.
  • Dasar (-P). Dasar lalai untuk rantai yang ditentukan digunakan.
  • Gantikan (-R). Mengubah peraturan di bawah nombor yang ditentukan, untuk apa yang perlu.
  • Padam-rantai (-X). Perintah ini memadam semua rantai yang dibuat. Hanya yang diprapasang akan kekal.
  • Sifar (-Z). Menetapkan semula pembilang data yang dihantar dalam rantai yang ditentukan.

Sedikit mengenai parameter pemilihan paket

Mereka boleh dibahagikan kepada tiga jenis:

  • Kriteria umum. Mereka boleh ditentukan untuk sebarang peraturan. Mereka tidak memerlukan sambungan sambungan dan modul khas, dan juga tidak bergantung pada protokol mana yang akan digunakan.
  • Bukan kriteria umum. Ia tersedia apabila menggunakan kriteria umum.
  • eksplisit. Untuk menggunakan jenis ini, anda perlu menyambungkan pemalam khas untuk netfilter. Di samping itu, anda mesti menggunakan suis -m dalam arahan.

Perlu dibincangkan sedikit tentang parameter yang sering ditemui digunakan semasa menganalisis paket:

  • Protokol (-p). Menunjukkan protokol.
  • Sumber(-s). Parameter ini menentukan alamat IP sumber dari mana paket itu datang. Ia boleh ditentukan dalam beberapa cara. Hos, alamat atau keseluruhan subnet tertentu.
  • Destinasi (-d). Alamat destinasi pakej. Sama seperti yang sebelumnya, ia boleh diterangkan dalam beberapa cara.
  • Dalam antara muka (-i). Menentukan antara muka masuk pakej. Terutamanya digunakan untuk NAT atau pada sistem dengan pelbagai antara muka.
  • Antara muka luar (-o). Antara muka keluar.

Beberapa contoh

Untuk melihat peraturan nat IPTables? anda perlu menggunakan arahan - "iptables -L -t nat". Ketahui status umum tembok api - "iptables -L -n -v". Di samping itu, arahan ini membolehkan anda melihat peraturan IPtables yang tersedia di seluruh sistem. Masukkan peraturan di tempat tertentu dalam jadual, contohnya, antara baris pertama dan kedua - "iptables -I INPUT 2 -s 202.54.1.2 -j DROP". Kemudian lihat jika ia telah ditambah - "iptables -L INPUT -n --line-nombor".

Untuk menyekat alamat tertentu, contohnya, 12.12.12.12 - "iptables -A INPUT -s 12.12.12.12 -j DROP".

Bantuan untuk iptables - "man iptables". Jika anda memerlukan maklumat tentang arahan tertentu, gunakan "iptables -j DROP -h".

Akhirnya

guna Perintah IPtables mesti dilakukan dengan berhati-hati, kerana tetapan yang salah(tanpa disedari) boleh menyebabkan kegagalan rangkaian atau kegagalan sepenuhnya. Oleh itu, adalah wajar mengkaji manual dan arahan secara terperinci sebelum konfigurasi. Di tangan yang mahir, IPTables boleh diubah menjadi pertahanan yang boleh dipercayai jaringan rangkaian. Pentadbir sistem menggunakan utiliti secara aktif untuk mencipta sambungan yang diasingkan daripada capaian yang tidak dibenarkan.

Skrip awal yang kecil (peraturan, faq iptables) untuk desktop atau pelayan ringkas. Dalam kes ini, contoh bekerja dengan port satu atau perisian lain yang dijalankan pada komputer anda. Langkah berjaga-jaga keselamatan mesti dipatuhi pada mana-mana komputer. Mitos bahawa Linux lebih selamat adalah tidak benar; semuanya bergantung pada kejanggalan tangan pentadbir. Terdapat juga sistem Windows yang dilindungi dengan baik, serta sistem Linux yang terbuka kepada hampir semua orang. Oleh itu, ia masih bernilai berfikir sedikit perlindungan rangkaian komputer. Di bawah ialah beberapa peraturan iptables yang mungkin berguna pada mulanya.

Saya secara khusus menggantikan $IPT dengan /sbin/iptables, jika seseorang hanya memerlukan satu peraturan, supaya tidak mengubah apa-apa, mereka hanya menyalinnya dan melaksanakannya. Sememangnya, terdapat beberapa peraturan di sini, tidak pelbagai VPN dan lain-lain, jika anda mahu, tambah.

Baris ini boleh disalin sepenuhnya ke dalam skrip dan hanya dilaksanakan. Untuk kes biasa ini sudah cukup. Jika mana-mana aplikasi tidak boleh mengakses rangkaian, pembalakan telah ditambah khas. Hanya buka tail -f /var/log/syslog (atau milik anda, jika berbeza daripada Ubuntu) dan tonton! Jika anda mempunyai soalan, tambahkannya pada perbincangan dan kami akan menyelesaikannya bersama-sama.

PS Sebagai tambahan kepada peraturan ini, fikirkan tentang perkara yang perlu anda ambil daripada artikel Pengoptimuman TCP.

Bagaimana untuk memadamkan peraturan dalam Iptables

Dihantar oleh Alexey Ubozhenko

Beberapa kali saya telah menemui hakikat bahawa orang yang pada umumnya bijak membuat kesilapan yang tidak dapat dimaafkan. Sebagai contoh, mereka membuka port di mana pangkalan data berjalan ke seluruh Internet.

Blog tentang pentadbiran sistem. Artikel tentang Linux, Windows, sistem storan NetApp dan virtualisasi.

Ini sering berlaku kepada pemula DevOps yang telah menulis kod sepanjang hidup mereka, dan kini tanggungjawab mereka juga termasuk menyediakan pelayan. Terdapat tutorial yang bagus dalam talian persediaan asas firewall dalam Linux dan *nix lain, tetapi selalunya ini adalah helaian pada banyak skrin. Jadi, saya harap tutorial yang lebih ringkas ini akan berguna kepada seseorang.

Penting! Sangat mudah untuk tersilap firewall mesin sehingga anda tidak boleh mengaksesnya lagi. Ini benar terutamanya untuk pengehosan awan. Sebagai contoh, jika dalam AWS anda menutup semua port dari 1024 hingga 65536, atas sebab tertentu mesin ternyata ditutup selepas but semula semuanya secara umum pelabuhan. Jika anda dihoskan di awan, adalah lebih baik untuk menyediakan tembok api melalui antara muka web yang disediakan oleh pengehosan.

Nota kecil tentang istilah. Firewall yang dibina ke dalam kernel Linux dipanggil Netfilter, dan iptables ialah utiliti untuk menguruskan firewall ini. Ramai orang tersilap percaya bahawa firewall itu dipanggil iptables. Ini adalah salah. Dengan menyebut sesuatu seperti "Saya menapis paket menggunakan iptables", anda menunjukkan kepada orang lain kejahilan anda.

Secara umum, jenis masalah yang boleh diselesaikan menggunakan Netfilter:

  • Benarkan/tolak trafik masuk ke port tertentu menggunakan protokol tertentu (IPv4/IPv6, TCP/UDP) dengan alamat yang ditentukan(IP, MAC) atau subnet;
  • Semuanya adalah sama untuk lalu lintas keluar;
  • Anda boleh, sebagai contoh, mengabaikan sepenuhnya semua paket ICMP;
  • Menyediakan NAT, lihat siaran tentang memasang dan mengkonfigurasi OpenVPN;
  • Saya pernah mendengar bahawa guru sebenar boleh menyediakan DDoS dan perlindungan kekerasan, mengehadkan akses rangkaian kepada aplikasi, pengguna atau kumpulan tertentu dan melakukan perkara gila lain;

Saya ingin ambil perhatian bahawa pada mulanya saya secara peribadi mendapati utiliti iptables amat menyusahkan berbanding ipfw dalam FreeBSD. Nasib baik, selepas bekerja dengannya untuk beberapa lama, semua bendera seperti -A, -D, -j dan lain-lain menjadi biasa, jadi bersabarlah. Mari lihat arahan asas.

Tunjukkan semua peraturan:

Anda mungkin perasan bahawa Netfilter mempunyai beberapa "rantaian" - sekurang-kurangnya INPUT, OUTPUT dan FORWARD.

Saya secara peribadi juga mempunyai rantai DOCKER pada mesin saya. Buat pertama kalinya, anda boleh menganggap dua yang pertama sebagai semua trafik masuk dan keluar, masing-masing, dan melupakan yang lain buat sementara waktu. Kemungkinan besar anda tidak akan memerlukannya sama sekali.

Alih keluar semua peraturan:

Tukar dasar (tingkah laku lalai) rantaian:

iptables -P INPUT DROP
iptables -P INPUT TERIMA

Tolak akses daripada hos/subnet:

iptables -A INPUT -s 123.45.67.89 -j DROP
iptables -A INPUT -s 123.45.0.0/16-j DROP

Anda juga boleh menggunakan nama domain:

iptables -A INPUT -s example.ru -j DROP

Larangan sambungan keluar:

iptables -A OUTPUT -d 123.45.67.89 -j DROP

Anda boleh menggunakan penolakan dalam peraturan:

iptables -A INPUT !-s 123.45.67.89 -j DROP

Memadamkan peraturan mengikut nombornya dalam rantaian:

iptables -D INPUT 1

Mengalih keluar peraturan berdasarkan perkara yang dilakukan:

iptables -D INPUT -s 123.45.67.89 -j DROP

Pilihan -p menentukan protokol. Anda boleh menggunakan semua, icmp, tcp, udp, atau nombor protokol daripada /etc/protocols. Bendera --sport menentukan port dari mana paket itu dihantar, dan bendera --dport menentukan port destinasi:

iptables -A INPUT -p tcp --sport80-j TERIMA
iptables -A INPUT -p tcp --dport80-j TERIMA

Memasukkan peraturan pada permulaan rantai:

iptables -I INPUT ...

Atau anda boleh menentukan kedudukan tertentu:

iptables-save >/etc/iptables.rules

Pulihkan peraturan:

iptables-restore

Sekarang mari kita lihat beberapa contoh praktikal. Contohnya, beginilah rupa emulasi netsplit dalam ujian yang menyemak gelagat aplikasi yang menggunakan Kluster Akka:

run(node1, s"iptables -A INPUT -s $node2 -j DROP")
run(node1, s"iptables -A INPUT -s $node3 -j DROP")
run(node1, s"iptables -A OUTPUT -d $node2 -j DROP")
run(node1, s"iptables -A OUTPUT -d $node3 -j DROP")

Pemulihan berlaku dengan cara yang sama, hanya bendera -A digantikan dengan bendera -D.

Contoh yang lain. Anda perlu mengetahui port mana yang mendengar pada mesin dan tutup port yang tidak diperlukan. Kami masuk ke dalam kereta dan berkata:

Contoh output:

Sambungan Internet aktif (hanya pelayan)
Proto Recv-Q Send-Q Alamat Tempatan Alamat Asing Negeri Nama PID/Prog
tcp 0 0 0.0.0.0:80 0.0.0.0:* DENGAR 3210/nginx
tcp 0 0 0.0.0.0:4369 0.0.0.0:* DENGAR 1789/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* DENGAR 797/sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* DENGAR 990/postgres

Nginx dan SSHd melihat Internet, ini adalah perkara biasa. PostgreSQL hanya mendengar antara muka tempatan, jadi tiada masalah dengan itu sama ada. Tetapi epmd tetap keluar (anda boleh menyemaknya dengan telnet dari mesin lain), dan ini tidak bagus. Anda hanya boleh menutup port 4369. Cara melakukan ini ditunjukkan di atas. Atau anda boleh pergi lebih jauh dan menafikan semua sambungan dari luar ke port 81 dan lebih lama:

iptables -A INPUT -m multiport \
-p tcp --dports81:65535!-s 127.0.0.0/8-j DROP

Ini menggunakan sambungan multiport, yang membolehkan anda menentukan julat port.

Mari periksa sama ada semuanya berfungsi. Jika OK, simpan peraturan:

iptables-save >/etc/iptables.rules

Supaya peraturan diambil apabila sistem but, kami buat fail baharu/etc/network/if-pre-up.d/iptables:

iptables-restorekeluar0

... dan kami berkata:

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

Kaedah ini telah diuji untuk berfungsi pada Ubuntu 14.04 LTS.

Ia harus berfungsi pada Debian juga. Anda akan menemui penerangan tentang cara alternatif untuk memulihkan peraturan firewall pada permulaan sistem dalam nota yang telah disebutkan tentang OpenVPN.

Bahan tambahan untuk mereka yang ingin mengetahui lebih lanjut tentang Netfilter:

Bagaimanakah anda menyediakan tembok api pada pelayan anda?

Tag: Linux, Keselamatan, Rangkaian.

Utiliti baris arahan iptables digunakan untuk mengkonfigurasi tembok api netfilter yang dibina ke dalam sistem berasaskan kernel Linux.

Arahan ini sesuai untuk dummies yang ingin memahami aspek keselamatan rangkaian, dan untuk profesional berpengalaman sebagai helaian tipu.

Menetapkan prinsip

Sintaks umum untuk menggunakan iptables ialah:

iptables -t<таблица> <команда> <цепочка>[nombor]<условие> <действие>

<таблица>

peraturan netfilter diedarkan merentasi 4 jadual, setiap satunya mempunyai tujuan tersendiri (butiran lanjut di bawah). Ia ditentukan dengan suis -t, tetapi jika parameter ini tidak ditentukan, tindakan akan dilakukan untuk jadual lalai - penapis.

<команда>

Arahan menunjukkan jenis tindakan yang kami lakukan pada netfilter, contohnya, mencipta atau memadam peraturan.

<цепочка>

Setiap jadual mempunyai rantai, untuk setiap satu peraturan itu sendiri dicipta. Sebagai contoh, untuk jadual penapis di atas terdapat tiga rantai yang telah ditetapkan - INPUT (paket masuk), OUTPUT (paket keluar) dan FORWARD (paket transit).

[nombor]

Sesetengah arahan memerlukan menyatakan nombor peraturan, contohnya, untuk memadam atau mengedit.

<условие>

Sesuatu syarat menerangkan kriteria untuk melaksanakan peraturan tertentu.

<действие>

Sebenarnya, apa yang kita lakukan dengan pakej itu jika ia memenuhi kriteria syarat?

* dalam keadilan, perlu diperhatikan bahawa kunci tindakan tidak perlu datang pada penghujungnya. Cuma format ini paling kerap ditemui dalam arahan dan menjadikan peraturan lebih mudah dibaca.

kunci iptables dan contoh penggunaannya

Untuk bekerja dengan jadual (iptables -t)

Biar saya ingatkan anda bahawa semua peraturan dalam netfilter diedarkan merentas jadual. Untuk bekerja dengan jadual tertentu, anda mesti menggunakan suis -t.

Pasukan

Kekunci berikut menentukan tindakan yang dilakukan oleh utiliti iptables.

kunci Penerangan dan contoh
-A Menambah peraturan pada penghujung senarai:
iptables -A INPUT -s 192.168.0.15 -j DROP
menafikan mesej masuk daripada 192.168.0.15.
-D Memadamkan peraturan:
iptables -D INPUT 10
padam peraturan dalam rantaian INPUT dengan nombor 10.
-saya Memasukkan peraturan dalam bahagian tertentu senarai:
iptables -I INPUT 5 -s 192.168.0.15 -j DROP
masukkan peraturan ke-5 dalam senarai.
-R Menggantikan peraturan.
iptables -R OUTPUT 5 -s 192.168.0.15 -j TERIMA
menggantikan peraturan ke-5 kami daripada melarang kepada mengizinkan.
-F Menetapkan semula peraturan dalam rantai.
iptables -F INPUT
-Z Menetapkan semula statistik.
iptables -Z INPUT
-N Mencipta rantai.
iptables -N CHAINNEW
-X Memadam rantai.
iptables -X CHAINNEW
-P Tentukan peraturan lalai.
iptables -P INPUT DROP
-E Namakan semula rantai.
iptables -E CHAINNEW CHAINOLD

syarat

Kekunci ini mentakrifkan syarat peraturan.

kunci Penerangan dan contoh
-hlm Protokol rangkaian. Pilihan yang sah ialah TCP, UDP, ICMP atau SEMUA.
iptables -A INPUT -p tcp -j TERIMA
benarkan semua sambungan tcp masuk.
-s Alamat sumber - nama hos, alamat IP atau subnet dalam tatatanda CIDR.
iptables -A INPUT -s 192.168.0.50 -j DROP
menafikan mesej masuk daripada nod 192.168.0.50
-d Alamat destinasi. Prinsip penggunaan adalah serupa dengan kunci sebelumnya -s.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
tolak keluar ke nod 192.168.0.50
-i Penyesuai rangkaian yang melaluinya paket tiba (INPUT).
iptables -A INPUT -i eth2 -j DROP
lumpuhkan trafik masuk untuk antara muka Ethernet eth2.
-o Penyesuai rangkaian dari mana paket dihantar (OUTPUT).
iptables -A OUTPUT -o eth3 -j TERIMA
Benarkan mesej keluar daripada antara muka Ethernet eth3.
--dport Tempat destinasi.
iptables -A INPUT -p tcp --dport 80 -j TERIMA
Benarkan panggilan masuk pada port 80.
--sukan Pelabuhan sumber.
iptables -A INPUT -p tcp --sukan 1023 -j DROP
melarang mesej masuk dari port 1023.

Kekunci yang disenaraikan juga menyokong pembinaan menggunakan tanda ! .

Menyediakan netfilter menggunakan iptables

Ia menyongsangkan keadaan, contohnya,
iptables -A INPUT -s ! 192.168.0.50 -j DROP
akan menafikan sambungan kepada semua hos kecuali 192.168.0.50.

Tindakan

Tindakan yang akan dilakukan pada pakej yang sepadan dengan kriteria syarat. Setiap jadual mempunyai set tindakan yang dibenarkan sendiri. Ditentukan menggunakan kunci -j.

Jadual Tindakan Penerangan
penapis TERIMA Membenarkan pakej.
JATUHKAN Menafikan bungkusan itu.
TOLAK Melarang menghantar mesej kepada sumber.
nat BERTOKOR Untuk paket keluar, gantikan alamat IP sumber dengan alamat antara muka dari mana paket itu pergi.
SNAT Sama seperti MASQUERADE, tetapi menunjukkan antara muka rangkaian tertentu yang alamatnya akan digunakan untuk spoofing.
DNAT Penggantian alamat untuk pakej masuk.
UBAH ARAH Mengubah hala permintaan ke port lain pada sistem yang sama.
mangle T.O.S. Pengubahsuaian medan TOS (pengutamaan trafik).
DSCP Menukar DSCP (juga keutamaan trafik).
TTL Tukar TTL (seumur hidup paket).
H.L. Sama seperti TTL, tetapi untuk IPv6.
TANDA Penandaan pakej. Digunakan untuk penapisan atau pembentukan seterusnya.
CONNMARK Penandaan sambungan.
TCPMSS Menukar nilai MTU.

Contoh arahan iptables yang biasa digunakan

Perintah am

Lihat peraturan dengan nombornya:

iptables -L --nombor baris

Untuk setiap jadual, anda perlu melihat peraturan secara berasingan:

iptables -t nat -L --nombor baris

Alih keluar semua peraturan:

Tetapkan peraturan lalai:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

* dalam contoh ini, secara lalai, peraturan penafian (DROP) akan berfungsi untuk semua paket masuk (INPUT) dan keluar (OUTPUT).

Membenarkan semua

Kaedah 1: Dengan menambah peraturan:

iptables -I INPUT 1 -j TERIMA

iptables -I OUTPUT 1 -j TERIMA

iptables -I HADAPAN 1 -j TERIMA

* ketiga-tiga arahan ini akan mencipta peraturan yang membenarkan semua paket masuk, keluar dan transit.

Kaedah 2. Membersihkan peraturan:

* di sini kita mula-mula mengalih keluar semua peraturan (-F), kemudian menetapkan dasar lalai untuk membenarkan masuk, keluar dan transit (-S).

Kaedah 3. Melumpuhkan perkhidmatan (adalah mudah untuk melumpuhkan tembok api buat sementara waktu untuk mendiagnosis masalah):

Bekerja dengan peraturan

Tambahkan peraturan pada penghujung senarai:

iptables -A INPUT -p tcp --dport 25 -j TERIMA

iptables -A INPUT -p tcp -s ! 192.168.0.25 —dport 993 -i eth0 -j TERIMA

Tambah julat port:

iptables -A INPUT -p tcp --dport 3000:4000 -j TERIMA

* dalam kes ini, dari 3000 hingga 4000.

Sisipkan peraturan:

iptables -I FORWARD 15 -p udp -d 8.8.8.8 --dport 53 -i eth1 -j TERIMA

Port forwarding

Terdapat dua kaedah persediaan.

1. PERATURAN PREOUTING + POSTROUTING:

iptables -t nat -A PREROUTING -p tcp -m tcp -d 19.8.232.80 —dport 22 -j DNAT —ke-destinasi 192.168.1.15:2222

iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.15 —sukan 2222 -j SNAT —ke-sumber 19.8.232.80:22

* Di mana 19.8.232.80 — alamat tempat kami mendengar permintaan sambungan; 22 — pelabuhan untuk pemajuan; 192.168.1.15 2222 - pelabuhan dalaman.

2. PERATURAN PREROUTING + FORWARD:

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 22 -j DNAT --to-destination 192.168.1.15:2222

iptables -A HADAPAN -p tcp -d 192.168.1.15 —keadaan dport 22 -m —keadaan BARU,DITETAPKAN,BERKAITAN -j TERIMA

* Di mana eth1— antara muka rangkaian di mana kami mendengar permintaan; 22 — pelabuhan untuk pemajuan; 192.168.1.15 — alamat IP dalaman tempat kami memindahkan semua permintaan; 2222 - pelabuhan dalaman.

Memulakan persediaan

Benarkan SSH:

iptables -A INPUT -p tcp --dport 22 -j TERIMA

Kami menetapkan dasar untuk melarang mesej masuk dan membenarkan semua mesej keluar:

iptables -P OUTPUT TERIMA

Kami mencipta peraturan untuk operasi biasa apt-get:

iptables -A INPUT -p tcp --sukan 80 -m negeri --negeri DITUBUHKAN -j TERIMA

Benarkan ICMP (untuk melaksanakan arahan ping):

iptables -A INPUT -p icmp -j TERIMA

Peraturan menyimpan (kekal)

Secara lalai, semua peraturan berhenti berfungsi selepas rangkaian atau komputer dimulakan semula. Terdapat beberapa kaedah konfigurasi untuk menyimpan peraturan selepas but semula.

Kaedah 1. iptables-save

Simpan peraturan ke fail:

iptables-save > /etc/iptables.rules

Buka tetapan rangkaian:

vi /etc/network/interfaces

dan tambah baris:

pra-uptables-pulihkan< /etc/iptables.rules

Kaedah 2: iptables-persistent

Pasang pakej iptables-persistent:

apt install iptables-persistent

Untuk menyimpan peraturan, masukkan arahan:

perkhidmatan iptables-persistent save

Kaedah 3. perkhidmatan iptables

Berfungsi pada versi Linux yang lebih lama:

Kaedah 4: iptables.init

Berfungsi pada CentOS:

/usr/libexec/iptables/iptables.init simpan

Ubuntu dan CentOS

Di bilik bedah moden sistem Ubuntu dan CentOS tidak mempunyai iptables secara lalai.

Anda perlu memasangnya atau menggunakan utiliti yang lebih baharu.

Pada CentOS

Sebagai program biasa pengurusan firewall menggunakan firewall-cmd. Untuk butiran lanjut, baca arahan tentang Cara mengkonfigurasi firewall pada CentOS.

Jika anda perlu menggunakan iptables, pasang pakej dengan utiliti:

yum pasang iptables-services

Lumpuhkan firewall:

systemctl menghentikan firewalld

systemctl melumpuhkan firewalld

Benarkan dan lancarkan iptables:

systemctl membolehkan iptables

Dalam Ubuntu

ufw kini digunakan untuk menguruskan tembok api.

Untuk bekerja dengan iptables, pasang pakej berikut:

apt-get install iptables-persistent

Lumpuhkan ufw:

# Rangkaian# Keselamatan# UNIX# Ubuntu# Linux

Adakah arahan ini membantu anda?

DI SEBALIK "DINDING API":
FIREWALL (FIREWALL) DAN GATEWAY KE INTERNET
DALAM DEBIAN GNU/LINUX 4.0 ETCH

Panduan praktikal untuk mengatur akses Internet yang selamat
daripada komputer yang berasingan dan daripada rangkaian tempatan dalam Debian GNU/Linux 4.0 Etch
Sedikit teori

Setiap capaian ke Internet bukan sahaja memungkinkan untuk menyambung ke pelbagai pelayan dan tapak, tetapi juga mewujudkan potensi bahaya penembusan ke dalam komputer kita dari luar. Bahaya ini tidak boleh diabaikan, kerana pada masa ini kebanyakan percubaan untuk mendapatkan akses tanpa kebenaran kepada komputer pengguna daripada Internet adalah sebahagian daripada perniagaan jenayah yang teratur. Selepas sistem anda berjaya digodam, mereka akan cuba menggunakan komputer anda sama ada untuk menghantar spam atau organisasi DoS serangan ke atas komputer lain, atau untuk sebarang tujuan jahat lain. Mengabaikan bahaya ini senario kes terbaik akan meningkatkan kos trafik anda dan memperlahankan komputer anda; paling teruk, ia mungkin tanpa disedari melibatkan anda dalam aktiviti jenayah kumpulan siber.

Keadaan ini diburukkan lagi oleh fakta bahawa dalam beberapa sistem pengendalian (masih) meluas, banyak port dibiarkan terbuka secara lalai, yang membolehkan penyerang dari Internet menyambung kepada pengguna tanpa disedari yang kedua.

Untuk menghalang sambungan yang tidak dibenarkan dari luar dan untuk menapis trafik masuk/keluar masuk sistem operasi program khas mesti digunakan - tembok api(firewall Inggeris), juga dikenali sebagai tembok api Dan tembok api. Terangkan di bawah persediaan mudah firewall dalam sistem pengendalian percuma Debian GNU/Linux 4.0.

Penggunaan tembok api menjadi sangat relevan jika anda mempunyai lebih daripada satu komputer, tetapi rangkaian rumah atau pejabat, yang komputernya mengakses Internet.

Malah rangkaian tempatan yang kecil mesti disusun dengan betul. Katakan anda mempunyai pusat akses sambungan Internet berkelajuan tinggi (contohnya, modem ADSL) dengan antara muka Ethernet (iaitu rangkaian).

Terdapat godaan (didorong oleh pengesyoran buta huruf, seperti dalam arahan untuk modem ADSL saya) untuk menyambungkan modem terus ke suis, dan kemudian menyambung ke suis Semua komputer rangkaian tempatan. Dalam kes ini, modem secara dinamik mengeluarkan melalui suis alamat IP tempatan, tetapi ternyata setiap komputer dibiarkan bersendirian dengan Internet! Baik modem mahupun suis tidak boleh menjadi penghalang kepada orang yang menganiaya. Penyerang boleh mengimbas Semua komputer rangkaian tempatan yang disusun dengan cara ini.

Penyelesaian yang logik dan selamat ialah mencipta penghalang antara modem dan rangkaian tempatan - dalam bentuk komputer berasingan dengan "dinding api" (firewall) dikonfigurasikan padanya. Komputer ini mempunyai dua antara muka - dengan satu ia "kelihatan" di Internet (iaitu, ia disambungkan secara fizikal ke modem), dengan satu lagi ia menghadap rangkaian tempatan (dan disambungkan secara fizikal ke suis, yang mana komputer lain juga bersambung). Memandangkan komputer kita dengan tembok api kini menjadi hab untuk komputer lain untuk mengakses Internet, ia juga dipanggil pintu masuk(pintu masuk Inggeris).

Dengan organisasi rangkaian tempatan sedemikian, kemungkinan penggodaman dikurangkan dengan ketara - penyerang "melihat" hanya pintu masuk dari Internet, dan tembok api dipasang pada pintu masuk, dan tidak mudah untuk menggodamnya.

Menyediakan iptables pada Linux untuk boneka

Komputer rangkaian tempatan boleh melayari Internet dan kekal selamat.

Menyediakan tembok api menggunakan konfigurator tembok api arno-iptables

Untuk mengatur tembok api dalam GNU/Linux program digunakan iptables, yang, sebagai peraturan, dipasang segera apabila memasang kebanyakan pengedaran. DALAM Debian GNU/Linux Anda boleh menyemak ini dengan menjalankannya dengan hak pentadbir kebolehan. Jika perlu, kami pasang iptables.

Walau bagaimanapun, konfigurasi manual iptables adalah tugas yang tidak remeh dan hanya boleh dilakukan oleh pakar dalam bidang tersebut pentadbiran sistem. Oleh itu, untuk mengkonfigurasi peraturan yang mana tembok api akan beroperasi, lebih baik digunakan konfigurator khas. DALAM Debian GNU/Linux Program ini arno-iptables-firewall. Sebaik sahaja dilancarkan, ia menanyakan satu siri soalan, yang berdasarkannya ia menghasilkan peraturan untuk fungsi tembok api iptables.

Taipkan konsol dengan hak superuser:

#aptitude pasang arno-iptables-firewall

Pada permulaan pemasangan, program akan bertanya sama ada kita benar-benar mahu mengkonfigurasi tembok api dengannya. iptables:

Pertama, anda perlu menentukan antara muka luaran - "melihat" di Internet, i.e. disambungkan ke modem. Tetapan antara muka ditakrifkan dalam fail konfigurasi /etc/network/interfaces. Ia mungkin kelihatan seperti ini, sebagai contoh:

# Ini adalah antara muka lo - menunjuk ke mesin kami sendiri. auto lo iface lo inet loopback address 127.0.0.1 netmask 255.0.0.0 # Ini ialah antara muka eth0, yang disambungkan ke Internet (modem ADSL) # Keanehannya ialah alamat IP diberikan kepadanya secara dinamik oleh pembekal, # oleh itu ia ditetapkan pilihan dhcp auto eth0 iface eth0 inet dhcp # Ini adalah antara muka yang menghadap rangkaian tempatan # Alamat rangkaian tempatan ialah 192.168.2.0/24 # Untuk tujuan keselamatan pada rangkaian tempatan, get laluan mempunyai alamat IP statik— 192.168.2.1, # jadi pilihan statik ditetapkan # Topeng rangkaian — 255.255.255.0 # Alamat penyiaran rangkaian dalam kes ini ialah 192.168.2.255 auto eth1 iface eth1 alamat statik inet 192.168.2.15.255.255.255.255.255.255 .2.25 5

Jadi, melihat tetapan /etc/network/interfaces, kami menunjukkan kepada configurator firewall bahawa antara muka kami adalah luaran eth0:

Kepada soalan sama ada kami diberi alamat IP daripada pembekal secara dinamik(menggunakan protokol DHCP), kami menjawab secara afirmatif:

Soalan seterusnya ialah perkhidmatan apa yang akan disediakan dari komputer kita pengguna luar Internet. Kami tiada! Kami tidak terlibat dalam pengehosan web profesional dan tidak berniat untuk mengedarkan maklumat kepada pihak luar. Kami membiarkan barisan kosong.

Kemudian timbul persoalan sama ada kami akan menyediakan sebarang perkhidmatan melalui UDP. Juga tidak - dan kami juga membiarkan talian kosong!

Adakah kita perlu ping dari dunia luar (iaitu, untuk memeriksa sama ada terdapat sambungan dengan komputer di mana tembok api dipasang)? Dalam kes kami, ini agak boleh diterima:

Ini melengkapkan persediaan untuk komputer berasingan yang bukan gerbang rangkaian tempatan. Jika kami merancang untuk menggunakan komputer sebagai pintu masuk, kami perlu menjawab beberapa soalan lagi. Kami menunjukkan antara muka yang mana pintu masuk menghadap rangkaian tempatan - dalam kes kami, ia adalah eth1, seperti yang jelas daripada /etc/network/interfaces(jika tidak, untuk komputer "sunyi", biarkan medan ini kosong):

Apabila ditanya sama ada untuk membenarkan terjemahan NAT, i.e. mengubah hala lalu lintas dari Internet melalui pintu masuk ke rangkaian tempatan dan kembali, kami menjawab "ya" - ini adalah salah satu tugas utama kami dalam kes ini:

Kemudian timbul persoalan: segmen rangkaian tempatan manakah yang boleh diakses melalui pengalihan ke rangkaian luaran? Semua komputer di rangkaian tempatan kami mempunyai hak untuk mengakses Internet; nyatakan nilai semula 192.168.2.0/24

Akhirnya, kami mengesahkan keinginan kami untuk melancarkan iptables tanpa cek tambahan dari pihak kami, peraturan untuk tembok api yang dijana secara automatik oleh configurator:

Selepas ini, jika semuanya berjalan lancar, mesej yang serupa dengan yang di bawah dipaparkan. Ia kini akan muncul setiap kali komputer get laluan but dan memberitahu anda bahawa firewall telah berjaya dilancarkan:

Arno's Iptables Firewall Script v1.8.8c ——————————————————————————————————————————————————————————Modul IPTABLES yang Dikesan OK…

Memuatkan modul IPTABLES tambahan: Semua modul IPTABLES dimuatkan! Mengkonfigurasi /proc/…. tetapan: Mendayakan anti-spoof dengan rp_filter Mendayakan perlindungan SYN-flood melalui SYN-cookies Melumpuhkan pengelogan martians Melumpuhkan penerimaan mesej ubah hala ICMP Menetapkan maks. jumlah sambungan serentak ke 16384 Mendayakan perlindungan terhadap paket yang dihalakan sumber Menetapkan tamat masa sambungan lalai Membolehkan pengurangan keupayaan DoS'ing Tetapan Lalai TTL=64 Menyahdayakan ECN (Pemberitahuan Kesesakan Eksplisit) Mendayakan sokongan untuk jadual /proc/ laluan Flushing IP dinamik selesai… Peraturan flushing dalam jadual penapis Menetapkan dasar lalai (selamat) Menggunakan "info" peringkat log untuk syslogd Menyediakan peraturan firewall: ————————————————————————— - Menerima paket daripada peranti gelung balik tempatan Mendayakan penetapan saiz paket maksimum melalui MSS Mendayakan TOS yang rosak Pengelogan siluman (probe nmap dsb.) didayakan Pengelogan paket dengan bendera TCP yang buruk didayakan Pengelogan paket TIDAK SAH dinyahdayakan Pengelogan paket berpecah didayakan Pengelogan akses daripada alamat tersimpan didayakan Menyediakan peraturan anti-spoof Membaca peraturan IPTABLES tersuai daripada /etc/arno-iptables-firewall/custom-rules Memuatkan pemalam (pengguna) Menyediakan dasar INPUT untuk jaring luaran (INET): Mendayakan sokongan untuk DHCP IP yang diberikan pada antara muka luaran: eth0 Pengelogan hos yang disekat secara eksplisit didayakan Pengelogan sambungan output tempatan yang ditolak didayakan Paket TIDAK akan disemak untuk alamat sumber persendirian Membenarkan seluruh dunia menghantar permintaan ICMP(ping) Pengelogan permintaan ICMP yang digugurkan paket (ping) didayakan Pengelogan paket ICMP lain yang digugurkan didayakan Pengelogan kemungkinan imbasan tersembunyi didayakan Pengelogan percubaan sambungan (lain) ke port TCP KEISTIMEWAAN didayakan Pengelogan percubaan sambungan (lain) ke port UDP KEISTIMEWAAN didayakan Pengelogan percubaan sambungan (lain) untuk Port TCP UNPRIVILEGED didayakan Pembalakan percubaan sambungan (lain) ke port UDP UNPRIVILEGED didayakan Pembalakan protokol IP lain (bukan TCP/UDP/ICMP) percubaan sambungan didayakan Pembalakan ICMP banjir didayakan Menggunakan dasar INET pada antara muka luaran (INET): eth0 ( tanpa subnet luaran yang ditentukan) Menyediakan dasar INPUT untuk antara muka dalaman (LAN): eth1 Membenarkan permintaan ICMP(ping) Membenarkan semua protokol (lain) Menyediakan dasar FORWARD untuk antara muka dalaman (LAN): eth1 Log of dinafikan sambungan LAN->INET FORWARD didayakan Menyediakan dasar LAN->INET: Membenarkan permintaan ICMP(ping) Membenarkan semua protokol (lain) Membolehkan penyamaran(NAT) melalui antara muka luaran: eth0 Menambah hos (dalaman) : 192. 168.2.0/24 Keselamatan dikuatkuasakan untuk antara muka luaran dalam rantaian FORWARD 16 Jan 23:53:12 Semua peraturan firewall digunakan.

Nota 1. Dalam kebanyakan kes, pelancaran firewall yang berjaya berlaku selepas komunikasi pertama dengan configurator. Jika sesuatu tidak berfungsi, amat disyorkan untuk mengulang konfigurasi dengan menjalankan semula konfigurasi dengan hak pengguna super:

# dpkg-konfigurasi semula arno-iptables-firewall

Ini akan menghapuskan ralat rawak yang boleh berlaku semasa menjawab soalan daripada configurator semasa pengalaman pertama anda berkomunikasi dengannya. Jika ini tidak membantu, anda boleh cuba membetulkannya secara manual fail konfigurasi program arno-iptables-firewall, iaitu: /etc/arno-iptables-firewall/firewall.conf. Ia mungkin berguna untuk melawati tapak rumah pencipta program ini di: http://rocky.eld.leidenuniv.nl/. Ia mengandungi panduan yang sangat bermaklumat untuk bekerja dengan program, Soalan Lazim yang menarik dan, sebagai tambahan, terdapat maklumat tentang versi baharu program.

Nota 2. Kita tidak boleh lupa itu tiada sesiapa Firewall tidak boleh memberikan jaminan 100% terhadap keselamatan operasi komputer anda di Internet. Walau bagaimanapun, perlindungan tembok api tidak boleh diabaikan. Kita mesti melakukan segala-galanya dalam kuasa kita untuk kemudian percaya kepada belas kasihan Tuhan. “Jikalau Tuhan tidak memelihara kota, sia-sialah penjaga berjaga-jaga.”(Mazmur 127:1).

Sumber artikel

Saya menulis catatan blog tentang asas Peraturan iptables untuk pengguna pengeluaran sudah lama dahulu, dan anda mungkin perlu membacanya dan artikel berkaitan tentang Stateful Firewall.

Tetapi pra kernel 2.6.39 (yang termasuk dan anda boleh menggunakannya untuk menyenarai putih IP jika anda mempunyai lebih daripada 10 untuk senarai putih (di mana 10 adalah sewenang-wenangnya)).

Menyediakan iptables untuk dummies

Keadaan pemegang pertama yang kita tahu kita mahu menerima atau memadam, dan antara muka.

Jika anda hanya mahu membenarkan IP sahaja, tiada keadaan

anda berkemungkinan besar akan menghadapi masalah yang berkaitan dengan ini dan saya cadangkan menggunakan syarat untuk menjadikan hidup anda lebih mudah. Sebagai contoh, tidak menyelesaikan dan pasti akan menimbulkan masalah untuk aplikasi tertentu.

Iptables bertanggungjawab terutamanya untuk penapisan paket. Menyediakan 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 Tentang. bahawa pakejnya telah ditolak
  • RETURN - Hentikan paket bergerak sepanjang rantai semasa dan kembalikan ke rantai panggilan

Pasukan

  • -A - Tambahkan peraturan pada rantai
  • -D - Keluarkan 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 - Nyatakan 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 HADAPAN (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