InggrisPerancisSpanyol

favorit OnWorks

ferm - Online di Cloud

Jalankan ferm di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

Ini adalah ferm perintah yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa stasiun kerja online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


ferm - parser aturan firewall untuk linux

RINGKASAN


ferm Pilihan file masukan

DESKRIPSI


ferm adalah antarmuka untuk iptables. Itu membaca aturan dari file konfigurasi terstruktur
dan panggilan iptables(8) untuk memasukkannya ke dalam kernel yang sedang berjalan.

fermTujuannya adalah untuk membuat aturan firewall mudah ditulis dan dibaca. Ia mencoba untuk mengurangi
tugas yang membosankan untuk menuliskan aturan, sehingga memungkinkan administrator firewall untuk menghabiskan
lebih banyak waktu untuk mengembangkan aturan yang baik daripada implementasi aturan yang tepat.

Untuk mencapai ini, ferm menggunakan bahasa konfigurasi yang sederhana namun kuat, yang memungkinkan
variabel, fungsi, array, blok. Ini juga memungkinkan Anda untuk memasukkan file lain, memungkinkan
Anda untuk membuat perpustakaan struktur dan fungsi yang umum digunakan.

ferm, diucapkan "tegas", singkatan dari "Untuk Pembuatan Aturan yang Mudah".

PERHATIAN


Halaman manual ini tidak tidak ingin mengajari Anda cara kerja firewall dan cara menulis yang baik
aturan. Sudah ada cukup dokumentasi tentang topik ini.

PENGANTAR


Mari kita mulai dengan contoh sederhana:

rantai MASUKAN {
proto tcp MENERIMA;
}

Ini akan menambahkan aturan ke rantai input yang telah ditentukan, mencocokkan dan menerima semua tcp
paket. Oke, mari kita membuatnya lebih rumit:

rantai (INPUT OUTPUT) {
proto (udp tcp) TERIMA;
}

Ini akan menyisipkan 4 aturan, yaitu 2 di input rantai, dan 2 di output rantai, pencocokan dan
menerima paket udp dan tcp. Biasanya Anda akan mengetik ini:

iptables -A INPUT -p tcp -j TERIMA
iptables -A OUTPUT -p tcp -j TERIMA
iptables -A INPUT -p udp -j TERIMA
iptables -A OUTPUT -p udp -j TERIMA

Perhatikan seberapa sedikit pengetikan yang perlu kita lakukan? :-)

Pada dasarnya, ini saja yang ada, meskipun Anda dapat membuatnya lebih kompleks.
Sesuatu untuk dilihat:

rantai MASUKAN {
kebijakan MENERIMA;
daddr 10.0.0.0/8 proto tcp dport! ftp jump mychain sport :1023 TOS 4 settos 8 mark 2;
daddr 10.0.0.0/8 proto tcp dport ftp TOLAK;
}

Maksud saya di sini adalah, bahwa * Anda * perlu membuat aturan yang bagus, membuatnya dapat dibaca oleh Anda dan
orang lain, dan tidak membuatnya berantakan.

Ini akan membantu pembaca jika aturan firewall yang dihasilkan ditempatkan di sini untuk referensi.
Selain itu, Anda dapat menyertakan versi bersarang dengan keterbacaan yang lebih baik.

Coba gunakan komentar untuk menunjukkan apa yang Anda lakukan:

# baris ini memungkinkan proxy http transparan untuk jaringan internal:
proto tcp jika eth0 daddr ! 192.168.0.0/255.255.255.0
dport http REDIRECT ke-port 3128;

Anda akan berterima kasih untuk itu nanti!

rantai MASUKAN {
kebijakan MENERIMA;
antarmuka (eth0 ppp0) {
# tolak akses ke peretas notorius, kembali ke sini jika tidak cocok
# ditemukan untuk melanjutkan firewall normal
lompat penjahat;

protokol tcp melompat fw_tcp;
protokol udp melompat fw_udp;
}
}

Semakin banyak Anda bersarang, semakin baik tampilannya. Pastikan pesanan yang Anda tentukan sudah benar ya
tidak ingin melakukan ini:

rantai MAJU {
proto! DROP udp;
proto tcp dport ftp MENERIMA;
}

karena aturan kedua tidak akan pernah cocok. Cara terbaik adalah menentukan terlebih dahulu segala sesuatu yang ada
diperbolehkan, dan kemudian menyangkal segala sesuatu yang lain. Lihat contoh untuk snapshot yang lebih bagus.
Kebanyakan orang melakukan sesuatu seperti ini:

proto tcp {
olahraga (
ssh http ftp
) MENERIMA;
port 1024:65535 ! sinkron MENERIMA;
MENJATUHKAN;
}

STRUKTUR OF A Firewall FILE


Struktur file firewall yang tepat terlihat seperti kode-C yang disederhanakan. Hanya sedikit
karakter sintaksis digunakan dalam file konfigurasi ferm. Selain ini spesial
karakter, ferm menggunakan 'kunci' dan 'nilai', menganggapnya sebagai opsi dan parameter, atau sebagai
variabel dan nilai, apa pun.

Dengan kata-kata ini, Anda menentukan karakteristik firewall Anda. Setiap firewall
terdiri dari dua hal: Pertama, melihat apakah lalu lintas jaringan sesuai dengan kondisi tertentu, dan
kedua, apa yang harus dilakukan dengan lalu lintas itu.

Anda dapat menentukan kondisi yang valid untuk program antarmuka kernel yang Anda gunakan,
mungkin iptables(8). Misalnya, di iptables, ketika Anda mencoba mencocokkan paket tcp,
Anda akan mengatakan:

iptables --protokol tcp

Dalam ferm, ini akan menjadi:

protokol tcp;

Hanya mengetik ini di ferm tidak melakukan apa-apa, Anda perlu memberi tahu ferm (sebenarnya, Anda perlu
mengatakan iptables(8) dan kernel) apa yang harus dilakukan dengan lalu lintas yang cocok dengan kondisi ini:

iptables --protocol tcp -j TERIMA

Atau, diterjemahkan ke ferm:

protokol tcp MENERIMA;

; karakter ada di akhir setiap aturan ferm. Ferm mengabaikan jeda baris, artinya
contoh di atas identik dengan berikut ini:

protokol tcp
MENERIMA;

Berikut daftar karakter spesialnya:

; Karakter ini menyelesaikan aturan.

Dipisahkan oleh titik koma, Anda dapat menulis beberapa aturan dalam satu baris, meskipun ini
mengurangi keterbacaan:

protokol tcp MENERIMA; protokol udp DROP;

{} Simbol bersarang mendefinisikan 'blok' aturan.

Tanda kurung kurawal berisi sejumlah aturan bersarang. Semua pertandingan sebelum
blok dibawa ke depan ini.

Tanda kurung kurawal penutup menyelesaikan set aturan. Anda tidak boleh menulis ';' setelah
itu, karena itu akan menjadi aturan kosong.

Contoh:

rantai INPUT proto icmp {
permintaan gema tipe icmp ACCEPT;
MENJATUHKAN;
}

Blok ini menunjukkan dua aturan di dalam blok, yang keduanya akan digabungkan dengan apa pun
di depannya, jadi Anda akan mendapatkan dua aturan:

iptables -A INPUT -p icmp --icmp-type echo-request -j TERIMA
iptables -A MASUKAN -p icmp -j DROP

Mungkin ada beberapa level bersarang:

rantai MASUKAN {
proto icmp {
permintaan gema tipe icmp ACCEPT;
MENJATUHKAN;
}
daddr 172.16.0.0/12 TOLAK;
}

