αααααΆααααΈαα½αααααΆαααααΆαα’αα·αααααα
ααααα·αααΊααααααααααα
ααα»α
αααααΆααα―αααΆααααααα·ααΈααΆαααΌαα
αααααααααα»αααΆαααΆααΌαααααΆααααααΆααααΆαααΆααααα·ααααααααΈαααα
ααααααααΆα ααααα·ααααα·ααΆααα·αααααα αα·αααΆααααααααααααα αΌαα
αααααα·ααααΆαααααααα½αααΆααααΆαα αα·αα’ααααααααααΆααα·ααΈααΆαααΆααααΆααααααΌαααΆαα
αααααααΆ bytecode αααα»αα
αααααα’αααααααΎααααΆαα αααααΆαααα bytecode αααααααΌαααΆααααα»ααα
αααα»αααΊααααααααααΎα
ααα»α
αααααΆαα Netlink α αΎαααααα·ααααα·αααα»ααααΆαααΈααα·αααα·ααα·ααααααααΉαααΎαααα BPF (Berkeley Packet Filters)α αα·ααΈααΆααααααααα’αα»ααααΆαα±ααα’αααααΆααααααααααΆαααααΆααααΌαααα αααααΌαααααααααααα»αααααΎαααΆααα
ααααα·αααΊααα αα·αααααΆααααΈαα»αααΆαααΆααα’ααααα
αααΆααααα αα·ααααααα·ααααΆαααααΆααααααΎααΆαααΆαα½ααα·ααΈααΆααα
αααα»αα
αααααα’αααααααΎααααΆααα
ααΆαα αααααααα·αααααΆαααα
- ααΆαααΆαααα IPsec αααα’αα»ααααΆαα±ααααααΌααααα’αΆααααααΆαααααΌαααΌααααααααΈαααααα’ααααΎαααα
ααααααααΆα ααααααααΆααααααΎ IPsec αα·αααααΆα SPI (ααααααααααααΆαααΆαααααααα»ααααα·ααΆα) α α§ααΆα ααα,
... ipsec αααα»α ip saddr 192.168.1.0/24
... ipsec αααα»α spi 1-65536ααΆααα’αΆα αα·αα·αααααΎαααΆααΎααααΌααα½αααααααΆααααααΌαααΌααααααααΈ IPsec αααα¬ααα α§ααΆα ααα ααΎααααΈαααααααΆααα ααΆα ααααα·αααΆαααα IPSecα
β¦ ααααααααααα rt ipsec ααΆααααΆαααααΆααα α»α
- ααΆαααΆαααααααααΆαα IGMP (αα·ααΈααΆαααααααααααααα»αα’ααΈαααΊαα·α) α α§ααΆα ααα α’αααα’αΆα
ααααΎα
αααΆααααΎααααΈααααααααααΎαααΆαα·αααΆααααα»α IGMP αααα
αΌααα
nft ααααααα αααΆαα netdev foo bar igmp type membership-query counter drop
- ααααααΆαααααΆαααααΎααααΆααα’αααααΎααααΈααααααααααααααΆααα’ααααααΆα (ααα / α αααααΌ) α α§ααΆα ααα:
ααααα dest = ber
αααααααααα½α ip foo bar ααα $dest - ααΆαααΆαααααααααΆαααααΆααααΎααααΈαααααα’ααααααααΆαααααααααααααα·ααααα·ααΆα (OS Fingerprint) αααααα’ααααΎααααα TTL αα
αααα»αααααααΆα α§ααΆα ααα ααΎααααΈαααααΆαααααα
ααααααααΆααααααα’ααααΎ OS α’αααααααΎ α’αααα’αΆα
ααααΎααΆααααααααΆα
... ααααααααααΆααααααΆ osf ttl αααααααααΈααααα { "ααΈαα»α " : 0x1,
"ααΈαααΌ": 0x2,
"MacOS": 0x3,
"αα·αααααΆαα"α 0x0 }
... osf ttl αααααααα "Linux:4.20" - αααααααΆααααα»αααΆαααααΌααααα’αΆααααααΆα ARP ααααα’αααααααΎαα·αα’αΆααααααΆα IPv4 ααααααααααααααα
α α§ααΆα ααα ααΎααααΈαααααΎαααΆαααΆαααααααα
αα ARP αααααΆαααααΎααΈα’αΆααααααΆα 192.168.2.1 α’αααα’αΆα
ααααΎα
αααΆααααΆααααααα
ααΆααΆα arp x {
αααααααααΆαα y {
ααααααααααα ααααααααα αΌααααααα’αΆαα·ααΆα; ααααααααΆαααα½ααα;
arp saddr ip 192.168.2.1 counter packets 1 bytes 46
}
} - ααΆαααΆαααααααααΆααααΆααααααΌααααααααααααααααααΆααΆαααααααΎααΆααααααααΌααααΈ (tproxy) α α§ααΆα ααα ααΎααααΈααααΌααα·αααΆαα α
αα
ααΆααα
ααα 80 αα
α
αααααααΌααααΈ 8080α
ααΆααΆα ip x {
αααααααααΆαα y {
αααααααααααααααα α’αΆαα·ααΆα -150; ααααααααΆαααα½ααα;
tcp dport 80 tproxy αα : 8080
}
} - ααΆαααΆαααααααααΆααααΆααααααΆααααααααΆαα½αααΉααααααααΆααααα»αααΆαααα½αααΆααααααΆααααααααααααααααΆαααα setsockopt() αα
αααα»ααααα SO_MARK α α§ααΆα ααα:
ααΆααΆα inet x {
αααααααααΆαα y {
αααααααααααααααα α’αΆαα·ααΆα -150; ααααααααΆαααα½ααα;
tcp dport 8080 ααααααααααΆαααααΆαααααα
}
} - ααΆαααΆαααααααααΆααααΆααααααΆαααααααα’αααααα’αΆαα·ααΆααααααΆαααααααααααΆααα α§ααΆα ααα:
nft αααααααααααααααΆαα ip x αα { αααααααααααααααααα prerouting α’αΆαα·ααΆααα ; }
nft αααααααααααααααΆαα ip x filter { type filter hook prerouting priority filter; }
nft αααααααααααααααΆαα ip x filter_later { type filter hook prerouting priority filter + 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 { type inet_service : secmark; }
nft ααααααααΆαα» inet filter secmapping { 22 : "sshtag" }
nft ααααααα αααΆαα inet filter αααα αΌα meta secmark ααααα tcp dport map @secmapping - αααααααΆααααα»αααΆααααααΆααα
ααααααααΆαααααααα
αα·ααΈααΆααααα»αααααααα’ααααα ααΌα
ααααα½αααΆααααΌαααΆαααααααα
αααα»αα―αααΆα /etc/services α α§ααΆα ααα:
nft ααααααα αααΆαα xy tcp dport "ssh"
αααα»αβαααα½αβαααααΈ nft -l
ααΆααΆα x {
αααααααααΆαα y {
...
tcp dport "ssh"
}
} - αααααααΆααααα»αααΆααααα½ααα·αα·αααααααααααα
ααα»α
αααααΆαααααααΆαα α§ααΆα ααα:
αααααααααα½α inet raw prerouting meta iifkind "vrf" ααα½ααα
- ααΆαβααΆααααβααΆαβααααΎβα±ααβαααααΎαβα‘αΎαβαααααΆααβααΆαβααααΎβα±ααβααΆααααααβααΆαααααβααΆαα·ααΆβααβαααα»αβαααβααΆαβαααααΆααβα
αααΆααβααΆααβααα "ααΆααααα" α α§ααΆα ααα ααΎααααΈααααΎαα
αα
α»ααααααααΆααααα»α "s" ααΎααααΈααααααα’αΆααααααΆαααααα αα·ααααααααΆαα»α‘αΎααα·α ααααα·αααΎαα·αααΆααααα
ααααααααΆααααααα 30 αα·ααΆααΈα
ααααααααΆααΆα x
αααααααααα»α xs { αααααα ipv4_addr; ααα α 128; α’ααααα 30s; αααααΆααααα; }
αααααααααααααααΆαα xy { αααααααααααααααααααα αΌαα’αΆαα·ααΆα 0; }
ααααααα αααΆαα xy update @s { ip saddr } - αααααααΆααααα»αααΆααααααααααααααααααΆαα’αααααααΆα
ααααα‘ααα α§ααΆα ααα ααΎααααΈααα·αααααΆαα’αααααααααΆαααΎααααααΆαααααα
ααααααααΆαααααααααα
ααα 8888 α’αααα’αΆα
αααααΆααα
ααΆααΆα ip filter {
ct α’ααααα aggressive-tcp {
αα·ααΈααΆα tcp;
l3proto ip;
policy = {establied: 100, close_wait: 4, close: 4}
}
αα·ααααααααααααααΆαα {
...
tcp dport 8888 ct α’αααααααααα "aggressive-tcp"
}
} - ααΆαααΆαααα NAT αααααΆαααααα½ααΆα inetα
ααΆααΆα inet nat {
...
ip6 daddr ααααΆαα ::2::1 dnat to dead :2::99
} - αααααα’ααΆαααΆαααΆαααααα α»αααΆαα’ααααα
nft ααααααααΆαααΆαααααααααααααααααααΆαα
ααα α»αα ααααΆαα―αααΆα α¬ααα―αααΆαααααααααα ααΎα’αααααΆααααααΆααΆααΆα "ααααα" αα αααα»α ip αααα½ααΆααα?
ααααααααΆαααααΎαααααααααααααααααααΆαα
^^^^^^ - αααααααΆααααα»αααΆααααααΆαααααααα
ααα»α
αααααΆαααααα»ααααα»αα
ααααα sc {
αααααα inet_service α ifname
ααΆαα» = { "ssh" α "eth0" }
} - ααΆαααααΎαα
αα
α»ααααααααΆαααΆαααααααααααα
αααΆααααα αΌαα
nft ααααααααΆααΆα x
nft αααααα flowtable x ft { hook ingress priority 0; α§ααααα = { eth0, wlan0 }; }
...
nft add rule x forward ip protocol { tcp, udp } flow add @ft - ααΆαααΆαααα JSON αααααΎαα‘αΎαα
ααααα: opennet.ru