Π‘Π»Π΅Π΄ Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅Π»ΠΈΠΉΠ· Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΡΠΈΠ»ΡΡΡ , ΡΠ°Π·Π²ΠΈΠ²Π°Ρ ΡΠ΅ ΠΊΠ°ΡΠΎ Π·Π°ΠΌΠ΅ΡΡΠΈΡΠ΅Π» Π½Π° iptables, ip6tables, arptables ΠΈ ebtables, ΡΡΠ΅Π· ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅ Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° IPv4, IPv6, ARP ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΌΠΎΡΡΠ°. ΠΠ°ΠΊΠ΅ΡΡΡ nftables Π²ΠΊΠ»ΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΡΠΈΠ»ΡΡΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π° Π½ΠΈΠ²ΠΎ ΡΠ΄ΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΎΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° nf_tables, ΠΊΠΎΡΡΠΎ Π΅ ΡΠ°ΡΡ ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΠΎΡ Π²Π΅ΡΡΠΈΡ 3.13.
ΠΠ° Π½ΠΈΠ²ΠΎ ΡΠ΄ΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ°ΠΌΠΎ ΠΎΠ±Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π½Π΅Π·Π°Π²ΠΈΡΠ΅Ρ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π±Π°Π·ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π΄Π°Π½Π½ΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΠΎΠΊΠ°.
ΠΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠΈ ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Ρ Π² Π±Π°ΠΉΡΠΊΠΎΠ΄ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΡΠΎΠ·ΠΈ Π±Π°ΠΉΡΠΊΠΎΠ΄ ΡΠ΅ Π·Π°ΡΠ΅ΠΆΠ΄Π° Π² ΡΠ΄ΡΠΎΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Netlink ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΡΠ²Π°ΡΠ° BPF (Berkeley Packet Filters). Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΊΠΎΠ΄Π° Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅, ΡΠ°Π±ΠΎΡΠ΅Ρ Π½Π° Π½ΠΈΠ²ΠΎ ΡΠ΄ΡΠΎ, ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·Π½Π΅ΡΠ°Ρ Π²ΡΠΈΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎ ΠΏΠ°ΡΡΠΈΠ½Π³ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ:
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° IPsec, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° Π°Π΄ΡΠ΅ΡΠΈ Π½Π° ΡΡΠ½Π΅Π»ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΎ Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° Π·Π° IPsec ΠΈ ΡΠ°Π³ SPI (Security Parameter Index). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
β¦ ipsec in ip saddr 192.168.1.0/24
β¦ ipsec in spi 1-65536Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΌΠ°ΡΡΡΡΡΠ° ΠΏΡΠ΅Π· ΡΡΠ½Π΅Π»Π° IPsec. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· IPSec:
β¦ filter output rt ipsec missing drop
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° IGMP (Internet Group Management Protocol). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΎΡΡ
Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° Π²Ρ
ΠΎΠ΄ΡΡΠΈ IGMP Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΡΠ»Π΅Π½ΡΡΠ²ΠΎ Π² Π³ΡΡΠΏΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠ°Π²ΠΈΠ»ΠΎ
nft add rule netdev foo bar igmp type membership-query counter drop
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π²Π΅ΡΠΈΠ³ΠΈ Π·Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ (jump / goto). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
define dest = ber
add rule ip foo bar jump $dest - ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠ°ΡΠΊΠΈ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ (OS Fingerprint) Π½Π° Π±Π°Π·Π° Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ TTL Π² Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°:
β¦ meta mark set osf ttl skip name map { "Linux" : 0x1,
"Windows" : 0x2,
"MacOS" : 0x3,
"unknown" : 0x0 }
β¦ osf ttl skip version "Linux:4.20" - ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΡΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ARP Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°ΡΠ° ΠΈ IPv4 Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΡΠ΅Π»Π΅Π²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π±ΡΠΎΡΡΠ° Π½Π° ARP ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ ΠΎΡ Π°Π΄ΡΠ΅Ρ 192.168.2.1, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠ°Π²ΠΈΠ»ΠΎ:
table arp x {
chain y {
ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡ Ρ ΡΠΊ Π²Ρ ΠΎΠ΄ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΡΠΈΠ»ΡΡΡ; ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΠΏΡΠΈΠ΅ΠΌΠΈ;
arp saddr ip 192.168.2.1 Π±ΡΠΎΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΈ 1 Π±Π°ΠΉΡΠΎΠ²Π΅ 46
}
} - ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ ΡΡΠ΅Π· ΠΏΡΠΎΠΊΡΠΈ (tproxy). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡ ΠΏΠΎΡΡ 80 ΠΊΡΠΌ ΠΏΠΎΡΡ Π½Π° ΠΏΡΠΎΠΊΡΠΈ 8080:
ΡΠ°Π±Π»ΠΈΡΠ° ip x {
chain y {
ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡ Ρ ΡΠΊ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ -150; ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΠΏΡΠΈΠ΅ΠΌΠΈ;
tcp dport 80 tproxy Π΄ΠΎ :8080
}
} - ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠΊΠ΅ΡΠΈ Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π·Π°Π΄Π°Π΄Π΅Π½Π°ΡΠ° ΠΌΠ°ΡΠΊΠ° ΡΡΠ΅Π· setsockopt() Π² ΡΠ΅ΠΆΠΈΠΌ SO_MARK. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΡΠ°Π±Π»ΠΈΡΠ° inet x {
chain y {
ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡ Ρ ΡΠΊ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ -150; ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΠΏΡΠΈΠ΅ΠΌΠΈ;
tcp dport 8080 ΠΌΠ°ΡΠΊΠ° Π·Π°Π΄Π°Π²Π°Π½Π΅ ΡΠΎΠΊΠ΅Ρ ΠΌΠ°ΡΠΊΠ°
}
} - ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΈ Π·Π° Π²Π΅ΡΠΈΠ³ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
nft Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅ΡΠΈΠ³Π° ip x raw { ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡ Ρ ΡΠΊ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ raw; }
nft Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅ΡΠΈΠ³Π° ip x filter { ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡ Ρ ΡΠΊ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΡΠΈΠ»ΡΡΡ; }
nft Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅ΡΠΈΠ³Π° ip x filter_later { ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡ Ρ ΡΠΊ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΡΠΈΠ»ΡΡΡ + 10; } - ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π³ΠΎΠ²Π΅ SELinux (Secmark). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ°Π³Π° βsshtagβ Π² ΠΎΠ±Π²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° SELinux ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅:
nft Π΄ΠΎΠ±Π°Π²ΠΈ secmark inet filter sshtag βsystem_u:object_r:ssh_server_packet_t:s0β
Π ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠΎΠ·ΠΈ ΡΠ°Π³ Π² ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ°:
nft Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ inet filter input tcp dport 22 meta secmark set βsshtagβ
nft Π΄ΠΎΠ±Π°Π²ΠΈ ΠΊΠ°ΡΡΠ° inet filter secmapping { ΡΠΈΠΏ inet_service : secmark; }
nft Π΄ΠΎΠ±Π°Π²ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ inet filter secmapping { 22 : βsshtagβ }
nft Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ inet filter input meta secmark set tcp dport ΠΊΠ°ΡΡΠ° @secmapping - ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ Π·Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠ΅ ΠΏΠΎΡΡΠΎΠ²Π΅ Π² ΡΠ΅ΠΊΡΡΠΎΠ² Π²ΠΈΠ΄, ΠΊΠ°ΠΊΡΠΎ ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π² ΡΠ°ΠΉΠ»Π° /etc/services. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
nft Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ x y tcp dport βsshβ
nft ΡΠΏΠΈΡΡΠΊ ΠΏΡΠ°Π²ΠΈΠ»Π° -l
ΡΠ°Π±Π»ΠΈΡΠ° x {
chain y {
β¦
tcp dport βsshβ
}
} - ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠ° ΠΌΡΠ΅ΠΆΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ inet raw ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ meta iifkind βvrfβ ΠΏΡΠΈΠ΅ΠΌΠΈ
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π½Π°Π±ΠΎΡΠΈ (sets) ΡΡΠ΅Π· ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π°Π³Π° βdynamicβ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π½Π°Π±ΠΎΡΠ° βsβ Ρ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΈΠ·Ρ
ΠΎΠ΄ΡΡ Π°Π΄ΡΠ΅Ρ ΠΈ Π½ΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠ° Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΎΡΡΡΡΡΠ²ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° 30 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ:
Π΄ΠΎΠ±Π°Π²ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° x
Π΄ΠΎΠ±Π°Π²ΠΈ Π½Π°Π±ΠΎΡ x s { ΡΠΈΠΏ ipv4_addr; ΡΠ°Π·ΠΌΠ΅Ρ 128; Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ 30s; ΡΠ»Π°Π³ΠΎΠ²Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ; }
Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅ΡΠΈΠ³Π° x y { ΡΠΈΠΏ ΡΠΈΠ»ΡΡΡ Ρ ΡΠΊ Π²Ρ ΠΎΠ΄ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ 0; }
Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ x y Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΉ @s { ip saddr } - ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π·Π° Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΏΡΠΈΡΡΠΈΠ³Π½Π°Π»ΠΈ Π½Π° ΠΏΠΎΡΡ 8888, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠΊΠ°ΠΆΠ΅ΡΠ΅:
ΡΠ°Π±Π»ΠΈΡΠ° ip filter {
ct Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ Π°Π³ΡΠ΅ΡΠΈΠ²Π΅Π½-tcp {
ΠΏΡΠΎΡΠΎΠΊΠΎΠ» tcp;
l3proto ip;
ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° = {ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½: 100, close_wait: 4, close: 4}
}
Π²Π΅ΡΠΈΠ³Π° output {
β¦
tcp dport 8888 ct Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ Π·Π°Π΄Π°Π²Π°Π½Π΅ βΠ°Π³ΡΠ΅ΡΠΈΠ²Π΅Π½-tcpβ
}
} - ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° NAT Π·Π° ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎΡΠΎ inet:
ΡΠ°Π±Π»ΠΈΡΠ° inet nat {
β¦
ip6 daddr dead::2::1 dnat Π΄ΠΎ dead:2::99
} - ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΡΠ°Π²ΠΎΠΏΠΈΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ:
nft Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅ΡΠΈΠ³Π° filtre test
ΠΡΠ΅ΡΠΊΠ°: ΠΡΠΌΠ° ΡΠ°ΠΊΡΠ² ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ; ΠΈΠΌΠ°Π»ΠΈ ΡΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠ°Π±Π»ΠΈΡΠ° βfilterβ Π² ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ip?
Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅ΡΠΈΠ³Π° filtre test
^^^^^^ - ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π² Π½Π°Π±ΠΎΡΠΈ (sets):
Π½Π°Π±ΠΎΡ sc {
ΡΠΈΠΏ inet_service . ifname
Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ = { βsshβ . βeth0β }
} - ΠΠ±Π½ΠΎΠ²Π΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° flowtable:
nft Π΄ΠΎΠ±Π°Π²ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° x
nft Π΄ΠΎΠ±Π°Π²ΠΈ flowtable x ft { Ρ ΡΠΊ Π²Ρ ΠΎΠ΄ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ 0; ΡΡΡΡΠΎΠΉΡΡΠ²Π° = { eth0, wlan0 }; }
β¦
nft Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ x Π½Π°ΠΏΡΠ΅Π΄ ip ΠΏΡΠΎΡΠΎΠΊΠΎΠ» { tcp, udp } ΠΏΠΎΡΠΎΠΊ Π΄ΠΎΠ±Π°Π²ΠΈ @ft - ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° JSON.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