Perhatikan bahwa aturan 'REJECT' tidak terpengaruh oleh 'proto icmp', meskipun tidak ada
';' setelah kurung kurawal penutup. Diterjemahkan ke iptables:

iptables -A INPUT -p icmp --icmp-type echo-request -j TERIMA
iptables -A MASUKAN -p icmp -j DROP
iptables -A INPUT -d 172.16.0.0/12 -j TOLAK

$ Ekspansi variabel. Menggantikan '$FOO' dengan nilai variabel. Lihat bagian
VARIABEL untuk rincian.

& Panggilan fungsi. Lihat bagian FUNGSI untuk rincian.

() Simbol larik. Dengan menggunakan tanda kurung, Anda dapat menentukan 'daftar' nilai yang
harus diterapkan untuk kunci di sebelah kirinya.

Contoh:

protokol (tcp udp icmp)

ini akan menghasilkan tiga aturan:

... -p tcp ...
... -p udp ...
... -p icmp ...

Hanya nilai yang dapat 'didaftarkan', jadi Anda tidak dapat melakukan sesuatu seperti ini:

proto tcp ( MENERIMA LOG );

tetapi Anda dapat melakukan ini:

rantai (INPUT OUTPUT FORWARD) proto (icmp udp tcp) DROP;

(yang akan menghasilkan sembilan aturan!)

Nilai dipisahkan oleh spasi. Simbol array adalah kiri dan kanan-
asosiatif, berbeda dengan blok bersarang, yang hanya asosiatif kiri.

" # " Simbol komentar. Apa pun yang mengikuti simbol ini hingga akhir baris adalah
diabaikan.

"`perintah`"
Jalankan perintah di shell, dan masukkan output proses. Lihat bagian
backtick untuk rincian.

'rangkaian'
Kutip string yang mungkin berisi spasi, tanda dolar, dll.

LOG awalan log ' hei, ini awalan log saya!';

"rangkaian"
Mengutip string (lihat di atas), tetapi referensi variabel dengan tanda dolar adalah
dievaluasi:

DNAT ke "$myhost:$myport";

Kata kunci
Di bagian sebelumnya, kami telah memperkenalkan beberapa kata kunci dasar seperti "rantai",
"protokol" dan "TERIMA". Mari kita jelajahi alam mereka.

Ada tiga jenis kata kunci:

· tempat kata kunci menentukan di mana aturan akan dibuat. Contoh: "meja", "rantai".

· pertandingan kata kunci melakukan tes pada semua paket yang lewat. Aturan saat ini adalah tanpa
berlaku jika satu (atau lebih) pertandingan tidak lolos. Contoh: "proto", "ayah".

Kebanyakan kecocokan diikuti oleh parameter: "proto tcp", "daddr 172.16.0.0/12".

· target kata kunci menyatakan apa yang harus dilakukan dengan sebuah paket. Contoh: "TERIMA", "TOLAK",
"melompat".

Beberapa target menentukan lebih banyak kata kunci untuk menentukan detail: "TOLAK tolak-dengan icmp-
tidak terjangkau".

Setiap aturan terdiri dari tempat dan target, ditambah sejumlah korek api:

filter tabel # lokasi
proto tcp dport (http https) # cocok
MENERIMA; # target

Sebenarnya, ada jenis keempat: ferm kata kunci (yang mengontrol internal ferm
perilaku), tetapi mereka akan dijelaskan nanti.

Parameters
Banyak kata kunci mengambil parameter. Ini dapat ditentukan sebagai literal, referensi variabel atau
daftar (array):

proto udp
sedih $TRUSTED_HOSTS;
proto tcp dport (http https ssh);
LOG awalan log "peringatan wardriver yang funky: ";

Beberapa dari mereka dapat dinegasikan (daftar tidak dapat dinegasikan):

proto !esp;
proto udp dport !domain;

Kata kunci yang tidak menggunakan parameter dinegasikan dengan awalan '!':

proto tcp !syn;

Baca iptables(8) untuk melihat di mana ! dapat digunakan.

BASIC KEYWORDS


Lokasi kata kunci
domain [ip|ip6]
Tetapkan domainnya. "ip" adalah default dan berarti "IPv4" (iptables). "ip6" adalah untuk IPv6
dukungan, menggunakan "ip6tables".

tabel [filter|nat|mangle]
Menentukan tabel netfilter mana aturan ini akan dimasukkan ke: "filter" (default),
"nat" atau "mangle".

rantai [nama-rantai]
Menentukan rantai netfilter (dalam tabel saat ini) aturan ini akan menjadi
dimasukkan ke. Nama rantai standar yang umum adalah "INPUT", "OUTPUT", "FORWARD",
"PREROUTING", "POSTROUTING", tergantung pada tabel. Lihat filter bersih
dokumentasi untuk rincian.

Jika Anda menentukan rantai yang tidak ada di sini, ferm akan menambahkan aturan ke rantai khusus
dengan nama itu.

kebijaksanaan [TERIMA|LEPASKAN|..]
Menentukan kebijakan default untuk rantai saat ini (hanya bawaan). Bisa menjadi salah satu
target bawaan (TERIMA, DROP, TOLAK, ...). Paket yang tidak cocok dengan aturan
dalam rantai akan diperlakukan seperti yang ditentukan oleh kebijakan.

Untuk menghindari ambiguitas, selalu tentukan kebijakan semua rantai yang telah ditentukan
secara eksplisit.

@subrantai ["NAMA RANTAI"] { ... }
Bekerja seperti operator blok normal (yaitu tanpa @subrantai kata kunci), kecuali
bahwa ferm memindahkan aturan dalam kurung kurawal ke dalam rantai kustom baru. Nama
untuk rantai ini dipilih secara otomatis oleh ferm.

Dalam banyak kasus, ini lebih cepat daripada hanya satu blok, karena kernel mungkin melewatkan a
blok aturan yang sangat besar ketika prasyarat salah. Bayangkan contoh berikut:

tabel filter rantai INPUT {
saddr (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) {
proto tcp dport (http https ssh) MENERIMA;
proto udp dport domain TERIMA;
}
}

Ini menghasilkan 20 aturan. Ketika sebuah paket tiba yang tidak melewati sedih
pertandingan, itu tetap memeriksa semua 20 aturan. Dengan @subrantai, pemeriksaan ini selesai
sekali, menghasilkan pemfilteran jaringan yang lebih cepat dan beban CPU yang lebih sedikit:

tabel filter rantai INPUT {
saddr (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) @subrantai {
proto tcp dport (http https ssh) MENERIMA;
proto udp dport domain TERIMA;
}
}

Secara opsional, Anda dapat menentukan nama sub rantai:

saddr (1.2.3.4 2.3.4.5 3.4.5.6) @subchain "foobar" {
proto tcp dport (http https ssh) MENERIMA;
proto udp dport domain TERIMA;
}

Nama dapat berupa literal string yang dikutip, atau ekspresi ferm yang diperluas
seperti @cat("interface_", $iface) atau @substr($var,0,20).

Anda dapat mencapai hal yang sama dengan secara eksplisit mendeklarasikan rantai kustom, tetapi Anda mungkin merasa
itu menggunakan @subrantai membutuhkan lebih sedikit mengetik.

Dasar iptables pertandingan kata kunci
antarmuka [nama-antarmuka]
Tentukan nama antarmuka, kartu jaringan luar Anda, seperti eth0, atau dialup seperti
ppp1, atau perangkat apa pun yang ingin Anda cocokkan untuk meneruskan paket. Ini setara
ke sakelar "-i" di iptables(8).

