ΡΠ΅Π»ΠΈΠΉΠ· Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΡΠΈΠ»ΡΡΡ , ΡΠ°Π·Π²ΠΈΠ²Π°ΠΉΠΊΠΈ ΡΠ΅ ΠΊΠ°ΡΠΎ Π·Π°ΠΌΠ΅ΡΡΠΈΡΠ΅Π» Π½Π° iptables, ip6tables, arptables ΠΈ ebtables ΡΡΠ΅Π· ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅ Π·Π° ΡΠΈΠ»ΡΡΠ°ΡΠΈΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° IPv4, IPv6, ARP ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΌΠΎΡΡΠΎΠ²Π΅. Π ΠΏΠ°ΠΊΠ΅ΡΠ° nftables Π²Π»ΠΈΠ·Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π° Π½ΠΈΠ²ΠΎ ΡΠ΄ΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΎΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° nf_tables, Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² ΡΡΡΡΠ°Π²Π° Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΠΎΡ Π²Π΅ΡΡΠΈΡ 3.13. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π·Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° nftables 0.9.2 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 5.3.
ΠΠ° ΡΠ΄ΡΠΎΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ°ΠΌΠΎ ΠΎΠ±Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π΄Π°Π½Π½ΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΠΎΠΊΠ°. ΠΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠΈ ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Ρ Π² Π±Π°ΠΉΡΠΊΠΎΠ΄ Π² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΡΠΎΠ·ΠΈ Π±Π°ΠΉΡΠΊΠΎΠ΄ ΡΠ΅ Π·Π°ΡΠ΅ΠΆΠ΄Π° Π² ΡΠ΄ΡΠΎΡΠΎ ΡΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Netlink ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΡΠ²Π°ΡΠ° BPF (Berkeley Packet Filters). Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΊΠΎΠ΄Π° Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅, ΡΠ°Π±ΠΎΡΠ΅Ρ Π½Π° ΡΠ΄ΡΠΎΡΠΎ, ΠΈ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠ΅ Π² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ:
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΠΏΠΎΡΡΠ° ΠΎΡ Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π° ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΎ Π½ΠΈΠ²ΠΎ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΈΠΏΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ» 4 Π½ΠΈΠ²ΠΎ:
add rule x y ip protocol { tcp, udp } th dport 53
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΆΠΈΠ²ΠΎΡ Π½Π° Π½Π°Π±ΠΎΡ ΠΎΡ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ:
add element ip x y { 1.1.1.1 timeout 30s expires 15s }
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΎΠΏΡΠΈΠΈ (lsrr, rr, ssrr ΠΈ ra) ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠΈ IPv4:
add rule x y ip option rr exists drop
ΠΠ° ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΠΎΠ»Π΅ΡΠ°ΡΠ° type, ptr, length ΠΈ addr:
Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ x y ip ΠΎΠΏΡΠΈΡ rr ΡΠΈΠΏ 1 ΠΈΠ·ΡΡΠΈΠΉ
- Π ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ ΡΠ΅Π³Π° Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡΠΈ ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ ΠΎΡ Π°Π΄ΡΠ΅ΡΠΈ:
iifname ens3 snat Π΄ΠΎ 10.0.0.0/28
iifname ens3 snat Π΄ΠΎ 10.0.0.1-10.0.0.15 - ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΡΠ° Π·Π° Π²Π΅ΡΠΈΠ³ΠΈ:
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ default_policy = accept
Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅ΡΠΈΠ³Π° ip foo bar { ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡ ΠΊΡΠΊΠ° Π²Ρ ΠΎΠ΄ΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΡΠΈΠ»ΡΡΡ; ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° $default_policy } - Π£ΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° Π½Π° Π²Π΅ΡΠΈΠ³Π°ΡΠ° ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΊΠ°ΠΊΡΠΎ Π² ΡΠΈΡΠ»ΠΎΠ²ΠΎ, ΡΠ°ΠΊΠ° ΠΈ Π² ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅:
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ prio = ΡΠΈΠ»ΡΡΡ
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ prionum = 10
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ prioffset = Β«ΡΠΈΠ»ΡΡΡ β 150Β»Π΄ΠΎΠ±Π°Π²ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° ip foo
Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅ΡΠΈΠ³Π° ip foo bar { ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡ ΠΊΡΠΊΠ° Π²Ρ ΠΎΠ΄ΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ $prio; }
Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅ΡΠΈΠ³Π° ip foo ber { ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡ ΠΊΡΠΊΠ° Π²Ρ ΠΎΠ΄ΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ $prionum; }
Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅ΡΠΈΠ³Π° ip foo bor { ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡ ΠΊΡΠΊΠ° Π²Ρ ΠΎΠ΄ΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ $prioffset; } - Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° synproxy. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° TCP ΠΏΠΎΡΡΠ° 8888 ΠΏΠΎΠ΄ synproxy ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ»Π΅Π΄Π½ΠΈΡΡ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»Π°:
ΡΠ°Π±Π»ΠΈΡΠ° ip x {
chain y {
ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡ ΠΊΡΠΊΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ raw; ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° accept;
tcp dport 8888 tcp ΡΠ»Π°Π³ΠΎΠ²Π΅ syn notrack
}Π²Π΅ΡΠΈΠ³Π° z {
ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡ ΠΊΡΠΊΠ° Π½Π°ΠΏΡΠ΅Π΄ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΡΠΈΠ»ΡΡΡ; ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° accept;
tcp dport 8888 ct state invalid,untracked synproxy mss 1460 \
wscale 7 timestamp sack-perm ct state invalid drop
}
} - ΠΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° conntrack Π½Π° ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠ΅ ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ, ΠΈΠ·ΠΈΡΠΊΠ²Π°ΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡ, ΡΠ΅Π³Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΡΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡ ΠΊΡΠΌ TCP ΠΏΠΎΡΡ 8888 ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡ ΠΊΡΠΌ ΠΏΠΎΡΡ 5432 ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠΊΠ°ΠΆΠ°Ρ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°:
ΡΠ°Π±Π»ΠΈΡΠ° x {
ct expectation myexpect {
protocol tcp
dport 5432
timeout 1h
size 12
l3proto ip
}chain input {
type filter hook input priority 0;
ct state new tcp dport 8888 ct expectation set myexpect
ct state established,related counter accept
}
}
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
