EnglishFrenchSpanyol

Favicon OnWorks

ferm - Dalam talian di Awan

Jalankan ferm dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah arahan arahan yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.

JADUAL:

NAMA


ferm - parser peraturan firewall untuk linux

SINOPSIS


Ferm pilihan fail input

DESCRIPTION


Ferm adalah bahagian hadapan untuk iptables. Ia membaca peraturan daripada fail konfigurasi berstruktur
dan panggilan iptables(8) untuk memasukkannya ke dalam kernel yang sedang berjalan.

FermMatlamat adalah untuk menjadikan peraturan firewall mudah ditulis dan mudah dibaca. Ia cuba mengurangkan
tugas yang membosankan untuk menulis peraturan, sekali gus membolehkan pentadbir firewall berbelanja
lebih banyak masa untuk membangunkan peraturan yang baik daripada pelaksanaan peraturan yang betul.

Untuk mencapai ini, Ferm menggunakan bahasa konfigurasi yang mudah tetapi berkuasa, yang membolehkan
pembolehubah, fungsi, tatasusunan, blok. Ia juga membolehkan anda memasukkan fail lain, membenarkan
anda untuk mencipta perpustakaan struktur dan fungsi yang biasa digunakan.

Ferm, disebut "firma", singkatan dari "For Easy Rule Making".

PERHATIAN


Halaman manual ini tidak tidak ingin mengajar anda cara firewall berfungsi dan cara menulis yang baik
peraturan. Sudah ada dokumentasi yang mencukupi mengenai topik ini.

PENGENALAN


Mari kita mulakan dengan contoh mudah:

rantai INPUT {
proto tcp TERIMA;
}

Ini akan menambah peraturan pada rantaian input yang dipratentukan, memadankan dan menerima semua tcp
peket. Ok, mari jadikan ia lebih rumit:

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

Ini akan memasukkan 4 peraturan, iaitu 2 dalam input rantai, dan 2 dalam output rantai, padanan dan
menerima kedua-dua paket udp dan tcp. Biasanya anda akan menaip 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 betapa kurang menaip yang perlu kita lakukan? :-)

Pada asasnya, ini sahaja yang ada, walaupun anda boleh menjadikannya lebih rumit.
Sesuatu untuk dilihat:

rantai INPUT {
polisi TERIMA;
daddr 10.0.0.0/8 proto tcp dport ! ftp jump mychain sport :1023 TOS 4 settos 8 markah 2;
daddr 10.0.0.0/8 proto tcp dport ftp TOLAK;
}

Maksud saya di sini ialah, *anda* perlu membuat peraturan yang bagus, pastikan peraturan itu boleh dibaca oleh anda dan
orang lain, dan tidak membuatnya menjadi kucar-kacir.

Ia akan membantu pembaca jika peraturan firewall yang terhasil diletakkan di sini untuk rujukan.
Selain itu, anda boleh memasukkan versi bersarang dengan kebolehbacaan yang lebih baik.

Cuba gunakan ulasan untuk menunjukkan perkara yang anda lakukan:

# baris ini membolehkan perproksian http telus untuk rangkaian dalaman:
proto tcp if eth0 daddr ! 192.168.0.0/255.255.255.0
dport http LALU ARAH ke-port 3128;

Anda akan berterima kasih untuk itu nanti!