permukaan luar [nama-antarmuka]
Sama seperti antarmuka, hanya untuk mencocokkan antarmuka keluar untuk sebuah paket, seperti pada
iptables(8).

protokol [nama-protokol|nomor-protokol]
Saat ini didukung oleh kernel adalah tcp, udp dan icmp, atau masing-masing
angka.

saddr|ayah [spesifikasi alamat]
Kecocokan pada paket yang berasal dari alamat yang ditentukan (saddr) atau ditargetkan pada
alamat (ayah).

contoh:

saddr 192.168/8 MENERIMA; # (identik dengan yang berikutnya :)
saddr 192.168.0.0/255.255.255.0 MENERIMA;
daddr my.domain.com MENERIMA;

fragmen
Tetapkan bahwa hanya paket IP terfragmentasi yang harus dicocokkan. Ketika paket-paket
lebih besar dari ukuran paket maksimum yang dapat ditangani sistem Anda (disebut Maksimum
Unit Transmisi atau MTU) mereka akan dipotong-potong dan dikirim satu per satu sebagai
paket tunggal. Melihat ifconfig(8) jika Anda ingin menemukan MTU untuk sistem Anda (the
default biasanya 1500 byte).

Fragmen sering digunakan dalam serangan DOS, karena tidak ada cara untuk menemukan
keluar asal paket fragmen.

olahraga|olahraga [spesifikasi port]
Cocok dengan paket pada port TCP atau UDP yang ditentukan. "olahraga" cocok dengan sumbernya
port, dan dport cocok dengan port tujuan.

Pencocokan ini hanya dapat digunakan setelah Anda menentukan "protokol tcp" atau "protokol udp",
karena hanya kedua protokol ini yang benar-benar memiliki port.

Dan beberapa contoh port/rentang yang valid:

dport 80 MENERIMA;
dport http MENERIMA;
dport ssh:http MENERIMA;
dport 0:1023 MENERIMA; # setara dengan :1023
dport 1023:65535 MENERIMA;

syn Tentukan bahwa flag SYN dalam paket tcp harus cocok, yang digunakan untuk
membangun koneksi tcp baru. Anda dapat mengidentifikasi koneksi masuk dengan ini, dan
memutuskan apakah Anda ingin mengizinkannya atau tidak. Paket yang tidak memiliki flag ini adalah
mungkin dari koneksi yang sudah ada, jadi itu dianggap wajar
aman untuk membiarkan ini lewat.

modul [nama-modul]
Muat modul iptables. Sebagian besar modul menyediakan lebih banyak kata kunci yang cocok. Kita akan sampai ke
itu nanti.

Dasar target kata kunci
melompat [nama-rantai-kustom]
Melompat ke rantai kustom. Jika tidak ada aturan dalam rantai kustom yang cocok, netfilter kembali
ke aturan berikutnya dalam rantai sebelumnya.

realgoto [nama-rantai-kustom]
Pergi ke rantai kustom. tidak seperti melompat pilihan, KEMBALI tidak akan melanjutkan pemrosesan
dalam rantai ini tetapi sebaliknya dalam rantai yang memanggil kita melalui melompat.

Kata kuncinya realgoto dipilih pada masa transisi, karena goto
(sudah usang) dulunya adalah alias untuk melompat.

MENERIMA Menerima paket yang cocok.

DROP Jatuhkan paket yang cocok tanpa pemberitahuan lebih lanjut.

MENOLAK Menolak paket yang cocok, yaitu mengirim paket ICMP ke pengirim, yang port-
tidak dapat dijangkau secara default. Anda dapat menentukan jenis ICMP lain.

MENOLAK; # default ke icmp-port-unreachable
TOLAK tolak-dengan icmp-net-unreachable;

Ketik "iptables -j REJECT -h" untuk detailnya.

