Cara Menyiapkan Firewall Iptables untuk membolehkan akses jauh ke perkhidmatan di Linux - Bahagian 8

Cara Menyiapkan Firewall Iptables untuk membolehkan akses jauh ke perkhidmatan di Linux - Bahagian 8
Jurutera Bersertifikat Yayasan Linux - Bahagian 8

Memperkenalkan Program Persijilan Yayasan Linux

Anda akan ingat dari bahagian 1 - mengenai iptables ini Lfce (Jurutera Bersertifikat Yayasan Linux ) siri bahawa kami memberikan penerangan asas tentang apa yang firewall adalah: mekanisme untuk menguruskan paket masuk dan meninggalkan rangkaian. Dengan "menguruskan" kita sebenarnya bermaksud:

  1. Untuk membenarkan atau mencegah paket tertentu masuk atau meninggalkan rangkaian kami.
  2. Untuk meneruskan paket lain dari satu titik rangkaian ke rangkaian yang lain.

berdasarkan kriteria yang telah ditetapkan.

Dalam artikel ini, kita akan membincangkan cara melaksanakan penapisan paket asas dan cara mengkonfigurasi firewall dengan iptables, frontend to netfilter, yang merupakan modul kernel asli yang digunakan untuk firewalling.

Sila ambil perhatian bahawa firewalling adalah subjek yang luas dan artikel ini tidak dimaksudkan untuk menjadi panduan yang komprehensif untuk memahami semua yang perlu diketahui mengenainya, tetapi sebagai titik permulaan untuk kajian yang lebih mendalam mengenai topik ini. Walau bagaimanapun, kami akan meninjau semula subjek di Bahagian 10 dari siri ini apabila kita meneroka beberapa kes penggunaan khusus firewall di Linux.

Anda boleh memikirkan firewall sebagai lapangan terbang antarabangsa di mana pesawat penumpang datang dan hampir 24/7. Berdasarkan beberapa syarat, seperti kesahihan pasport seseorang, atau negara asalnya (untuk menamakan beberapa contoh) dia mungkin, atau mungkin tidak, dibenarkan masuk atau meninggalkan negara tertentu.

Pada masa yang sama, pegawai lapangan terbang boleh mengarahkan orang ramai untuk bergerak dari satu tempat di lapangan terbang ke yang lain jika perlu, contohnya apabila mereka perlu melalui perkhidmatan kastam.

Kami mungkin mendapati analogi lapangan terbang berguna sepanjang tutorial ini. Perlu diingat hubungan berikut seperti yang kita teruskan:

  1. Orang = paket
  2. Firewall = Lapangan Terbang
  3. Negara #1 = Rangkaian #1
  4. Negara #2 = Rangkaian #2
  5. Peraturan lapangan terbang yang dikuatkuasakan oleh pegawai = peraturan firewall

IPTABLES - asas -asas

Di peringkat rendah, ia adalah kernel sendiri yang "memutuskan"Apa yang perlu dilakukan dengan paket berdasarkan peraturan yang dikelompokkan rantai, atau ayat. Rantai ini menentukan tindakan apa yang perlu diambil apabila pakej sepadan dengan kriteria yang ditentukan oleh mereka.

Tindakan pertama yang diambil oleh iptables akan terdiri daripada menentukan apa yang perlu dilakukan dengan satu paket:

  1. Terimalah (biarkan ia masuk ke dalam rangkaian kami)?
  2. Menolaknya (menghalangnya daripada mengakses rangkaian kami)?
  3. Ke hadapannya (ke rantai lain)?

Sekiranya anda tertanya -tanya mengapa alat ini dipanggil IPTABLES, Ini kerana rantai ini dianjurkan dalam jadual, dengan Jadual penapis Menjadi yang paling baik dan yang digunakan untuk melaksanakan penapisan paket dengan tiga rantaian lalai:

1. The Input Rantai mengendalikan paket masuk ke rangkaian, yang ditakdirkan untuk program tempatan.

2. The PENGELUARAN rantai digunakan untuk menganalisis paket yang berasal dari rangkaian tempatan, yang akan dihantar ke luar.

3. The Ke hadapan Rantaian memproses paket yang harus dikemukakan ke destinasi lain (seperti dalam hal penghala).

Bagi setiap rantai ini terdapat dasar lalai, yang menentukan apa yang perlu dilakukan secara lalai apabila paket tidak sepadan dengan mana -mana peraturan dalam rantai. Anda boleh melihat peraturan yang dibuat untuk setiap rantaian dan dasar lalai dengan menjalankan arahan berikut:

# iptables -l 