rantai INPUT {
polisi TERIMA;
antara muka (eth0 ppp0) {
# tolak akses kepada penggodam notorius, kembali ke sini jika tiada perlawanan
# didapati menyambung semula firewall biasa
lompat badguys;

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

Lebih banyak anda bersarang, lebih baik ia kelihatan. Pastikan pesanan yang anda nyatakan adalah betul, anda
tidak mahu melakukan ini:

rantai KE HADAPAN {
proto ! udp DROP;
proto tcp dport ftp TERIMA;
}

kerana peraturan kedua tidak akan pernah sepadan. Cara terbaik adalah untuk menentukan dahulu segala-galanya
dibenarkan, dan kemudian menafikan segala-galanya. Lihat contoh untuk lebih banyak syot kilat yang baik.
Kebanyakan orang melakukan sesuatu seperti ini:

proto tcp {
dport (
ssh http ftp
) TERIMA;
dport 1024:65535 ! syn TERIMA;
JATUH;
}

STRUKTUR OF A KEBAKARAN FAIL


Struktur fail tembok api yang betul kelihatan seperti kod C yang dipermudahkan. Hanya beberapa sahaja
aksara sintaksis digunakan dalam fail konfigurasi ferm. Selain istimewa ini
karakter, ferm menggunakan 'kunci' dan 'nilai', fikirkannya sebagai pilihan dan parameter, atau sebagai
pembolehubah dan nilai, apa sahaja.

Dengan perkataan ini, anda mentakrifkan ciri tembok api anda. Setiap tembok api
terdiri daripada dua perkara: Pertama, lihat jika trafik rangkaian sepadan dengan syarat tertentu dan
kedua, apa yang perlu dilakukan dengan trafik itu.

Anda boleh menentukan syarat yang sah untuk program antara muka kernel yang anda gunakan,
mungkin iptables(8). Sebagai contoh, dalam iptables, apabila anda cuba memadankan paket tcp,
anda akan berkata:

iptables --protocol tcp

Dalam ferm, ini akan menjadi:

protokol tcp;

Hanya menaip ini dalam ferm tidak melakukan apa-apa, anda perlu memberitahu ferm (sebenarnya, anda perlu
memberitahu iptables(8) dan kernel) apa yang perlu dilakukan dengan mana-mana trafik yang sepadan dengan keadaan ini:

iptables --protocol tcp -j TERIMA

Atau, diterjemahkan ke Ferm:

protokol tcp TERIMA;

. ; watak berada di penghujung setiap peraturan ferm. Ferm mengabaikan pemecahan baris, bermakna
contoh di atas adalah sama dengan yang berikut:

protokol tcp
TERIMA;

Berikut ialah senarai watak istimewa:

; Watak ini memuktamadkan peraturan.

Dipisahkan oleh koma bertitik, anda boleh menulis berbilang peraturan dalam satu baris, walaupun ini
mengurangkan kebolehbacaan:

protokol tcp TERIMA; protokol udp DROP;

{} Simbol bersarang mentakrifkan 'blok' peraturan.

Tanda kurung kerinting mengandungi sebarang bilangan peraturan bersarang. Semua perlawanan sebelum
blok dibawa ke hadapan untuk ini.

Kurungan kerinting penutup memuktamadkan set peraturan. Anda tidak sepatutnya menulis ';' selepas
itu, kerana itu akan menjadi peraturan kosong.

Contoh:

rantai INPUT proto icmp {
icmp-type echo-request TERIMA;
JATUH;
}

Blok ini menunjukkan dua peraturan di dalam blok, yang kedua-duanya akan digabungkan dengan apa-apa sahaja
di hadapannya, jadi anda akan mendapat dua peraturan:

iptables -A INPUT -p icmp --icmp-type echo-request -j TERIMA
iptables -A INPUT -p icmp -j HENTI

Terdapat beberapa peringkat bersarang:

rantai INPUT {
proto icmp {
icmp-type echo-request TERIMA;
JATUH;
}
daddr 172.16.0.0/12 TOLAK;
}

Ambil perhatian bahawa peraturan 'TOLAK' tidak dipengaruhi oleh 'proto icmp', walaupun tidak ada
';' selepas pendakap kerinting penutup. Diterjemah ke iptables:

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

$ Pengembangan berubah-ubah. Menggantikan '$FOO' dengan nilai pembolehubah. Lihat bahagian
PELBAGAI untuk maklumat lanjut.

& Panggilan fungsi. Lihat bahagian FUNGSI untuk maklumat lanjut.

() Simbol tatasusunan. Menggunakan kurungan, anda boleh menentukan 'senarai' nilai yang
hendaklah digunakan untuk kunci di sebelah kirinya.

Contoh:

protokol ( tcp udp icmp )

ini akan menghasilkan tiga peraturan:

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

Hanya nilai boleh 'disenaraikan', jadi anda tidak boleh melakukan sesuatu seperti ini:

proto tcp ( TERIMA LOG );

tetapi anda boleh melakukan ini:

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

(yang akan menghasilkan sembilan peraturan!)

Nilai dipisahkan oleh ruang. Simbol tatasusunan adalah kiri dan kanan-
bersekutu, berbeza dengan blok bersarang, yang bersekutu kiri sahaja.

" # " Simbol komen. Apa-apa sahaja yang mengikut simbol ini sehingga ke penghujung baris ialah
diabaikan.

"`perintah`"
Jalankan arahan dalam shell, dan masukkan output proses. Lihat bahagian
kutu belakang untuk maklumat lanjut.

'tali'
Petikan rentetan yang mungkin mengandungi ruang putih, tanda dolar dsb.

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

"tali"
Petik rentetan (lihat di atas), tetapi rujukan berubah dengan tanda dolar adalah
dinilai:

DNAT kepada "$myhost:$myport";

kata kunci
Dalam bahagian sebelumnya, kami telah memperkenalkan beberapa kata kunci asas seperti "rantai",
"protokol" dan "TERIMA". Mari kita terokai sifat mereka.

Terdapat tiga jenis kata kunci:

· lokasi kata kunci menentukan tempat peraturan akan dibuat. Contoh: "meja", "rantai".

· sepadan dengan kata kunci melakukan ujian pada semua paket yang lulus. Peraturan semasa adalah tanpa
kesan jika satu (atau lebih) daripada perlawanan tidak lulus. Contoh: "proto", "daddr".

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

· sasaran kata kunci menyatakan perkara yang perlu dilakukan dengan paket. Contoh: "TERIMA", "TOLAK",
"melompat".

Sesetengah sasaran menentukan lebih banyak kata kunci untuk menentukan butiran: "TOLAK penolakan-dengan icmp-
bersih tidak boleh dicapai".

Setiap peraturan terdiri daripada a lokasi dan sasaran, ditambah sebarang bilangan perlawanan:

penapis jadual # lokasi
proto tcp dport (http https) # padanan
TERIMA; # sasaran

Tegasnya, terdapat jenis keempat: Ferm kata kunci (yang mengawal dalaman ferm
tingkah laku), tetapi ia akan dijelaskan kemudian.

Parameter
Banyak kata kunci mengambil parameter. Ini boleh ditentukan sebagai literal, rujukan boleh ubah atau
senarai (susunan):

proto udp
saddr $TRUSTED_HOSTS;
proto tcp dport (http https ssh);
Log-awalan awalan "funky wardriver alert: ";

Sesetengah daripada mereka boleh dinafikan (senarai tidak boleh dinafikan):

proto !esp;
proto udp dport !domain;

Kata kunci yang tidak mengambil parameter akan dinafikan dengan awalan '!':

proto tcp !syn;

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

ASAS Kata-kata berkaitan


Lokasi kata kunci
domain [ip|ip6]
Tetapkan domain. "ip" adalah lalai dan bermaksud "IPv4" (iptables). "ip6" adalah untuk IPv6
sokongan, menggunakan "ip6tables".

meja [penapis|nat|mangle]
Menentukan jadual netfilter peraturan ini akan dimasukkan ke: "penapis" (lalai),
"nat" atau "mangle".

rantaian [nama rantai]
Menentukan rantaian penapis bersih (dalam jadual semasa) peraturan ini akan menjadi
dimasukkan ke. Nama rantaian pratakrif biasa ialah "INPUT", "OUTPUT", "FORWARD",
"PREROUTING", "POSTROUTING", bergantung pada jadual. Lihat penapis bersih
dokumentasi untuk perincian.

Jika anda menentukan rantaian yang tidak wujud di sini, ferm akan menambahkan peraturan pada rantaian tersuai
dengan nama itu.

dasar [TERIMA|JATUHKAN|..]
Menentukan dasar lalai untuk rantaian semasa (terbina dalam sahaja). Boleh jadi salah satu
sasaran terbina dalam (TERIMA, DROP, TOLAK, ...). Satu paket yang tidak sepadan dengan peraturan
dalam rantaian akan dianggap seperti yang dinyatakan oleh polisi.

Untuk mengelakkan kekaburan, sentiasa nyatakan dasar semua rantai yang dipratentukan
secara eksplisit.

@subchain ["RANTAI-NAME"] { ... }
Berfungsi seperti pengendali blok biasa (iaitu tanpa @subchain kata kunci), kecuali
Bahawa Ferm memindahkan peraturan dalam pendakap kerinting ke dalam rantai tersuai baharu. Nama
untuk rantai ini dipilih secara automatik oleh ferm.

Dalam kebanyakan kes, ini lebih pantas daripada hanya satu blok, kerana kernel mungkin melangkau a
blok peraturan yang besar apabila prasyarat adalah palsu. Bayangkan contoh berikut:

rantai penapis meja 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) TERIMA;
domain dport proto udp TERIMA;
}
}

Ini menghasilkan 20 peraturan. Apabila paket tiba yang tidak melepasi saddr
padanan, ia tetap menyemak kesemua 20 peraturan. Dengan @subchain, semakan ini dilakukan
sekali, menghasilkan penapisan rangkaian yang lebih pantas dan kurang beban CPU:

rantai penapis meja INPUT {
saddr (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) @subchain {
proto tcp dport (http https ssh) TERIMA;
domain dport proto udp TERIMA;
}
}

Secara pilihan, anda boleh menentukan nama sub rantaian:

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

Nama itu boleh sama ada dalam rentetan yang dipetik secara literal atau ungkapan fermi yang diperluaskan
seperti @cat("antara muka_", $iface) atau @substr($var,0,20).

