Man page - iptables-extensions(8)
Packages contains this manual
- ip6tables-legacy(8)
- ip6tables-restore-translate(8)
- ip6tables-restore(8)
- nfnl_osf(8)
- iptables-xml(1)
- ebtables-nft-restore(8)
- arptables-nft-save(8)
- ebtables-translate(8)
- iptables-nft-save(8)
- ip6tables-nft-restore(8)
- iptables-nft-restore(8)
- xtables-legacy(8)
- iptables-restore(8)
- xtables-nft(8)
- ip6tables-legacy-save(8)
- ebtables-nft-save(8)
- iptables-restore-translate(8)
- iptables-translate(8)
- ip6tables-apply(8)
- arptables-nft-restore(8)
- iptables-extensions(8)
- xtables-translate(8)
- ip6tables-nft-save(8)
- ip6tables-legacy-restore(8)
- ebtables-nft(8)
- ip6tables-nft(8)
- xtables-nft-multi(8)
- ip6tables-translate(8)
- iptables-save(8)
- arptables-translate(8)
- iptables-legacy-save(8)
- iptables-legacy-restore(8)
- ip6tables-save(8)
- iptables(8)
- xtables-legacy-multi(8)
- arptables-nft(8)
- ip6tables(8)
- iptables-nft(8)
- iptables-apply(8)
- iptables-legacy(8)
- xtables-monitor(8)
apt-get install iptables
Available languages:
en fr ja ru roManual
iptables-extensions
NUMESINOPSIS
EXTENSII DE POTRIVIRE
addrtype
ah (specifică IPv6)
ah (specifică IPv4)
bpf
cgroup
cluster
comment
connbytes
connlabel
connlimit
connmark
conntrack
cpu
dccp
devgroup
dscp
dst (specific IPv6)
ecn
esp
eui64 (specific IPv6)
frag (specific IPv6)
hashlimit
hbh (specific IPv6)
helper
hl (specific IPv6)
icmp (specific IPv4)
icmp6 (specific IPv6)
iprange
ipv6header (specific IPv6)
ipvs
length
limit
mac
mark
mh (specific IPv6)
multiport
nfacct
osf
owner
physdev
pkttype
policy
quota
rateest
realm (specific IPv4)
recent
rpfilter
rt (IPv6-specific)
sctp
set
soclu
state
statistic
string
tcp
tcpmss
time
tos
ttl (specific IPv4)
u32
udp
EXTENSII PENTRU ȚINTĂ
AUDIT
CHECKSUM
CLASSIFY
CLUSTERIP (specific IPv4)
CONNMARK
CONNSECMARK
CT
DNAT
DNPT (specific IPv6)
DSCP
ECN (specific IPv4)
HL (specific IPv6)
HMARK
IDLETIMER
LED
LOG
MARK
MASQUERADE
NETMAP
NFLOG
NFQUEUE
NOTRACK
RATEEST
REDIRECT
REJECT (specific IPv6)
REJECT (specific IPv4)
SECMARK
SET
SNAT
SNPT (specific IPv6)
SYNPROXY
TCPMSS
TCPOPTSTRIP
TEE
TOS
TPROXY
TRACE
TTL (specific IPv4)
ULOG (specific IPv4)
TRADUCERE
NUME
iptables-extensions - lista de extensii din distribuția iptables standard
SINOPSIS
ip6tables [ -m nume [ opțiuni-modul ...]] [ -j nume-țintă [ opțiuni-țintă ...]
iptables [ -m nume [ opțiuni-modul ...]] [ -j nume-țintă [ opțiuni-țintă ...]
EXTENSII DE POTRIVIRE
iptables poate utiliza module extinse de potrivire a pachetelor cu opțiunile -m sau --match , urmate de numele modulului de potrivire; după acestea, devin disponibile diverse opțiuni suplimentare de linie de comandă, în funcție de modulul specific. Puteți specifica mai multe module de potrivire extinsă într-o singură linie și puteți utiliza opțiunile -h sau --help după ce modulul a fost specificat pentru a primi ajutor specific acelui modul. Modulele de potrivire extinsă sunt evaluate în ordinea în care sunt specificate în regulă.
Dacă -p sau --protocol a fost specificată și dacă și numai dacă este întâlnită o opțiune necunoscută, iptables va încerca să încarce un modul de potrivire cu același nume ca protocolul, pentru a încerca să facă opțiunea disponibilă.
addrtype
Acest modul potrivește pachetele în funcție de tipul de adresă . Tipurile de adresă sunt utilizate în cadrul stivei de rețea a nucleului și clasifică adresele în diverse grupuri. Definiția exactă a acelui grup depinde de protocolul specific stratului trei.
Sunt posibile următoarele tipuri de adrese:
|
UNSPEC |
o adresă nespecificată (adică 0.0.0.0) |
UNICAST
o adresă uni-difuzare „unicast”
|
LOCAL |
o adresă locală |
BROADCAST
o adresă de difuzare în toată rețeaua „broadcast”
ANYCAST
un pachet „anycast”
MULTICAST
o adresă de difuzare multiplă (către mai multe mașini) „multicast”
BLACKHOLE
o adresă de gaură neagră „blackhole”
UNREACHABLE
o adresă inaccesibilă „unreachable”
PROHIBIT
o adresă interzisă „prohibited”
|
THROW |
FIXME |
|||
|
NAT |
FIXME |
XRESOLVE
[
!
]
--src-type
tip
Se potrivește dacă adresa sursă este de tipul dat
[ ! ] --dst-type tip
Se potrivește dacă adresa de destinație este de tipul dat
--limit-iface-in
Verificarea tipului de adresă poate fi limitată la interfața de intrare a pachetului. Această opțiune este valabilă numai în lanțurile PREROUTING , INPUT și FORWARD . Ea nu poate fi specificată cu opțiunea --limit-iface-out .
--limit-iface-out
Verificarea tipului de adresă poate fi limitată la interfața pe care pleacă pachetul. Această opțiune este valabilă numai în lanțurile POSTROUTING , OUTPUT și FORWARD . Ea nu poate fi specificată cu opțiunea --limit-iface-in .
ah (specifică IPv6)
Acest modul
potrivește parametrii din antetul de autentificare al
pachetelor IPsec.
[
!
]
--ahspi
spi
[
:
spi
]
Se potrivește cu SPI.
[ ! ] --ahlen lungimea
Lungimea totală a acestui antet în octeți.
--ahres
Se potrivește dacă câmpul rezervat este completat cu zero.
ah (specifică IPv4)
Acest modul
potrivește SPI-urile din antetul de autentificare al
pachetelor IPsec.
[
!
]
--ahspi
spi
[
:
spi
]
bpf
Potrivire cu
ajutorul filtrului de soclu Linux „Linux Socket
Filter”. Așteaptă o rută către un
obiect eBPF sau un program cBPF în format zecimal.
--object-pinned
ruta
Transmite o rută către un obiect eBPF fixat.
Aplicațiile încarcă programele eBPF în nucleu cu apelul de sistem bpf() și comanda BPF_PROG_LOAD și le pot fixa într-un sistem de fișiere virtual cu BPF_OBJ_PIN. Pentru a utiliza un obiect fixat în iptables, montați sistemul de fișiere bpf utilizând
mount -t bpf bpf ${BPF_MOUNT}
apoi inserați filtrul în iptables după rută:
iptables -A OUTPUT -m bpf --object-pinned ${BPF_MOUNT}/{PINNED_PATH} -j ACCEPT
--bytecode cod
Transmite formatul codului de octeți BPF generat de instrumentul nfbpf_compile .
Formatul codului este similar cu rezultatul comenzii «tcpdump -ddd»: o linie care stochează numărul de instrucțiuni, urmată de o linie pentru fiecare instrucțiune. Liniile de instrucțiuni urmează modelul „u16 u8 u8 u32” în notație zecimală. Câmpurile codifică operația, decalajul de salt dacă este adevărat, decalajul de salt dacă este fals și câmpul generic multiutilizare „K”. Comentariile nu sunt acceptate.
De exemplu, pentru a citi numai pachetele care corespund „ip proto 6”, introduceți următorul text, fără comentarii sau spații albe:
4 #
numărul de instrucțiuni
48 0 0 9 # încarcă octetul ip->proto
21 0 1 6 # salt egal cu IPPROTO_TCP
6 0 0 1 # returnează pasul (diferit de zero)
6 0 0 0 # returnează eroarea (zero)
Puteți trece acest filtru la potrivirea bpf cu următoarea comandă:
iptables -A OUTPUT -m bpf --bytecode ’4,48 0 0 9,21 0 1 6,6 0 0 1,6 0 0 0’ -j ACCEPT
Sau, în schimb, puteți apela instrumentul nfbpf_compile.
iptables -A OUTPUT -m bpf --bytecode "‘nfbpf_compile RAW ’ip proto 6’‘" -j ACCEPT
Sau utilizați «tcpdump -ddd». În acest caz, generați BPF vizând un dispozitiv cu același tip de legătură de date ca și potrivirea xtables. Iptables trece pachetele de la nivelul de rețea în sus, fără nivelul mac. Selectați un dispozitiv cu tipul de legătură de date RAW, cum ar fi un dispozitiv tun:
ip tuntap add
tun0 mode tun
ip link set tun0 up
tcpdump -ddd -i tun0 ip proto 6
Consultați «tcpdump -L -i $dev» pentru o listă a tipurilor de legături/conexiuni de date cunoscute pentru un anumit dispozitiv.
Este posibil să doriți să aflați mai multe despre BPF din pagina de manual bpf(4) a FreeBSD.
cgroup
[ ! ] --path ruta
Potrivește apartenența la cgroup2.
Fiecare soclu este asociat cu cgroup-ul v2 al procesului de creare. Aceasta se potrivește cu pachetele care provin de la sau se îndreaptă către toate soclurile din subierarhia rutei specificate. Ruta trebuie să fie relativă la rădăcina ierarhiei cgroup2.
[ ! ] --cgroup id-clasă
Se potrivește cu id-clasă al cgroup net_cls.
id-clasă „classid” este marcajul stabilit prin controlorul cgroup net_cls. Această opțiune și opțiunea „--path” nu pot fi utilizate împreună.
Exemplu:
iptables -A OUTPUT -p tcp --sport 80 -m cgroup ! --path service/http-server -j DROP
iptables -A OUTPUT -p tcp --sport 80 -m cgroup ! --cgroup 1 -j DROP
IMPORTANT : atunci când este utilizată în lanțul INPUT, potrivirea cgroup are în prezent doar o funcționalitate limitată, ceea ce înseamnă că se va potrivi doar cu pachetele care sunt procesate pentru soclurile locale prin demultiplexarea timpurie a soclurilor. Prin urmare, utilizarea generală pe lanțul INPUT nu este recomandată decât dacă implicațiile sunt bine înțelese.
Disponibilă începând cu Linux 3.14.
cluster
Vă permite să implementați clustere de partajare a încărcării porții de acces și a serverului „back-end” fără a avea nevoie de echilibratori de încărcare.
Această
potrivire necesită ca toate nodurile să vadă
aceleași pachete. Astfel, potrivirea clusterului decide
dacă acest nod trebuie să gestioneze un pachet
având în vedere următoarele opțiuni:
--cluster-total-nodes
număr
Stabilește numărul total de noduri din cluster.
[ ! ] --cluster-local-node număr
Stabilește ID-ul numărului nodului local.
[ ! ] --cluster-local-nodemask masca
Stabilește masca ID a numărului nodului local. Puteți utiliza această opțiune în loc de opțiunea --cluster-local-node .
--cluster-hash-seed valoare
Stabilește valoarea seminței sumei de control (hash) a funcției Jenkins.
Exemplu:
iptables -A PREROUTING -t mangle -i eth1 -m cluster --cluster-total-nodes 2 --cluster-local-node 1 --cluster-hash-seed 0xdeadbeef -j MARK --set-mark 0xffff
iptables -A PREROUTING -t mangle -i eth2 -m cluster --cluster-total-nodes 2 --cluster-local-node 1 --cluster-hash-seed 0xdeadbeef -j MARK --set-mark 0xffff
iptables -A PREROUTING -t mangle -i eth1 -m mark ! --mark 0xffff -j DROP
iptables -A PREROUTING -t mangle -i eth2 -m mark ! --mark 0xffff -j DROP
Și următoarele comenzi pentru a face ca toate nodurile să vadă aceleași pachete:
ip maddr add 01:00:5e:00:01:01 dev eth1
ip maddr add 01:00:5e:00:01:02 dev eth2
arptables -A OUTPUT -o eth1 --h-length 6 -j mangle --mangle-mac-s 01:00:5e:00:01:01
arptables -A INPUT -i eth1 --h-length 6 --destination-mac 01:00:5e:00:01:01 -j mangle --mangle-mac-d 00:zz:yy:xx:5a:27
arptables -A OUTPUT -o eth2 --h-length 6 -j mangle --mangle-mac-s 01:00:5e:00:01:02
arptables -A INPUT -i eth2 --h-length 6 --destination-mac 01:00:5e:00:01:02 -j mangle --mangle-mac-d 00:zz:yy:xx:5a:27
NOTAȚIE : comenzile arptables de mai sus utilizează sintaxa dezvoltatorilor principali. Dacă utilizați arptables-jf inclus în unele versiuni RedHat, CentOS și Fedora, vă veți lovi de erori de sintaxă. Prin urmare, va trebui să le adaptați la sintaxa arptables-jf pentru a le face să funcționeze.
În cazul conexiunilor TCP, facilitatea de preluare trebuie să fie dezactivată pentru a evita marcarea ca valide a pachetelor TCP ACK care vin în direcția de răspuns.
echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose
comment
Vă permite
să adăugați comentarii (până la
256 de caractere) la orice regulă.
--comment
comentariu
Exemplu:
iptables -A INPUT -i eth1 -m comment --comment "my local LAN"
connbytes
Potrivește în funcție de numărul de octeți sau pachete pe care o conexiune (sau unul dintre cele două fluxuri care constituie conexiunea) le-a transferat până în prezent sau în funcție de numărul mediu de octeți pe pachet.
Contoarele sunt pe 64 de biți și, prin urmare, nu este de așteptat să se debordeze ;)
Principala utilizare este detectarea descărcărilor de lungă durată și marcarea acestora pentru a fi programate folosind o bandă de prioritate inferioară în controlul traficului.
Octeții transferați pe conexiune pot fi vizualizați și prin «conntrack -L» și accesați prin «ctnetlink».
OBSERVAȚI
că pentru conexiunile care nu au informații
contabile, potrivirea va returna întotdeauna fals.
Fanionul sysctl
„net.netfilter.nf_conntrack_acct”
controlează dacă conexiunile
new
vor fi
numărate în octeți/pachete. Fluxurile de
conexiuni existente nu vor câștiga/pierde
o/structura de contabilizare atunci când fanionul
sysctl be este inversat.
[
!
]
--connbytes
from
[
:
to
]
potrivește pachetele de la o conexiune ale cărei pachete/octeți/mărime medie a pachetelor este mai mare decât FROM și mai mică decât TO octeți/pachete. dacă TO este omis, se face doar verificarea FROM. „!” se utilizează pentru a potrivi pachetele care nu se încadrează în interval.
--connbytes-dir { original | reply | both }
ce pachete trebuie luate în considerare
--connbytes-mode { packets | bytes | avgpkt }
dacă se verifică cantitatea de pachete, numărul de octeți transferați sau dimensiunea medie (în octeți) a tuturor pachetelor primite până în prezent. Rețineți că atunci când „both” este utilizat împreună cu „avgpkt”, iar datele circulă (în principal) într-o singură direcție (de exemplu HTTP), dimensiunea medie a pachetelor va fi aproximativ jumătate din pachetele de date reale.
Exemplu:
iptables .. -m connbytes --connbytes 10000:100000 --connbytes-dir both --connbytes-mode bytes ...
connlabel
Modulul
potrivește sau adaugă connlabels la o conexiune.
connlabels sunt similare cu connmarks, cu excepția
faptului că etichetele sunt bazate pe biți;
adică toate etichetele pot fi atașate unui flux
în același timp. În prezent sunt acceptate
până la 128 de etichete unice.
[
!
]
--label
nume
potrivește dacă eticheta numele a fost definită pe o conexiune. În locul unui nume (care va fi tradus într-un număr, a se vedea EXEMPLUL de mai jos), poate fi utilizat un număr. Utilizarea unui număr prevalează întotdeauna asupra connlabel.conf.
|
--set |
dacă eticheta nu a fost definită pe conexiune, definiți-o. Rețineți că definirea unei etichete poate eșua. Acest lucru se datorează faptului că nucleul alocă zona de stocare a etichetei conntrack atunci când este creată conexiunea și rezervă doar cantitatea de memorie necesară setului de reguli care există în momentul creării conexiunii. În acest caz, potrivirea va eșua (sau va reuși, în cazul în care opțiunea --label a fost negată). |
Această potrivire depinde de libnetfilter_conntrack 1.0.4 sau ulterior. Traducerea etichetelor se face prin intermediul fișierului de configurare /etc/xtables/connlabel.conf .
Exemplu:
0 eth0-in
|
1 |
|||
|
eth0-out |
|||
|
2 |
|||
|
ppp-in |
|||
|
3 |
|||
|
ppp-out |
|||
|
4 |
|||
|
bulk-traffic |
|||
|
5 |
|||
|
interactive |
connlimit
Vă permite
să restricționați numărul de conexiuni
paralele la un server per adresă IP client (sau bloc de
adrese client).
--connlimit-upto
n
Se potrivește dacă numărul de conexiuni existente este mai mic sau egal cu n .
--connlimit-above n
Se potrivește dacă numărul de conexiuni existente este mai mare decât n .
--connlimit-mask lungime-prefix
Grupează gazdele folosind lungimea prefixului. Pentru IPv4, acesta trebuie să fie un număr cuprins între (inclusiv) 0 și 32. Pentru IPv6, între 0 și 128. Dacă nu este specificată, se utilizează lungimea maximă a prefixului pentru protocolul aplicabil.
--connlimit-saddr
Aplică limita asupra grupului sursă. Aceasta este valoarea implicită dacă nu este specificată opțiunea „--connlimit-daddr”.
--connlimit-daddr
Aplică limita pe grupul de destinație.
Exemple:
|
• |
permite 2 conexiuni telnet pentru fiecare gazdă client |
iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT
|
• |
se poate face și invers: |
iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-upto 2 -j ACCEPT
|
• |
limitează numărul de cereri HTTP paralele la 16 per rețea sursă de clasă C (mască de rețea de 24 de biți) |
iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 16 --connlimit-mask 24 -j REJECT
|
• |
limitează numărul de cereri HTTP paralele la 16 pentru conexiunea la rețeaua locală |
ip6tables -p tcp --syn --dport 80 -s fe80::/64 -m connlimit --connlimit-above 16 --connlimit-mask 64 -j REJECT
|
• |
Limitează numărul de conexiuni la o anumită gazdă: |
ip6tables -p tcp --syn --dport 49152:65535 -d 2001:db8::1 -m connlimit --connlimit-above 100 -j REJECT
connmark
Acest modul se
potrivește cu câmpul de marcaj netfilter asociat
unei conexiuni (care poate fi definit utilizând
ținta
CONNMARK
de mai jos).
[
!
]
--mark
valoare
[
/
masca
]
Potrivește pachetele din conexiuni cu valoarea de marcare dată (dacă este specificată o mască, aceasta este logic AND cu marca înainte de comparație).
conntrack
Acest modul,
atunci când este combinat cu urmărirea
conexiunii, permite accesul la starea de urmărire a
conexiunii pentru acest pachet/conexiune.
[
!
]
--ctstate
listă-stare
listă-stare este o listă separată prin virgule a stărilor conexiunii care trebuie să corespundă. Stările posibile sunt enumerate mai jos.
[ ! ] --ctproto l4proto
Protocolul Layer-4 care trebuie să corespundă (după număr sau nume)
[
!
]
--ctorigsrc
adresa
[
/
masca
]
[
!
]
--ctorigdst
adresa
[
/
masca
]
[
!
]
--ctreplsrc
adresa
[
/
masca
]
[
!
]
--ctrepldst
adresa
[
/
masca
]
Potrivire cu adresa sursă/destinație originală/replică
[
!
]
--ctorigsrcport
port
[
:
port
]
[
!
]
--ctorigdstport
port
[
:
port
]
[
!
]
--ctreplsrcport
port
[
:
port
]
[
!
]
--ctrepldstport
port
[
:
port
]
Potrivire în funcție de portul sursă/destinație original/răspuns (TCP/UDP/etc.) sau de cheia GRE. Potrivirea în funcție de intervalele de porturi este acceptată numai în versiunile de nucleu mai mari de 2.6.38.
[ ! ] --ctstatus listă-stare
listă-stare este o listă separată prin virgule a stărilor conexiunii care trebuie să corespundă. Stările posibile sunt enumerate mai jos.
[ ! ] --ctexpire timp [ : timp ]
Potrivește durata de viață rămasă în secunde cu o valoare dată sau un interval de valori (inclusiv)
--ctdir { ORIGINAL | REPLY }
Potrivește pachetele care circulă în direcția specificată. Dacă acest fanion nu este specificat deloc, se potrivesc pachetele în ambele direcții.
Stări
pentru
--ctstate
:
INVALID
Pachetul nu este asociat cu nicio conexiune cunoscută.
|
NEW |
Pachetul a inițiat o conexiune nouă sau a fost asociat cu o conexiune care nu a primit pachete în ambele direcții. |
ESTABLISHED
Pachetul este asociat cu o conexiune care a văzut pachete în ambele direcții.
RELATED
Pachetul începe o conexiune nouă, dar este asociat cu o conexiune existentă, cum ar fi un transfer de date FTP sau o eroare ICMP.
UNTRACKED
Pachetul nu este urmărit deloc, ceea ce se întâmplă dacă îl anulați în mod explicit folosind „-j CT --notrack” în tabelul brut.
|
SNAT |
O stare virtuală, care se potrivește dacă adresa sursă inițială diferă de destinația răspunsului. |
||
|
DNAT |
O stare virtuală, care se potrivește dacă destinația inițială diferă de sursa răspunsului. |
Stări pentru --ctstatus :
|
NONE |
Niciuna dintre cele de mai jos. |
EXPECTED
Aceasta este o conexiune așteptată (adică un asistent conntrack a configurat-o).
SEEN_REPLY
Conntrack a văzut pachete în ambele direcții.
ASSURED
Intrarea conntrack nu trebuie să fie niciodată expirată înainte de termen.
CONFIRMED
Conexiunea este confirmată: pachetul de origine a părăsit locația.
cpu
[ ! ] --cpu număr
Potrivește cpu-ul care gestionează acest pachet. cpu-urile sunt numerotate de la 0 la NR_CPU-1 Poate fi utilizat în combinație cu RPS (Remote Packet Steering) sau cu NIC-uri cu multiple cozi pentru a repartiza traficul de rețea pe cozi diferite.
Exemplu:
iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-ports 8081
Disponibilă începând cu Linux 2.6.36.
dccp
[
!
]
--source-port
,
--sport
port
[
:
port
]
[
!
]
--destination-port
,
--dport
port
[
:
port
]
[
!
]
--dccp-types
masca
Potrivește atunci când tipul de pachet DCCP este unul dintre „mask”. „mask” este o listă de tipuri de pachete separate prin virgule. Tipurile de pachete sunt: REQUEST RESPONSE DATA ACK DATAACK CLOSEREQ CLOSE RESET SYNC SYNCACK INVALID .
[ ! ] --dccp-option număr
Se potrivește dacă este definită opțiunea DCCP.
devgroup
Potrivește
grupul de dispozitive al interfeței de
intrare/ieșire a unui pachet.
[
!
]
--src-group
nume
Potrivește grupul de dispozitive al dispozitivului de intrare
[ ! ] --dst-group nume
Potrivește grupul de dispozitive al dispozitivului de ieșire
dscp
Acest modul
corespunde câmpului DSCP de 6 biți din
câmpul TOS din antetul IP. DSCP a înlocuit TOS
în cadrul IETF.
[
!
]
--dscp
valoare
Potrivire cu o valoare numerică (zecimală sau hexazecimală) 0-63.
[ ! ] --dscp-class clasa
Potrivește clasa DiffServ. Această valoare poate fi oricare dintre clasele BE, EF, AFxx sau CSx. Aceasta va fi apoi convertită în valoarea sa numerică corespunzătoare.
dst (specific IPv6)
Acest modul
corespunde parametrilor din antetul opțiunilor de
destinație
[
!
]
--dst-len
lungime
Lungimea totală a acestui antet în octeți.
--dst-opts tip [ : lungime ][ , tip [ : lungime ]...]
tipul numeric al opțiunii și lungimea datelor opțiunii în octeți.
ecn
Acest lucru
vă permite să potriviți biții ECN din
antetul IPv4/IPv6 și TCP. ECN este mecanismul de
notificare explicită a congestiei, astfel cum este
specificat în RFC3168
[
!
]
--ecn-tcp-cwr
Aceasta se potrivește dacă bitul TCP ECN CWR (Congestion Window Received) este activat.
[ ! ] --ecn-tcp-ece
Aceasta se potrivește dacă bitul TCP ECN ECE (ECN Echo) este activat.
[ ! ] --ecn-ip-ect număr
Aceasta se potrivește cu un anumit IPv4/IPv6 ECT (ECN-Capable Transport). Trebuie să specificați un număr între „0” și „3”.
esp
Acest modul
potrivește SPI-urile din antetul ESP al pachetelor
IPsec.
[
!
]
--espspi
spi
[
:
spi
]
eui64 (specific IPv6)
Acest modul potrivește partea EUI-64 a unei adrese IPv6 autoconfigurate stateless. Acesta compară EUI-64 derivat din adresa MAC sursă din cadrul Ethernet cu cei 64 de biți inferiori ai adresei sursă IPv6. Dar bitul „Universal/Local” nu este comparat. Acest modul nu se potrivește cu alte cadre de strat de legătură și este valabil numai în lanțurile PREROUTING , INPUT și FORWARD .
frag (specific IPv6)
Acest modul
potrivește parametrii din antetul Fragment.
[
!
]
--fragid
id
[
:
id
]
Potrivește identificarea dată sau un interval al acesteia.
[ ! ] --fraglen lungime
Această opțiune nu poate fi utilizată cu versiunea de nucleu 2.6.10 sau ulterioară. Lungimea antetului Fragment este statică și această opțiune nu are sens.
--fragres
Se potrivește dacă câmpurile rezervate sunt completate cu zero.
--fragfirst
Se potrivește cu primul fragment.
--fragmore
Se potrivește dacă există mai multe fragmente.
--fraglast
Se potrivește dacă acesta este ultimul fragment.
hashlimit
hashlimit utilizează „găleți” hash pentru a exprima o potrivire de limitare a ratei (precum potrivirea limitei ) pentru un grup de conexiuni utilizând o singură regulă iptables. Gruparea se poate face pe grup de gazde (adresă sursă și/sau destinație) și/sau pe port. Aceasta vă oferă posibilitatea de a exprima „ N pachete per măsură-timp per grup” sau „ N octeți per secundă” (a se vedea mai jos pentru câteva exemple).
Sunt necesare
opțiunile de limită hash (
--hashlimit-upto
,
--hashlimit-above
) și
--hashlimit-name
.
--hashlimit-upto
cantitate
[
/second
|
/minute
|
/hour
|
/day
]
Se potrivește dacă rata este mai mică sau egală cu cantitatea /măsură-timp. Aceasta este specificată fie ca număr, cu un sufix opțional de măsură-timp de timp (valoarea implicită este 3/oră), fie ca amount b/secundă (număr de octeți pe secundă).
--hashlimit-above cantitate [ /second | /minute | /hour | /day ]
Se potrivește dacă rata este mai mare de cantitate /măsură-timp.
--hashlimit-burst cantitate
Numărul inițial maxim de pachete pentru potrivire: acest număr se reîncarcă cu unu de fiecare dată când limita specificată mai sus nu este atinsă, până la acest număr; valoarea implicită este 5. Atunci când se solicită potrivirea ratei pe bază de octeți, această opțiune specifică cantitatea de octeți care poate depăși rata dată. Această opțiune trebuie utilizată cu prudență - dacă intrarea expiră, valoarea burst este și ea reinițializată.
--hashlimit-mode { srcip | srcport | dstip | dstport } , ...
O listă separată prin virgule de obiecte care trebuie luate în considerare. Dacă nu este furnizată opțiunea „--hashlimit-mode”, hashlimit acționează ca limită, dar la prețul de a face curățenie în hash.
--hashlimit-srcmask prefix
Atunci când se utilizează „--hashlimit-mode srcip”, toate adresele sursă întâlnite vor fi grupate în funcție de lungimea prefixului dat, iar subrețeaua astfel creată va fi supusă hashlimit. prefix trebuie să fie între (inclusiv) 0 și 32. Rețineți că „--hashlimit-srcmask 0” face practic același lucru ca și nespecificarea «srcip» pentru „--hashlimit-mode”, dar este tehnic mai costisitor.
--hashlimit-dstmask prefix
Ca „--hashlimit-srcmask”, dar pentru adresele de destinație.
--hashlimit-name foo
Numele pentru intrarea /proc/net/ipt_hashlimit/foo.
--hashlimit-htable-size găleți
Numărul de găleți ale tabelului hash
--hashlimit-htable-max intrări
Numărul maxim de intrări în tabelul hash.
--hashlimit-htable-expire msec
După câte milisecunde expiră intrările hash.
--hashlimit-htable-gcinterval msec
Câte milisecunde sunt între intervalele de colectare a gunoiului.
--hashlimit-rate-match
Clasificarea fluxului în loc de limitarea ratei acestuia. Aceasta acționează ca o potrivire adevărat/fals dacă rata este mai mare/mai mică decât un anumit număr
--hashlimit-rate-interval sec
Poate fi utilizată cu „--hashlimit-rate-match” pentru a specifica intervalul la care rata ar trebui să fie eșantionată
Exemple:
potrivire pe gazda sursă
„1000 de pachete pe secundă pentru fiecare gazdă din 192.168.0.0/16” => -s 192.168.0.0/16 --hashlimit-mode srcip --hashlimit-upto 1000/sec
potrivire pe portul sursă
„100 de pachete pe secundă pentru fiecare serviciu de la 192.168.1.1” => -s 192.168.1.1 --hashlimit-mode srcport --hashlimit-upto 100/sec
potrivire pe subrețea
„10000 de pachete pe minut pentru fiecare subrețea /28 (grupuri de 8 adrese) din 10.0.0.0/8” => -s 10.0.0.0/8 --hashlimit-mask 28 --hashlimit-upto 10000/min
potrivire de octeți pe secundă
„fluxuri care depășesc 512kocteți/s" => --hashlimit-mode srcip,dstip,srcport,dstport --hashlimit-above 512kb/s
potrivire de octeți pe secundă
„gazde care depășesc 512kocteți/s, dar permit până la 1Megaocteți fără potrivire” --hashlimit-mode dstip --hashlimit-above 512kb/s --hashlimit-burst 1mb
hbh (specific IPv6)
Acest modul
corespunde parametrilor din antetul de opțiuni
Hop-by-Hop
[
!
]
--hbh-len
lungime
Lungimea totală a acestui antet în octeți.
--hbh-opts tip [ : lungime ][ , tip [ : lungime ]...]
tipul numeric al opțiunii și lungimea datelor opțiunii în octeți.
helper
Acest modul
potrivește pachetele legate de un anumit asistent
conntrack.
[
!
]
--helper
șir
Potrivește pachetele referitoare la asistentul conntrack specificat.
șirul poate fi „ftp” pentru pachetele referitoare la o sesiune ftp pe portul implicit. Pentru alte porturi, adăugați „--portnr” la valoare, adică „ftp-2121”.
Aceleași reguli se aplică și pentru ceilalți asistenți conntrack.
hl (specific IPv6)
Acest modul
corespunde câmpului Hop Limit din antetul IPv6.
[
!
]
--hl-eq
valoare
Se potrivește dacă limita Hop este egală cu valoare .
--hl-lt valoare
Se potrivește dacă limita Hop este mai mică decât valoare .
--hl-gt valoare
Se potrivește dacă limita Hop este mai mare decât valoare .
icmp (specific IPv4)
Această
extensie poate fi utilizată dacă este specificat
„--protocol icmp”. Aceasta oferă
următoarea opțiune:
[
!
]
--icmp-type
{
tip
[
/
cod
]|
nume-tip
}
Aceasta permite specificarea
tipului ICMP, care poate fi un tip ICMP numeric, o pereche
tip/cod sau una dintre denumirile tipului ICMP afișate
de comanda
iptables -p icmp -h
icmp6 (specific IPv6)
Această
extensie poate fi utilizată dacă se specifică
„---protocol ipv6-icmp” sau „---protocol
icmpv6”. Aceasta oferă următoarea
opțiune:
[
!
]
--icmpv6-type
tip
[
/
cod
]|
nume-tip
Aceasta permite specificarea
tipului ICMPv6, care poate fi un ICMPv6 numeric
tip
,
tip
și
cod
, sau una dintre denumirile
tipului ICMPv6 afișate de comanda
ip6tables -p ipv6-icmp -h
iprange
Aceasta se
potrivește cu un anumit interval arbitrar de adrese IP.
[
!
]
--src-range
de-la
[
-
la
]
Potrivește IP-ul sursă în intervalul specificat.
[ ! ] --dst-range de-la [ - la ]
Potrivește IP-ul destinației în intervalul specificat.
ipv6header (specific IPv6)
Acest modul corespunde antetelor de extensie IPv6 și/sau antetelor de nivel(strat) superior.
|
--soft |
Potrivește dacă pachetul include any din antetele specificate cu --header . |
[ ! ] --header antet [ , antet ...]
Potrivește pachetul care include EXACT toate antetele specificate. Antetele încapsulate cu antetul ESP sunt excluse din domeniu. Tipurile posibile de antet pot fi:
hop | hop-by-hop
Antetul de opțiuni Hop-by-Hop
|
dst |
Antetul de opțiuni destinație |
||
|
route |
Antetul de direcționare |
||
|
frag |
Antetul fragmentelor |
||
|
auth |
Antetul de autentificare |
||
|
esp |
Antetul încapsulării sarcinii de securitate (Encapsulating Security Payload) |
||
|
none |
Niciun antet Next(următor) care să corespundă cu 59 din câmpul antetul următor „Next Header field” al antetului IPv6 sau orice antet de extensie IPv6 |
||
|
prot |
care se potrivește cu orice antet de protocol de nivel(strat) superior. De asemenea, sunt permise un nume de protocol din „/etc/protocols” și o valoare numerică. Numărul 255 este echivalent cu prot . |
ipvs
Potrivește
proprietățile conexiunii IPVS.
[
!
]
--ipvs
pachetul aparține unei conexiuni IPVS
Oricare dintre următoarele
opțiuni implică opțiunea „--ipvs”
(chiar și
negată)
[
!
]
--vproto
protocol
Protocolul VIP care urmează să se potrivească; prin număr sau nume, de exemplu „tcp”
[ ! ] --vaddr adresa [ / masca ]
Adresa VIP pentru potrivire
[ ! ] --vport port
Portul VIP care trebuie să corespundă; prin număr sau nume, de exemplu „http”
--vdir { ORIGINAL | REPLY }
direcția fluxului pachetului
[ ! ] --vmethod { GATE | IPIP | MASQ }
Metoda de redirecționare IPVS utilizată
[ ! ] --vportctl port
Portul VIP al conexiunii de control care trebuie să corespundă, de exemplu 21 pentru FTP
length
Acest modul
potrivește lungimea încărcăturii utile
de nivel 3 (de exemplu, pachetul de nivel 4) a unui pachet
cu o anumită valoare sau gamă de valori.
[
!
]
--length
lungimea
[
:
lungimea
]
limit
Acest modul se potrivește la o rată limitată utilizând un filtru de tip „token bucket”. O regulă care utilizează această extensie se va potrivi până când această limită este atinsă. Poate fi utilizat în combinație cu ținta LOG pentru a oferi o jurnalizare limitată, de exemplu.
xt_limit nu
acceptă negarea - va trebui să utilizați
„-m hashlimit ! --hashlimit
rate
”
în acest caz, omițând în același
timp „--hashlimit-mode”.
--limit
rata
[
/second
|
/minute
|
/hour
|
/day
]
Rata medie maximă de potrivire: specificată ca număr, cu un sufix opțional „/second”, „/minute”, „/hour” sau „/day”; valoarea implicită este 3/hour.
--limit-burst număr
Numărul inițial maxim de pachete care se potrivesc: acest număr se reîncarcă cu unu de fiecare dată când limita specificată mai sus nu este atinsă, până la acest număr; valoarea implicită este 5.
mac
[ ! ] --mac-source adresa
Potrivește adresa MAC sursă. Aceasta trebuie să fie de forma XX:XX:XX:XX:XX:XX:XX. Rețineți că acest lucru are sens numai pentru pachetele care provin de la un dispozitiv Ethernet și intră în lanțurile PREROUTING , FORWARD sau INPUT .
mark
Acest modul
corespunde câmpului de marcaj netfilter asociat unui
pachet (care poate fi definit utilizând ținta
MARK
de mai jos).
[
!
]
--mark
valoare
[
/
masca
]
Potrivește pachetele cu valoarea marcajului fără semn dată (dacă este specificată o mască , aceasta este logic AND corelată cu masca înainte de comparație).
mh (specific IPv6)
Această
extensie este încărcată dacă se
specifică „---protocol ipv6-mh” sau
„---protocol mh”. Aceasta oferă
următoarea opțiune:
[
!
]
--mh-type
tip
[
:
tip
]
Aceasta permite specificarea
tipului de antet de mobilitate (MH), care poate fi un MH
numeric
tip
,
tip
sau una dintre denumirile de
tip MH afișate de comanda
ip6tables -p mh -h
multiport
Acest modul se
potrivește cu un set de porturi sursă sau
destinație. Pot fi specificate până la 15
porturi. Un interval de porturi (port:port) contează ca
două porturi. Poate fi utilizat numai
împreună cu unul dintre următoarele
protocoale:
tcp
,
udp
,
udplite
,
dccp
și
sctp
.
[
!
]
--source-ports
,
--sports
port
[
,
port
|
,
port
:
port
]...
Se potrivește dacă portul sursă este unul dintre porturile date. Indicatorul --sports este un alias convenabil pentru această opțiune. Mai multe porturi sau intervale de porturi sunt separate prin virgulă, iar un interval de porturi este specificat prin două puncte. Prin urmare, 53,1024:65535 ar corespunde porturilor 53 și tuturor porturilor de la 1024 la 65535.
[ ! ] --destination-ports , --dports port [ , port | , port : port ]...
Se potrivește dacă portul de destinație este unul dintre porturile date. Indicatorul --dports este un alias convenabil pentru această opțiune.
[ ! ] --ports port [ , port | , port : port ]...
Se potrivește dacă porturile sursă sau destinație sunt egale cu unul dintre porturile date.
nfacct
Potrivirea nfacct furnizează infrastructura de contabilizare extinsă pentru iptables. Trebuie să utilizați această potrivire împreună cu utilitatea autonomă din spațiul utilizatorului nfacct(8)
Singura
opțiune disponibilă pentru această potrivire
este următoarea:
--nfacct-name
nume
Aceasta vă permite să specificați numele obiectului existent care va fi utilizat pentru contabilizarea traficului care corespunde acestui set de reguli.
Pentru a utiliza această extensie, trebuie să creați un obiect contabil:
nfacct add http-traffic
Apoi, trebuie să îl atașați la obiectul contabil prin iptables:
iptables -I INPUT -p tcp --sport 80 -m nfacct --nfacct-name http-traffic
iptables -I OUTPUT -p tcp --dport 80 -m nfacct --nfacct-name http-traffic
Apoi, puteți verifica cantitatea de trafic care corespunde regulilor:
nfacct get http-traffic
{ pkts = 00000000000000000156, bytes = 00000000000000151786 } = http-traffic;
Puteți obține nfacct(8) de la https://www.netfilter.org sau, alternativ, din depozitul git.netfilter.org.
osf
Modulul osf
realizează amprentarea pasivă a sistemului de
operare. Acest modul compară anumite date (dimensiunea
ferestrei, MSS, opțiunile și ordinea lor, TTL, DF
și altele) din pachetele cu bitul SYN activat.
[
!
]
--genre
șir
Potrivește un gen de sistem de operare folosind o amprentă pasivă.
--ttl nivel
Efectuează verificări TTL suplimentare asupra pachetului pentru a determina sistemul de operare. nivel poate fi una dintre următoarele valori:
|
0 |
Comparație TTL reală între adresa IP și amprenta digitală. Aceasta funcționează în general pentru LAN-uri. |
||
|
1 |
Verifică dacă TTL-ul antetului IP este mai mic decât cel al amprentei. Funcționează pentru adresele ce pot fi direcționate la nivel global. |
||
|
2 |
Nu compară deloc TTL--ul. |
--log nivel
Înregistrează genurile determinate în dmesg chiar dacă acestea nu corespund cu cel dorit. nivel poate fi una dintre următoarele valori:
|
0 |
Înregistrează toate semnăturile care corespund sau necunoscute |
||
|
1 |
Înregistrează numai prima |
||
|
2 |
Înregistrează toate semnăturile cunoscute care corespund |
Este posibil să găsiți așa ceva în syslog:
Windows [2000:SP3:Windows XP Pro SP1, 2000 SP3]: 11.22.33.55:4024 -> 11.22.33.44:139 hops=3 Linux [2.5-2.6:] : 1.2.3.4:42624 -> 1.2.3.5:22 hops=4
Amprentele de SO pot fi încărcate cu ajutorul programului nfnl_osf . Pentru a încărca amprente digitale dintr-un fișier, utilizați:
nfnl_osf -f /usr/share/xtables/pf.os
Pentru a le elimina din nou,
nfnl_osf -f /usr/share/xtables/pf.os -d
Baza de date privind amprentele digitale poate fi descărcată de la http://www.openbsd.org/cgi-bin/cvsweb/src/etc/pf.os .
owner
Acest modul
încearcă să corespundă diferitelor
caracteristici ale creatorului pachetului, pentru pachetele
generate local. Această potrivire este valabilă
numai în lanțurile OUTPUT și POSTROUTING.
Pachetele transmise nu au niciun soclu asociat cu ele.
Pachetele provenite de la firele de execuție ale
nucleului au un soclu, dar de obicei nu au proprietar.
[
!
]
--uid-owner
nume-utilizator
[
!
]
--uid-owner
id-utilizator
[
-
id-utilizator
]
Verifică dacă structura de fișiere a soclului de pachete (dacă are una) este deținută de utilizatorul dat. De asemenea, puteți specifica un UID numeric sau un interval UID.
[
!
]
--gid-owner
nume-grup
[
!
]
--gid-owner
id-grup
[
-
id-gru
]
Verifică dacă structura de fișiere a soclului de pachete este deținută de grupul dat. De asemenea, puteți specifica un GID numeric sau un interval GID.
--suppl-groups
Face ca grupul sau grupurile specificate cu --gid-owner să fie verificate și în grupurile suplimentare ale unui proces.
[ ! ] --socket-exists
Verifică dacă pachetul este asociat cu un soclu.
physdev
Acest modul se
potrivește cu dispozitivele de intrare și
ieșire ale portului de punte aservite unui dispozitiv
de punte. Acest modul face parte din infrastructura care
permite un paravan de protecție IP cu punte
transparentă și este util numai pentru versiunile
de nucleu mai mari de versiunea 2.5.44.
[
!
]
--physdev-in
nume
Numele unui port de punte prin care este primit un pachet (numai pentru pachetele care intră în lanțurile INPUT , FORWARD și PREROUTING ). Dacă numele interfeței se termină cu un „+”, atunci se va potrivi orice interfață care începe cu acest nume. Dacă pachetul nu a ajuns printr-un dispozitiv punte, acest pachet nu va corespunde acestei opțiuni, cu excepția cazului în care se utilizează „!”.
[ ! ] --physdev-out nume
Numele unui port de punte prin care va fi trimis un pachet (pentru pachetele de punte care intră în lanțurile FORWARD și POSTROUTING ). Dacă numele interfeței se termină cu un „+”, atunci se va potrivi orice interfață care începe cu acest nume.
[ ! ] --physdev-is-in
Se potrivește dacă pachetul a intrat printr-o interfață punte.
[ ! ] --physdev-is-out
Se potrivește dacă pachetul va pleca printr-o interfață punte.
[ ! ] --physdev-is-bridged
Verifică dacă pachetul este conectat prin punte și, prin urmare, nu este direcționat. Acest lucru este util numai în lanțurile FORWARD și POSTROUTING.
pkttype
Acest modul
corespunde tipului de pachet din stratul de
legătură(conexiune).
[
!
]
--pkt-type
{
unicast
|
broadcast
|
multicast
}
policy
Acest modul se
potrivește cu politica utilizată de IPsec pentru
gestionarea unui pachet.
--dir
{
in
|
out
}
Utilizat pentru a selecta dacă să se potrivească politica utilizată pentru decapsulare sau politica care va fi utilizată pentru încapsulare. in este valabil în lanțurile PREROUTING, INPUT și FORWARD , out este valabil în lanțurile POSTROUTING, OUTPUT și FORWARD .
--pol { none | ipsec }
Verifică dacă pachetul este supus procesării IPsec. --pol none nu poate fi combinată cu --strict .
--strict
Selectează dacă să se potrivească cu politica exactă sau să se potrivească dacă orice regulă a politicii se potrivește cu politica dată.
Pentru fiecare
element de politică care urmează să fie
descris, se pot utiliza una sau mai multe dintre
următoarele opțiuni. Atunci când
--strict
este în vigoare, trebuie
utilizată cel puțin una pentru fiecare element.
[
!
]
--reqid
id
Se potrivește cu reqid-ul regulii de politică. Reqid poate fi specificat cu setkey(8) folosind unique:id ca nivel.
[ ! ] --spi spi
Se potrivește cu SPI al SA.
[ ! ] --proto { ah | esp | ipcomp }
Potrivește protocolul de încapsulare.
[ ! ] --mode { tunnel | transport }
Potrivește modul de încapsulare.
[ ! ] --tunnel-src adresa [ / masca ]
Se potrivește cu adresa punctului final sursă al unui SA în mod tunel. Valabilă numai cu --mode tunnel .
[ ! ] --tunnel-dst adresa [ / masca ]
Se potrivește cu adresa punctului final de destinație al unui SA în mod tunel. Valabilă numai cu --mode tunnel .
|
--next |
Începe următorul element din specificația politicii. Poate fi utilizată numai cu --strict . |
quota
Implementează
cotele de rețea prin decrementarea unui contor de
octeți cu fiecare pachet. Condiția se
potrivește până când contorul de
octeți ajunge la zero. Comportamentul este inversat
în cazul negației (de exemplu, condiția nu
corespunde până când contorul de
octeți ajunge la zero).
[
!
]
--quota
octeți
Cota exprimată în octeți.
rateest
Estimatorul de rată se poate potrivi cu ratele estimate colectate de obiectivul RATEEST. Acesta acceptă potrivirea pe baza valorilor absolute bps/pps, compararea a două estimatoare de rată și potrivirea pe baza diferenței dintre două estimatoare de rată.
Pentru o mai
bună înțelegere a opțiunilor
disponibile, acestea sunt toate combinațiile posibile:
Absolută
|
• |
rateest operator rateest-bps |
|||
|
• |
rateest operator rateest-pps |
Absolută + Delta:
|
• |
( rateest minus rateest-bps1 ) operator rateest-bps2 |
|||
|
• |
( rateest minus rateest-pps1 ) operator rateest-pps2 |
Relativă:
|
• |
rateest1 operator rateest2 rateest-bps (fără rată!) |
|||
|
• |
rateest1 operator rateest2 rateest-pps (fără rată!) |
Relativă + Delta:
|
• |
( rateest1 minus rateest-bps1 ) operator ( rateest2 minus rateest-bps2 ) |
||
|
• |
( rateest1 minus rateest-pps1 ) operator ( rateest2 minus rateest-pps2 ) |
--rateest-delta
Pentru fiecare estimator (în mod absolut sau relativ), se calculează diferența dintre debitul determinat de estimator și valoarea statică aleasă cu opțiunile BPS/PPS. Dacă debitul este mai mare decât BPS/PPS specificat, se va utiliza 0 în loc de o valoare negativă. Cu alte cuvinte, se utilizează „max(0, rateest#_rate - rateest#_bps)”.
[ ! ] --rateest-lt
Se potrivește dacă rata este mai mică decât rata/estimatorul dat.
[ ! ] --rateest-gt
Se potrivește dacă rata este mai mare decât rata/estimatorul dat.
[ ! ] --rateest-eq
Se potrivește dacă rata este egală cu rata/estimatorul dat.
În
așa-numitul „mod absolut”, se
utilizează un singur estimator de rată și se
compară cu o valoare statică, în timp ce
în „modul relativ”, doi estimatori de
rată sunt comparați unul cu celălalt.
--rateest
nume
Numele estimatorului cu o rată pentru modul absolut.
--rateest1
nume
--rateest2
nume
Numele celor doi estimatori de rată pentru modul relativ.
--rateest-bps
[
valoare
]
--rateest-pps
[
valoare
]
--rateest-bps1
[
valoare
]
--rateest-bps2
[
valoare
]
--rateest-pps1
[
valoare
]
--rateest-pps2
[
valoare
]
Compară estimatorul (estimatorii) pe octeți sau pachete pe secundă și compară cu valoarea aleasă. Consultați lista de puncte de mai sus pentru a afla care opțiune trebuie utilizată în fiecare caz. Se poate utiliza un sufix de unitate - cele disponibile sunt: bit, [kmgt]bit, [KMGT]ibit, Bps, [KMGT]Bps, [KMGT]iBps.
Exemplu: Acesta este modul în care pot fi direcționate conexiunile de date de ieșire de la un server FTP pe două linii, în funcție de lățimea de bandă disponibilă în momentul în care a fost inițiată conexiunea de date:
# Estimarea ratelor de ieșire
iptables -t mangle -A POSTROUTING -o eth0 -j RATEEST --rateest-name eth0 --rateest-interval 250ms --rateest-ewma 0.5s
iptables -t mangle -A POSTROUTING -o ppp0 -j RATEEST --rateest-name ppp0 --rateest-interval 250ms --rateest-ewma 0.5s
# Marcare bazată pe lățimea de bandă disponibilă
iptables -t mangle -A balance -m conntrack --ctstate NEW -m helper --helper ftp -m rateest --rateest-delta --rateest1 eth0 --rateest-bps1 2.5mbit --rateest-gt --rateest2 ppp0 --rateest-bps2 2mbit -j CONNMARK --set-mark 1
iptables -t mangle -A balance -m conntrack --ctstate NEW -m helper --helper ftp -m rateest --rateest-delta --rateest1 ppp0 --rateest-bps1 2mbit --rateest-gt --rateest2 eth0 --rateest-bps2 2.5mbit -j CONNMARK --set-mark 2
iptables -t mangle -A balance -j CONNMARK --restore-mark
realm (specific IPv4)
Aceasta
corespunde domeniului de direcționare. Domeniile de
direcționare sunt utilizate în configurații
de direcționare complexe care implică protocoale
de direcționare dinamice precum BGP.
[
!
]
--realm
valoare
[
/
masca
]
Potrivește un număr de domeniu dat (și, opțional, o mască). Dacă nu este un număr, valoarea poate fi un domeniu numit din „/etc/iproute2/rt_realms” (masca nu poate fi utilizată în acest caz). Atât valoarea, cât și masca sunt numere întregi fără semn de patru octeți și pot fi specificate în zecimal, hexazecimal (prin prefixarea cu "0x") sau octal (dacă se indică un zero în față).
recent
Vă permite să creați în mod dinamic o listă de adrese IP și apoi să le comparați cu lista respectivă în mai multe moduri diferite.
De exemplu, puteți crea o listă de „răufăcători” cu persoanele care încearcă să se conecteze la portul 139 din paravanul dvs de protecție și apoi să ARUNCAȚI toate pachetele viitoare de la acestea fără a le lua în considerare.
--set
,
--rcheck
,
--update
și
--remove
se
exclud reciproc.
--name
nume
Specifică lista de utilizat pentru comenzi. Dacă nu este specificat niciun nume, atunci se va utiliza DEFAULT .
[ ! ] --set
Aceasta va adăuga adresa sursă a pachetului în listă. Dacă adresa sursă se află deja în listă, aceasta va actualiza intrarea existentă. Aceasta va returna întotdeauna un răspuns de succes (sau de eșec dacă este specificat ! ).
--rsource
Potrivește/salvează adresa sursă a fiecărui pachet din tabelul listei recente. Aceasta este valoarea implicită.
--rdest
Potrivește/salvează adresa de destinație a fiecărui pachet din tabelul listei recente.
--mask mască-rețea
Masca de rețea care va fi aplicată acestei liste recente.
[ ! ] --rcheck
Verifică dacă adresa sursă a pachetului se află în prezent în listă.
[ ! ] --update
La fel ca --rcheck , cu excepția faptului că va actualiza marca temporală „last seen” (văzut ultima dată) dacă se potrivește.
[ ! ] --remove
Verifică dacă adresa sursă a pachetului se află în prezent în listă și, dacă da, adresa respectivă va fi eliminată din listă, iar regula va returna „true”. Dacă adresa nu este găsită, se returnează „false”.
--seconds secunde
Această opțiune trebuie utilizată împreună cu una dintre opțiunile --rcheck sau --update . Atunci când este utilizată, această opțiune va restrânge potrivirea pentru a avea loc numai atunci când adresa se află în listă și a fost văzută în ultimul număr dat de secunde.
|
--reap |
Această opțiune poate fi utilizată numai împreună cu --seconds . Atunci când este utilizată, aceasta va determina purjarea intrărilor mai vechi decât ultimul număr de secunde dat. |
--hitcount hits
Această opțiune trebuie utilizată împreună cu una dintre opțiunile --rcheck sau --update . Atunci când este utilizată, această opțiune va restrânge potrivirea pentru a avea loc numai atunci când adresa este în listă și au fost primite pachete mai mari sau egale cu valoarea dată. Această opțiune poate fi utilizată împreună cu --seconds pentru a crea o potrivire și mai îngustă care necesită un anumit număr de rezultate într-un anumit interval de timp.
|
--rttl |
Această opțiune poate fi utilizată numai împreună cu una dintre opțiunile --rcheck sau --update . Atunci când este utilizată, această opțiune va restrânge potrivirea pentru a avea loc numai atunci când adresa se află în listă și TTL-ul pachetului curent corespunde cu cel al pachetului care a corespuns reguii --set . Acest lucru poate fi util dacă aveți probleme cu persoane care își falsifică adresa sursă pentru a vă face DoS prin intermediul acestui modul, interzicând accesul altora la situl dumneavoastră prin trimiterea de pachete false către dumneavoastră. |
Exemple:
iptables -A FORWARD -m recent --name badguy --rcheck --seconds 60 -j DROP
iptables -A FORWARD -p tcp -i eth0 --dport 139 -m recent --name badguy --set -j DROP
/proc/net/xt_recent/* sunt listele actuale de adrese și informații despre fiecare intrare din fiecare listă.
Fiecare
fișier din
/proc/net/xt_recent/
poate fi citit
pentru a vedea lista curentă sau scris folosind
următoarele comenzi pentru a modifica lista:
echo +
addr
>/proc/net/xt_recent/DEFAULT
pentru a adăuga adresa la lista DEFAULT
echo - addr >/proc/net/xt_recent/DEFAULT
pentru a elimina adresa din lista DEFAULT
echo / >/proc/net/xt_recent/DEFAULT
pentru a goli lista DEFAULT (a elimina toate intrările).
Modulul în
sine acceptă parametri, cu valorile implicite
afișate:
ip_list_tot
=
100
Numărul de adrese memorate per tabel.
ip_pkt_list_tot = 0
Numărul de pachete pe adresă memorată. Acest parametru este obsolet de la versiunea 3.19 a nucleului, care a început să calculeze dimensiunea tabelului pe baza parametrului --hitcount dat.
ip_list_hash_size = 0
Dimensiunea tabelului de sume de control (hash). 0 înseamnă calcularea acesteia pe baza ip_list_tot prin rotunjire la următoarea putere a lui doi (cu ip_list_tot implicit la 100 , ip_list_hash_size va calcula implicit la 128 ).
ip_list_perms = 0644
Permisiuni pentru fișierele „/proc/net/xt_recent/*”.
ip_list_uid = 0
UID numeric pentru proprietarul fișierelor „/proc/net/xt_recent/*”.
ip_list_gid = 0
GID numeric pentru proprietarul fișierelor „/proc/net/xt_recent/*”.
rpfilter
Efectuează
un test de filtrare a rutei inverse pe un pachet. Dacă
un răspuns la pachet ar fi trimis prin aceeași
interfață pe care a sosit pachetul, pachetul va
corespunde. Rețineți că, spre deosebire de
rp_filter din nucleu, pachetele protejate prin IPSec nu sunt
tratate în mod special. Combinați această
potrivire cu potrivirea de politică dacă
doriți acest lucru. De asemenea, pachetele care sosesc
prin interfața „loopback” sunt
întotdeauna permise. Această potrivire poate fi
utilizată numai în lanțul PREROUTING din
tabelul „raw” sau „mangle”.
--loose
Utilizat pentru a specifica faptul că testul filtrului de cale inversă trebuie să corespundă chiar dacă dispozitivul de ieșire selectat nu este cel așteptat.
--validmark
De asemenea, utilizează valoarea „nfmark” a pachetelor atunci când efectuează căutarea rutei pe calea inversă.
--accept-local
Acest lucru va permite pachetelor care sosesc din rețea cu o adresă sursă care este, de asemenea, atribuită calculatorului local.
--invert
Aceasta va inversa sensul potrivirii. În loc să se potrivească pachetele care au trecut testul filtrului de cale inversă, se potrivesc cele care nu l-au trecut.
Exemplu de înregistrare și eliminare a pachetelor care nu trec testul filtrului de cale inversă:
iptables -t raw -N RPFILTER
iptables -t raw -A RPFILTER -m rpfilter -j RETURN
iptables -t raw -A RPFILTER -m limit --limit 10/minute -j NFLOG --nflog-prefix "rpfilter drop"
iptables -t raw -A RPFILTER -j DROP
iptables -t raw -A PREROUTING -j RPFILTER
Exemplu pentru a respinge pachetele eșuate, fără înregistrare în jurnal:
iptables -t raw -A RPFILTER -m rpfilter --invert -j DROP
rt (IPv6-specific)
Potrivire pe
antetul de direcționare IPv6
[
!
]
--rt-type
tip
Potrivește tipul (numeric).
[ ! ] --rt-segsleft număr [ : număr ]
Potrivește câmpul „segmente din stânga” (interval).
[ ! ] --rt-len lungime
Potrivește lungimea acestui antet.
--rt-0-res
Potrivește și câmpul rezervat (type=0)
--rt-0-addrs adresa [ , adresa ...]
Potrivește adresele de tip 0 „type=0” (listă).
--rt-0-not-strict
Lista de adrese de tip 0 „type=0” nu este o listă strictă.
sctp
Acest modul se
potrivește cu antetele „Stream Control
Transmission Protocol” (protocol de transmisie cu
control al fluxului).
[
!
]
--source-port
,
--sport
port
[
:
port
]
[
!
]
--destination-port
,
--dport
port
[
:
port
]
[
!
]
--chunk-types
{
all
|
any
|
only
}
tip-bucată
[
:
fanioane
] [...]
Literele fanionului în majuscule indică faptul că fanionul trebuie să corespundă dacă este activat, în minuscule indică faptul că trebuie să corespundă dacă nu este activat.
Tipuri de potrivire:
|
all |
Se potrivește dacă toate tipurile de bucăți date sunt prezente și fanioanele corespund. |
||
|
any |
Se potrivește dacă oricare dintre tipurile de bucăți date este prezent cu fanioanele date. |
||
|
only |
Se potrivește dacă numai tipurile de bucăți date sunt prezente cu fanioanele date și niciunul nu lipsește. |
Tipuri de bucăți: DATA INIT INIT_ACK SACK HEARTBEAT HEARTBEAT_ACK ABORT SHUTDOWN SHUTDOWN_ACK ERROR COOKIE_ECHO COOKIE_ACK ECN_ECNE ECN_CWR SHUTDOWN_COMPLETE I_DATA RE_CONFIG PAD ASCONF ASCONF_ACK FORWARD_TSN I_FORWARD_TSN
tip de
bucată, fanioane disponibile
DATA I U B E i u b e
I_DATA I U B E i u b e
ABORT T t
SHUTDOWN_COMPLETE T t
(minuscule înseamnă că steagul trebuie să fie „dezactivat”, majuscule înseamnă „activat”)
Exemple:
iptables -A INPUT -p sctp --dport 80 -j DROP
iptables -A INPUT -p sctp --chunk-types any DATA,INIT -j DROP
iptables -A INPUT -p sctp --chunk-types any DATA:Be -j ACCEPT
set
Acest modul
corespunde seturilor IP care pot fi definite prin ipset(8).
[
!
]
--match-set
nume-set
fanion
[
,
fanion
]...
unde fanioanele sunt lista de specificații src și/sau dst separate prin virgule și nu pot fi mai mult de șase. Prin urmare, comanda
iptables -A FORWARD -m set --match-set test src,dst
va potrivi pachetele pentru care (dacă tipul de set este ipportmap) perechea adresă sursă și port destinație poate fi găsită în setul specificat. Dacă tipul setului specificat este de dimensiune unică (de exemplu, ipmap), atunci comanda va potrivi pachetele pentru care adresa sursă poate fi găsită în setul specificat.
--return-nomatch
Dacă este specificată opțiunea --return-nomatch și tipul de set acceptă fanionul nomatch , atunci potrivirea este inversată: o potrivire cu un element marcat cu nomatch returnează true , în timp ce o potrivire cu un element simplu returnează false .
! --update-counters
Dacă opțiunea --update-counters este negată, atunci contoarele de pachete și de octeți ale elementului corespunzător din set nu vor fi actualizate. În mod implicit, contoarele de pachete și de octeți sunt actualizate.
! --update-subcounters
Dacă opțiunea --update-subcounters este negată, atunci contoarele de pachete și de octeți ale elementului corespunzător din setul membru al unei liste de tip set nu vor fi actualizate. În mod implicit, contoarele de pachete și de octeți sunt actualizate.
[ ! ] --packets-eq valoare
Dacă pachetul se potrivește cu un element din set, se potrivește numai dacă și contorul de pachete al elementului se potrivește cu valoarea dată.
--packets-lt valoare
Dacă pachetul se potrivește cu un element din set, se potrivește numai dacă și contorul de pachete al elementului este mai mic decât valoarea dată.
--packets-gt valoare
Dacă pachetul se potrivește cu un element din set, se potrivește numai dacă contorul de pachete al elementului este mai mare decât valoarea dată.
[ ! ] --bytes-eq valoare
Dacă pachetul se potrivește cu un element din set, se potrivește numai dacă și contorul de octeți al elementului se potrivește cu valoarea dată.
--bytes-lt valoare
Dacă pachetul se potrivește cu un element din set, se potrivește numai dacă contorul de octeți al elementului este mai mic decât valoarea dată.
--bytes-gt valoare
Dacă pachetul se potrivește cu un element din set, se potrivește numai dacă contorul de octeți al elementului este mai mare decât valoarea dată.
Opțiunile și fanioanele aferente contoarelor de pachete și de octeți sunt ignorate atunci când setul a fost definit fără suport pentru contoare.
Opțiunea --match-set poate fi înlocuită cu --set dacă aceasta nu intră în conflict cu o opțiune a altor extensii.
Utilizarea lui -m set necesită ca suportul pentru nucleu ipset să fie furnizat, ceea ce, pentru nucleele standard, este cazul începând cu Linux 2.6.39.
soclu
Se
potrivește dacă un soclu TCP/UDP deschis poate fi
găsit prin căutarea unui soclu pe pachet. Se
potrivește în cazul în care există un
soclu de ascultare stabilit sau conectat în mod
diferit de zero (eventual cu o adresă non-locală).
Căutarea se efectuează utilizând tuplele
packet
ale pachetelor TCP/UDP sau antetul TCP/UDP
original
embedded
dintr-un pachet de eroare
ICMP/ICPMv6.
--transparent
Ignoră soclurile netransparente.
--nowildcard
Nu ignoră soclurile legate la adresa „oricare”. În mod implicit, potrivirea soclurilor nu va accepta ascultători legați de zero, deoarece astfel serviciile locale ar putea intercepta traficul care altfel ar fi redirecționat. Prin urmare, această opțiune are implicații de securitate atunci când este utilizată pentru a potrivi traficul redirecționat pentru a redirecționa astfel de pachete către mașina locală cu politica de direcționare. Atunci când se utilizează potrivirea soclului pentru a implementa proxy-uri complet transparente legate la adrese non-locale, se recomandă utilizarea opțiunii „--transparent”.
Exemplu (presupunând că pachetele cu marcajul 1 sunt livrate local):
-t mangle -A PREROUTING -m socket --transparent -j MARK --set-mark 1
--restore-skmark
Stabilește marca pachetului la marca soclului corespunzător. Poate fi combinată cu opțiunile --transparent și --nowildcard pentru a restricționa soclurile care trebuie să corespundă atunci când se restabilește marca pachetului.
Exemplu: O aplicație deschide 2 socluri transparente ( IP_TRANSPARENT ) și le marchează cu opțiunea de soclu SO_MARK . Putem filtra pachetele corespunzătoare:
-t mangle -I PREROUTING -m socket --transparent --restore-skmark -j action
-t mangle -A action -m mark --mark 10 -j action2
-t mangle -A action -m mark --mark 11 -j action3
state
Extensia
„state” este un subset al modulului
„conntrack”. „state” permite accesul
la starea de urmărire a conexiunii pentru acest pachet.
[
!
]
--state
starea
Unde „state” este o listă separată prin virgule a stărilor conexiunii care trebuie să corespundă. Numai un subset de stări înțelese de „conntrack” sunt recunoscute: INVALID , ESTABLISHED , NEW , RELATED sau UNTRACKED . Pentru descrierea acestora, consultați rubrica „conntrack” din această pagină de manual.
statistic
Acest modul potrivește pachetele pe baza unor condiții statistice. Acceptă două moduri distincte stabilite cu opțiunea --mode .
Opțiuni
acceptate:
--mode
mod
Stabilește modul de potrivire al regulii de potrivire, modurile acceptate sunt random și nth.
[ ! ] --probability p
Definește probabilitatea ca un pachet să fie comparat aleatoriu. Funcționează numai cu modul random . p trebuie să fie între 0,0 și 1,0. Gradul de finețe acceptat este în incremente de 1/2147483648.
[ ! ] --every n
Potrivește un pachet la fiecare al n-lea pachet. Funcționează numai cu modul nth (a se vedea și opțiunea --packet ).
--packet p
Stabilește valoarea inițială a contorului (0 <= p <= n-1, implicit 0) pentru modul nth .
string
Acest modul
potrivește un șir dat folosind o strategie de
potrivire a modelelor. Necesită un nucleu linux >=
2.6.14.
--algo
{
bm
|
kmp
}
Selectează strategia de potrivire a modelelor. (bm = Boyer-Moore, kmp = Knuth-Pratt-Morris)
--from poziția
Stabilește poziția de la care începe căutarea oricărei potriviri. Dacă nu este specificată, valoarea implicită este 0.
--to poziția
Stabilește poziția până la care trebuie scanat. Adică, octetul poziția -1 (numărând de la 0) este ultimul care este scanat și poziția maximă a ultimului caracter al modelului . Dacă nu este specificată, valoarea implicită este dimensiunea pachetului.
[ ! ] --string model
Potrivește modelul dat.
[ ! ] --hex-string model
Potrivește modelul dat.
--icase
Nu face distincție între majuscule și minuscule atunci când caută.
Exemple:
# Modelul de
șir poate fi utilizat pentru caractere simple de text.
iptables -A INPUT -p tcp --dport 80 -m string --algo bm
--string ’GET /index.html’ -j LOG
# Modelul de
șir hexazecimal poate fi utilizat pentru caractere
neimprimabile, precum |0D 0A| sau |0D0A|.
iptables -p udp --dport 53 -m string --algo bm --from 40
--to 57 --hex-string
’|03|www|09|netfilter|03|org|00|’
Notă: Deoarece Boyer-Moore (BM) efectuează căutări de potrivire de la dreapta la stânga, iar nucleul poate stoca un pachet în mai multe blocuri discontinue, este posibil ca o potrivire să fie răspândită pe mai multe blocuri, caz în care acest algoritm nu o va găsi.
Dacă doriți să vă asigurați că un astfel de lucru nu se va întâmpla niciodată, utilizați în schimb algoritmul Knuth-Pratt-Morris (KMP). În concluzie, alegeți algoritmul adecvat de căutare a șirurilor de caractere în funcție de cazul dvs. de utilizare.
De exemplu, dacă utilizați modulul pentru filtrare, NIDS sau orice alt scop similar axat pe securitate, atunci alegeți KMP. Pe de altă parte, dacă vă pasă cu adevărat de performanță - de exemplu, clasificați pachetele pentru a aplica politici de calitate a serviciului (QoS) - și nu vă deranjează să pierdeți posibile potriviri răspândite pe mai multe fragmente, atunci alegeți BM.
tcp
Aceste extensii
pot fi utilizate dacă este specificată
opțiunea „--protocol tcp”. Acesta
oferă următoarele opțiuni:
[
!
]
--source-port
,
--sport
port
[
:
port
]
Specificarea portului sursă sau a intervalului de porturi. Acesta poate fi fie un nume de serviciu, fie un număr de port. De asemenea, poate fi specificat un interval inclusiv, folosind formatul primul : ultimul . Dacă primul port este omis, se presupune „0”; dacă ultimul este omis, se presupune „65535”. Opțiunea --sport este un alias convenabil pentru această opțiune.
[ ! ] --destination-port , --dport port [ : port ]
Specificarea portului de destinație sau a intervalului de porturi. Opțiunea --dport este un alias convenabil pentru această opțiune.
[ ! ] --tcp-flags masca comp
Se potrivește atunci
când fanioanele TCP sunt cele specificate. Primul
argument
masca
reprezintă fanioanele pe care
trebuie să le examinăm, scrise ca o listă
separată prin virgule, iar al doilea argument
comp
este o listă separată prin virgule de
fanioane care trebuie să fie activate. Fanioanele sunt:
SYN ACK FIN RST URG PSH ALL NONE
. Prin urmare,
comanda
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
se va potrivi numai pachetelor cu fanionul SYN activat, iar
fanioanele ACK, FIN și RST dezactivate.
[ ! ] --syn
Se potrivesc numai pachetele TCP cu bitul SYN activat și biții ACK, RST și FIN dezactivați. Aceste pachete sunt utilizate pentru a solicita inițierea unei conexiuni TCP; de exemplu, blocarea acestor pachete care intră într-o interfață va împiedica conexiunile TCP de intrare, dar conexiunile TCP de ieșire nu vor fi afectate. Este echivalentă cu --tcp-flags SYN,RST,ACK,FIN SYN . Dacă fanionul „!” precede „--syn”, sensul opțiunii este inversat.
[ ! ] --tcp-option număr
Se potrivește dacă opțiunea TCP este activată.
tcpmss
Aceasta
corespunde câmpului TCP MSS (dimensiunea maximă a
segmentului) din antetul TCP. Puteți utiliza acest
parametru numai pe pachetele TCP SYN sau SYN/ACK, deoarece
MSS este negociat numai în timpul protocolului TCP de
negociere „handshake” la momentul inițierii
conexiunii.
[
!
]
--mss
valoare
[
:
valoare
]
Potrivește o valoare sau un interval TCP MSS dat. Dacă este dat un interval, a doua valoare trebuie să fie mai mare sau egală cu prima valoare .
time
Această
opțiune se potrivește dacă data/ora de sosire
a pachetului se încadrează într-un interval
dat Toate opțiunile sunt opționale, dar sunt
evaluate cu „AND” atunci când sunt
specificate.Toate orele sunt interpretate implicit ca UTC.
--datestart
AAAA
[
-
LL
[
-
ZZ
[
T
hh
[
:
mm
[
:
ss
]]]]]
--datestop
AAAA
[
-
LL
[
-
ZZ
[
T
hh
[
:
mm
[
:
ss
]]]]]
Se potrivește numai în timpul dat, care trebuie să fie în notația ISO 8601 „T”. Intervalul de timp posibil este 1970-01-01T00:00:00 până la 2038-01-19T04:17:07.
În cazul în care „--datestart” sau „--datestop” nu sunt specificate, se va alege în mod implicit 1970-01-01 și, respectiv, 2038-01-19.
--timestart
hh
:
mm
[
:
ss
]
--timestop
hh
:
mm
[
:
ss
]
Se potrivește numai în timpul zilei date. Intervalul de timp posibil este de la 00:00:00 la 23:59:59. Zerourile inițiale sunt permise (de exemplu, „06:03”) și sunt interpretate corect ca bază 10.
[ ! ] --monthdays ziua [ , ziua ...]
Se potrivește numai în zilele lunii date. Valorile posibile sunt de la 1 la 31 . Rețineți că specificarea 31 nu se va potrivi, bineînțeles, lunilor care nu au ziua 31; același lucru este valabil și pentru luna februarie cu 28 sau 29 de zile.
[ ! ] --weekdays ziua [ , ziua ...]
Se potrivește numai în zilele săptămânii date. Valorile posibile sunt Mon , Tue , Wed , Thu , Fri , Sat , Sun sau valori de la 1 la 7 , respectiv. Se pot utiliza și variante cu două caractere ( Mo , Tu etc.).
--contiguous
Atunci când valoarea --timestop este mai mică decât valoarea --timestart , se potrivește ca o singură perioadă de timp în loc de intervale distincte. A se vedea EXEMPLE.
--kerneltz
Utilizează fusul orar al nucleului în loc de UTC pentru a determina dacă un pachet respectă reglementările temporale.
Despre fusurile orare ale nucleului: Linux păstrează ora sistemului în UTC, și întotdeauna face acest lucru. La pornire, ora sistemului este inițializată de la o sursă de timp referențială. În cazul în care această sursă de timp nu are informații privind fusul orar, cum ar fi RTC-ul CMOS x86, se va presupune UTC. În cazul în care sursa de timp nu este totuși în UTC, spațiul utilizatorului ar trebui să furnizeze nucleului ora corectă a sistemului și fusul orar, odată ce dispune de informații.
Ora locală este o caracteristică a orei de sistem (independentă de fusul orar). Fiecare proces are propria sa idee despre ora locală, specificată prin intermediul variabilei de mediu TZ. Nucleul are, de asemenea, propria sa variabilă de decalaj al fusului orar. Variabila de mediu userpace TZ specifică modul în care este afișată ora sistemului bazată pe UTC, de exemplu atunci când executați date(1) sau ceea ce vedeți pe ceasul de pe birou. Șirul TZ se poate rezolva la diferite decalaje la date diferite, ceea ce permite saltul automat al orei în spațiul utilizatorilor. atunci când se schimbă ora de vară. Variabila de decalare a fusului orar a nucleului este utilizată atunci când trebuie să convertească surse non-UTC, cum ar fi sistemele de fișiere FAT, în UTC (deoarece acesta din urmă este cel utilizat de restul sistemului).
Problema cu fusul orar al nucleului este că distribuțiile Linux pot ignora configurarea fusului orar al nucleului și, în schimb, pot configura doar ora sistemului. Chiar dacă o anumită distribuție configurează fusul orar la pornire, de obicei nu menține actualizat decalajul fusului orar al nucleului, care este cel care se modifică în funcție de ora de vară. ntpd nu va modifica fusul orar al nucleului, astfel încât rularea sa nu va rezolva problema. Astfel, este posibil să se întâlnească un fus orar care este întotdeauna +0000 sau unul care este greșit jumătate din timpul anului. Ca atare, utilizarea „--kerneltz” este foarte descurajată.
EXEMPLE. Pentru a potrivi în „weekend”, utilizați:
-m time --weekdays Sa,Su
Sau, să se potrivească (o dată) pe un bloc de sărbătoare națională:
-m time --datestart 2007-12-24 --datestop 2007-12-27
Deoarece timpul de oprire este de fapt inclusiv, ar trebui ca următorul timp de oprire să nu coincidă cu prima secundă a noii zile:
-m time --datestart 2007-01-01T17:00 --datestop 2007-01-01T23:59:59
În timpul prânzului:
-m time --timestart 12:30 --timestop 13:30
A patra zi de vineri din lună:
-m time --weekdays Fr --monthdays 22,23,24,25,26,27,28
Rețineți că acest lucru exploatează o anumită proprietate matematică. Nu este posibil să se spună „a patra zi de joi SAU a patra zi de vineri” într-o singură regulă. Este posibil, totuși, cu mai multe reguli.
Potrivirea între zile ar putea să nu aibă efectul scontat. De exemplu,
„-m time --weekdays Mo --timestart 23:00 --timestop 01:00” Se va potrivi luni, timp de o oră, de la miezul nopții până la ora 1 a.m., și apoi din nou timp de încă o oră, de la ora 23:00 încolo. Dacă acest lucru nu este dorit, de exemplu, dacă doriți „să se potrivească timp de două ore începând de luni de la ora 23:00”, trebuie să specificați și opțiunea „--contiguous” în exemplul de mai sus.
tos
Acest modul
corespunde câmpului „Type of Service” pe 8
biți din antetul IPv4 (adică inclusiv biții
„Precedence”) sau câmpului
„Priority” (tot pe 8 biți) din antetul
IPv6.
[
!
]
--tos
valoare
[
/
masca
]
Potrivește pachetele cu valoarea indicatorului TOS dată. Dacă este specificată o mască, aceasta este logic evaluată AND cu marcajul TOS înainte de comparație.
[ ! ] --tos simbol
Puteți specifica un nume simbolic atunci când utilizați potrivirea tos pentru IPv4. Lista de nume TOS recunoscute poate fi obținută apelând iptables cu -m tos -h . Rețineți că acest lucru implică o mască de 0x3F, adică toți biții, cu excepția celor ECN.
ttl (specific IPv4)
Acest modul se
potrivește cu câmpul „time to live”
din antetul IP.
[
!
]
--ttl-eq
ttl
Se potrivește cu valoarea TTL dată.
--ttl-gt ttl
Se potrivește dacă TTL este mai mare decât valoarea TTL dată.
--ttl-lt ttl
Se potrivește dacă TTL este mai mic decât valoarea TTL dată.
u32
U32
testează dacă cantități de
până la 4 octeți extrase dintr-un pachet au
valorile specificate. Specificarea a ceea ce trebuie extras
este suficient de generală pentru a găsi date la
anumite distanțe din antetele sau sarcinile utile tcp.
[
!
]
--u32
tests
Argumentul reprezintă un program într-un mic limbaj descris mai jos.
tests := location "=" value | tests "&&" location "=" value
value := range | value "," range
range := number | number ":" number
un singur număr, n , este interpretat la fel ca n:n . n:m este interpretat ca intervalul de numere >=n și <=m .
|
location := number | location operator number |
||
|
operator := "&" | "<<" | ">>" | "@" |
Operatorii & , << , >> și && au același înțeles ca în C. = este de fapt un operator de apartenență la un set, iar sintaxa valorii descrie un set. Operatorul @ este cel care permite trecerea la următorul antet și este descris mai jos.
În prezent, există unele limite artificiale de implementare privind dimensiunea testelor:
|
* |
nu mai mult de 10 „ = ” (și 9 „ && ”s) în argumentul u32 |
||
|
* |
nu mai mult de 10 intervale (și 9 virgule) pentru fiecare valoare |
||
|
* |
nu mai mult de 10 numere (și 9 operatori) pe locație |
Pentru a descrie semnificația locației, imaginați-vă următoarea mașină care o interpretează. Există trei registre:
A este de tip char * , inițial adresa antetului IP
B și C sunt numere întregi de 32 de biți fără semn, inițial zero
Instrucțiunile sunt:
|
number |
B = number; |
C = (*(A+B)<<24) + (*(A+B+1)<<16) + (*(A+B+2)<<8) + *(A+B+3)
&number
C = C & number
<< number
C = C << number
>> number
C = C >> number
@number
A = A + C; apoi efectuează instrucțiunea „number”
Orice acces la memorie în afara [skb->data,skb->end] face ca potrivirea să eșueze. În caz contrar, rezultatul calculului este valoarea finală a lui C.
Spațiul alb este permis, dar nu este obligatoriu în teste. Cu toate acestea, caracterele care apar acolo sunt susceptibile de a necesita citarea folosită în shell, deci este o idee bună să includeți argumentele între ghilimele.
Exemplu:
se potrivesc pachetelor IP cu lungimea totală >= 256
Antetul IP conține un câmp cu lungimea totală în octeți 2-3.
--u32 " 0 & 0xFFFF = 0x100:0xFFFF "
citește octeții 0-3
AND logic cu 0xFFFF (furnizează octeți 2-3) și verifică dacă această valoare se află în intervalul permis [0x100: 0xffff]
Exemplu: (mai realist, așadar mai complicat)
potrivește pachetele ICMP cu tipul icmp 0
Mai întâi se testează dacă este un pachet ICMP, adevărat dacă octetul 9 (protocol) = 1
--u32 " 6 & 0xFF = 1 && ...
citește octeții 6-9, folosește & pentru a înlătura octeții 6-8 și compară rezultatul cu 1. Apoi verifică dacă nu este un fragment; (dacă este, ar putea face parte dintr-un astfel de pachet, dar nu ne putem da seama întotdeauna.) N.B.: Acest test este în general necesar dacă doriți să potriviți ceva dincolo de antetul IP. Ultimii 6 biți din octetul 6 și toți cei din octetul 7 sunt 0 dacă acesta este un pachet complet (nu un fragment). Alternativ, puteți permite primele fragmente testând doar ultimii 5 biți ai octetului 6.
... 4 & 0x3FFF = 0 && ...
Ultimul test: primul octet după antetul IP (tipul) este 0. Aici trebuie să folosim @syntax. Lungimea antetului IP (IHL) în cuvinte de 32 de biți este stocată în jumătatea dreaptă a octetului 0 din antetul IP în sine.
... 0 >> 22 & 0x3C @ 0 >> 24 = 0 "
Primul 0 înseamnă citirea octeților 0-3, >>22 înseamnă deplasarea celor 22 de biți la dreapta. Deplasarea a 24 de biți ar da primul octet, deci numai 22 de biți înseamnă de patru ori mai mult decât atât plus câțiva biți. &3C elimină apoi cei doi biți suplimentari din dreapta și primii patru biți ai primului octet. De exemplu, dacă IHL=5, atunci antetul IP are o lungime de 20 (4 x 5) de octeți. În acest caz, octeții 0-1 sunt (în binar) xxxx0101 yyzzzzzz, >>22 dă valoarea pe 10 biți xxxx0101yy și &3C dă 010100. @ înseamnă să se utilizeze acest număr ca un nou decalaj în pachet și să se citească patru octeți începând de acolo. Aceștia sunt primii 4 octeți din sarcina utilă ICMP, din care octetul 0 este tipul ICMP. Prin urmare, pur și simplu deplasăm valoarea 24 la dreapta pentru a înlătura tot cu excepția primului octet și comparăm rezultatul cu 0.
Exemplu:
Octeții de sarcină utilă TCP 8-12 sunt oricare dintre 1, 2, 5 sau 8
Mai întâi testăm dacă pachetul este un pachet tcp (similar cu ICMP).
--u32 " 6 & 0xFF = 6 && ...
Apoi, se testează dacă nu este un fragment (la fel ca mai sus).
... 0 >> 22 & 0x3C @ 12 >> 26 & 0x3C @ 8 = 1,2,5,8 "
0>>22&3C calculează ca mai sus numărul de octeți din antetul IP. @ face din acesta noul decalaj în pachet, care este începutul antetului TCP. Lungimea antetului TCP (din nou în cuvinte de 32 de biți) este jumătatea stângă a octetului 12 din antetul TCP. 12>>26&3C calculează această lungime în octeți (similar cu antetul IP anterior). „@” face ca acesta să fie noul decalaj, care este începutul încărcăturii utile TCP. În cele din urmă, 8 citește octeții 8-12 din sarcina utilă și = verifică dacă rezultatul este oricare dintre 1, 2, 5 sau 8.
udp
Aceste extensii
pot fi utilizate dacă este specificat
„---protocol udp”. Acesta oferă
următoarele opțiuni:
[
!
]
--source-port
,
--sport
port
[
:
port
]
Specificarea portului sursă sau a intervalului de porturi. Pentru detalii, consultați descrierea opțiunii --source-port a extensiei TCP.
[ ! ] --destination-port , --dport port [ : port ]
Specificarea portului de destinație sau a intervalului de porturi. Pentru detalii, consultați descrierea opțiunii --destination-port a extensiei TCP.
EXTENSII PENTRU ȚINTĂ
iptables poate utiliza module țintă extinse: următoarele sunt incluse în distribuția standard.
AUDIT
Această
țintă creează înregistrări de
audit pentru pachetele care ating ținta. Acesta poate
fi utilizat pentru a înregistra pachetele acceptate,
abandonate și respinse. Consultați auditd(8)
pentru detalii suplimentare.
--type
{
accept
|
drop
|
reject
}
Stabilește tipul înregistrării de audit. Începând cu linux-4.12, această opțiune nu mai are niciun efect asupra mesajelor de audit generate. Este încă acceptată de iptables din motive de compatibilitate, dar este ignorată.
Exemplu:
iptables -N AUDIT_DROP
iptables -A AUDIT_DROP -j AUDIT
iptables -A AUDIT_DROP -j DROP
CHECKSUM
Această
țintă funcționează selectiv în
jurul aplicațiilor vechi/nefuncționale. Poate fi
utilizată numai în tabelul de
„mangle”.
--checksum-fill
Calculează și completează suma de control într-un pachet care nu are o sumă de control. Acest lucru este deosebit de util în cazul în care trebuie să lucrați cu aplicații vechi, cum ar fi clienții dhcp, care nu funcționează bine cu descărcarea sumelor de control, dar nu doriți să dezactivați descărcarea sumelor de control în dispozitivul dumneavoastră.
CLASSIFY
Acest modul
vă permite să stabiliți valoarea
skb->priority (și astfel să clasificați
pachetul într-o anumită clasă CBQ).
--set-class
major
:
minor
Stabilește valoarea clasei majore și minore. Valorile sunt întotdeauna interpretate ca fiind hexazecimale, chiar dacă nu este dat prefixul 0x.
CLUSTERIP (specific IPv4)
Acest modul vă permite să configurați un cluster simplu de noduri care împart o anumită adresă IP și MAC fără a avea în fața lor un distribuitor de sarcină explicit. Conexiunile sunt distribuite static între nodurile din acest cluster.
Vă rugăm să rețineți că obiectivul „CLUSTERIP” este considerat depreciat în favoarea „cluster match”, care este mai flexibil și nu este limitat la IPv4.
|
--new |
Creează un nou ClusterIP. Întotdeauna trebuie să definiți acest lucru la prima regulă pentru un anumit ClusterIP. |
--hashmode mod
Specifică modul de „hashing” (calculare a sumelor de control). Trebuie să fie unul dintre sourceip , sourceip-sourceport , sourceip-sourceport-destport .
--clustermac mac
Specifică adresa MAC ClusterIP. Trebuie să fie o adresă de multicast în stratul de legătură(conexiune)
--total-nodes număr
Numărul total de noduri din acest cluster.
--local-node număr
Numărul nodului local din cadrul acestui cluster.
--hash-init rnd
Specifică sămânța aleatorie utilizată pentru inițializarea calculării sumelor de controli.
CONNMARK
Acest modul
stabilește valoarea marcajului netfilter asociat cu o
conexiune. Marca are o lățime de 32 de biți.
--set-xmark
valoare
[
/
masca
]
Anularea biților indicați de mască și XOR valoare în ctmark.
--save-mark [ --nfmask nfmask ] [ --ctmask ctmask ]
Copiază marca pachetului (nfmark) în marca conexiunii (ctmark) folosind măștile date. Noua valoare nfmark este determinată după cum urmează:
ctmark = (ctmark & ~ctmask) ^ (nfmark & nfmask)
adică ctmask definește ce biți trebuie șterși și nfmask ce biți din nfmark trebuie XOR în ctmark. ctmask și nfmask au valoarea implicită 0xFFFFFFFF.
--restore-mark [ --nfmask nfmask ] [ --ctmask ctmask ]
Copiază marca de conexiune (ctmark) în marca de pachet (nfmark) folosind măștile date. Noua valoare ctmark este determinată după cum urmează:
nfmark = (nfmark & ~ nfmask ) ^ (ctmark & ctmask );
adică nfmask definește ce biți se șterg și ctmask ce biți din ctmark se XOR în nfmark. ctmask și nfmask au valoarea implicită 0xFFFFFFFF.
--restore-mark este valabilă numai în tabelul mangle .
Următoarele
mnemonice sunt disponibile pentru
--set-xmark
:
--and-mark
biți
AND logic al ctmark-ului cu biți . Mnemonic pentru --set-xmark 0/ invbiți , unde invbiți este negația binară a lui biți .
--or-mark biți
OR logic al ctmark-ului cu bits . Mnemonic pentru --set-xmark bits / bits .
--xor-mark biți
XOR logic al ctmark-ului cu bits . Mnemonic pentru --set-xmark bits /0 .
--set-mark valoare [ / masca ]
Definește marcajul conexiunii. Dacă este specificată o mască, atunci sunt modificați numai biții definiți în mască.
--save-mark [ --mask masca ]
Copiază nfmark în ctmark. Dacă este specificată o mască, sunt copiați numai acei biți.
--restore-mark [ --mask masca ]
Copiază marca ct în marca nf. Dacă este specificată o mască, se copiază numai acei biți. Acest lucru este valabil numai în tabelul mangle .
CONNSECMARK
Acest modul copiază marcajele de securitate de la pachete la conexiuni (dacă nu sunt etichetate) și de la conexiuni înapoi la pachete (tot numai dacă nu sunt etichetate). Utilizat de obicei împreună cu SECMARK, este valabil în tabelul security (pentru compatibilitate cu nucleele mai vechi, este valabil și în tabelul mangle ).
|
--save |
Dacă pachetul are un marcaj de securitate, îl copiază în conexiune dacă conexiunea nu este marcată. |
--restore
Dacă pachetul nu are un marcaj de securitate, iar conexiunea are, copiază marcajul de securitate de la conexiune la pachet.
CT
Ținta CT
stabilește parametrii pentru un pachet sau pentru
conexiunea asociată acestuia. Ținta
atașează pachetului o intrare
„șablon” de urmărire a conexiunii,
care este apoi utilizată de nucleul conntrack la
inițializarea unei noi intrări ct. Prin urmare,
această țintă este valabilă numai
în tabelul „brut”.
--notrack
Dezactivează urmărirea conexiunii pentru acest pachet.
--helper nume
Utilizează auxiliarul identificat prin nume pentru conexiune. Acest lucru este mai flexibil decât încărcarea modulelor „helper conntrack” cu porturi prestabilite.
--ctevents eveniment [ , ...]
Generează numai evenimentele conntrack specificate pentru această conexiune. Tipurile de evenimente posibile sunt: new , related , destroy , reply , assured , protoinfo , helper , mark (se referă la ctmark, nu la nfmark), natseqinfo , secmark (ctsecmark).
--expevents eveniment [ , ...]
Generează numai evenimentele de așteptare specificate pentru această conexiune. Tipurile de evenimente posibile sunt: new .
--zone-orig { id | mark }
Pentru traficul provenit din direcția ORIGINAL, se atribuie acest pachet zonei id și se efectuează căutări numai în acea zonă. Dacă se utilizează mark în loc de id , zona este derivată din pachetul nfmark.
--zone-reply { id | mark }
Pentru traficul provenit din direcția REPLY, se atribuie acest pachet zonei id și se efectuează căutări numai în acea zonă. Dacă se utilizează mark în loc de id , zona este derivată din pachetul nfmark.
--zone { id | mark }
Atribuie acest pachet zonei id și efectuează căutări numai în acea zonă. Dacă se utilizează mark în loc de id , zona este derivată din pachetul nfmark. În mod implicit, pachetele au zona 0. Această opțiune se aplică în ambele direcții.
--timeout nume
Utilizează politica de timp de așteptare identificată de nume pentru conexiune. Aceasta oferă o definiție mai flexibilă a politicii de timp de așteptare decât valorile globale de timp de așteptare disponibile la /proc/sys/net/netfilter/nf_conntrack_*_timeout_*.
DNAT
Această
țintă este valabilă numai în tabelul
nat
, în lanțurile
PREROUTING
și
OUTPUT
și în lanțurile
definite de utilizator care sunt apelate numai din aceste
lanțuri. Aceasta specifică faptul că adresa
de destinație a pachetului trebuie modificată
(și toate pachetele viitoare din această conexiune
vor fi, de asemenea, modificate), iar regulile trebuie
să înceteze să mai fie examinate.
Acceptă următoarele opțiuni:
--to-destination
[
adresa-ip
[
-
adresa-ip
]][
:
port
[
-
port
[
/
port-bază
]]]
care poate specifica o singură adresă IP de destinație nouă, un interval inclusiv de adrese IP. Opțional, un interval de porturi, dacă regula specifică și unul dintre următoarele protocoale: tcp , udp , dccp sau sctp . Dacă nu este specificat niciun interval de porturi, atunci portul de destinație nu va fi niciodată modificat. Dacă nu este specificată nicio adresă IP, atunci numai portul de destinație va fi modificat. Dacă se indică port-bază , diferența dintre portul de destinație inițial și valoarea acestuia este utilizată ca decalaj în intervalul de porturi de alocare. Acest lucru permite crearea de intervale de portmap deplasate și este disponibil începând cu versiunea 4.18 a nucleului. Pentru un singur port sau port-bază , se poate utiliza un nume de serviciu așa cum este listat în /etc/services .
--random
Alocarea aleatorie a porturilor sursă (nucleu >= 2.6.22).
--persistent
Oferă unui client aceeași adresă sursă/destinație pentru fiecare conexiune. Aceasta înlocuiește ținta SAME. Suportul pentru corespondențe persistente este disponibil de la versiunea 2.6.29-rc2.
Suport IPv6 disponibil de la nucleele Linux >= 3.7.
DNPT (specific IPv6)
Asigură traducerea prefixelor de rețea IPv6 la IPv6 de destinație fără păstrarea stării „stateless” (conform descrierii RFC 6296).
Trebuie să
utilizați această țintă în tabelul
mangle
, nu în tabelul
nat
. Are
următoarele opțiuni:
--src-pfx
[
prefix/lungime]
Definește prefixul sursă pe care doriți să îl traduceți și lungimea
--dst-pfx [ prefix/lungime]
Definește prefixul destinație pe care doriți să îl traduceți și lungimea
Trebuie să utilizați ținta SNPT pentru a anula traducerea. Exemplu:
ip6tables -t mangle -I POSTROUTING -s fd00::/64 ! -o vboxnet0 -j SNPT --src-pfx fd00::/64 --dst-pfx 2001:e20:2000:40f::/64
ip6tables -t mangle -I PREROUTING -i wlan0 -d 2001:e20:2000:40f::/64 -j DNPT --src-pfx 2001:e20:2000:40f::/64 --dst-pfx fd00::/64
Este posibil să fie necesar să activați un server proxy IPv6 învecinat:
sysctl -w net.ipv6.conf.all.proxy_ndp=1
De asemenea, trebuie să utilizați ținta NOTRACK pentru a dezactiva urmărirea conexiunilor pentru fluxurile traduse.
DSCP
Această
țintă modifică valoarea biților DSCP din
antetul TOS al pachetului IPv4. Deoarece această
țintă manipulează un pachet, ea poate fi
utilizată numai în tabelul „mangle”.
--set-dscp
valoare
Definește câmpul DSCP la o valoare numerică (poate fi zecimală sau hexazecimală)
--set-dscp-class clasa
Definește câmpul DSCP la o clasă DiffServ.
ECN (specific IPv4)
Această
țintă funcționează selectiv în
jurul găurilor negre ECN cunoscute. Aceasta poate fi
utilizată numai în tabelul „mangle”.
--ecn-tcp-remove
Elimină toți biții ECN din antetul TCP. Desigur, aceasta poate fi utilizată numai împreună cu -p tcp .
HL (specific IPv6)
Aceasta este utilizată pentru a modifica câmpul Hop Limit din antetul IPv6. Câmpul Hop Limit este similar cu ceea ce este cunoscut sub numele de valoare TTL în IPv4. Stabilirea sau incrementarea câmpului Hop Limit poate fi foarte periculoasă, astfel încât ar trebui evitată cu orice preț. Această țintă este valabilă numai în tabelul mangle .
Nu
stabiliți sau nu incrementați niciodată
valoarea pe pachetele care părăsesc rețeaua
locală!
--hl-set
valoare
Stabilește limita de salt (Hop Limit) la „valoare”.
--hl-dec valoare
Reduce limita de salt de „valoare” de ori.
--hl-inc valoare
Incrementează limita de salt de „valoare” de ori.
HMARK
La fel ca MARK, adică stabilește fwmark, dar marca este calculată din selectorul de pachete hashing la alegere. De asemenea, trebuie să specificați intervalul de marcare și, opțional, decalajul de la care să se înceapă. Mesajele de eroare ICMP sunt inspectate și utilizate pentru a calcula hashing-ul.
Existing options
are:
--hmark-tuple
tuple
Membrii tuplelor posibile sunt: src înseamnă adresa sursă (adresă IPv4, IPv6), dst înseamnă adresa destinație (adresă IPv4, IPv6), sport înseamnă portul sursă (TCP, UDP, UDPlite, SCTP, DCCP), dport înseamnă portul destinație (TCP, UDP, UDPlite, SCTP, DCCP), spi înseamnă indicele parametrului de securitate (AH, ESP) și ct înseamnă utilizarea tuple-ului conntrack în locul selectorilor de pachete.
--hmark-mod valoare (trebuie să fie > 0)
Modul pentru calculul hash (pentru a limita gama de marcaje posibile)
--hmark-offset valoare
Decalaj de la care să se înceapă marcajele.
Pentru utilizare avansată,
în loc să utilizați
„--hmark-tuple”, puteți
specifica personalizat
prefixe și măști:
--hmark-src-prefix cidr
Masca adresei sursă în notație CIDR.
--hmark-dst-prefix cidr
Masca adresei de destinație în notație CIDR.
--hmark-sport-mask valoare
O mască a portului sursă de 16 biți în hexazecimal.
--hmark-dport-mask valoare
O mască a portului de destinație de 16 biți în hexazecimal.
--hmark-spi-mask valoare
Un câmp de 32 de biți cu mască spi.
--hmark-proto-mask valoare
Un câmp de 8 biți cu numărul protocolului de nivel(strat) 4.
--hmark-rnd valoare
O valoare personalizată aleatorie de 32 de biți pentru a alimenta calculul hash.
Exemple:
iptables -t
mangle -A PREROUTING -m conntrack --ctstate NEW
-j HMARK --hmark-tuple ct,src,dst,proto --hmark-offset 10000
--hmark-mod 10 --hmark-rnd 0xfeedcafe
iptables -t mangle -A PREROUTING -j HMARK --hmark-offset 10000 --hmark-tuple src,dst,proto --hmark-mod 10 --hmark-rnd 0xdeafbeef
IDLETIMER
Această țintă poate fi utilizată pentru a identifica momentul în care interfețele au fost inactive pentru o anumită perioadă de timp. Temporizatoarele sunt identificate prin etichete și sunt create atunci când o regulă este definită cu o etichetă nouă. Regulile preiau, de asemenea, o valoare de temporizare (în secunde) ca opțiune. Dacă mai multe reguli utilizează aceeași etichetă de temporizator, temporizatorul va fi repornit ori de câte ori oricare dintre reguli primește un rezultat pozitiv. O intrare pentru fiecare cronometru este creată în sysfs. Acest atribut conține timpul rămas până la expirarea temporizatorului. Atributele sunt localizate sub clasa xt_idletimer:
/sys/class/xt_idletimer/timers/<label>
Când
cronometrul expiră, modulul țintă trimite o
notificare sysfs către spațiul utilizatorului,
care poate decide apoi ce să facă (de exemplu,
deconectarea pentru a economisi energie).
--timeout
timp
Acesta este timpul în secunde care va declanșa notificarea.
--label șir
Acesta este un identificator unic pentru temporizator. Lungimea maximă pentru șirul de etichete este de 27 de caractere.
LED
Acest lucru
creează un declanșator LED care poate fi
atașat apoi la indicatoarele luminoase ale sistemului,
pentru a clipi sau a le aprinde atunci când anumite
pachete trec prin sistem. Un exemplu ar putea fi aprinderea
unui LED timp de câteva minute de fiecare dată
când se realizează o conexiune SSH la mașina
locală. Următoarele opțiuni controlează
comportamentul declanșatorului:
--led-trigger-id
nume
Acesta este numele dat declanșatorului LED. Numele real al declanșatorului va fi prefixat cu „netfilter-”.
--led-delay ms
Aceasta indică cât timp (în milisecunde) ar trebui lăsat LED-ul aprins atunci când sosește un pachet înainte de a fi stins din nou. Valoarea implicită este 0 (clipește cât mai repede posibil.) Valoarea specială inf poate fi dată pentru a lăsa LED-ul aprins permanent odată activat; (în acest caz, declanșatorul va trebui să fie manual detașat și reatașat de dispozitivul LED pentru a-l opri din nou).
--led-always-blink
Face ca întotdeauna LED-ul să clipească la sosirea pachetului, chiar dacă LED-ul este deja aprins. Acest lucru permite notificarea pachetelor noi chiar și cu valori de întârziere mari (care altfel ar duce la o prelungire silențioasă a timpului de întârziere).
Exemplu:
Creați un declanșator LED pentru traficul SSH de
intrare:
iptables -A INPUT -p tcp --dport 22 -j LED --led-trigger-id ssh
Apoi atașați noul declanșator la un LED:
echo netfilter-ssh >/sys/class/leds/ ledname /trigger
LOG
Activează înregistrarea în nucleu a pachetelor corespunzătoare. Atunci când această opțiune este definită pentru o regulă, nucleul Linux va afișa anumite informații despre toate pachetele corespunzătoare (cum ar fi majoritatea câmpurilor antetului IP/IPv6) prin intermediul jurnalului nucleului (unde pot fi citite cu dmesg(1) sau citite în syslog).
Aceasta este o
„țintă non-terminantă”,
adică parcurgerea regulii continuă la
următoarea regulă. Prin urmare, dacă
doriți să înregistrați pachetele pe
care le refuzați, utilizați două reguli
separate cu aceleași criterii de potrivire, folosind
mai întâi obiectivul LOG, apoi DROP (sau
REJECT).
--log-level
nivel
Nivelul de jurnalizare, care poate fi (specific sistemului) numeric sau mnemonic. Valorile posibile sunt (în ordinea descrescătoare a priorității): emerg , alert , crit , error , warning , notice , info sau debug .
--log-prefix prefix
Prefixează mesajele din jurnal cu prefixul specificat; are o lungime de până la 29 de litere și este util pentru a distinge mesajele din jurnale.
--log-tcp-sequence
Înregistează numerele de secvență TCP. Acesta este un risc de securitate dacă jurnalul poate fi citit de utilizatori.
--log-tcp-options
Înregistrează opțiunile din antetul pachetului TCP.
--log-ip-options
Înregistrează opțiunile din antetul pachetului IP/IPv6.
--log-uid
Înregistrează ID-ul de utilizator al procesului care a generat pachetul.
--log-macdecode
Înregistrează adresele MAC și protocolul.
MARK
Această
țintă este utilizată pentru a stabili
valoarea marcajului Netfilter asociat pachetului. Aceasta
poate fi utilizată, de exemplu, împreună cu
direcționarea bazată pe fwmark (necesită
iproute2). Dacă intenționați să
faceți acest lucru, rețineți că marca
trebuie să fie definită fie în lanțul
PREROUTING, fie în lanțul OUTPUT al tabelului
„mangle” pentru a afecta direcționarea.
Câmpul mărcii „mark” are o
lățime de 32 de biți.
--set-xmark
valoare
[
/
masca
]
Reduce la zero biții indicați de mască și XOR valoare în marcajul pachetului („nfmark”). Dacă masca este omisă, se presupune 0xFFFFFFFF.
--set-mark valoare [ / masca ]
Reduce la zero biții indicați de mască și face OR cu valoare în marcajul pachetului. Dacă masca este omis, se presupune 0xFFFFFFFF.
Sunt disponibile
următoarele mnemonice:
--and-mark
biți
Evaluează AND logic al nfmark-ului cu biți ; (mnemonic pentru --set-xmark 0/ invbiți , unde invbiți este negația binară a lui biți ).
--or-mark biți
Evaluează OR logic al nfmark-ului cu biți ; (mnemonic pentru --set-xmark biți / biți .)
--xor-mark biți
Evaluează XOR logic al nfmark-ului cu biți ; (mnemonic pentru --set-xmark biți /0 .)
MASQUERADE
Această
țintă este valabilă numai în tabelul
nat
, în lanțul
POSTROUTING
. Aceasta
trebuie utilizată numai în cazul conexiunilor IP
alocate dinamic (dialup): dacă aveți o adresă
IP statică, trebuie să utilizați ținta
SNAT. Mascarea este echivalentă cu specificarea unei
corespondențe cu adresa IP a interfeței pe care
pleacă pachetul, dar are, de asemenea, efectul că
conexiunile sunt
uitate
atunci când
interfața cade. Acesta este comportamentul corect
atunci când este puțin probabil ca următorul
dialup să aibă aceeași adresă de
interfață (și, prin urmare, orice conexiune
stabilită este oricum pierdută).
--to-ports
port
[
-
port
]
Aceasta specifică un interval de porturi sursă care urmează să fie utilizate, înlocuind euristica implicită de selectare a porturilor sursă SNAT (a se vedea mai sus). Acest lucru este valabil numai dacă regula specifică de asemenea unul dintre următoarele protocoale: tcp , udp , dccp sau sctp .
--random
Face aleatorie cartografierea porturilor sursă (nucleu >= 2.6.21). Începând cu nucleul 5.0, --random este identică cu --random-fully .
--random-fully
Face complet aleatorie cartografierea porturilor sursă (nucleu >= 3.13).
Suport IPv6 disponibil de la nucleele Linux >= 3.7.
NETMAP
Această
țintă vă permite cartografierea statică
a unei întregi rețele de adrese pe o altă
rețea de adrese. Aceasta poate fi utilizată numai
din regulile din tabelul
nat
.
--to
adresa
[
/
masca
]
Adresa de rețea la care se face cartografierea. Adresa rezultată va fi construită în felul următor: Toți biții „unu” din mască sunt introduși din noua „adresă”. Toți biții zero din mască sunt introduși din adresa originală.
Suport IPv6 disponibil de la nucleele Linux >= 3.7.
NFLOG
Această
țintă asigură înregistrarea în
jurnal a pachetelor corespunzătoare. Atunci când
această țintă este definită pentru o
regulă, nucleul Linux va transmite pachetul către
sistemul de jurnalizare încărcat pentru a
înregistra pachetul. Aceasta este de obicei
utilizată în combinație cu nfnetlink_log ca
sistem de jurnalizare, care va multidifuza pachetul
printr-un soclu
netlink
către grupul de
multidifuzare specificat. Unul sau mai multe procese din
spațiul utilizatorilor se pot abona la grup pentru a
primi pachetele. La fel ca LOG, acesta este un obiectiv
non-terminant, adică parcurgerea regulii continuă
la următoarea regulă.
--nflog-group
nlgroup
Grupul netlink (0 - 2ˆ16-1) către care sunt direcționate pachetele (aplicabil numai pentru nfnetlink_log). Valoarea implicită este 0.
--nflog-prefix prefix
Un șir de prefixe de inclus în mesajul jurnal, cu o lungime de până la 64 de caractere, util pentru a distinge mesajele din jurnale.
--nflog-range dimensiune
Această opțiune nu a funcționat niciodată, folosiți în schimb „--nflog-size”
--nflog-size dimensiune
Numărul de octeți care urmează să fie copiați în spațiul utilizatorului (aplicabil numai pentru nfnetlink_log). Instanțele nfnetlink_log își pot specifica propriul interval, această opțiune îl înlocuiește.
--nflog-threshold dimensiune
Numărul de pachete care trebuie puse la coadă în interiorul nucleului înainte de a fi trimise către spațiul utilizatorilor (aplicabil numai pentru nfnetlink_log). Valorile mai mari au ca rezultat mai puțină încărcare per pachet, dar cresc întârzierea până când pachetele ajung în spațiul utilizatorilor. Valoarea implicită este 1.
NFQUEUE
Această
țintă transmite pachetul către spațiul
utilizatorilor utilizând gestionarul
nfnetlink_queue
. Pachetul este pus în coada
identificată prin numărul său de coadă
pe 16 biți. Spațiul utilizatorilor poate inspecta
și modifica pachetul, dacă se dorește.
Spațiul utilizatorilor trebuie apoi să elimine sau
să reinjecteze pachetul în nucleu. Vă
rugăm să consultați libnetfilter_queue pentru
detalii.
nfnetlink_queue
a fost adăugat în
Linux 2.6.14. Opțiunea
queue-balance
a fost
adăugată în Linux 2.6.31,
queue-bypass
în 2.6.39.
--queue-num
valoare
Specifică numărul de coadă care urmează să fie utilizat. Numerele de coadă valabile sunt de la 0 la 65535. Valoarea implicită este 0.
--queue-balance valoare : valoare
Aceasta specifică o serie de cozi de așteptare care urmează să fie utilizate. Pachetele sunt apoi echilibrate între cozile date. Acest lucru este util pentru sistemele multi-nucleu: pornește mai multe instanțe ale programului din spațiul utilizatorului pe cozile x, x+1, .. x+n și utilizați „--queue-balance x : x+n ”. Pachetele care aparțin aceleiași conexiuni sunt plasate în aceeași nfqueue. Datorită detaliilor de implementare, o valoare inferioară a intervalului de 0 limitează valoarea superioară a intervalului la 65534, adică nu se poate echilibra decât între cel mult 65535 de cozi.
--queue-bypass
În mod implicit, dacă niciun program din spațiul utilizatorului nu ascultă un NFQUEUE, atunci toate pachetele care urmează să fie puse în coadă sunt abandonate. Atunci când se utilizează această opțiune, regula NFQUEUE se comportă în schimb ca ACCEPT, iar pachetul va trece la următorul tabel.
--queue-cpu-fanout
Disponibilă începând cu nucleul Linux 3.10. Atunci când este utilizată împreună cu --queue-balance , aceasta va utiliza ID-ul CPU ca index pentru alocarea pachetelor la cozi. Ideea este că vă puteți îmbunătăți performanța dacă există o coadă pentru fiecare CPU. Pentru aceasta este necesar ca --queue-balance să fie specificată.
NOTRACK
Această extensie dezactivează urmărirea conexiunilor pentru toate pachetele care corespund regulii respective. Este echivalentă cu „-j CT --notrack”. Ca și CT, NOTRACK poate fi utilizată numai în tabelul raw .
RATEEST
Ținta
RATEEST colectează statistici, efectuează calculul
de estimare a ratei și salvează rezultatele pentru
o evaluare ulterioară utilizând
corespondența
rateest
.
--rateest-name
nume
Numără pachetele potrivite în grupul menționat de nume , care poate fi ales liber.
--rateest-interval cantitatea-de-timp { s | ms | us }
Intervalul de măsurare a ratei, în secunde, milisecunde sau microsecunde.
--rateest-ewmalog valoare
Constanta de timp a mediei de măsurare a ratei.
REDIRECT
Această
țintă este valabilă numai în tabelul
nat
, în lanțurile
PREROUTING
și
OUTPUT
și în lanțurile
definite de utilizator care sunt apelate numai din aceste
lanțuri. Aceasta redirecționează pachetul
către mașina în sine prin schimbarea IP-ului
de destinație cu adresa primară a interfeței
de intrare (pachetele generate local sunt mapate la adresa
localhost, 127.0.0.1 pentru IPv4 și ::1 pentru IPv6,
iar pachetele care sosesc pe interfețe care nu au o
adresă IP configurată sunt abandonate).
--to-ports
port
[
-
port
]
Specifică un port de destinație sau un interval de porturi de utilizat: fără această indicație, portul de destinație nu este modificat niciodată. Acest lucru este valabil numai dacă regula specifică, de asemenea, unul dintre următoarele protocoale: tcp , udp , dccp sau sctp . Pentru un singur port, se poate utiliza un nume de serviciu așa cum este listat în /etc/services .
--random
Alocarea aleatorie a porturilor sursă (nucleu >= 2.6.22).
Suport IPv6 disponibil începând cu nucleele Linux >= 3.7.
REJECT (specific IPv6)
Aceasta este
utilizată pentru a trimite înapoi un pachet de
eroare ca răspuns la pachetul corespunzător:
în caz contrar, este echivalentă cu
DROP
,
deci este o ȚINTĂ terminală, care
încheie parcurgerea regulilor. Această
țintă este valabilă numai în
lanțurile
INPUT
,
FORWARD
și
OUTPUT
și în lanțurile definite de
utilizator care sunt apelate numai din aceste lanțuri.
Următoarea opțiune controlează natura
pachetului de erori returnat:
--reject-with
tip
Tipul dat poate fi icmp6-no-route , no-route , icmp6-adm-prohibited , adm-prohibited , icmp6-addr-unreachable , addr-unreach , sau icmp6-port-unreachable , care returnează mesajul de eroare ICMPv6 corespunzător ( icmp6-port-unreachable este implicit). În cele din urmă, opțiunea tcp-reset poate fi utilizată pentru regulile care corespund doar protocolului TCP: aceasta determină trimiterea înapoi a unui pachet TCP RST. Această opțiune este utilă în principal pentru blocarea sondajelor ident (113/tcp) care apar frecvent la trimiterea de e-mail către gazde de e-mail defecte (care altfel nu vă vor accepta e-mailul). tcp-reset poate fi utilizat numai cu versiunile de nucleu 2.6.14 sau mai recente.
Avertisment: Nu trebuie să aplicați în mod nediscriminatoriu ținta REJECT pachetelor a căror stare de conexiune este clasificată ca INVALID; în schimb, trebuie să le înlăturați „DROP” numai pe acestea.
Să luăm în considerare o gazdă sursă care transmite un pachet P, P înregistrând o întârziere atât de mare de-a lungul traseului său încât gazda sursă emite o retransmisie, P_2, P_2 reușind să ajungă la destinație și avansând în mod normal în starea conexiunii. Se poate concepe ca P care ajunge cu întârziere să fie considerat ca nefiind asociat cu nicio intrare de urmărire a conexiunii. Generarea unui răspuns de respingere pentru un pachet astfel clasificat ar pune capăt conexiunii „sănătoase”.
Așadar, în loc de:
-A INPUT ... -j REJECT
luați în considerare utilizarea:
-A INPUT ... -m
conntrack --ctstate INVALID -j DROP
-A INPUT ... -j REJECT
REJECT (specific IPv4)
Aceasta este
utilizată pentru a trimite înapoi un pachet de
eroare ca răspuns la pachetul corespunzător:
în caz contrar, este echivalentă cu
DROP
,
deci este o ȚINTĂ terminală, care
încheie parcurgerea regulilor. Această
țintă este valabilă numai în
lanțurile
INPUT
,
FORWARD
și
OUTPUT
și în lanțurile definite de
utilizator care sunt apelate numai din aceste lanțuri.
Următoarea opțiune controlează natura
pachetului de erori returnat:
--reject-with
tip
Tipul dat poate fi icmp-net-unreachable , icmp-host-unreachable , icmp-port-unreachable , icmp-proto-unreachable , icmp-net-prohibited , icmp-host-prohibited , sau icmp-admin-prohibited (*), care returnează mesajul de eroare ICMP corespunzător ( icmp-port-unreachable este implicit). Opțiunea tcp-reset poate fi utilizată pentru regulile care corespund numai protocolului TCP: aceasta determină trimiterea înapoi a unui pachet TCP RST. Această opțiune este utilă în principal pentru blocarea sondajelor ident (113/tcp) care apar frecvent la trimiterea de e-mail către gazde de e-mail defecte (care altfel nu vă acceptă e-mailul).
(*) Utilizarea icmp-admin-prohibited cu nuclee care nu oferă suport pentru aceasta va duce la un simplu DROP în loc de REJECT
Avertisment: Nu trebuie să aplicați în mod nediscriminatoriu ținta REJECT pachetelor a căror stare de conexiune este clasificată ca INVALID; în schimb, trebuie să le înlăturați „DROP” numai pe acestea.
Să luăm în considerare o gazdă sursă care transmite un pachet P, P înregistrând o întârziere atât de mare de-a lungul traseului său încât gazda sursă emite o retransmisie, P_2, P_2 reușind să ajungă la destinație și avansând în mod normal în starea conexiunii. Se poate concepe ca P care ajunge cu întârziere să fie considerat ca nefiind asociat cu nicio intrare de urmărire a conexiunii. Generarea unui răspuns de respingere pentru un pachet astfel clasificat ar pune capăt conexiunii „sănătoase”.
Așadar, în loc de:
-A INPUT ... -j REJECT
luați în considerare utilizarea:
-A INPUT ... -m
conntrack --ctstate INVALID -j DROP
-A INPUT ... -j REJECT
SECMARK
Se
utilizează pentru a stabili valoarea marcajului de
securitate asociat pachetului pentru a fi utilizat de
subsistemele de securitate, cum ar fi SELinux. Este
valabilă în tabelul
security
(pentru
compatibilitatea cu nucleele mai vechi, este valabilă
și în tabelul
mangle
). Marca are o
lățime de 32 de biți.
--selctx
context-securitate
SET
Acest modul
adaugă și/sau șterge intrări din
seturile IP care pot fi definite prin ipset(8).
--add-set
nume-set
fanion
[
,
fanion
...]
adaugă adresa(adresele)/portul(porturile) pachetului la set
--del-set nume-set fanion [ , fanion ...]
șterge adresa(adresele)/portul(porturile) pachetului din set
--map-set nume-set fanion [ , fanion ...]
[--map-mark] [--map-prio] [--map-queue] proprietățile pachetului de hartă (marca paravanului de protecție, prioritatea tc, coada hardware)
unde fanioane sunt specificații src și/sau dst și nu pot fi mai mult de șase.
--timeout valoare
atunci când se adaugă o intrare, valoarea timpului de așteptare care trebuie utilizată în locul celei implicite din definiția setului
--exist
atunci când se adaugă o intrare, valoarea timpului de așteptare care trebuie utilizată în locul celei implicite din definiția setului
--map-set nume-set
nume-set trebuie creat cu opțiunea „--skbinfo”, opțiunea --map-mark cartografiază marcajul paravanului de protecție la pachet prin căutarea valorii în set, opțiunea --map-prio cartografiază prioritatea controlului traficului la pachet prin căutarea valorii în set, opțiunea --map-queue cartografiază coada hardware NIC la pachet prin căutarea valorii în set
Opțiunea --map-set poate fi utilizată numai din tabelul mangle. Fanioanele --map-prio și --map-queue pot fi utilizate în lanțurile OUTPUT, FORWARD și POSTROUTING.
Utilizarea opțiunii „-j SET” necesită existența suportului ipset oferit de nucleu, ceea ce, pentru nucleele standard, este cazul începând cu Linux 2.6.39.
SNAT
Această
țintă este valabilă numai în tabelul
nat
, în lanțurile
POSTROUTING
și
INPUT
și în lanțurile
definite de utilizator care sunt apelate numai din aceste
lanțuri. Aceasta specifică faptul că adresa
sursă a pachetului trebuie modificată (și
toate pachetele viitoare din această conexiune vor fi,
de asemenea, modificate), iar regulile trebuie să
înceteze să mai fie examinate. Acceptă
următoarele opțiuni:
--to-source
[
adresa-ip
[
-
adresa-ip
]][
:
port
[
-
port
]]
care poate specifica o singură adresă IP sursă nouă, un interval inclusiv de adrese IP. Opțional, un interval de porturi, dacă regula specifică și unul dintre următoarele protocoale: tcp , udp , dccp sau sctp . Dacă nu este specificat niciun interval de porturi, atunci porturile sursă sub 512 vor fi asociate cu alte porturi sub 512: cele între 512 și 1023 inclusiv vor fi asociate cu porturi sub 1024, iar alte porturi vor fi asociate cu porturi 1024 sau mai mari. Atunci când este posibil, nu va avea loc nicio modificare a porturilor.
--random
Asociază aleatoriu porturile sursă prin intermediul unui algoritm bazat pe hash (nucleu >= 2.6.21).
--random-fully
Asociază complet aleatoriu porturile sursă prin intermediul unui PRNG (nucleu >= 3.14).
--persistent
Oferă unui client aceeași adresă sursă/destinație pentru fiecare conexiune. Aceasta înlocuiește ținta SAME. Suportul pentru corespondențe persistente este disponibil de la versiunea 2.6.29-rc2.
Nucleele
anterioare versiunii 2.6.36-rc1 nu au capacitatea de a
SNAT
în lanțul
INPUT
.
Suport IPv6 disponibil de la nucleele Linux >= 3.7.
SNPT (specific IPv6)
Furnizează traducerea prefixelor de rețea de la sursă IPv6 la IPv6 fără stare (conform descrierii RFC 6296).
Trebuie să
utilizați această țintă în tabelul
mangle
, nu în tabelul
nat
. Are
următoarele opțiuni:
--src-pfx
[
prefix/lungime]
Definește prefixul sursă pe care doriți să îl traduceți și lungimea
--dst-pfx [ prefix/lungime]
Definește prefixul destinație pe care doriți să îl traduceți și lungimea
Trebuie să utilizați ținta DNPT pentru a anula traducerea. Exemplu:
ip6tables -t mangle -I POSTROUTING -s fd00::/64 ! -o vboxnet0 -j SNPT --src-pfx fd00::/64 --dst-pfx 2001:e20:2000:40f::/64
ip6tables -t mangle -I PREROUTING -i wlan0 -d 2001:e20:2000:40f::/64 -j DNPT --src-pfx 2001:e20:2000:40f::/64 --dst-pfx fd00::/64
Este posibil să fie necesar să activați un server proxy IPv6 învecinat:
sysctl -w net.ipv6.conf.all.proxy_ndp=1
De asemenea, trebuie să utilizați ținta NOTRACK pentru a dezactiva urmărirea conexiunilor pentru fluxurile traduse.
SYNPROXY
Această
țintă va procesa negocierea TCP pe trei
direcții (TCP three-way-handshake) în paralel
în contextul netfilter pentru a proteja sistemul local
sau sistemul serverului. Această țintă
necesită urmărirea conexiunii deoarece numerele de
secvență trebuie traduse. Capacitatea nucleelor de
a absorbi SYNFLOOD a fost mult
îmbunătățită începând
cu Linux 4.4, astfel încât această
țintă nu ar trebui să mai fie necesară
pentru a proteja serverele Linux.
--mss
dimensiunea-maximă-a-segmentului
Dimensiunea maximă a segmentului anunțată clienților. Aceasta trebuie să corespundă cu interfața internă.
--wscale scala-ferestrei
Scala ferestrei anunțată clienților. Aceasta trebuie să corespundă cu interfața internă.
--sack-perm
Transmite opțiunea de confirmare selectivă a clientului către interfața internă (va fi dezactivată dacă nu este prezentă).
--timestamps
Transmite opțiunea de marcă temporală „timestamp” a clientului către interfața internă (va fi dezactivată dacă nu este prezentă, necesară și pentru confirmarea selectivă și scalarea ferestrei).
Exemplu:
Determină opțiunile tcp utilizate de interfața internă, de la un sistem extern
tcpdump -pni
eth0 -c 1 ’tcp[tcpflags] == (tcp-syn|tcp-ack)’
port 80 &
telnet 192.0.2.42 80
18:57:24.693307 IP 192.0.2.42.80 > 192.0.2.43.48757:
Flags [S.], seq 360414582, ack 788841994, win 14480,
options [mss 1460,sackOK,
TS val 1409056151 ecr 9690221,
nop,wscale 9],
length 0
Dezactivează modul tcp_loose, astfel încât conntrack să marcheze pachetele în afara fluxului ca fiind în starea INVALID.
echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose
Face pachetele SYN să nu fie urmărite
iptables -t raw
-A PREROUTING -i eth0 -p tcp --dport 80
--syn -j CT --notrack
Captează stările UNTRACKED (pachete SYN) și INVALID (pachete 3WHS ACK) și le trimite la SYNPROXY. Această regulă va răspunde la pachetele SYN cu syncookies SYN+ACK, va crea ESTABLISHED pentru răspunsul valid al clientului (pachete 3WHS ACK) și va elimina cookie-urile incorecte. Combinațiile de fanioane care nu sunt așteptate în timpul 3WHS nu se vor potrivi și vor continua (de exemplu SYN+FIN, SYN+ACK).
iptables -A
INPUT -i eth0 -p tcp --dport 80
-m state --state UNTRACKED,INVALID -j SYNPROXY
--sack-perm --timestamp --mss 1460 --wscale 9
Înlătură pachetele nevalide, acestea vor fi pachete în afara fluxului care nu au fost potrivite de SYNPROXY.
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state INVALID -j DROP
TCPMSS
Această țintă modifică valoarea MSS a pachetelor TCP SYN, pentru a controla dimensiunea maximă a conexiunii respective (limitând-o de obicei la MTU-ul interfeței de ieșire minus 40 pentru IPv4 sau 60 pentru IPv6, respectiv). Desigur, aceasta poate fi utilizată numai în combinație cu -p tcp .
Această țintă este utilizată pentru a depăși ISP-urile sau serverele criminale care blochează pachetele „ICMP Fragmentation Needed” sau „ICMPv6 Packet Too Big”. Simptomele acestei probleme sunt că totul funcționează bine din paravanul de protecție/router-ul Linux, dar mașinile din spatele acestuia nu pot schimba niciodată pachete mari:
|
1. |
Navigatoarele web se conectează, apoi se blochează fără a primi date. |
||
|
2. |
E-mailurile mici funcționează bine, dar e-mailurile mari se blochează. |
||
|
3. |
ssh funcționează bine, dar scp se blochează după negocierea inițială. |
Soluție: activați această opțiune și adăugați o regulă la configurația paravanului de protecție, cum ar fi:
iptables -t
mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN
-j TCPMSS --clamp-mss-to-pmtu
--set-mss valoare
Stabilește explicit opțiunea MSS la valoarea specificată. Dacă MSS al pachetului este deja mai mic decât valoarea , aceasta nu va fi mărită (începând cu Linux 2.6.25) pentru a evita mai multe probleme cu gazdele care se bazează pe un MSS adecvat.
--clamp-mss-to-pmtu
Fixează automat valoarea MSS la (path_MTU - 40 pentru IPv4; -60 pentru IPv6). Este posibil ca această opțiune să nu funcționeze așa cum se dorește în cazul în care există rute asimetrice cu MTU de rute diferite - nucleul utilizează MTU de rute pe care l-ar utiliza pentru a trimite pachete de la sine la adresele IP sursă și destinație. Înainte de Linux 2.6.25, această opțiune lua în considerare numai MTU-ul rutei către adresa IP de destinație; nucleele ulterioare iau în considerare și MTU-ul rutei către adresa IP sursă.
Aceste opțiuni se exclud reciproc.
TCPOPTSTRIP
Această
țintă va elimina opțiunile TCP dintr-un
pachet TCP; (de fapt, le va înlocui cu NO-OPs). Ca
atare, va trebui să adăugați parametrii
-p
tcp
.
--strip-options
opțiune
[
,
opțiune
...]
Elimină opțiunea (opțiunile) dată (date). Opțiunile pot fi specificate prin numărul opțiunii TCP sau prin nume simbolic. Lista opțiunilor recunoscute poate fi obținută apelând iptables cu -j TCPOPTSTRIP -h .
TEE
Ținta
TEE
va clona un pachet și va redirecționa
această clonă către o altă
mașină de pe segmentul de rețea
local
.
Cu alte cuvinte, nexthop-ul (saltul următor) trebuie
să fie ținta, sau va trebui să
configurați nexthop-ul pentru a-l redirecționa mai
departe, dacă doriți.
--gateway
adresa-ip
Trimite pachetul clonat către gazda care poate fi atinsă la adresa IP dată. Utilizarea 0.0.0.0 (pentru pachetele IPv4) sau :: (IPv6) nu este valabilă.
Pentru a redirecționa tot traficul de intrare de pe eth0 către un sistem de jurnalizare la nivel de rețea:
-t mangle -A PREROUTING -i eth0 -j TEE --gateway 2001:db8::1
TOS
Acest modul
stabilește câmpul Type of Service (tipul de
serviciu) din antetul IPv4 (inclusiv biții
„precedence”) sau câmpul Priority din
antetul IPv6. Rețineți că TOS împarte
aceiași biți ca DSCP și ECN. Ținta TOS
este valabilă numai în tabelul
mangle
.
--set-tos
valoare
[
/
masca
]
Reduce la zero biții indicați de masca (a se vedea NOTA de mai jos) și EVALUEAZĂ CU XOR LOGIC valoarea în câmpul TOS/Priority. Dacă masCA este omisă, se presupune 0xFF.
--set-tos simbol
Puteți specifica un nume simbolic atunci când utilizați ținta TOS pentru IPv4. Aceasta implică o mască de 0xFF (a se vedea NOTA de mai jos). Lista de nume TOS recunoscute poate fi obținută apelând iptables cu -j TOS -h .
Sunt disponibile
următoarele mnemonice:
--and-tos
biți
Evaluează AND logic al valorii TOS cu biți ; (mnemonic pentru --set-tos 0/ invbiți , unde invbiți este negația binară a lui biți . A se vedea NOTA de mai jos).
--or-tos biți
Evaluează OR logic al valorii TOS cu biți ; (mnemonic pentru --set-tos biți / biți . A se vedea NOTA de mai jos).
--xor-tos biți
Evaluează XOR logic al valorii TOS cu biți ; (mnemonic pentru --set-tos biți /0 . A se vedea NOTA de mai jos).
NOTĂ: În nucleele Linux până la și inclusiv 2.6.38, cu excepția versiunilor pe termen lung 2.6.32 (>=.42), 2.6.33 (>=.15) și 2.6.35 (>=.14), există o eroare prin care manipularea TOS IPv6 nu se comportă conform documentației și diferă de versiunea IPv4. Masca TOS indică biții care trebuie eliminați, deci trebuie inversată înainte de a fi aplicată câmpului TOS original. Cu toate acestea, nucleele menționate anterior renunță la inversare, ceea ce rupe „--set-tos” și mnemonicele sale.
TPROXY
Această
țintă este valabilă numai în tabelul
mangle
, în lanțul
PREROUTING
și în lanțurile definite de utilizator care
sunt apelate numai din acest lanț. Aceasta
redirecționează pachetul către un soclu local
fără a modifica în niciun fel antetul
pachetului. De asemenea, poate modifica valoarea mărcii
care poate fi apoi utilizată în reguli avansate
de direcționare. Acceptă trei opțiuni:
--on-port
port
Specifică un port de destinație care urmează să fie utilizat. Este o opțiune obligatorie, 0 înseamnă că noul port de destinație este același cu cel original. Aceasta este valabilă numai dacă regula specifică și -p tcp sau -p udp .
--on-ip adresa
Aceasta specifică o adresă de destinație de utilizat. În mod implicit, adresa este adresa IP a interfeței de intrare. Aceasta este valabilă numai dacă regula specifică și -p tcp sau -p udp .
--tproxy-mark valoare [ / masca ]
Marchează pachetele cu valoarea/masca dată. Valoarea fwmark definită aici poate fi utilizată de direcționarea avansată; (necesar pentru ca proxy-ul transparent să funcționeze: în caz contrar, aceste pachete vor fi redirecționate, ceea ce probabil nu este ceea ce doriți).
TRACE
Această țintă marchează pachetele astfel încât nucleul va înregistra fiecare regulă care se potrivește pachetelor pe măsură ce acestea parcurg tabelele, lanțurile, regulile. Aceasta poate fi utilizată numai în tabelul raw .
Cu iptables-legacy, trebuie încărcat un sistem de jurnalizare, cum ar fi ip(6)t_LOG sau nfnetlink_log, pentru ca acest lucru să fie vizibil. Pachetele sunt înregistrate cu prefixul: „TRACE: tablename:chainname:type:rulenum” unde tipul poate fi «rule» pentru regula simplă, «return» pentru regula implicită de la sfârșitul unui lanț definit de utilizator și «policy» pentru politica lanțurilor integrate.
Cu iptables-nft, ținta este tradusă în expresia meta nftrace a nftables. Prin urmare, nucleul trimite evenimente de urmărire prin netlink către spațiul utilizatorului, unde acestea pot fi afișate cu ajutorul comenzii xtables-monitor --trace . Pentru detalii, consultați xtables-monitor (8).
TTL (specific IPv4)
Aceasta este utilizată pentru a modifica câmpul TTL al antetului IPv4. Câmpul TTL determină câte salturi (routere) poate traversa un pachet până când timpul său de viață este depășit.
Stabilirea sau incrementarea câmpului TTL poate fi foarte periculoasă, astfel încât ar trebui evitată cu orice preț. Această țintă este valabilă numai în tabelul mangle .
Nu
stabiliți sau nu incrementați niciodată
valoarea pe pachetele care părăsesc rețeaua
locală!
--ttl-set
valoare
Stabilește valoarea TTL la „valoare”.
--ttl-dec valoare
Reduce valoarea TTL de „valoare” ori.
--ttl-inc valoare
Crește valoarea TTL de „valoare” ori.
ULOG (specific IPv4)
Acesta este
predecesorul depreciat ipv4-only al țintei NFLOG.
Acesta asigură înregistrarea în
spațiul utilizatorului a pachetelor
corespunzătoare. Atunci când această
țintă este definită pentru o regulă,
nucleul Linux va multidifuza acest pachet prin intermediul
unui soclu
netlink
. Unul sau mai multe procese din
spațiul utilizatorilor se pot abona apoi la diverse
grupuri de multidifuzare și pot primi pachetele. Ca
și LOG, aceasta este o „țintă
non-terminantă”, adică parcurgerea regulii
continuă la următoarea regulă.
--ulog-nlgroup
nlgroup
Specifică grupul netlink (1-32) către care este trimis pachetul. Valoarea implicită este 1.
--ulog-prefix prefix
Prefixează mesajele din jurnal cu prefixul specificat; are o lungime de până la 32 de caractere și este util pentru a distinge mesajele din jurnale.
--ulog-cprange dimensiune
Numărul de octeți care urmează să fie copiați în spațiul utilizatorului. O valoare de 0 copiază întotdeauna întregul pachet, indiferent de dimensiunea acestuia. Valoarea implicită este 0.
--ulog-qthreshold dimensiune
Numărul de pachete de pus în coadă în interiorul nucleului. Stabilirea acestei valori la, de exemplu, 10 acumulează zece pachete în interiorul nucleului și le transmite ca un mesaj multiparte netlink către spațiul utilizatorilor. Valoarea implicită este 1 (pentru compatibilitate retroactivă).
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net .