Dasar yang ada adalah seperti berikut:

  1. Menerima → Membiarkan paket melalui. Sebarang paket yang tidak sepadan dengan sebarang peraturan dalam rantai dibenarkan masuk ke dalam rangkaian.
  2. Jatuh → menjatuhkan paket secara senyap -senyap. Sebarang paket yang tidak sepadan dengan mana -mana peraturan dalam rantai dihalang daripada memasuki rangkaian.
  3. Menolak → menolak paket dan mengembalikan mesej bermaklumat. Yang ini khususnya tidak berfungsi sebagai polisi lalai. Sebaliknya, ia bertujuan untuk melengkapkan peraturan penapisan paket.
Dasar iptables Linux

Ketika datang untuk memutuskan dasar mana yang akan anda laksanakan, anda perlu mempertimbangkan kelebihan dan keburukan dari setiap pendekatan seperti yang dijelaskan di atas-Perhatikan bahawa tidak ada penyelesaian satu-saiz-semua-semua.

Menambah peraturan

Untuk menambah peraturan ke firewall, memohon perintah iptables seperti berikut:

# iptables -a chain_name kriteria -j sasaran 

di mana,

  1. -A berdiri untuk tambah (tambah peraturan semasa ke hujung rantai).
  2. chain_name sama ada input, output, atau ke hadapan.
  3. sasaran adalah tindakan, atau dasar, untuk memohon dalam kes ini (menerima, menolak, atau menjatuhkan).
  4. kriteria adalah set syarat -syarat yang mana paket akan diperiksa. Ia terdiri daripada sekurang -kurangnya satu (kemungkinan besar lebih) bendera berikut. Pilihan di dalam kurungan, dipisahkan oleh bar menegak, bersamaan antara satu sama lain. Selebihnya mewakili suis pilihan:
[--Protocol | -p] Protokol: Menentukan protokol yang terlibat dalam peraturan. [-Sumber-Port | -Sport] port: [port]: mentakrifkan pelabuhan (atau julat pelabuhan) di mana paket berasal. [-Destination-Port | -dport] port: [port]: mentakrifkan pelabuhan (atau julat pelabuhan) yang mana paket itu ditakdirkan. [-Sumber | -s] alamat [/topeng]: mewakili alamat sumber atau rangkaian/topeng. [-Destination | -d] Alamat [/Mask]: mewakili alamat destinasi atau rangkaian/topeng. [-State] Negeri (didahului oleh -m Negeri): Menguruskan paket bergantung kepada sama ada ia adalah sebahagian daripada sambungan negeri, di mana negeri boleh menjadi baru, ditubuhkan, berkaitan, atau tidak sah. [--in-Interface | -I] antara muka: Menentukan antara muka input paket. [--ut-antara muka | -o] antara muka: antara muka output. [--Jump | -J] Sasaran: Apa yang perlu dilakukan apabila paket sepadan dengan peraturan. 

Persekitaran ujian kami

Mari kita gam semua dalam 3 contoh klasik menggunakan persekitaran ujian berikut untuk dua yang pertama:

Firewall: Debian Wheezy 7.5 Nama Host: Dev2.Gabrielcanepa.Alamat IP: 192.168.0.15 
Sumber: Centos 7 Hostname: Dev1.Gabrielcanepa.Alamat IP: 192.168.0.17 

Dan ini untuk contoh terakhir

Pelayan dan Firewall NFSV4: Debian Wheezy 7.5 Nama Host: Alamat IP Debian: 192.168.0.10 
Sumber: Debian Wheezy 7.5 Nama Host: Dev2.Gabrielcanepa.Alamat IP: 192.168.0.15 
Contoh 1: Menganalisis perbezaan antara dasar penurunan dan menolak

Kami akan menentukan a Jatuh dasar pertama untuk ping input ke firewall kami. Iaitu, paket ICMP akan diturunkan secara senyap -senyap.

# ping -c 3 192.168.0.15 
# IPPABLES -a input --Protocol ICMP -in -interface ETH0 -J drop 
Drop permintaan ping ICMP

Sebelum meneruskan dengan Menolak Bahagian, kami akan membuang semua peraturan dari rantaian input untuk memastikan paket kami akan diuji oleh peraturan baru ini:

# IPPABLES -F Input # IPPABLES -a Input --Protocol ICMP -In -Interface ETH0 -J menolak 
# ping -c 3 192.168.0.15 
Menolak permintaan ping ICMP dalam firewall
Contoh 2: Melumpuhkan / Membolehkan Log masuk SSH dari Dev2 ke Dev1

Kami akan berurusan dengan PENGELUARAN Rantaian semasa kami mengendalikan lalu lintas keluar:

# iptables -a output-Protocol TCP-Destination-Port 22-Oout-Interface ETH0-Jump menolak 
Blok Log masuk SSH dalam Firewall
Contoh 3: Membenarkan / Mencegah Pelanggan NFS (dari 192.168.0.0/24) ke Gunung NFS4 Saham

Jalankan arahan berikut dalam pelayan / firewall NFSV4 untuk menutup pelabuhan 2049 dan 111 untuk semua jenis lalu lintas:

# IPPABLES -F # IPPABLES -a input -I ETH0 -S 0/0 -P TCP -DPORT 2049 -J REJECT # IPPABLES -A INPUT -I ETH0 -S 0/0 -P TCP -DPORT 111 -J TUHAN 
Blok port NFS dalam firewall

Sekarang mari kita buka pelabuhan tersebut dan lihat apa yang berlaku.

# iptables -a input -i et0 -s 0/0 -p tcp --dport 111 -j Terima # iptables -a input -i et0 -s 0/0 -p tcp --dport 2049 -j Terima 
Buka port NFS di firewall

Seperti yang dapat anda lihat, kami dapat melancarkan bahagian NFSV4 setelah membuka trafik.

Memasukkan, Menambah dan Menghapus Peraturan

Dalam contoh -contoh sebelumnya, kami menunjukkan cara menambahkan peraturan ke Input dan PENGELUARAN rantai. Sekiranya kita mahu memasukkannya ke atas kedudukan yang telah ditetapkan, kita harus menggunakan -I (huruf besar i) Tukar sebaliknya.

Anda perlu ingat bahawa peraturan akan dinilai satu demi satu, dan penilaian berhenti (atau melompat) apabila a Jatuh atau Menerima dasar dipadankan. Atas sebab itu, anda mungkin mendapati diri anda perlu memindahkan peraturan ke atas atau ke bawah dalam senarai rantai yang diperlukan.

Kami akan menggunakan contoh remeh untuk menunjukkan ini:

Periksa peraturan iptables firewall

Mari kita letakkan peraturan berikut,

# IPPABLES -I Input 2 -P TCP -DPORT 80 -J Terima 

pada kedudukan 2) dalam rantaian input (dengan itu bergerak sebelumnya #2 sebagai #3)

Iptables menerima peraturan

Menggunakan persediaan di atas, lalu lintas akan diperiksa untuk melihat sama ada ia diarahkan ke pelabuhan 80 Sebelum memeriksa port 2049.

Sebagai alternatif, anda boleh memadamkan peraturan dan mengubah sasaran peraturan yang tinggal Menolak (menggunakan -R suis):

# IPPABLES -D Input 1 # iptables -nl -v - -line -numbers # iptables -r input 2 -i et0 -s 0/0 -p tcp --dport 2049 -j menolak # ippes -r input 1 -p tcp tcp -Dport 80 -J menolak 
Iptables drop rule

Akhir sekali, tetapi tidak semestinya, anda perlu ingat bahawa agar peraturan firewall berterusan, anda perlu menyimpannya ke fail dan kemudian memulihkannya secara automatik apabila boot (menggunakan kaedah pilihan pilihan anda atau yang tersedia untuk pengedaran anda).

Menyimpan Peraturan Firewall:

# iptables-Ave>/etc/iptables/peraturan.v4 [on Ubuntu] # iptables-save> /etc /sysconfig /iptables [on centos /opensuse] 

Memulihkan Peraturan:

# IPPALES-RESTORE < /etc/iptables/rules.v4 [On Ubuntu] # iptables-restore < /etc/sysconfig/iptables [On CentOS / OpenSUSE] 

Di sini kita dapat melihat prosedur yang sama (menyimpan dan memulihkan peraturan firewall dengan tangan) menggunakan fail dummy yang dipanggil IPTABLES.pembuangan bukannya lalai seperti yang ditunjukkan di atas.

# iptables-save> iptables.pembuangan 
Dump Linux iptables

Untuk membuat perubahan ini berterusan di seluruh but:

Ubuntu: Pasang iptables-prersistent pakej, yang akan memuatkan peraturan yang disimpan di /etc/iptables/peraturan.v4 fail.

# apt-get pemasangan iptables-persisten 

Centos: Tambahkan 2 baris berikut ke /etc/sysconfig/iptables-config fail.

IPTABLES_SAVE_ON_STOP = "YA" IPTABLES_SAVE_ON_RESTART = "YA" 

Opensuse: Senarai yang dibenarkan pelabuhan, protokol, alamat, dan sebagainya (dipisahkan oleh koma) /etc/sysconfig/susefirewall2.

Untuk maklumat lanjut, rujuk fail itu sendiri, yang banyak dikomentari.

Kesimpulan

Contoh -contoh yang disediakan dalam artikel ini, sementara tidak meliputi semua loceng dan peluit iptables, melayani tujuan menggambarkan bagaimana untuk mengaktifkan dan melumpuhkan lalu lintas lalu lintas atau keluar.

Bagi anda yang peminat firewall, perlu diingat bahawa kami akan meninjau semula topik ini dengan aplikasi yang lebih spesifik di Bahagian 10 ini Lfce siri.

Jangan ragu untuk memberitahu saya jika anda mempunyai pertanyaan atau komen.

Menjadi Jurutera Bersertifikat Linux