KEMBALI Selesaikan rantai saat ini dan kembali ke rantai panggilan (jika "lompat
[nama-rantai-kustom]" digunakan).

NOP Tidak ada tindakan sama sekali.

TAMBAHAN KEYWORDS


Netfilter bersifat modular. Modul dapat memberikan target tambahan dan kata kunci yang cocok. Daftar
modul netfilter terus berkembang, dan ferm mencoba untuk tetap mendukungnya
semua. Bab ini menjelaskan modul yang saat ini didukung.

iptables pertandingan modul
rekening Lalu lintas akun untuk semua host di jaringan/netmask yang ditentukan. Ini adalah salah satu
mencocokkan modul yang berperilaku seperti target, yaitu Anda sebagian besar harus menggunakan NOP
target.

mod akun aname mynetwork aaddr 192.168.1.0/24 singkat NOP;

tipe tambahan
Periksa jenis alamat; baik alamat sumber maupun alamat tujuan.

mod addrtype src-tipe BROADCAST;
mod addrtype dst-type LOKAL;

Ketik "iptables -m addrtype -h" untuk detailnya.

ah Memeriksa header SPI dalam paket AH.

mod ah ahspi 0x101;
mod ah ahspi! 0x200:0x2ff;

Argumen tambahan untuk IPv6:

mod ah ahlen 32 MENERIMA;
mod ah ahlen !32 TERIMA;
mod ah ahres MENERIMA;

komentar Menambahkan komentar hingga 256 karakter ke aturan, tanpa efek. Perhatikan bahwa
tidak seperti komentar ferm ('#'), yang ini akan muncul di "iptables -L".

mod komentar komentar "Ini komentar saya." MENERIMA;

kondisi
Cocok jika nilai di /proc/net/ipt_condition/NAME adalah 1 (jalurnya adalah
/proc/net/ip6t_condition/NAME untuk domain ip6).

kondisi kondisi mod (abc def) MENERIMA;
kondisi kondisi mod !foo ACCEPT;

connbytes
Cocokkan dengan berapa banyak byte atau paket koneksi (atau salah satu dari dua aliran
merupakan koneksi) telah ditransfer sejauh ini, atau rata-rata byte per
paket.

mod connbytes connbytes 65536: connbytes-dir kedua byte mode-connbytes ACCEPT;
mod connbytes connbytes !1024:2048 connbytes-dir reply connbytes-mode packets MENERIMA;

Nilai yang valid untuk connbytes-dir: Garis Keturunan Asli, balasan, kedua; untuk mode connbytes:
paket, byte, rata-rata.

batas
Memungkinkan Anda membatasi jumlah koneksi TCP paralel ke server per
alamat IP klien (atau blok alamat).

mod connlimit connlimit-atas 4 TOLAK;
mod connlimit connlimit-atas !4 MENERIMA;
mod connlimit connlimit-atas 4 connlimit-mask 24 REJECT;

tanda penghubung
Centang bidang tanda yang terkait dengan koneksi, yang ditetapkan oleh target CONNMARK.

tanda tanda mod 64;
tanda tanda mod 6/7;

conntrack
Periksa informasi pelacakan koneksi.

mod conntrack ctstate (TERKAIT TERKAIT);
mod koneksi ctproto tcp;
mod conntrack ctigsrc 192.168.0.2;
mod koneksi ctorigdst 1.2.3.0/24;
mod conntrack ctigsrcport 67;
mod koneksi ctorigdstport 22;
mod koneksi ctreplsrc 2.3.4.5;
mod koneksi ctrepldst ! 3.4.5.6;
mod conntrack ctstatus TERJAMIN;
mod conntrack cexpire 60;
mod conntrack cexpire 180:240;

Ketik "iptables -m conntrack -h" untuk detailnya.

dccp Periksa atribut khusus DCCP (Datagram Congestion Control Protocol). Ini
modul secara otomatis dimuat ketika Anda menggunakan "protokol dccp".

proto dccp sport 1234 dport 2345 MENERIMA;
proto dccp tipe dccp (SYNCACK ACK) MENERIMA;
proto dccp tipe dccp !REQUEST DROP;
proto dccp dccp-opsi 2 MENERIMA;

dscp Cocokkan bidang DSCP 6 bit dalam bidang TOS.

mod dscp dscp 11;
mod dscp kelas dscp AF41;

ECN Cocokkan bit ECN dari header IPv4 TCP.

mod ecn ecn-tcp-cwr;
mod ecn ecn-tcp-ece;
mod ecn ecn-ip-dll 2;

Ketik "iptables -m ecn -h" untuk detailnya.

esp Memeriksa header SPI dalam paket ESP.

mod esp espspi 0x101;
mod esp espspi! 0x200:0x2ff;

eui64 "Modul ini cocok dengan bagian EUI-64 dari alamat IPv6 yang dikonfigurasi secara otomatis tanpa status.
Ini membandingkan EUI-64 yang berasal dari alamat MAC sumber dalam bingkai Ehternet dengan
64 bit lebih rendah dari alamat sumber IPv6. Tetapi bit "Universal/Lokal" tidak
dibandingkan. Modul ini tidak cocok dengan bingkai lapisan tautan lainnya, dan hanya berlaku di
rantai PREROUTING, INPUT dan FORWARD."

mod eui64 TERIMA;

kabur "Modul ini cocok dengan batas kecepatan berdasarkan pengontrol logika fuzzy [FLC]."

mod fuzzy batas bawah 10 batas atas 20 MENERIMA;

hbh Cocok dengan header Opsi Hop-by-Hop (ip6).

mod hbh hbh-len 8 TERIMA;
mod hbh hbh-len !8 MENERIMA;
mod hbh hbh-opts (1:4 2:8) MENERIMA;

hl Cocok dengan bidang Batas Hop (ip6).

mod hl hl-eq (8 10) MENERIMA;
mod hl hl-eq !5 TERIMA;
mod hl hl-gt 15 TERIMA;
mod hl hl-lt ​​2 TERIMA;

penolong Memeriksa modul pembantu conntrack mana yang melacak koneksi ini. Pelabuhan mungkin
ditentukan dengan "-portnr".

mod pembantu pembantu irc TERIMA;
mod pembantu pembantu ftp-21 MENERIMA;

icmp Periksa atribut khusus ICMP. Modul ini dimuat secara otomatis saat Anda menggunakan
"protokol icmp".

proto icmp icmp-type echo-request MENERIMA;

Opsi ini juga dapat digunakan di be ip6 domain, meskipun ini disebut icmpv6 in
tabel ip6.

Gunakan "iptables -p icmp "-h"" untuk mendapatkan daftar tipe ICMP yang valid.

orang gila Cocokkan rentang alamat IPv4.

mod iprange src-rentang 192.168.2.0-192.168.3.255;
mod iprange rentang dst ! 192.168.6.0-192.168.6.255;

opsi ipv4
Cocokkan pada opsi header IPv4 seperti perutean sumber, rute rekaman, stempel waktu, dan
peringatan router.

mod ipv4options ssrr TERIMA;
mod ipv4options lsrr TERIMA;
mod ipv4options no-srr MENERIMA;
mod ipv4options !rr TERIMA;
mod ipv4options !ts MENERIMA;
mod ipv4options !ra MENERIMA;
mod ipv4options !pilihan apa saja MENERIMA;

ipv6header
Cocok dengan header ekstensi IPv6 (ip6).

mod ipv6header header !(hop frag) MENERIMA;
mod ipv6header header (auth dst) MENERIMA;

batas hash
Mirip dengan 'batas mod', tetapi menambahkan kemampuan untuk menambahkan per tujuan atau per port
batas dikelola dalam tabel hash.

mod hashlimit hashlimit 10/menit hashlimit-burst 30/menit
hashlimit-mode dstip hashlimit-name foobar MENERIMA;

Kemungkinan nilai untuk mode batas hash: dstip dstport srcport srcport (atau daftar dengan
lebih dari satu ini).

Ada lebih banyak kemungkinan pengaturan, ketik "iptables -m hashlimit -h" untuk
dokumentasi.

panjangnya Periksa panjang paket.

panjang mod 128; # tepat 128 byte
panjang mod panjang 512:768; # jangkauan
panjang panjang mod! 256; # dinegasikan

membatasi Membatasi kecepatan paket.

batas batas mod 1/detik;
batas mod batas 15/menit batas-burst 10;

Ketik "iptables -m limit -h" untuk detailnya.

mac Cocokkan dengan alamat MAC sumber.

mod mac mac-sumber 01:23:45:67:89;

tanda Mencocokkan paket berdasarkan bidang tanda netfilternya. Ini mungkin bilangan bulat 32 bit
antara 0 dan 4294967295.

tanda mod tanda 42;

mh Cocok dengan tajuk mobilitas (domain ip6).

proto mh mh-type binding-update MENERIMA;

multiport
Cocokkan satu set port sumber atau tujuan (hanya UDP dan TCP).

mod port sumber multiport (https ftp);
mod multiport port tujuan (domain mysql);

Aturan ini memiliki keunggulan besar dibandingkan "dport" dan "olahraga": aturan ini hanya menghasilkan satu aturan
hingga 15 port, bukan satu aturan untuk setiap port.

n Cocokkan setiap paket.

mod setiap 3;
mod penghitung ke-5 setiap 2;
mod mulai 2 setiap 3;
mod n mulai 5 paket 2 setiap 6;

Ketik "iptables -m nth -h" untuk detailnya.

osf Paket cocok tergantung pada sistem operasi pengirim.

mod osf bergenre Linux;
mod osf! genre FreeBSD ttl 1 log 1;

Ketik "iptables -m osf -h" untuk detailnya.

pemilik Cek informasi tentang pembuat paket yaitu user id, group id, process id,
id sesi dan nama perintah.

pemilik mod pemilik uid 0;
pemilik mod gid-pemilik 1000;
pemilik mod pid-pemilik 5432;
pemilik mod sid-pemilik 6543;
pemilik mod cmd-pemilik "sendmail";

("cmd-owner", "pid-owner" dan "sid-owner" tidak memerlukan patch kernel khusus
termasuk dalam kernel vanilla Linux)

pengembangan fisik Cocok dengan perangkat fisik tempat paket masuk atau akan keluar
mesin. Ini berguna untuk antarmuka yang dijembatani.

mod physdev physdev-in ppp1;
mod physdev physdev-out eth2;
mod physdev physdev-is-in;
mod physdev physdev-keluar;
mod physdev physdev-dijembatani;

tipe pkt Periksa jenis paket link-layer.

mod pkttype tipe pkt unicast;
mod pkttype pkt-jenis broadcase;
mod pkttype pkt-jenis multicast;

kebijaksanaan Cocok dengan kebijakan IPsec yang diterapkan ke paket ini.

kebijakan mod dir out pol ipsec MENERIMA;
kebijakan mod persyaratan ketat 23 spi 0x10 proto ah MENERIMA;
mod kebijakan mode tunnel tunnel-src 192.168.1.2 MENERIMA;
mod kebijakan mode tunnel tunnel-dst 192.168.2.1 MENERIMA;
kebijakan mod ketat berikutnya reqid 24 spi 0x11 MENERIMA;

Perhatikan bahwa kata kunci prototipe juga digunakan sebagai versi singkat dari protokol
(modul pertandingan bawaan). Anda dapat memperbaiki konflik ini dengan selalu menggunakan long
kata kunci protokol.

pSD Deteksi pemindaian port TCP/UDP.

mod psd psd-berat-ambang 21 psd-tunda-ambang 300
psd-lo-port-berat 3 psd-hi-port-berat 1 DROP;

saham Menerapkan kuota jaringan dengan mengurangi penghitung byte dengan setiap paket.

kuota mod kuota 65536 MENERIMA;

acak Cocokkan persentase acak dari semua paket.

mod acak rata-rata 70;

dunia Cocokkan dengan ranah perutean. Berguna di lingkungan yang menggunakan BGP.

mod ranah ranah 3;

baru Tandai alamat IP sumber untuk sementara.

set mod terbaru;
mod terbaru rcek detik 60;
mod baru-baru ini mengatur nama sumber "badguy";
mod terbaru set pertama;
mod terbaru rcheck rsource name "badguy" detik 60;
mod pembaruan terbaru detik 120 hitcount 3 rttl;

Modul netfilter ini memiliki kekurangan desain: meskipun diimplementasikan sebagai kecocokan
modul, ia memiliki perilaku seperti target saat menggunakan kata kunci "set".

<http://snowman.net/projects/ipt_recent/>

rt Cocokkan header perutean IPv6 (hanya ip6).

mod rt rt-type 2 rt-len 20 MENERIMA;
mod rt rt-type !2 rt-len !20 TERIMA;
mod rt rt-segsleft 2:3 MENERIMA;
mod rt rt-segsleft !4:5 MENERIMA;
mod rt rt-0-res rt-0-addrs (::1 ::2) rt-0-not-strict MENERIMA;

sctp Periksa atribut khusus SCTP (Stream Control Transmission Protocol). Ini
modul secara otomatis dimuat ketika Anda menggunakan "protokol sctp".

proto sctp sport 1234 dport 2345 MENERIMA;
proto sctp hanya tipe chunk DATA:Be ACCEPT;
proto sctp chunk-type any (INIT INIT_ACK) ACCEPT;
proto sctp chunk-types !all (HEARTBEAT) MENERIMA;

Gunakan "iptables -p sctp "-h"" untuk mendapatkan daftar jenis potongan yang valid.

set Memeriksa sumber atau tujuan IP/Port/MAC terhadap satu set.

set mod set badguys src DROP;

Lihathttp://ipset.netfilter.org/> untuk informasi lebih lanjut.

negara Memeriksa status pelacakan koneksi.

status status mod INVALID DROP;
status status mod (TERKAIT TERKAIT) MENERIMA;

Ketik "iptables -m state -h" untuk detailnya.

statistik
penerus dari n dan acak, saat ini tidak terdokumentasi di iptables(8) halaman manual.

mode statistik mod probabilitas acak 0.8 MENERIMA;
mode statistik mod ke-n setiap 5 paket 0 DROP;

string Cocok dengan string.

mod string string "foo bar" MENERIMA;
mod string algo kmp dari 64 hingga 128 hex-string "deadbeef" MENERIMA;

tcp Memeriksa atribut khusus TCP. Modul ini dimuat secara otomatis saat Anda menggunakan
"protokol tcp".

proto tcp olahraga 1234;
proto tcp dport 2345;
proto tcp tcp-flags (SYN ACK) SYN;
proto tcp tcp-bendera! (SIN ACK) SINAR;
proto tcp tcp-flags SEMUA (Pertama ACK);
proto tcp sin;
proto tcp tcp-opsi 2;
proto tcp mss 512;

Ketik "iptables -p tcp -h" untuk detailnya.

tcpmss Periksa bidang TCP MSS dari paket SYN atau SYN/ACK.

mod tcpmss mss 123 TERIMA;
mod tcpmss mss 234:567 MENERIMA;

waktu Periksa apakah waktu paket tiba dalam kisaran tertentu.

waktu mod mulai 12:00;
penghenti waktu mod 13:30;
hari waktu mod (Senin Rab Jum);
waktu mod tanggalmulai 2005:01:01;
waktu mod tanggalmulai 2005:01:01:23:59:59;
waktu mod datestop 2005:04:01;
waktu mod hari bulan (30 31);
mod waktu hari kerja (Rabu Kam);
waktu mod mulai 12:00 utc;
waktu mod mulai 12:00 localtz;

Ketik "iptables -m time -h" untuk detailnya.

tos Cocok dengan paket pada nilai TOS yang ditentukan.

mod tos tos Minimalkan-Biaya MENERIMA;
mod tos tos !Layanan Normal MENERIMA;

Ketik "iptables -m tos -h" untuk detailnya.

Ttl Cocok dengan bidang ttl (waktu tayang) di header IP.

mod ttl ttl-persamaan 12; #ttl sama dengan
mod ttl ttl-gt 10; #ttl lebih besar dari
mod ttl ttl-lt 16; #ttl kurang dari

u32 Membandingkan data mentah dari paket. Anda dapat menentukan lebih dari satu filter dalam satu ferm
Daftar; ini tidak diperluas menjadi beberapa aturan.

mod u32 u32 '6&0xFF=1' TERIMA;
mod u32 u32 ('27&0x8f=7' '31=0x527c4833') DROP;

najis Mencocokkan paket yang tampak cacat atau tidak biasa. Pertandingan ini tidak ada lagi
parameter.

iptables target modul
Target tambahan berikut tersedia di ferm, asalkan Anda mengaktifkannya di
kernel Anda:

MENGGOLONGKAN
Tetapkan kelas CBQ.

KLASIFIKASI set-kelas 3:50;

CLUSTERIP
Konfigurasikan sekelompok node sederhana yang berbagi alamat IP dan MAC tertentu.
Koneksi didistribusikan secara statis antara node.

CLUSTERIP baru hashmode sourceip clustermac 00:12:34:45:67:89
total-node 4 lokal-node 2 hash-init 12345;

CONNMARK
Menetapkan nilai tanda netfilter yang terkait dengan koneksi.

tanda setel CONNMARK 42;
tanda simpan CONNMARK;
tanda pemulihan CONNMARK;
CONNMARK simpan-tandai topeng 0x7fff;
Masker tanda pemulihan CONNMARK 0x8000;

CONNSECMARK
Modul ini menyalin tanda keamanan dari paket ke koneksi (jika tidak berlabel),
dan dari koneksi kembali ke paket (juga hanya jika tidak berlabel). Biasanya digunakan dalam
hubungannya dengan SECMARK, itu hanya berlaku di tabel mangle.

CONNSECMARK simpan;
pemulihan CONNSECMARK;

DNAT untuk [alamat-ip|rentang-ip|rentang-ip-port]
Ubah alamat tujuan paket.

DNAT ke 10.0.0.4;
DNAT ke 10.0.0.4:80;
DNAT ke 10.0.0.4:1024-2048;
DNAT ke 10.0.1.1-10.0.1.20;

ECN Target ini memungkinkan untuk bekerja secara selektif di sekitar lubang hitam ECN yang diketahui. Itu hanya bisa
digunakan dalam tabel mangle.

ECN ecn-tcp-hapus;

HL Ubah bidang IPv6 Hop Limit (hanya ip6/mangle).

HL hl-set 5;
HL hl-des 2;
HL hl-inc 1;

IPV4OPTSSTRIP
Hapus semua opsi IP dari sebuah paket. Modul ini tidak mengambil opsi apa pun.

IPV4OPTSSTRIP;

LOG Catat semua paket yang cocok dengan aturan ini di log kernel. Hati-hati dengan log
banjir. Perhatikan bahwa ini adalah "target non-terminating", yaitu traversal aturan
berlanjut pada aturan berikutnya.

LOG log-level warning log-prefix "Lihat ini: ";
LOG opsi log-tcp-urutan log-tcp;
LOG log-ip-opsi;

MENANDAI Menetapkan bidang tanda netfilter untuk paket (integer 32 bit antara 0 dan
4294967295):

MARK set-tanda 42;
TANDA set-xmark 7/3;
TANDA dan-tandai 31;
TANDA atau-tandai 1;
TANDA xor-tanda 12;

MENYAMAR
Menyamarkan paket yang cocok. Opsional diikuti oleh port atau jangkauan port untuk
iptables. Tentukan sebagai "123", "123-456" atau "123:456". Parameter jangkauan port
menentukan dari mana koneksi penyamaran port lokal harus berasal.

MENYAMAR;
MASQUERADE ke pelabuhan 1234:2345;
MASQUERADE ke port 1234:2345 acak;

MIRROR Target demonstrasi eksperimental yang membalikkan bidang sumber dan tujuan
di judul IP.

CERMIN;

NETMAP Petakan seluruh jaringan ke jaringan lain di nat tabel.

NETMAP ke 192.168.2.0/24;

BUKAN lacak Nonaktifkan pelacakan koneksi untuk semua paket yang cocok dengan aturan itu.

proto tcp dport (135:139 445) BUKANTRACK;

NFLLOG Log paket melalui netlink; ini penerus ULOG.

NFLOG nflog-group 5 nflog-prefix "Lihat ini: ";
NFLOG nflog-rentang 256;
NFLOG nflog-ambang 10;

antrean Antrian ruang pengguna, memerlukan dukungan kernel nfnetlink_queue.

proto tcp dport ftp NFQUEUE nomor antrian 20;

ANTRE Antrian ruang pengguna, pendahulunya antrean. Semua paket masuk ke antrian 0.

proto tcp dport ftp ANTRIAN;

MENGALIHKAN ke-pelabuhan [pelabuhan]
Proxy transparan: ubah IP tujuan paket ke mesin
itu sendiri.

proto tcp dport http REDIRECT ke port 3128;
proto tcp dport http REDIRECT ke port 3128 acak;

SAMA Mirip dengan SNAT, tetapi klien dipetakan ke IP sumber yang sama untuk semua
koneksi.

SAMA dengan 1.2.3.4-1.2.3.7;
SAMA dengan 1.2.3.8-1.2.3.15 mengangguk;
SAMA dengan 1.2.3.16-1.2.3.31 acak;

SECMARK Ini digunakan untuk mengatur nilai tanda keamanan yang terkait dengan paket untuk digunakan oleh
subsistem keamanan seperti SELinux. Ini hanya berlaku di tabel mangle.

SECMARK selctx "system_u:object_r:httpd_packet_t:s0";

SET [tambah-set|hapus-set] [nama tetap] [bendera]
Tambahkan IP ke set yang ditentukan. Melihathttp://ipset.netfilter.org/>

proto icmp tipe icmp permintaan gema SET add-set badguys src;

SNAT untuk [alamat-ip|rentang-ip|rentang-ip-port]
Ubah alamat sumber paket.

SNAT ke 1.2.3.4;
SNAT ke 1.2.3.4:20000-30000;
SNAT ke 1.2.3.4 acak;

TCPMSS Ubah nilai MSS paket TCP SYN.

set TCPMSS-mss 1400;
TCPMSS penjepit-mss-ke-pmtu;

KL set-to [nilai]
Setel bit Jenis Layanan paket tcp ke nilai ini. Ini akan digunakan oleh
penjadwal lalu lintas apa pun yang mau, sebagian besar mesin linux Anda sendiri, tapi mungkin
lagi. Tos-bit asli dikosongkan dan ditimpa oleh nilai ini.

TOS set-tos Maksimalkan-Throughput;
TOS dan-tos 7;
KL atau-tos 1;
KL xor-tos 4;

Ketik "iptables -j TOS -h" untuk detailnya.

TTL Ubah bidang tajuk TTL.

TTL ttl-set 16;
TTL ttl-desember 1; # berkurang 1
TTL ttl-termasuk 4; # bertambah 4

ULOG Log paket ke program userspace.

ULOG ulog-nlgroup 5 ulog-prefix "Lihat ini: ";
ULOG ulog-cprange 256;
ULOG ulog-qambang batas 10;

LAIN DOMAIN


Sejak versi 2.0, ferm mendukung tidak hanya ip dan ip6, Tetapi juga arp (tabel ARP) dan eb
(tabel penghubung ethernet). Konsepnya mirip dengan iptables.

arttables kata kunci
sumber-ip, tujuan-ip
Cocok dengan alamat IPv4 sumber atau tujuan. Sama dengan sedih dan ayah dalam ip
domain.

sumber-mac, tujuan-mac
Cocok dengan alamat MAC sumber atau tujuan.

antarmuka, permukaan luar
Antarmuka masukan dan keluaran.

h-panjang
Panjang perangkat keras paket.

rantai INPUT h-panjang 64 MENERIMA;

opcode Kode operasi, untuk detailnya lihat iptables(8).

opcode 9 MENERIMA;

tipe-h Jenis perangkat keras.

h-tipe 1 MENERIMA;

tipe prototipe
Jenis protokol.

tipe proto 0x800 MENERIMA;

Menghancurkan
Kata kunci mangle-ip-s, mangle-ip-d, mangle-mac-s, mangle-mac-d, target mangle
dapat digunakan untuk mangling ARP. Melihat iptables(8) untuk rincian.

meja makan kata kunci
prototipe Cocok dengan protokol yang membuat bingkai, mis IPv4 or PPP. Untuk daftar, lihat
/etc/ethertypes.

antarmuka, permukaan luar
Antarmuka input dan output fisik.

masuk logika, keluar logika
Antarmuka jembatan logis.

sedih, ayah
Cocok dengan alamat MAC sumber atau tujuan.

Cocok modul
Modul pencocokan berikut didukung: 802.3, arp, ip, mark_m, pkttype, stp,
vlan, log.

target ekstensi
Ekstensi target berikut didukung: arpreply, dnat, mark, redirect,
nyamuk.

Harap dicatat bahwa ada konflik antara --tanda dari tandai_m modul pertandingan
dan -j tanda. Karena keduanya akan diimplementasikan dengan kata kunci ferm tanda, Kami
memutuskan untuk menyelesaikan ini dengan menulis nama target dalam huruf besar, seperti yang lain
domain. Contoh berikut menulis ulang tanda 1 ke 2:

tandai 1 TANDA 2;

ADVANCED FITUR


Variabel
Dalam file firewall yang kompleks, akan sangat membantu jika menggunakan variabel, misalnya untuk memberikan jaringan
antarmuka nama yang bermakna.

Untuk mengatur variabel, tulis:

@def $DEV_INTERNET = eth0;
@def $PORTS = (http ftp);
@def $MORE_PORTS = ($PORTS 8080);

Dalam kode ferm yang sebenarnya, variabel digunakan seperti parameter kata kunci lainnya:

rantai antarmuka INPUT $DEV_INTERNET proto tcp dport $MORE_PORTS MENERIMA;

Perhatikan bahwa variabel hanya dapat digunakan dalam parameter kata kunci ("192.168.1.1", "http"); mereka
tidak boleh berisi kata kunci ferm seperti "proto" atau "antarmuka".

Variabel hanya valid di blok saat ini:

@def $DEV_INTERNET = eth1;
rantai MASUKAN {
proto tcp {
@def $DEV_INTERNET = ppp0;
antarmuka $DEV_INTERNET dport http MENERIMA;
}
antarmuka $DEV_INTERNET DROP;
}

akan diperluas menjadi:

rantai MASUKAN {
proto tcp {
antarmuka ppp0 dport http MENERIMA;
}
antarmuka eth1 DROP;
}

"def $DEV_INTERNET = ppp0" hanya valid di blok "proto tcp"; blok induk
masih tahu "set $DEV_INTERNET = eth1".

Sertakan file bersifat khusus - variabel yang dideklarasikan dalam file yang disertakan masih tersedia di
blok panggilan. Ini berguna ketika Anda menyertakan file yang hanya mendeklarasikan variabel.

secara otomatis variabel
Beberapa variabel diatur secara internal oleh ferm. Skrip Ferm dapat menggunakannya seperti yang lainnya
variabel.

$ NAMA FILE
Nama file konfigurasi relatif terhadap direktori ferm dimulai.

$FILEBNAME
Nama dasar file konfigurasi.

$DIRNAME
Direktori file konfigurasi.

$DOMAIN Domain saat ini. Satu dari ip, ip6, arp, eb.

$TABEL Tabel netfilter saat ini.

$RANTAI Rantai netfilter saat ini.

$GARIS Baris skrip saat ini. Ini dapat digunakan seperti ini:

@def &log($msg) = {
LOG awalan log "rule=$msg:$LINE";
}
.
.
.
&log("pesan log");

Fungsi
Fungsi mirip dengan variabel, kecuali bahwa mereka mungkin memiliki parameter, dan mereka menyediakan
perintah ferm, bukan nilai.

@def &FOO() = proto (tcp udp) domain dport;
&FOO() TERIMA;

@def &TCP_TUNNEL($port, $tujuan) = {
tabel filter rantai antarmuka MAJU ppp0 proto tcp dport $port daddr $dest outerface eth0 MENERIMA;
table nat chain PREROUTING antarmuka ppp0 proto tcp dport $port daddr 1.2.3.4 DNAT ke $dest;
}

&TCP_TUNNEL(http, 192.168.1.33);
&TCP_TUNNEL(ftp, 192.168.1.30);
&TCP_TUNNEL((ssh smtp), 192.168.1.2);

Panggilan fungsi yang berisi blok (seperti '{...}') harus menjadi perintah terakhir di ferm
aturan, yaitu harus diikuti oleh ';'. '&FOO()' contoh tidak mengandung blok, jadi
Anda dapat menulis 'TERIMA' setelah panggilan. Untuk menghindari ini, Anda dapat menyusun ulang kata kunci:

@def &IPSEC() = { proto (terutama ah); proto udp dport 500; }
rantai INPUT MENERIMA &IPSEC();

Backtick
Dengan backticks, Anda dapat menggunakan output dari perintah eksternal:

@def $DNSSERVERS = `grep server nama / Etc / resolv.conf | awk '{cetak $2}'`;
rantai INPUT proto tcp saddr $DNSSERVERS MENERIMA;

Perintah dijalankan dengan shell (/ Bin / sh), seperti backticks di Perl. ferm tidak
tidak melakukan ekspansi variabel di sini.

Outputnya kemudian diberi token, dan disimpan sebagai daftar ferm (array). Baris yang dimulai dengan '#'
diabaikan; baris lain dapat berisi sejumlah nilai, dipisahkan oleh spasi.

Termasuk
@termasuk kata kunci memungkinkan Anda untuk memasukkan file eksternal:

@include 'vars.ferm';

Nama file relatif terhadap file panggilan, misalnya ketika menyertakan dari
/etc/ferm/ferm.conf, pernyataan di atas termasuk /etc/ferm/vars.ferm. Variabel dan
fungsi yang dideklarasikan dalam file yang disertakan masih tersedia di file panggilan.

memasukkan bekerja dalam satu blok:

rantai MASUKAN {
@include 'input.ferm';
}

Jika Anda menentukan direktori (dengan tanda '/'), semua file dalam direktori ini adalah
termasuk, diurutkan menurut abjad:

@include 'ferm.d/';

Dengan simbol pipa trailing, ferm mengeksekusi perintah shell dan mem-parsing outputnya:

@include '/root/generate_ferm_rules.sh $HOSTNAME|'

Persyaratan
Kata kuncinya @jika memperkenalkan ekspresi kondisional:

@jika $kondisi DROP;

Nilai dievaluasi benar seperti di Perl: nol, daftar kosong, string kosong salah,
segala sesuatu yang lain adalah benar. Contoh untuk nilai sebenarnya:

(ab); 1; 'foo'; (0 0)

Contoh untuk nilai palsu:

(); 0; '0'; ''

Ada Apakah Juga @lain:

@jika $kondisi DROP; @else TOLAK;

Perhatikan titik koma sebelum @lain.

Dimungkinkan untuk menggunakan kurung kurawal setelah keduanya @jika or @lain:

@jika $kondisi {
MARK set-tanda 2;
KEMBALI;
} @kalau tidak {
MARK set-tanda 3;
}

Karena kurung kurawal penutup juga menyelesaikan perintah, titik koma tidak diperlukan.

Tidak ada @elif, Gunakan @lain @jika sebagai gantinya.

Contoh:

@def $have_ipv6 = `test -f /proc/net/ip6_tables_names && echo 1 || gema`;
@jika $memiliki_ipv6 {
domain ip6 {
# ....
}
}

kait
Untuk menjalankan perintah khusus, Anda dapat menginstal kait:

@hook sebelum "echo 0 >/proc/sys/net/ipv4/conf/eth0/forwarding";
@hook posting "gema 1 >/proc/sys/net/ipv4/conf/eth0/forwarding";
@hook flush "echo 0 >/proc/sys/net/ipv4/conf/eth0/forwarding";

Perintah yang ditentukan dijalankan menggunakan shell. "pre" berarti jalankan perintah sebelumnya
menerapkan aturan firewall, dan "posting" berarti menjalankan perintah setelahnya. kait "siram"
dijalankan setelah ferm menghapus aturan firewall (opsi --flush). Anda dapat menginstal apapun
jumlah kait.

DIBANGUN FUNGSI


Ada beberapa fungsi bawaan yang mungkin berguna bagi Anda.

@persamaan(a,b)
Menguji dua nilai untuk kesetaraan. Contoh:

@jika @eq($DOMAIN, ip6) DROP;

@ne(a,b)
Mirip dengan @eq, ini menguji ketidaksetaraan.

@tidak(x)
Meniadakan nilai boolean.

@resolve((nama host1 nama host2 ...), [Tipe])
Biasanya, nama host diselesaikan dengan iptables. Untuk membiarkan ferm menyelesaikan nama host, gunakan
fungsi @menyelesaikan:

saddr @resolve(my.host.foo) proto tcp dport ssh MENERIMA;
saddr @resolve((another.host.foo third.host.foo)) proto tcp dport openvpn TERIMA;
daddr @resolve(ipv6.google.com, AAAA) proto tcp dport http MENERIMA;

Perhatikan tanda kurung ganda di baris kedua: pasangan dalam untuk membuat daftar ferm,
dan pasangan luar sebagai pembatas parameter fungsi.

Parameter kedua adalah opsional, dan menentukan jenis catatan DNS. Standarnya adalah "A".

Hati-hati dengan nama host yang diselesaikan dalam konfigurasi firewall. Permintaan DNS dapat memblokir
konfigurasi firewall untuk waktu yang lama, membuat mesin rentan, atau mungkin gagal.

@kucing(a, b, ...)
Gabungkan semua parameter menjadi satu string.

@substr(ekspresi, mengimbangi, panjangnya)
Mengekstrak substring dari ekspresi dan mengembalikannya. Karakter pertama berada pada offset 0. Jika
OFFSET negatif, dimulai sejauh itu dari ujung string.

@panjang(ekspresi)
Mengembalikan panjang karakter nilai EXPR.

@namadasar(jalur)
Kembalikan nama dasar file untuk jalur tertentu (File::Spec::splitpath).

@dirname(jalan)
Kembalikan nama direktori terakhir untuk jalur yang diberikan, dengan asumsi komponen terakhir adalah a
nama file (File::Spec::splitpath).

@ipfilter(daftar)
Memfilter alamat IP yang jelas tidak cocok dengan domain saat ini. Itu adalah
berguna untuk membuat variabel dan aturan umum untuk IPv4 dan IPv6:

@def $TRUSTED_HOSTS = (192.168.0.40 2001:abcd:ef::40);

domain (ip ip6) rantai INPUT {
saddr @ipfilter($TRUSTED_HOSTS) proto tcp dport ssh TERIMA;
}

RESEP


./contoh/ direktori berisi banyak konfigurasi ferm yang dapat digunakan untuk memulai
firewall baru. Bagian ini berisi lebih banyak sampel, resep, dan trik.

Mudah pelabuhan ekspedisi
Fungsi Ferm membuat tugas rutin menjadi cepat dan mudah:

@def &FORWARD_TCP($proto, $port, $tujuan) = {
tabel filter rantai antarmuka FORWARD $DEV_WORLD outerface $DEV_DMZ daddr $proto tujuan $proto dport $port MENERIMA;
table nat chain PREROUTING antarmuka $DEV_WORLD daddr $HOST_STATIC proto $proto dport $port DNAT ke $dest;
}

&FORWARD_TCP(tcp, http, 192.168.1.2);
&FORWARD_TCP(tcp, smtp, 192.168.1.3);
&FORWARD_TCP((tcp udp), domain, 192.168.1.4);

terpencil ferm
Jika mesin target tidak dapat berjalan ferm untuk beberapa alasan (mungkin perangkat yang disematkan
tanpa Perl), Anda dapat mengedit ferm file konfigurasi di komputer lain dan biarkan ferm
menghasilkan skrip Shell di sana.

Contoh untuk OpenWRT:

ferm --remote --shell mywrt/ferm.conf >mywrt/firewall.user
chmod +x mywrt/firewall.pengguna
scp mywrt/firewall.user mywrt.local.net:/ etc /
ssh mywrt.local.net /etc/firewall.user

PILIHAN


--noexec Jangan eksekusi iptables(8) perintah, tetapi lewati saja. Dengan cara ini kamu bisa
mengurai data Anda, gunakan --garis untuk melihat outputnya.

--menyiram Menghapus aturan firewall dan menetapkan kebijakan semua rantai ke ACCEPT. ferm
membutuhkan file konfigurasi untuk menentukan domain dan tabel mana yang
terpengaruh.

--garis Tampilkan garis firewall yang dihasilkan dari aturan. Mereka akan ditampilkan
tepat sebelum dieksekusi, jadi jika Anda mendapatkan pesan kesalahan dari iptables(8)
dll., Anda dapat melihat aturan mana yang menyebabkan kesalahan.

--interaktif
Terapkan aturan firewall dan minta konfirmasi dari pengguna. Kembali ke
aturan sebelumnya jika tidak ada respons pengguna yang valid dalam 30 detik (lihat
--waktu habis). Ini berguna untuk administrasi firewall jarak jauh: Anda dapat menguji
aturan tanpa takut mengunci diri.

--waktu habis S If --interaktif digunakan, lalu putar kembali jika tidak ada respons pengguna yang valid
setelah jumlah detik ini. Standarnya adalah 30.

--membantu Tampilkan daftar singkat opsi baris perintah yang tersedia.

--Versi: kapan Menunjukkan nomor versi program.

--cepat Aktifkan mode cepat: ferm menghasilkan iptables-simpan(8) file, dan menginstalnya
dengan pemulihan iptables(8). Ini jauh lebih cepat, karena panggilan ferm iptables(8)
sekali untuk setiap aturan secara default.

Mode cepat diaktifkan secara default sejak ferm 2.0, menghentikan opsi ini.

--lambat Nonaktifkan mode cepat, yaitu jalankan iptables(8) untuk setiap aturan, dan jangan gunakan
pemulihan iptables(8).

--kerang Hasilkan skrip shell yang memanggil pemulihan iptables(8) dan mencetaknya.
Menyiratkan --fast --lines.

--terpencil Buat aturan untuk mesin jarak jauh. menyiratkan --noexec dan --garis. Dapat
digabungkan dengan --kerang.

--domain {ip|ip6}
Tangani hanya domain yang ditentukan. ferm output mungkin kosong jika domainnya adalah
tidak dikonfigurasi dalam file input.

--def '$nama=nilai'
Ganti variabel yang ditentukan dalam file konfigurasi.

Gunakan ferm online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

  • 1
    Plugin Eclipse Checkstyle
    Plugin Eclipse Checkstyle
    Plugin Eclipse Checkstyle
    mengintegrasikan kode Java Checkstyle
    auditor ke dalam Eclipse IDE. Itu
    plug-in memberikan umpan balik real-time untuk
    pengguna tentang viol...
    Unduh Plug-in Eclipse Checkstyle
  • 2
    AstrOrzPlayer
    AstrOrzPlayer
    AstrOrz Player adalah pemutar media gratis
    perangkat lunak, sebagian berdasarkan WMP dan VLC. Itu
    pemain dalam gaya minimalis, dengan
    lebih dari sepuluh warna tema, dan bisa juga
    b ...
    Unduh AstrOrzPlayer.dll
  • 3
    movistartv
    movistartv
    Kodi Movistar+ TV adalah ADDON untuk XBMC/
    Kode yang mengizinkan penyalurnya
    decodificador de the service IPTV de
    Movistar terintegrasi ke salah satu dari mereka
    mediacenter ma...
    Unduh movistartv.dll
  • 4
    Kode :: Blok
    Kode :: Blok
    Code::Blocks adalah gratis, sumber terbuka,
    lintas platform C, C++ dan Fortran IDE
    dibangun untuk memenuhi kebutuhan yang paling menuntut
    penggunanya. Ini dirancang untuk menjadi sangat
    ekstensi...
    Unduh Kode::Blok
  • 5
    Di tengah
    Di tengah
    Di tengah atau Antarmuka Minecraft Tingkat Lanjut
    dan Pelacakan Data/Struktur adalah alat untuk
    tampilkan ikhtisar Minecraft
    dunia, tanpa benar-benar menciptakannya. Dia
    bisa ...
    Unduh Di tengah
  • 6
    MSYS2
    MSYS2
    MSYS2 adalah kumpulan alat dan
    perpustakaan menyediakan Anda dengan
    lingkungan yang mudah digunakan untuk membangun,
    menginstal dan menjalankan Windows asli
    perangkat lunak. Ini men...
    Unduh MSYS2.dll
  • Lebih banyak lagi »

Perintah Linux

Ad