Iptables dengan parameter -m dan -p

8

Saya memiliki aturan ini di iptables saya:

iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP

Apakah saya benar-benar membutuhkan "-m tcp"? Saya sudah menggunakan "-p tcp", jadi haruskah saya menggunakan "-m tcp" agar lebih aman?

Samul
sumber

Jawaban:

9

Dengan -p tcpopsi, modul tcp sudah dimuat dan karenanya agak berlebihan dan tidak harus menggunakan -m tcpopsi dan saya tidak melihat alasan mengapa menggunakan opsi ini akan membuat aturan lebih aman.

Silakan lihat halaman manual iptables untuk pemahaman dan perbandingan yang lebih baik:

-p, --protocol [!] protokol

Protokol aturan atau paket yang akan diperiksa. Protokol yang ditentukan dapat berupa salah satu dari tcp, udp, icmp, atau semua, atau dapat berupa nilai numerik, mewakili salah satu dari protokol ini atau yang berbeda. Nama protokol dari / etc / protocols juga diperbolehkan. SEBUAH "!" Argumen sebelum protokol membalikkan tes. Angka nol sama dengan semua. Protokol semua akan cocok dengan semua protokol dan diambil sebagai default ketika opsi ini dihilangkan.

...

Cocokkan Ekstensi

iptables dapat menggunakan modul pencocokan paket yang diperluas. Ini dimuat dalam dua cara: secara implisit, ketika -p atau --protocol ditentukan, atau dengan opsi -m atau --match, diikuti oleh nama modul yang cocok; setelah ini, berbagai opsi baris perintah tambahan tersedia, tergantung pada modul tertentu. Anda dapat menentukan beberapa modul kecocokan yang diperluas dalam satu baris, dan Anda dapat menggunakan opsi -h atau --help setelah modul ditentukan untuk menerima bantuan khusus untuk modul itu.

Dan untuk daftar opsi yang tersedia dengan -p tcplihat di sini:

http://ipset.netfilter.org/iptables-extensions.man.html#lbCF

Seperti yang dinyatakan di atas, dengan penggunaan -mopsi dimungkinkan untuk menambahkan modul ekstensi dan lebih banyak opsi yang cocok kemudian tersedia. Misalnya modul cpu :

cpu

[!] - nomor cpu

Cocokkan cpu yang menangani paket ini. cpus diberi nomor dari 0 hingga NR_CPUS-1 Dapat digunakan dalam kombinasi dengan RPS (Remote Packet Steering) atau NIC multiqueue untuk menyebarkan lalu lintas jaringan pada antrian yang berbeda.

Contoh:

iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-port 8080

iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-port 8081

Tersedia sejak Linux 2.6.36.

Daftar lengkap iptables-extensions.


Pertanyaan tambahan dari OP: Saya tidak mengerti apa yang cocok dengan -m. String apa? -m tcp cocok dengan apa? Mencoba menemukan kata "tcp" di mana?

Jawab: -muntuk pencocokan nama modul dan bukan string. Dengan menggunakan modul tertentu Anda mendapatkan opsi tertentu yang cocok. Lihat contoh modul cpu di atas. Dengan -m tcpmodul tcp dimuat. Modul tcp memungkinkan opsi tertentu: --dport, --sport, --tcp-flags, --syn, --tcp-optionuntuk digunakan dalam aturan iptables. Tetapi menggunakan -p tcpmodul tcp yang sudah diaktifkan, itu sebabnya kita masih bisa menggunakan opsi itu bahkan tanpa menggunakan -m tcp. Semoga ini menghilangkan semua kebingungan Anda.

berlian
sumber
terima kasih banyak, tetapi akan mau memberitahuku apa yang cocok dengan -m? Misalnya, koneksi TCP normal, -m akan cocok dengan string apa? Bisakah Anda memberikan contoh string
Samul
1
Sama sama. Seperti yang Anda lihat, -mopsi sebenarnya digunakan untuk memuat extension modulesyang menyediakan opsi tambahan. Lihat jawaban saya yang diperbarui dan tautannya misalnya.
Diamond
Terima kasih! :) Satu pemikiran terakhir: Saya pikir dalam kasus saya saya harus menjaga "-m" benar? Lihat ini: iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP Saya menggunakan "--dport" dan saya pikir hanya mungkin menggunakan --ddport jika saya menggunakan -m benar?
Samul
@ Samul, Tidak juga. Anda bisa menggunakannya tanpa -m tcpopsi. --dportadalah bagian dari modul tcp dan hanya akan berfungsi dengan baik -p tcp. Silakan merujuk jawaban saya lagi.
Diamond
Anda sangat baik, terima kasih! Tapi lihat: Saya tidak mengerti apa yang cocok dengan -m. String apa? -m tcp cocok dengan apa? Mencoba menemukan kata "tcp" di mana?
Samul