Ma hope o hoʻokahi makahiki o ka hoʻomohala ʻana
Hāʻawi ka pae kernel i kahi kikowaena kūʻokoʻa protocol generic e hāʻawi i nā hana maʻamau no ka unuhi ʻana i ka ʻikepili mai nā ʻeke, ka hana ʻana i nā hana ʻikepili, a me ka mana kahe.
Hoʻopili ʻia ka loiloi kānana ponoʻī a me nā mea hoʻohana kikoʻī protocol i ka bytecode ma kahi o ka mea hoʻohana, a laila hoʻokomo ʻia kēia bytecode i loko o ka kernel me ka hoʻohana ʻana i ka interface Netlink a hoʻokō ʻia i kahi mīkini virtual kūikawā e hoʻomanaʻo ana i ka BPF (Berkeley Packet Filters). ʻO kēia ala e hiki ai iā ʻoe ke hōʻemi nui i ka nui o ke code kānana e holo ana ma ka pae kernel a neʻe i nā hana āpau o nā lula parsing a me nā loiloi no ka hana ʻana me nā protocols i loko o kahi mea hoʻohana.
Nā hana hou nui:
- Kākoʻo IPsec, e ʻae ana i ka hoʻohālikelike ʻana i nā helu tunnel e pili ana i ka packet, IPsec noi ID, a me ka tag SPI (Security Parameter Index). ʻo kahi laʻana,
... ipsec i ka ip saddr 192.168.1.0/24
... ipsec ma spi 1-65536Hiki nō hoʻi ke nānā inā e hele ana kahi ala i kahi tunnel IPsec. No ka laʻana, e ālai i ke kaʻa ʻaʻole ma o IPSec:
… kānana puka rt ipsec hāʻule nalo
- Kākoʻo no IGMP (Internet Group Management Protocol). No ka laʻana, hiki iā ʻoe ke hoʻohana i ke kānāwai e hoʻolei i nā noi lālā o ka hui IGMP
nft hoʻohui i ka lula netdev foo bar igmp ʻano lālā-query counter drop
- Hiki ke hoʻohana i nā mea hoʻololi e wehewehe i nā kaulahao hoʻololi (lele / goto). ʻo kahi laʻana:
wehewehe dest = ber
hoʻohui i ka lula ip foo bar jump $dest - Kākoʻo no nā masks e ʻike i nā ʻōnaehana hana (OS Fingerprint) e pili ana i nā waiwai TTL ma ke poʻo. No ka laʻana, e hōʻailona i nā ʻeke e pili ana i ka OS hoʻouna, hiki iā ʻoe ke hoʻohana i ke kauoha:
... hoʻonohonoho ʻia ka māka meta osf ttl skip name map { "Linux" : 0x1,
"Windows": 0x2,
"MacOS": 0x3,
"ʻike ʻole" : 0x0 }
... osf ttl skip version "Linux:4.20" - Hiki ke hoʻohālikelike i ka helu ARP o ka mea hoʻouna a me ka helu IPv4 o ka ʻōnaehana pahuhopu. No ka laʻana, e hoʻonui i ka counter o nā ʻeke ARP i hoʻouna ʻia mai ka helu helu 192.168.2.1, hiki iā ʻoe ke hoʻohana i kēia lula:
papa arp x {
kaulahao y {
ʻano kānana hoʻokomo hoʻokomo kānana manaʻo; ʻae i nā kulekele;
arp saddr ip 192.168.2.1 pākeke 1 byte 46
}
} - Kākoʻo no ka hoʻouna maopopo ʻana i nā noi ma o kahi proxy (tproxy). No ka laʻana, e hoʻohuli hou i nā kelepona i ke awa 80 i ke awa koho 8080:
papa ip x {
kaulahao y {
ʻano kānana hook prerouting priority -150; ʻae i nā kulekele;
tcp dport 80 tproxy i:8080
}
} - Kākoʻo no ka mākaʻikaʻi ʻana i nā kumu me ka hiki ke loaʻa hou i ka hōʻailona hoʻonohonoho ma o setsockopt () ma ke ʻano SO_MARK. ʻo kahi laʻana:
papa inet x {
kaulahao y {
ʻano kānana hook prerouting priority -150; ʻae i nā kulekele;
tcp dport 8080 hōʻailona hoʻonohonoho i ka hōʻailona kumu
}
} - Kākoʻo no ka wehewehe ʻana i nā inoa kikokikona mua no nā kaulahao. ʻo kahi laʻana:
nft hoʻohui i ke kaulahao ip x raw { type filter hook prerouting priority raw; }
nft hoʻohui i ke kaulahao ip x kānana { type filter hook prerouting priority filter; }
nft hoʻohui i ke kaulahao ip x filter_later { type filter hook prerouting priority filter + 10; } - Kākoʻo no nā hōʻailona SELinux (Secmark). No ka laʻana, e wehewehe i ka "sshtag" tag i loko o kahi pōʻaiapili SELinux, hiki iā ʻoe ke holo:
nft hoʻohui i ka secmark inet kānana sshtag "system_u: object_r: ssh_server_packet_t: s0"
A laila e hoʻohana i kēia lepili i nā lula:
nft hoʻohui i ka lula inet filter input tcp dport 22 meta secmark set "sshtag"
nft hoʻohui palapala inet kānana secmapping { ʻano inet_service : secmark; }
nft hoʻohui i ka mea kānana inet kānana secmapping { 22 : "sshtag" }
nft hoʻohui i ka lula inet filter input meta secmark set tcp dport map @secmapping - Hiki ke kuhikuhi i nā awa i hāʻawi ʻia i nā protocols ma ke ʻano kikokikona, e like me ka wehewehe ʻana ma ka faila /etc/services. ʻo kahi laʻana:
nft hoʻohui i ka lula x y tcp dport "ssh"
nft papa helu lula -l
papa x {
kaulahao y {
...
tcp dport "ssh"
}
} - Hiki ke nānā i ke ʻano o ke kikowaena pūnaewele. ʻo kahi laʻana:
hoʻohui i ke kānāwai inet raw prerouting meta iifkind "vrf" ʻae
- Hoʻomaikaʻi i ke kākoʻo no ka hoʻohou hou ʻana i nā ʻike o nā pūʻulu ma ka wehewehe ʻana i ka hae "dynamic". No ka laʻana, e hoʻohou i ka set "s" e hoʻohui i ka helu kumu a hoʻonohonoho hou i ke komo inā ʻaʻohe ʻeke no 30 kekona:
hoʻohui i ka pākaukau x
hoʻohui i hoʻonohonoho x s { type ipv4_addr; nui 128; manawa pau 30s; hae hae; }
hoʻohui i ke kaulahao x y { ʻano kānana makau hoʻokomo mua 0; }
hoʻohui i ka lula x y hōʻano hou @s { ip saddr } - Hiki ke hoʻonohonoho i kahi kūlana manawa kaʻawale. No ka laʻana, no ka hoʻopau ʻana i ka manawa paʻamau no nā ʻeke e hōʻea ana ma ke awa 8888, hiki iā ʻoe ke kuhikuhi:
papa ip kānana {
ct manawa hoʻopau ʻino-tcp {
protocol tcp;
l3proto ip;
kulekele = {hoʻokumu: 100, pani_kali: 4, pani: 4}
}
kaulahao puka {
...
tcp dport 8888 ct manawa pau i hoʻonohonoho ʻia "aggressive-tcp"
}
} - Kākoʻo NAT no ka ʻohana inet:
papa inet nat {
...
ip6 daddr make::2::1 dnat to make:2::99
} - Ua hoʻomaikaʻi ʻia ka hōʻike hewa typo:
nft add chain filter test
Hapa: ʻAʻohe faila a papa kuhikuhi paha; ʻO kāu i manaʻo ai i ka papaʻaina "kāna" ma ka ʻohana ip?
hoʻohui i ka hoʻāʻo kānana kaulahao
^^^^^^ - Hiki ke kuhikuhi i nā inoa interface ma nā pūʻulu:
hoʻonoho sc {
ʻano inet_service . ifname
mau mea = { "ssh" . "eth0" }
} - Hōʻano hou ʻia ka syntax nā lula kahe:
nft hoʻohui i ka pākaukau x
nft hoʻohui i ka papa hoʻoheheʻe x ft { ka mea nui e komo ai i ka makau 0; nā mea hana = { eth0, wlan0 }; }
...
nft hoʻohui lula x i mua ip protocol { tcp, udp } kahe hoʻohui @ft - Hoʻomaikaʻi ʻia ke kākoʻo JSON.
Source: opennet.ru