Anda boleh mencapai perkara yang sama dengan mengisytiharkan rantaian tersuai secara eksplisit, tetapi anda mungkin merasakannya
yang menggunakan @subchain memerlukan kurang menaip.

Asas iptables sepadan dengan kata kunci
antara muka [nama antara muka]
Tentukan nama antara muka, kad rangkaian luar anda, seperti eth0, atau dailup like
ppp1, atau apa sahaja peranti yang anda mahu padankan untuk menghantar paket. Ia adalah setara
ke suis "-i" masuk iptables(8).

muka luar [nama antara muka]
Sama seperti antara muka, hanya untuk memadankan antara muka keluar untuk satu paket, seperti dalam
iptables(8).

protokol [nama-protokol|nombor-protokol]
Pada masa ini disokong oleh kernel ialah tcp, udp dan icmp, atau masing-masing
nombor.

saddr|daddr [alamat-spesifikasi]
Padanan pada paket yang berasal dari alamat yang ditentukan (saddr) atau disasarkan pada
alamat (ayah).

Contoh:

saddr 192.168/8 TERIMA; # (sama dengan yang seterusnya:)
saddr 192.168.0.0/255.255.255.0 TERIMA;
daddr my.domain.com TERIMA;

serpihan
Tentukan bahawa hanya paket IP yang berpecah-belah harus dipadankan. Apabila paket sudah
lebih besar daripada saiz paket maksimum yang boleh dikendalikan oleh sistem anda (dipanggil Maximum
Unit Penghantaran atau MTU) mereka akan dicincang menjadi bit dan dihantar satu persatu sebagai
paket tunggal. Lihat ifconfig(8) jika anda ingin mencari MTU untuk sistem anda (the
lalai biasanya 1500 bait).

Serpihan sering digunakan dalam serangan DOS, kerana tiada cara untuk mencari
keluar dari asal paket serpihan.

sukan|dport [port-spec]
Padanan pada paket pada port TCP atau UDP yang ditentukan. "sukan" sepadan dengan sumber
port, dan dport sepadan dengan port destinasi.

Padanan ini boleh digunakan hanya selepas anda menyatakan "protokol tcp" atau "protokol udp",
kerana hanya kedua-dua protokol ini sebenarnya mempunyai port.

Dan beberapa contoh port/julat yang sah:

dport 80 TERIMA;
dport http TERIMA;
dport ssh:http TERIMA;
dport 0:1023 TERIMA; # bersamaan dengan :1023
dport 1023:65535 TERIMA;

syn Tentukan bahawa bendera SYN dalam pakej tcp harus dipadankan, yang digunakan untuk
membina sambungan tcp baharu. Anda boleh mengenal pasti sambungan masuk dengan ini, dan
tentukan sama ada anda mahu membenarkannya atau tidak. Paket yang tidak mempunyai bendera ini adalah
mungkin daripada sambungan yang telah sedia ada, jadi ia dianggap munasabah
selamat untuk membiarkan ini melalui.

modul [nama modul]
Muatkan modul iptables. Kebanyakan modul menyediakan lebih banyak kata kunci padanan. Kami akan sampai ke
itu nanti.

Asas sasaran kata kunci
melompat [nama-rantaian tersuai]
Melompat ke rantai tersuai. Jika tiada peraturan dalam rantaian tersuai dipadankan, netfilter akan kembali
kepada peraturan seterusnya dalam rantaian sebelumnya.

realgoto [nama-rantaian tersuai]
Pergi ke rangkaian tersuai. Berbeza dengan melompat pilihan, PULANG BALIK tidak akan meneruskan pemprosesan
dalam rantai ini tetapi sebaliknya dalam rantai yang memanggil kami melalui melompat.

Kata kunci realgoto telah dipilih semasa tempoh peralihan, kerana goto
(sudah ditamatkan) pernah menjadi alias untuk melompat.

TIDAK AKTIF Menerima paket yang sepadan.

GUGUR Lepaskan paket yang sepadan tanpa notis lanjut.

REJEK Menolak paket yang sepadan, iaitu menghantar paket ICMP kepada penghantar, iaitu port-
tidak boleh dihubungi secara lalai. Anda boleh menentukan jenis ICMP lain.

TOLAK; # lalai kepada icmp-port-unreachable
TOLAK reject-dengan icmp-net-unreachable;

Taip "iptables -j REJECT -h" untuk butiran.

