เบซเบผเบฑเบเบเบฒเบเบเบตเบเบญเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒ
เบฅเบฐเบเบฑเบ kernel เบชเบฐเบซเบเบญเบเบเบฝเบเปเบเปเบชเปเบงเบเบเบดเบเบเปเปเปเบเบเปเบญเบเบฐเบฅเบฒเบเบเบญเบเปเบเปเบเบเบญเบเบเบปเปเบงเปเบเบเบตเปเบชเบฐเบซเบเบญเบเบซเบเปเบฒเบเบตเปเบเบทเปเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบฐเบเบฑเบเบเปเปเบกเบนเบเบเบฒเบเปเบเบฑเบเปเบเบฑเบ, เบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ, เปเบฅเบฐเบเบฒเบเบเบงเบเบเบธเบกเบเบฒเบเปเบซเบผ.
เปเบซเบเบเบปเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเบปเบงเบกเบฑเบเปเบญเบเปเบฅเบฐเบเบปเบงเบเบฑเบเบเบฒเบเบชเบฐเปเบเบฒเบฐเบเบญเบเปเบเปเบเบเบญเบเปเบเปเบเบทเบเบฅเบงเบเบฅเบงเบกเปเบเบปเปเบฒเปเบเปเบ bytecode เปเบเบเบทเปเบเบเบตเปเบเบนเปเปเบเป, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ bytecode เบเบตเปเบเบทเบเปเบซเบฅเบเปเบเบปเปเบฒเปเบเปเบ kernel เปเบเบเปเบเปเบเบฒเบเปเบเปเบเบญเบ Netlink เปเบฅเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเปเบเบทเปเบญเบ virtual เบเบดเปเบชเบเบเบตเปเบฅเบฐเบเบถเบเปเบเบดเบ BPF (Berkeley Packet Filters). เบงเบดเบเบตเบเบฒเบเบเบตเปเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบซเบผเบธเบเบฅเบปเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบฅเบฐเบเบฑเบเปเบเปเบเปเบฅเบฐเบเปเบฒเบเบซเบเปเบฒเบเบตเปเบเบฑเบเบซเบกเบปเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเปเบเบเปเบฅเบฐเปเบซเบเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเปเบเบเบญเบเปเบเบปเปเบฒเปเบเปเบเบเบทเปเบเบเบตเปเบเบญเบเบเบนเปเปเบเป.
เบเบฐเบงเบฑเบเบเบฐเบเปเบฒเบเบปเปเบเบเป:
- เบฎเบญเบเบฎเบฑเบ IPsec, เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบฑเบเบเบนเปเบเบตเปเบขเบนเปเบญเบธเปเบกเบเปเบเบเบญเบตเบเปเบชเปเปเบเบฑเบเปเบเบฑเบ, ID เบเปเบฒเบฎเปเบญเบเบเป IPsec, เปเบฅเบฐเปเบเบฑเบ SPI (Security Parameter Index). เบเบปเบโเบเบปเบงโเบขเปเบฒเบ,
... ipsec เปเบ ip saddr 192.168.1.0/24
... ipsec เปเบ spi 1-65536เบกเบฑเบเบเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเบงเบเปเบเบดเปเบเบงเปเบฒเปเบชเบฑเปเบเบเบฒเบเปเบเบเปเบฒเบเบญเบธเปเบกเบ IPsec. เบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญเบชเบฐเบเบฑเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเปเปเบเปเบฒเบ IPSec:
โฆ เบเบฒเบเบเบฑเปเบเบเบญเบเบเบปเบเบเบฐเบฅเบดเบ rt ipsec เบเบฒเบเบซเบฒเบเปเบ
- เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ IGMP (Internet Group Management Protocol). เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบปเบเบฅเบฐเบเบฝเบเปเบเบทเปเบญเบเบปเบเปเบฅเบตเบเบเบฒเบเบฎเปเบญเบเบเปเบเบฒเบเปเบเบฑเบเบชเบฐเบกเบฒเบเบดเบเบเบธเปเบก IGMP เบเบตเปเปเบเบปเปเบฒเบกเบฒ
nft เปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบ netdev foo bar igmp type membership-query counter drop
- เบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบเบญเบเบเบฒเบเบเปเบฒเปเบเปเบเบปเบงเปเบเปเบเบทเปเบญเบเปเบฒเบเบปเบเบฅเบฐเบเบปเบเบเปเบญเบเปเบชเปเบเบฒเบเบเปเบฝเบเปเบเบ (jump / goto). เบเบปเบโเบเบปเบงโเบขเปเบฒเบ:
เบเปเบฒเบเบปเบ dest = ber
เปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบ ip foo bar jump $dest - เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบซเบเปเบฒเบเบฒเบเปเบเบทเปเบญเบเปเบฒเบเบปเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบ (OS Fingerprint) เปเบเบเบญเบตเบเปเบชเปเบเปเบฒ TTL เปเบเบชเปเบงเบเบซเบปเบง. เบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญเบซเบกเบฒเบเปเบเบฑเบเปเบเบฑเบเปเบเบเบญเบตเบเปเบชเป OS เบเบนเปเบชเบปเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเปเบฒเบชเบฑเปเบ:
... meta mark set osf ttl เบเปเบฒเบกเบเบทเปเปเบเบเบเบตเป { "Linux" : 0x1,
"Windows": 0x2,
"MacOS": 0x3,
"unknown": 0x0 }
... osf ttl เบเปเบฒเบกเปเบงเบตเบเบฑเบ "Linux: 4.20" - เบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเบฑเบเบเบนเปเบเบตเปเบขเบนเป ARP เบเบญเบเบเบนเปเบชเบปเปเบเปเบฅเบฐเบเบตเปเบขเบนเป IPv4 เบเบญเบเบฅเบฐเบเบปเบเปเบเบปเปเบฒเบซเบกเบฒเบ. เบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญเปเบเบตเปเบกเบเบปเบงเบเบฑเบเบเบญเบเปเบเบฑเบเปเบเบฑเบ ARP เบเบตเปเบชเบปเปเบเบกเบฒเบเบฒเบเบเบตเปเบขเบนเป 192.168.2.1, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบปเบเบฅเบฐเบเบฝเบเบเปเปเปเบเบเบตเป:
เบเบฒเบเบฐเบฅเบฒเบ arp x {
เปเบชเป y {
type filter hook input filter priority; เบเบฐเปเบเบเบฒเบเบเบญเบกเบฎเบฑเบ;
arp saddr ip 192.168.2.1 counter packets 1 bytes 46
}
} - เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฒเบเบชเบปเปเบเบเปเปเบเบตเปเปเบเปเบเปเบชเบเบญเบเบเปเบฒเบฎเปเบญเบเบเปเบเปเบฒเบเบเบปเบงเปเบเบ (tproxy). เบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญเบเปเบฝเบเปเบชเบฑเปเบเบเบฒเบเบเบฒเบเปเบเปเบเบซเบฒเบเบญเบ 80 เปเบเบซเบฒเบเบญเบเบเบฃเบฑเบญเบเบเบต 8080:
เบเบฒเบเบฐเบฅเบฒเบ ip x {
เปเบชเป y {
type filter hook prerouting priority -150; เบเบฐเปเบเบเบฒเบเบเบญเบกเบฎเบฑเบ;
tcp dport 80 tproxy เปเบเบดเบ :8080
}
} - เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบซเบกเบฒเบ sockets เบกเบตเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบเบตเปเบเบฐเปเบเบตเปเบกเปเบเบตเบกเปเบเปเบเปเบฒเบเบปเบเปเบงเปเปเบเบเบเปเบฒเบ setsockopt() เปเบเปเบซเบกเบ SO_MARK. เบเบปเบโเบเบปเบงโเบขเปเบฒเบ:
เบเบฒเบเบฐเบฅเบฒเบ inet x {
เปเบชเป y {
type filter hook prerouting priority -150; เบเบฐเปเบเบเบฒเบเบเบญเบกเบฎเบฑเบ;
tcp dport 8080 mark set socket mark
}
} - เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฅเบฐเบเบธเบเบทเปเบเปเปเบเบงเบฒเบกเบเบนเบฅเบดเบกเบฐเบชเบดเบเบชเปเบฒเบฅเบฑเบเบเปเบญเบเปเบชเป. เบเบปเบโเบเบปเบงโเบขเปเบฒเบ:
nft เปเบเบตเปเบกเบเปเบญเบเปเบชเป ip x raw { type filter hook prerouting priority raw; }
nft เปเบเบตเปเบกเบเปเบญเบเปเบชเป ip x filter { type filter hook prerouting priority filter; }
nft เปเบเบตเปเบกเบฅเบฐเบเบปเบเบเปเบญเบเปเบชเป ip x filter_later { type filter hook prerouting priority filter + 10; } - เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ SELinux tags (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 input meta secmark set tcp dport map @secmapping - เบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบฅเบฐเบเบธเบเบญเบเบเบตเปเบกเบญเบเบซเบกเบฒเบเปเบซเปเปเบเปเบเบเบญเบเปเบเบฎเบนเบเปเบเบเบเปเปเบเบงเบฒเบก, เบเปเบญเบเบงเปเบฒเบเบงเบเบกเบฑเบเบเบทเบเบเปเบฒเบเบปเบเปเบงเปเปเบเปเบเบฅเป /etc/services. เบเบปเบโเบเบปเบงโเบขเปเบฒเบ:
nft เปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบ xy tcp dport "ssh"
nft เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบปเบเบฅเบฐเบเบฝเบ -l
เบเบฒเบเบฐเบฅเบฒเบ x {
เปเบชเป y {
...
tcp dport "ssh"
}
} - เบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเบงเบเบชเบญเบเบเบฐเปเบเบเบเบญเบเบเบฒเบเปเบเปเบเบญเบเปเบเบทเบญเบเปเบฒเบ. เบเบปเบโเบเบปเบงโเบขเปเบฒเบ:
เปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบ inet raw prerouting meta iifkind "vrf" เบเบญเบกเบฎเบฑเบ
- เบเบฑเบเบเบธเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบธเบเปเบเบทเปเบญเปเบเบเบญเบเบเบธเบเปเบเบเบเบฒเบเบเปเบฒเบเบปเบเบเบธเบ "dynamic" เบขเปเบฒเบเบเบฑเบเปเบเบ. เบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญเบเบฑเบเบเบธเบเบเบธเบ "s" เปเบเบทเปเบญเปเบเบตเปเบกเบเบตเปเบขเบนเปเปเบซเบผเปเบเปเบฅเบฐเบเบฑเบเบเบฒเบเปเบเบปเปเบฒเปเบซเบกเปเบเปเบฒเบเปเปเบกเบตเปเบเบฑเบเปเบเบฑเบเปเบเบฑเบเปเบงเบฅเบฒ 30 เบงเบดเบเบฒเบเบต:
เปเบเบตเปเบกเบเบฒเบเบฐเบฅเบฒเบ x
เปเบเบตเปเบกเบเบธเบ xs { เบเบฐเปเบเบ ipv4_addr; เบเบฐเปเบฒเบ 128; เปเบปเบเปเบงเบฅเบฒ 30s; เบเบธเบเปเบเบเปเบเบทเปเบญเบเปเบซเบง; }
add chain xy { type filter hook input priority 0; }
เปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบ xy update @s { ip saddr } - เบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเปเบฒเบเบปเบเปเบเบทเปเบญเบเปเบเบเบฒเบเบซเบกเบปเบเปเบงเบฅเบฒเปเบเบเบเปเบฒเบเบซเบฒเบ. เบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญเบฅเบปเบเบฅเปเบฒเบเบเบฒเบเปเบปเบเปเบงเบฅเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเปเบเบฑเบเปเบเบฑเบเบเบตเปเบกเบฒเบฎเบญเบเบเบญเบ 8888, เบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบฐเบเบธ:
เบเบปเบงเบเบญเบ ip เบเบฒเบเบฐเบฅเบฒเบ {
ct timeout aggressive-tcp {
tcp เบเบดเบเบตเบเบฒเบ;
l3proto ip;
policy = {established: 100, close_wait: 4, close: 4}
}
เบเบปเบเบเบฐเบฅเบดเบเบฅเบฐเบเบปเบเบเปเบญเบเปเบชเป {
...
tcp dport 8888 ct timeout set "aggressive-tcp"
}
} - เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ NAT เบชเปเบฒเบฅเบฑเบเบเบญเบเบเบปเบง inet:
เบเบฒเบเบฐเบฅเบฒเบ inet nat {
...
ip6 daddr เบเบฒเบ::2::1 dnat เบเบฑเบเบเบฒเบ:2::99
} - เบเบฑเบเบเบธเบเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบฅเบฒเบเบเบฒเบเบเปเปเบเบดเบเบเบฒเบเปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบเบดเบกเบเบดเบ:
nft เปเบเบตเปเบกเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเบเบฑเปเบเบเบญเบเบฅเบฐเบเบปเบเบเปเบญเบเปเบชเป
เบเบดเบเบเบฒเบ: เบเปเปเบกเบตเปเบเบฅเป เบซเบผเบทเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฑเปเบเบเปเบฒเบง; เบเปเบฒเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเบฒเบเบฐเบฅเบฒเบ "เบเบฒเบเบเบฑเปเบเบเบญเบ" เปเบ ip เบเบญเบเบเบปเบงเบเป?
เปเบเบตเปเบกเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเบเบฑเปเบเบเบญเบเบฅเบฐเบเบปเบเบเปเบญเบเปเบชเป
^^^^ เบฅเบฐ ^^ - เบเบงเบฒเบกโเบชเบฒโเบกเบฒเบโเบเบตเปโเบเบฐโเบฅเบฐโเบเบธโเบเบทเปโเบเบฒเบโเปเบเปโเบเบญเบโเปเบโเบเบธเบโ:
เบเบฑเปเบ sc {
เบเบดเบก inet_service . ifname
เบญเบปเบเบเบฐเบเบญเบ = { "ssh". "eth0" }
} - เบเบฑเบเบเบธเบ syntax เบเบปเบ flowtable:
nft เปเบเบตเปเบกเบเบฒเบเบฐเบฅเบฒเบ x
nft เปเบเบตเปเบก flowtable x ft { hook ingress priority 0; เบญเบธเบเบฐเบเบญเบ = { eth0, wlan0 }; }
...
nft เปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบ x forward ip protocol { tcp, udp } flow add @ft - เบเบฑเบเบเบธเบเบเบฒเบเบฎเบญเบเบฎเบฑเบ JSON.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: opennet.ru