PULANG BALIK Selesaikan rantaian semasa dan kembali ke rantai panggilan (jika "jump
[nama-rantai tersuai]" telah digunakan).

NOP Tiada tindakan langsung.

TAMBAHAN Kata-kata berkaitan


Netfilter adalah modular. Modul boleh menyediakan sasaran tambahan dan kata kunci padanan. Senarai
daripada modul netfilter sentiasa berkembang, dan ferm cuba untuk bersaing dengan menyokongnya
semua. Bab ini menerangkan modul yang sedang disokong.

iptables sepadan dengan modul
akaun Trafik akaun untuk semua hos dalam rangkaian/netmask yang ditentukan. Ini adalah salah satu daripada
padankan modul yang berkelakuan seperti sasaran, iaitu anda kebanyakannya perlu menggunakan NOP
sasaran.

nama akaun mod mynetwork aaddr 192.168.1.0/24 ashort NOP;

addrtype
Semak jenis alamat; sama ada alamat sumber atau alamat destinasi.

mod addrtype src-type BROADCAST;
mod addrtype dst-type LOCAL;

Taip "iptables -m addrtype -h" untuk butiran.

ah Menyemak pengepala SPI dalam paket AH.

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

Argumen tambahan untuk IPv6:

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

komen Menambahkan ulasan sehingga 256 aksara pada peraturan, tanpa kesan. Perhatikan bahawa
tidak seperti komen ferm ('#'), yang ini akan dipaparkan dalam "iptables -L".

komen komen mod "Ini ulasan saya." TERIMA;

keadaan
Padan jika nilai dalam /proc/net/ipt_condition/NAME ialah 1 (path is
/proc/net/ip6t_condition/NAME untuk domain ip6).

keadaan mod mod (abc def) TERIMA;
syarat keadaan mod !foo TERIMA;

connbytes
Padankan dengan berapa banyak bait atau paket sambungan (atau salah satu daripada dua aliran
membentuk sambungan) telah dipindahkan setakat ini, atau dengan purata bait setiap
sebungkus.

mod connbytes connbytes 65536: connbytes-dir kedua-dua connbytes-mod bait TERIMA;
mod connbytes connbytes !1024:2048 connbytes-dir reply connbytes-mod paket TERIMA;

Nilai yang sah untuk connbytes-dir: asal, membalas, kedua-dua; untuk mod connbytes:
paket, bait, avgpkt.

connlimit
Membolehkan anda mengehadkan bilangan sambungan TCP selari kepada pelayan setiap
alamat IP pelanggan (atau blok alamat).

mod connlimit connlimit-di atas 4 TOLAK;
mod connlimit connlimit-di atas !4 TERIMA;
mod connlimit connlimit-above 4 connlimit-mask 24 TOLAK;

connmark
Semak medan tanda yang dikaitkan dengan sambungan, ditetapkan oleh sasaran CONNMARK.

mod connmark markah 64;
mod connmark markah 6/7;

conntrack
Semak maklumat penjejakan sambungan.

mod conntrack ctstate (BERKAITAN YANG DITUBUHKAN);
mod conntrack ctproto tcp;
mod conntrack ctorigsrc 192.168.0.2;
mod conntrack ctorigdst 1.2.3.0/24;
mod conntrack ctorigsrcport 67;
mod conntrack ctorigdstport 22;
mod conntrack ctreplsrc 2.3.4.5;
mod conntrack ctrepldst ! 3.4.5.6;
mod conntrack ctstatus DIJAMIN;
mod conntrack ctexpire 60;
mod conntrack ctexpire 180:240;

Taip "iptables -m conntrack -h" untuk butiran.

dccp Semak atribut khusus DCCP (Datagram Congestion Control Protocol). ini
modul dimuatkan secara automatik apabila anda menggunakan "protokol dccp".

proto dccp sport 1234 dport 2345 TERIMA;
proto dccp dccp-types (SYNCACK ACK) TERIMA;
proto dccp dccp-types !REQUEST DROP;
proto dccp dccp-option 2 TERIMA;

dscp Padankan medan DSCP 6 bit dalam medan TOS.

mod dscp dscp 11;
mod dscp dscp-kelas AF41;

ecn Padankan bit ECN pengepala TCP IPv4.

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

Taip "iptables -m ecn -h" untuk butiran.

esp Menyemak pengepala SPI dalam paket ESP.

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

eui64 "Modul ini sepadan dengan bahagian EUI-64 bagi alamat IPv6 autokonfigurasi tanpa negara.
Ia membandingkan EUI-64 yang diperoleh daripada alamat MAC sumber dalam bingkai Ehternet dengan
64 bit bawah alamat sumber IPv6. Tetapi bit "Universal/Tempatan" tidak
dibandingkan. Modul ini tidak sepadan dengan bingkai lapisan pautan lain dan hanya sah di dalamnya
rantai PREROUTING, INPUT dan FORWARD."

mod eui64 TERIMA;

kabur "Modul ini sepadan dengan had kadar berdasarkan pengawal logik kabur [FLC]."

mod fuzzy had bawah 10 atas-had 20 TERIMA;

hbh Padan dengan pengepala Pilihan Hop-by-Hop (ip6).

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

hl Padan dengan medan Had Hop (ip6).

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

penolong Semak modul pembantu conntrack yang menjejaki sambungan ini. Pelabuhan mungkin
ditentukan dengan "-portnr".

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

icmp Semak atribut khusus ICMP. Modul ini dimuatkan secara automatik apabila anda menggunakan
"protokol icmp".

proto icmp icmp-type echo-request TERIMA;

Pilihan ini juga boleh digunakan dalam be ip6 domain, walaupun ini dipanggil icmpv6 in
Jadual ip6.

Gunakan "iptables -p icmp "-h"" untuk mendapatkan senarai jenis ICMP yang sah.

iprange Padankan julat alamat IPv4.

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

ipv4options
Padankan pada pilihan pengepala IPv4 seperti penghalaan sumber, laluan rekod, cap masa dan
amaran penghala.

mod ipv4options ssrr TERIMA;
mod ipv4options lsrr TERIMA;
mod ipv4options no-srr TERIMA;
mod ipv4options !rr TERIMA;
mod ipv4options !ts TERIMA;
mod ipv4options !ra TERIMA;
mod ipv4options !any-opt TERIMA;

ipv6header
Padan dengan pengepala sambungan IPv6 (ip6).

pengepala ipv6header mod !(hop frag) TERIMA;
pengepala ipv6header mod (auth dst) TERIMA;

hadhlim
Sama seperti 'had mod', tetapi menambah keupayaan untuk menambah per-destinasi atau per-port
had diuruskan dalam jadual cincang.

mod hashlimit hadhlimit 10/minit hadhlimit-burst 30/minit
hashlimit-mod dstip hashlimit-name foobar TERIMA;

Nilai yang mungkin untuk mod hashlimit: dstip dstport srcip srcport (atau senarai dengan
lebih daripada satu daripada ini).

Terdapat lebih banyak tetapan yang mungkin, taip "iptables -m hashlimit -h" untuk
dokumentasi.

panjang Semak panjang pakej.

panjang mod 128; # tepat 128 bait
panjang mod panjang 512:768; # julat
panjang mod panjang! 256; # dinafikan

menghadkan Hadkan kadar paket.

had had mod 1/saat;
had had mod 15/minit had-pecah 10;

Taip "iptables -m limit -h" untuk butiran.

mac Padankan alamat MAC sumber.

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

tanda Memadankan paket berdasarkan medan tanda penapis bersih mereka. Ini mungkin integer 32 bit
antara 0 dan 4294967295.

tanda mod markah 42;

mh Padan dengan pengepala mobiliti (domain ip6).

proto mh jenis mh mengikat-kemas kini TERIMA;

multiport
Padankan set port sumber atau destinasi (UDP dan TCP sahaja).

mod multiport source-ports (https ftp);
mod multiport destinasi-port (domain mysql);

Peraturan ini mempunyai kelebihan besar berbanding "dport" dan "sukan": peraturan ini menjana hanya satu peraturan
untuk sehingga 15 port dan bukannya satu peraturan untuk setiap port.

ke- Padankan setiap paket 'n'.

mod nth setiap 3;
kaunter mod ke-5 setiap 2;
mod nth mula 2 setiap 3;
mod nth mula 5 paket 2 setiap 6;

Taip "iptables -m nth -h" untuk butiran.

osf Padankan paket bergantung pada sistem pengendalian pengirim.

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

Taip "iptables -m osf -h" untuk butiran.

pemilik Semak maklumat tentang pencipta paket, iaitu id pengguna, id kumpulan, id proses,
id sesi dan nama arahan.

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

("cmd-owner", "pid-owner" dan "sid-owner" memerlukan tampung kernel khas tidak
termasuk dalam kernel Linux vanila)

physdev Padan dengan peranti fizikal yang mana paket dimasukkan atau akan meninggalkannya
mesin. Ini berguna untuk antara muka yang dirapatkan.

mod physdev physdev-in ppp1;
mod physdev physdev-out eth2;
mod physdev physdev-is-in;
mod physdev physdev-is-out;
mod physdev physdev-is-bridged;

pkttype Semak jenis paket lapisan pautan.

mod pkttype pkt-type unicast;
mod pkttype pkt-type broadcase;
mod pkttype pkt-type multicast;

dasar Padan dengan dasar IPsec yang digunakan pada paket ini.

polisi mod dir keluar pol ipsec TERIMA;
polisi mod reqid ketat 23 spi 0x10 proto ah TERIMA;
mod polisi mod terowong terowong-src 192.168.1.2 TERIMA;
mod dasar terowong terowong-dst 192.168.2.1 TERIMA;
dasar mod ketat reqid seterusnya 24 spi 0x11 TERIMA;

Perhatikan bahawa kata kunci prototaip juga digunakan sebagai versi singkatan daripada protokol
(modul perlawanan terbina dalam). Anda boleh membetulkan konflik ini dengan sentiasa menggunakan panjang
kata kunci protokol.

psd Kesan imbasan port TCP/UDP.

mod psd-berat-ambang 21 psd-kelewatan-ambang 300
psd-lo-ports-weight 3 psd-hi-ports-weight 1 DROP;

kuota Melaksanakan kuota rangkaian dengan mengurangkan pembilang bait dengan setiap paket.

kuota kuota mod 65536 TERIMA;

rawak Padankan peratusan rawak semua paket.

mod rawak purata 70;

alam Padankan alam penghalaan. Berguna dalam persekitaran menggunakan BGP.

alam mod alam 3;

baru-baru ini Tandai alamat IP sumber buat sementara waktu.

mod set terkini;
mod terkini rcheck saat 60;
mod terbaharu set rsource name "badguy";
mod terkini set rdest;
mod terkini rcheck rsource name "badguy" saat 60;
mod terkini kemas kini saat 120 hitcount 3 rttl;

Modul penapis bersih ini mempunyai kecacatan reka bentuk: walaupun ia dilaksanakan sebagai padanan
modul, ia mempunyai tingkah laku seperti sasaran apabila menggunakan kata kunci "set".

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

rt Padankan pengepala penghalaan IPv6 (ip6 sahaja).

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

sctp Semak atribut khusus SCTP (Stream Control Transmission Protocol). ini
modul dimuatkan secara automatik apabila anda menggunakan "protokol sctp".

proto sctp sport 1234 dport 2345 TERIMA;
proto sctp chunk-types only DATA:Be ACCEPT;
proto sctp chunk-types mana-mana (INIT INIT_ACK) TERIMA;
proto sctp chunk-types !all (HEARTBEAT) TERIMA;

Gunakan "iptables -p sctp "-h"" untuk mendapatkan senarai jenis bahagian yang sah.

menetapkan Menyemak sumber atau destinasi IP/Port/MAC terhadap set.

set mod set badguys src DROP;

Lihathttp://ipset.netfilter.org/> untuk maklumat lanjut.

adalah Menyemak keadaan penjejakan sambungan.

keadaan mod keadaan TIDAK SAH DROP;
keadaan keadaan mod (BERKAITAN YANG DITETAPKAN) TERIMA;

Taip "iptables -m state -h" untuk butiran.

statistik
Pengganti ke- and rawak, pada masa ini tidak didokumenkan dalam iptables(8) halaman manusia.

mod statistik mod rawak kebarangkalian 0.8 TERIMA;
mod statistik nth setiap 5 paket 0 DROP;

rentetan Padan dengan rentetan.

rentetan mod rentetan "foo bar" TERIMA;
rentetan mod algo kmp dari 64 hingga 128 rentetan hex "deadbeef" TERIMA;

tcp Menyemak atribut khusus TCP. Modul ini dimuatkan secara automatik apabila anda menggunakan
"protokol tcp".

proto tcp sport 1234;
proto tcp dport 2345;
proto tcp tcp-flags (SYN ACK) SYN;
proto tcp tcp-flags ! (SYN ACK) SYN;
proto tcp tcp-flags SEMUA (RST ACK);
proto tcp syn;
proto tcp tcp-pilihan 2;
proto tcp mss 512;

Taip "iptables -p tcp -h" untuk butiran.

tcpmss Semak medan TCP MSS bagi paket SYN atau SYN/ACK.

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

masa Semak sama ada masa paket tiba adalah dalam julat tertentu.

masa mod mula masa 12:00;
masa mod masa 13:30;
hari masa mod (Isnin Rab Jum);
tarikh mod masa mula 2005:01:01;
tarikh mod masa mula 2005:01:01:23:59:59;
tarikh akhir masa mod 2005:04:01;
masa mod hari bulan (30 31);
masa mod hari kerja (Rabu Kha);
masa mod masa mula 12:00 utc;
masa mod mula masa 12:00 localtz;

Taip "iptables -m time -h" untuk butiran.

tos Memadankan paket pada nilai TOS yang ditentukan.

mod tos tos Minimumkan-Kos TERIMA;
mod tos tos !Perkhidmatan Biasa TERIMA;

Taip "iptables -m tos -h" untuk butiran.

ttl Padan dengan medan ttl (masa untuk hidup) dalam pengepala IP.

mod ttl ttl-eq 12; # ttl sama
mod ttl ttl-gt 10; # ttl lebih besar daripada
mod ttl ttl-lt 16; # ttl kurang daripada

u32 Membandingkan data mentah daripada paket. Anda boleh menentukan lebih daripada satu penapis dalam ferm
senarai; ini tidak dikembangkan kepada beberapa peraturan.

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

najis Memadankan paket yang kelihatan cacat atau luar biasa. Perlawanan ini tiada lagi
parameter.

iptables sasaran modul
Sasaran tambahan berikut tersedia secara ferm, dengan syarat anda mendayakannya
kernel anda:

KLASIFIKASI
Tetapkan kelas CBQ.

KLASIFIKASI set-kelas 3:50;

KLUSTERIP
Konfigurasikan kelompok nod mudah yang berkongsi alamat IP dan MAC tertentu.
Sambungan diagihkan secara statik antara nod.

CLUSTERIP mod hash baharu sourceip clustermac 00:12:34:45:67:89
jumlah-nod 4 tempatan-nod 2 hash-init 12345;

CONNMARK
Menetapkan nilai tanda penapis bersih yang dikaitkan dengan sambungan.

tanda set CONNMARK 42;
tanda simpan CONNMARK;
tanda pemulihan CONNMARK;
Topeng tanda simpan CONNMARK 0x7fff;
Topeng tanda pemulihan CONNMARK 0x8000;

CONNSECMARK
Modul ini menyalin tanda keselamatan daripada paket ke sambungan (jika tidak dilabel),
dan dari sambungan kembali ke paket (juga hanya jika tidak berlabel). Biasanya digunakan dalam
sempena SECMARK, ia hanya sah dalam jadual mangle.

CONNSECMARK jimat;
pemulihan CONNSECMARK;

DNAT kepada [ip-address|ip-range|ip-port-range]
Tukar alamat destinasi paket.

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

ECN Sasaran ini membolehkan untuk mengatasi lubang hitam ECN yang diketahui secara selektif. Ia hanya boleh
digunakan dalam jadual mangle.

ECN ecn-tcp-remove;

HL Ubah suai medan Had Hop IPv6 (ip6/mangle sahaja).

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

IPV4OPTSSTRIP
Keluarkan semua pilihan IP daripada satu paket. Modul ini tidak mengambil sebarang pilihan.

IPV4OPTSSTRIP;

LOG Log semua paket yang sepadan dengan peraturan ini dalam log kernel. Berhati-hati dengan log
banjir. Ambil perhatian bahawa ini ialah "sasaran bukan penamat", iaitu lintasan peraturan
diteruskan pada peraturan seterusnya.

Awalan log amaran peringkat log LOG "Lihat ini: ";
LOG log-tcp-jujukan log-tcp-pilihan;
LOG log-ip-pilihan;

MARK Menetapkan medan tanda penapis bersih untuk paket (integer 32 bit antara 0 dan
4294967295):

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

BERTOKOR
Menyamar padanan paket. Secara pilihan diikuti dengan port atau julat port untuk
iptables. Tentukan sebagai "123", "123-456" atau "123:456". Parameter julat port
menentukan dari mana sambungan yang disamarkan oleh pelabuhan tempatan harus berasal.

MENYAMAR;
MASQUERADE ke port 1234:2345;
MASQUERADE ke port 1234:2345 rawak;

MIRROR Sasaran demonstrasi percubaan yang menyongsangkan medan sumber dan destinasi
dalam pengepala IP.

CERMIN;

NETMAP Petakan keseluruhan rangkaian ke rangkaian lain dalam nat meja.

NETMAP kepada 192.168.2.0/24;

NOTRACK Lumpuhkan penjejakan sambungan untuk semua paket yang sepadan dengan peraturan itu.

proto tcp dport (135:139 445) NOTRACK;

NFLOG Log paket melalui netlink; ini adalah pengganti ULOG.

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

NFQUEUE Beratur ruang pengguna, memerlukan sokongan kernel nfnetlink_queue.

proto tcp dport ftp NFQUEUE queue-num 20;

BERATUR Beratur ruang pengguna, pendahulu kepada NFQUEUE. Semua paket pergi ke baris gilir 0.

proto tcp dport ftp QUEUE;

UBAH ARAH ke-pelabuhan [pelabuhan]
Proksi telus: ubah IP destinasi paket kepada mesin
sendiri.

proto tcp dport http LALU ARAH ke port 3128;
proto tcp dport http LALU ARAH ke port 3128 rawak;

SAMA Sama seperti SNAT, tetapi pelanggan dipetakan ke IP sumber yang sama untuk semua
sambungan.

SAMA kepada 1.2.3.4-1.2.3.7;
SAMA kepada 1.2.3.8-1.2.3.15 mengangguk;
SAMA kepada 1.2.3.16-1.2.3.31 rawak;

SECMARK Ini digunakan untuk menetapkan nilai tanda keselamatan yang dikaitkan dengan paket untuk digunakan oleh
subsistem keselamatan seperti SELinux. Ia hanya sah dalam jadual mangle.

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

SET [set-tambah|set-del] [nama set] [bendera]
Tambahkan IP pada set yang ditentukan. Lihathttp://ipset.netfilter.org/>

proto icmp icmp-type echo-request SET set tambah badguys src;

SNAT kepada [ip-address|ip-range|ip-port-range]
Tukar alamat sumber paket.

SNAT kepada 1.2.3.4;
SNAT kepada 1.2.3.4:20000-30000;
SNAT kepada 1.2.3.4 rawak;

TCPMSS Ubah nilai MSS paket TCP SYN.

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

COUGH set-tos [nilai]
Tetapkan bit Jenis Perkhidmatan pakej tcp kepada nilai ini. Ini akan digunakan oleh
apa sahaja penjadual trafik sanggup, kebanyakannya mesin linux anda sendiri, tetapi mungkin
lebih. Tos-bit asal dikosongkan dan ditimpa oleh nilai ini.

TOS set-tos Maksimumkan-Throughput;
TOS dan-tos 7;
TOS or-tos 1;
TOS xor-tos 4;

Taip "iptables -j TOS -h" untuk butiran.

TTL Ubah suai medan pengepala TTL.

TTL ttl-set 16;
TTL ttl-dis 1; # menurun sebanyak 1
TTL ttl-inc 4; # meningkat sebanyak 4

ULOG Log paket ke program ruang pengguna.

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

LAIN DOMAIN


Sejak versi 2.0, Ferm menyokong bukan sahaja ip and ip6, Tetapi juga arp (jadual ARP) dan eb
(jadual jambatan ethernet). Konsepnya serupa dengan iptables.

arptables kata kunci
sumber-ip, destinasi-ip
Padan dengan alamat IPv4 sumber atau destinasi. Sama seperti saddr and daddr dalam ip
domain.

sumber-mac, destinasi-mac
Padan dengan sumber atau alamat MAC destinasi.

antara muka, muka luar
Antara muka input dan output.

panjang-h
Panjang perkakasan paket.

rantai INPUT h-panjang 64 TERIMA;

Opcode Kod operasi, untuk butiran lihat iptables(8).

opcode 9 TERIMA;

jenis-h Jenis perkakasan.

h-jenis 1 TERIMA;

jenis proto
Jenis protokol.

jenis proto 0x800 TERIMA;

Mangling
Kata kunci mangle-ip-s, mangle-ip-d, mangle-mac-s, mangle-mac-d, mangle-target
boleh digunakan untuk ARP mangling. Lihat iptables(8) untuk butiran.

ebtables kata kunci
prototaip Padan dengan protokol yang mencipta bingkai, mis IPv4 or PPP. Untuk senarai, lihat
/etc/ethertypes.

antara muka, muka luar
Antara muka input dan output fizikal.

logik masuk, logik keluar
Antara muka jambatan logik.

saddr, daddr
Memadankan alamat MAC sumber atau destinasi.

Sepadan dengan modul
Modul padanan berikut disokong: 802.3, arp, ip, mark_m, pkttype, stp,
vlan, log.

Sasaran sambungan
Sambungan sasaran berikut disokong: arpreply, dnat, mark, redirect,
semput.

Sila ambil perhatian bahawa terdapat konflik antara --tanda daripada mark_m modul perlawanan
and -j tanda. Memandangkan kedua-duanya akan dilaksanakan dengan kata kunci ferm tanda, Kita
memutuskan untuk menyelesaikannya dengan menulis nama sasaran dalam huruf besar, seperti yang lain
domain. Contoh berikut menulis semula tanda 1 hingga 2:

markah 1 MARKAH 2;

ADVANCED CIRI-CIRI


Pembolehubah
Dalam fail tembok api yang kompleks, adalah berguna untuk menggunakan pembolehubah, contohnya untuk memberikan rangkaian
antara muka nama yang bermakna.

Untuk menetapkan pembolehubah, tulis:

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

Dalam kod ferm sebenar, pembolehubah digunakan seperti mana-mana parameter kata kunci lain:

antara muka INPUT rantai $DEV_INTERNET proto tcp dport $MORE_PORTS ACCEPT;

Ambil perhatian bahawa pembolehubah hanya boleh digunakan dalam parameter kata kunci ("192.168.1.1", "http"); mereka
tidak boleh mengandungi kata kunci ferm seperti "proto" atau "antara muka".

Pembolehubah hanya sah dalam blok semasa:

@def $DEV_INTERNET = eth1;
rantai INPUT {
proto tcp {
@def $DEV_INTERNET = ppp0;
antara muka $DEV_INTERNET dport http TERIMA;
}
antara muka $DEV_INTERNET DROP;
}

akan diperluaskan kepada:

rantai INPUT {
proto tcp {
antara muka ppp0 dport http TERIMA;
}
antara muka eth1 DROP;
}

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

Sertakan fail adalah istimewa - pembolehubah yang diisytiharkan dalam fail yang disertakan masih tersedia dalam
blok panggilan. Ini berguna apabila anda memasukkan fail yang hanya mengisytiharkan pembolehubah.

automatik pembolehubah
Sesetengah pembolehubah ditetapkan secara dalaman oleh ferm. Skrip Ferm boleh menggunakannya sama seperti yang lain
berubah-ubah.

$FILENAME
Nama fail konfigurasi berbanding dengan direktori ferm telah dimulakan dalam.

$FILEBNAME
Nama asas fail konfigurasi.

$DIRNAME
Direktori fail konfigurasi.

$DOMAIN Domain semasa. Satu daripada ip, ip6, arp, eb.

$JADUAL Jadual netfilter semasa.

$RANTAI Rantaian penapis bersih semasa.

$LINE Barisan skrip semasa. Ia boleh digunakan seperti ini:

@def &log($msg) = {
LOG log-prefix "rule=$msg:$LINE ";
}
.
.
.
&log("mesej log");

Fungsi
Fungsi adalah serupa dengan pembolehubah, kecuali ia mungkin mempunyai parameter, dan ia menyediakan
perintah ferm, bukan nilai.

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

@def &TCP_TUNNEL($port, $dest) = {
rantai penapis meja Antara muka FORWARD ppp0 proto tcp dport $port daddr $dest outerface eth0 TERIMA;
table nat chain PREROUTING antara muka ppp0 proto tcp dport $port daddr 1.2.3.4 DNAT to $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 mengandungi blok (seperti '{...}') mestilah perintah terakhir dalam ferm
peraturan, iaitu ia mesti diikuti dengan ';'. '&FOO()' contoh tidak mengandungi blok, oleh itu
anda boleh menulis 'TERIMA' selepas panggilan. Untuk memintas perkara ini, anda boleh menyusun semula kata kunci:

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

kutu belakang
Dengan backticks, anda boleh menggunakan output arahan luaran:

@def $DNSSERVERS = `grep nameserver /etc/resolv.conf | awk '{print $2}'`;
rantai INPUT proto tcp saddr $DNSSERVERS TERIMA;

Perintah itu dilaksanakan dengan shell (/ Bin / sh), sama seperti kutu belakang dalam perl. Ferm tidak
tidak melakukan apa-apa pengembangan berubah-ubah di sini.

Output kemudian ditandakan, dan disimpan sebagai senarai ferm (tatasusunan). Baris bermula dengan '#'
diabaikan; baris lain mungkin mengandungi sebarang bilangan nilai, dipisahkan oleh ruang putih.

Termasuk
. @termasuk kata kunci membolehkan anda memasukkan fail luaran:

@termasuk 'vars.ferm';

Nama fail adalah relatif kepada fail panggilan, contohnya apabila termasuk daripada
/etc/ferm/ferm.conf, pernyataan di atas termasuk /etc/ferm/vars.ferm. Pembolehubah dan
fungsi yang diisytiharkan dalam fail yang disertakan masih tersedia dalam fail panggilan.

termasuk berfungsi dalam satu blok:

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

Jika anda menentukan direktori (dengan jejak '/'), semua fail dalam direktori ini adalah
disertakan, diisih mengikut abjad:

@termasuk 'ferm.d/';

Dengan simbol paip mengekor, Ferm melaksanakan perintah shell dan menghuraikan outputnya:

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

Keadaan
Kata kunci @jika memperkenalkan ungkapan bersyarat:

@jika $condition DROP;

Nilai dinilai benar seperti dalam Perl: sifar, senarai kosong, rentetan kosong adalah palsu,
semua yang lain adalah benar. Contoh untuk nilai sebenar:

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

Contoh untuk nilai palsu:

(); 0; '0'; ''

Terdapat juga @lain:

@jika $condition DROP; @else TOLAK;

Perhatikan titik bertitik sebelum @lain.

Ia adalah mungkin untuk menggunakan pendakap kerinting selepas sama ada @jika or @lain:

@jika $condition {
MARKAH set-mark 2;
KEMBALI;
} @lainnya {
MARKAH set-mark 3;
}

Memandangkan pendakap kerinting penutup juga menamatkan perintah, tidak perlu tanda titik bertitik.

Tidak ada @elsif, Gunakan @lain @jika sebaliknya.

Contoh:

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

cangkuk
Untuk menjalankan arahan tersuai, anda boleh memasang cangkuk:

@cangkuk pra "gema 0 >/proc/sys/net/ipv4/conf/eth0/forwarding";
@hook post "gema 1 >/proc/sys/net/ipv4/conf/eth0/forwarding";
@hook flush "gema 0 >/proc/sys/net/ipv4/conf/eth0/forwarding";

Perintah yang ditentukan dilaksanakan menggunakan shell. "pra" bermaksud jalankan arahan sebelum
menggunakan peraturan firewall, dan "post" bermaksud jalankan arahan selepas itu. cangkuk "siram".
dijalankan selepas ferm telah memadamkan peraturan tembok api (pilihan --flush). Anda boleh memasang mana-mana
bilangan mata kail.

BANGUNAN FUNGSI


Terdapat beberapa fungsi terbina dalam yang mungkin berguna untuk anda.

@eq(a,b)
Menguji dua nilai untuk kesaksamaan. Contoh:

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

@ne(a,b)
Sama seperti @eq, ini menguji bukan kesamaan.

@bukan(x)
Meniadakan nilai boolean.

@resolve((nama hos1 nama hos2 ...), [jenis])
Biasanya, nama hos diselesaikan oleh iptables. Untuk membenarkan ferm menyelesaikan nama hos, gunakan
fungsi @resolve:

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

Perhatikan kurungan berganda dalam baris kedua: pasangan dalam untuk membuat senarai ferm,
dan pasangan luar sebagai pembatas parameter fungsi.

Parameter kedua adalah pilihan, dan menentukan jenis rekod DNS. Lalai ialah "A".

Berhati-hati dengan nama hos yang diselesaikan dalam konfigurasi tembok api. Permintaan DNS boleh menyekat
konfigurasi tembok api untuk masa yang lama, menjadikan mesin terdedah, atau mungkin gagal.

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

@substr(ungkapan, mengimbangi, panjang)
Mengeluarkan subrentetan daripada ungkapan dan mengembalikannya. Aksara pertama berada pada offset 0. Jika
OFFSET adalah negatif, bermula jauh dari hujung rentetan.

@panjang(ungkapan)
Mengembalikan panjang dalam aksara nilai EXPR.

@basename(path)
Kembalikan nama asas fail untuk laluan yang diberikan (Fail::Spec::splitpath).

@dirname(path)
Kembalikan nama direktori terakhir untuk laluan yang diberikan, dengan mengandaikan komponen terakhir ialah a
nama fail (Fail::Spec::splitpath).

@ipfilter(senarai)
Menapis alamat IP yang jelas tidak sepadan dengan domain semasa. Itu dia
berguna untuk mencipta pembolehubah dan peraturan biasa untuk IPv4 dan IPv6:

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

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

RESEPI


. ./contoh/ direktori mengandungi banyak konfigurasi ferm yang boleh digunakan untuk bermula
tembok api baharu. Bahagian ini mengandungi lebih banyak sampel, resipi dan helah.

Mudah pelabuhan penghantaran
Fungsi Ferm menjadikan tugas rutin cepat dan mudah:

@def &FORWARD_TCP($proto, $port, $dest) = {
rantai penapis meja antara muka FORWARD $DEV_WORLD muka luar $DEV_DMZ daddr $dest proto $proto dport $port TERIMA;
table nat chain PREROUTING antara muka $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);

Jauh Ferm
Jika mesin sasaran tidak dapat dijalankan Ferm atas sebab tertentu (mungkin peranti terbenam
tanpa Perl), anda boleh mengedit Ferm fail konfigurasi pada komputer lain dan biarkan Ferm
hasilkan skrip shell di sana.

Contoh untuk OpenWRT:

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

PILIHAN


--noexec Jangan laksanakan iptables(8) arahan, tetapi langkau sebaliknya. Dengan cara ini anda boleh
menghuraikan data anda, gunakan --garisan untuk melihat output.

--siram Kosongkan peraturan tembok api dan tetapkan dasar semua rantaian kepada TERIMA. Ferm
memerlukan fail konfigurasi untuk itu untuk menentukan domain dan jadual yang mana
terjejas.

--garisan Tunjukkan garisan tembok api yang dijana daripada peraturan. Mereka akan ditunjukkan
sebelum ia dilaksanakan, jadi jika anda mendapat mesej ralat daripada iptables(8)
dll., anda boleh melihat peraturan yang menyebabkan ralat.

--interaktif
Gunakan peraturan tembok api dan minta pengesahan daripada pengguna. Berbalik kepada
set peraturan sebelumnya jika tiada respons pengguna yang sah dalam masa 30 saat (lihat
--masa tamat). Ini berguna untuk pentadbiran tembok api jauh: anda boleh menguji
peraturan tanpa takut mengunci diri.

--masa tamat S If --interaktif digunakan, kemudian gulung semula jika tiada respons pengguna yang sah
selepas bilangan saat ini. Lalai ialah 30.

- membantu Tunjukkan senarai ringkas pilihan baris perintah yang tersedia.

--versi Menunjukkan nombor versi program.

--cepat Dayakan mod pantas: ferm menjana an iptables-save(8) fail, dan pasangkannya
bersama iptables-restore(8). Ini lebih cepat, kerana panggilan ferm iptables(8)
sekali untuk setiap peraturan secara lalai.

Mod pantas didayakan secara lalai sejak Ferm 2.0, menafikan pilihan ini.

--perlahan Lumpuhkan mod pantas, iaitu lari iptables(8) untuk setiap peraturan, dan jangan gunakan
iptables-restore(8).

- cengkaman Hasilkan skrip shell yang memanggil iptables-restore(8) dan mencetaknya.
Menyiratkan --cepat --garisan.

--jauh Hasilkan peraturan untuk mesin jauh. menyiratkan --noexec and --garisan. Boleh jadi
digabungkan dengan - cengkaman.

--domain {ip|ip6}
Hanya mengendalikan domain yang ditentukan. Ferm output mungkin kosong jika domain itu
tidak dikonfigurasikan dalam fail input.

--def '$name=value'
Gantikan pembolehubah yang ditakrifkan dalam fail konfigurasi.

Gunakan ferm dalam talian menggunakan perkhidmatan onworks.net


Pelayan & Stesen Kerja Percuma

Muat turun apl Windows & Linux

  • 1
    Pelanggan Desktop Rocket.Chat
    Pelanggan Desktop Rocket.Chat
    Pelanggan Rocket.Chat Desktop ialah
    aplikasi desktop rasmi untuk Rocket.Chat,
    web sumber terbuka yang ringkas tetapi berkuasa
    platform sembang. Ia diuji pada macOS,
    Tingkap ...
    Muat turun Pelanggan Desktop Rocket.Chat
  • 2
    OfficeFloor
    OfficeFloor
    OfficeFloor menyediakan penyongsangan bagi
    kawalan gandingan, dengan: - pergantungan
    suntikan - suntikan sambungan -
    suntikan benang Untuk maklumat lanjut
    melawat...
    Muat turun OfficeFloor
  • 3
    DivKit
    DivKit
    DivKit ialah sumber terbuka Didorong Pelayan
    Rangka kerja UI (SDUI). Ia membolehkan anda
    melancarkan kemas kini bersumberkan pelayan kepada
    versi aplikasi yang berbeza. Juga, boleh jadi
    terpakai untuk ...
    Muat turun DivKit
  • 4
    subconverter
    subconverter
    Utiliti untuk menukar antara pelbagai
    format langganan. Pengguna Shadowrocket
    harus menggunakan ss, ssr atau v2ray sebagai sasaran.
    Anda boleh menambah &remark= kepada
    HT yang disukai Telegram...
    Muat turun subconverter
  • 5
    SWASH
    SWASH
    SWASH ialah berangka tujuan umum
    alat untuk mensimulasikan goyah,
    bukan hidrostatik, permukaan bebas,
    fenomena aliran putaran dan pengangkutan
    di perairan pantai sebagai...
    Muat turun SWASH
  • 6
    VBA-M (Diarkib - Kini di Github)
    VBA-M (Diarkib - Kini di Github)
    Projek telah berpindah ke
    https://github.com/visualboyadvance-m/visualboyadvance-m
    Ciri-ciri: Ciptaan menipu simpan statesmulti
    sistem, menyokong gba, gbc, gb, sgb,
    sgb2Tu...
    Muat turun VBA-M (Diarkib - Sekarang di Github)
  • Lebih »

Arahan Linux

Ad