nftables ํŒจํ‚ท ํ•„ํ„ฐ 0.9.9 ๋ฆด๋ฆฌ์Šค

nftables 0.9.9 ํŒจํ‚ท ํ•„ํ„ฐ๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•„ํ„ฐ๋Š” IPv4, IPv6, ARP ๋ฐ ๋„คํŠธ์›Œํฌ ๋ธŒ๋ฆฌ์ง€์— ๋Œ€ํ•œ ํŒจํ‚ท ํ•„ํ„ฐ๋ง ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค(iptables, ip6table, arptables ๋ฐ ebtables๋ฅผ ๋Œ€์ฒดํ•˜๋„๋ก ์„ค๊ณ„๋จ). nf_tables ํ•˜์œ„ ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ €์ˆ˜์ค€ API๋ฅผ ์ œ๊ณตํ•˜๋Š” libnftnl 1.2.0 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ๋™์‹œ์— ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. nftables 0.9.9์— ํ•„์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ปค๋„์— ๋ฐ˜์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Linux 5.13-rc1.

nftables ํŒจํ‚ค์ง€์—๋Š” ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ ์ž‘๋™ํ•˜๋Š” ํŒจํ‚ท ํ•„ํ„ฐ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ปค๋„ ์ˆ˜์ค€์˜ ์ž‘์—…์€ ์ปค๋„์˜ ์ผ๋ถ€์ธ nf_tables ํ•˜์œ„ ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Linux 3.13 ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ์ปค๋„ ์ˆ˜์ค€์—์„œ ํ”„๋กœํ† ์ฝœ์— ๋…๋ฆฝ์ ์ธ ์ผ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์ œ๊ณต๋˜๋ฉฐ, ํŒจํ‚ท์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ , ๋ฐ์ดํ„ฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ํ๋ฆ„ ์ œ์–ด๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ•„ํ„ฐ๋ง ๊ทœ์น™ ์ž์ฒด์™€ ํ”„๋กœํ† ์ฝœ๋ณ„ ํ•ธ๋“ค๋Ÿฌ๋Š” ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ๋œ ํ›„, Netlink ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„๋กœ ๋กœ๋“œ๋˜์–ด ์ปค๋„ ๋‚ด์˜ ํŠน์ˆ˜ํ•œ ํ•จ์ˆ˜์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๊ธฐ๊ธฐ์ด๋Š” BPF(Berkeley Packet Filters)๋ฅผ ์—ฐ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ด ์ปค๋„ ์ˆ˜์ค€์—์„œ ์‹คํ–‰๋˜๋Š” ํ•„ํ„ฐ๋ง ์ฝ”๋“œ์˜ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ๊ทœ์น™ ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฐ ํ”„๋กœํ† ์ฝœ ๋กœ์ง์„ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์œผ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ํ˜์‹ :

  • ํ๋ฆ„ ํ…Œ์ด๋ธ” ์ฒ˜๋ฆฌ๋ฅผ ๋„คํŠธ์›Œํฌ ์–ด๋Œ‘ํ„ฐ ์ธก์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์—ˆ์œผ๋ฉฐ 'offload' ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Flowtable์€ ๋ชจ๋“  ๊ทœ์น™ ์ฒ˜๋ฆฌ ์ฒด์ธ์˜ ์™„์ „ํ•œ ํ†ต๊ณผ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ํŒจํ‚ท์—๋งŒ ์ ์šฉ๋˜๊ณ  ํ๋ฆ„์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ํŒจํ‚ท์€ ์ง์ ‘ ์ „๋‹ฌ๋˜๋Š” ํŒจํ‚ท ๋ฆฌ๋””๋ ‰์…˜ ๊ฒฝ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. table ip global { flowtable f { ํ›„ํฌ ์ˆ˜์‹  ์šฐ์„  ์ˆœ์œ„ ํ•„ํ„ฐ + 1 ์žฅ์น˜ = { lan3, lan0, wan } ํ”Œ๋ž˜๊ทธ ์˜คํ”„๋กœ๋“œ } ์ฒด์ธ ์ „๋‹ฌ { ์œ ํ˜• ํ•„ํ„ฐ ํ›„ํฌ ์ „๋‹ฌ ์šฐ์„  ์ˆœ์œ„ ํ•„ํ„ฐ; ์ •์ฑ… ๋™์˜; ip ํ”„๋กœํ† ์ฝœ { tcp, udp } ํ๋ฆ„ ์ถ”๊ฐ€ @f } ์ฒด์ธ ํฌ์ŠคํŠธ { ์œ ํ˜• nat ํ›„ํฌ ํฌ์ŠคํŠธ๋ผ์šฐํŒ… ์šฐ์„ ์ˆœ์œ„ ํ•„ํ„ฐ; ์ •์ฑ… ๋™์˜; oifname "wan" ๊ฐ€์žฅ ๋ฌด๋„ํšŒ } }
  • ํ”„๋กœ์„ธ์Šค์—์„œ ํ…Œ์ด๋ธ”์„ ๋…์ ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ…Œ์ด๋ธ”์— ์†Œ์œ ์ž ํ”Œ๋ž˜๊ทธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์™€ ์—ฐ๊ฒฐ๋œ ํ…Œ์ด๋ธ”์ด ์ž๋™์œผ๋กœ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ๊ทœ์น™ ๋คํ”„์— ์ฃผ์„ ํ˜•์‹์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. table ip x { # progname nft flags owner chain y { type filter Hook input Priority filter; ์ •์ฑ… ๋™์˜; ์นด์šดํ„ฐ ํŒจํ‚ท 1๋ฐ”์ดํŠธ 309 } }
  • ์—ฌ๋Ÿฌ VLAN ํƒœ๊ทธ๋ฅผ ๋‹จ์ผ ์ด๋”๋„ท ํ”„๋ ˆ์ž„์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ์ˆ˜๋‹จ์„ ์ •์˜ํ•˜๋Š” IEEE 802.1ad ์‚ฌ์–‘(VLAN ์Šคํƒœํ‚น ๋˜๋Š” QinQ)์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์™ธ๋ถ€ ์ด๋”๋„ท ํ”„๋ ˆ์ž„ 8021ad ๋ฐ vlan id=342์˜ ์œ ํ˜•์„ ํ™•์ธํ•˜๋ ค๋ฉด ... ether type 802.1ad vlan id 342 ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋”๋„ท ํ”„๋ ˆ์ž„ 8021ad/vlan id=1, ์ค‘์ฒฉ๋œ 802.1์˜ ์™ธ๋ถ€ ์œ ํ˜•์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. q/vlan id=2 ๋ฐ ์ถ”๊ฐ€ IP ํŒจํ‚ท ์บก์Аํ™”: ... ์ด๋”๋„ท ์œ ํ˜• 8021ad vlan id 1 vlan ์œ ํ˜• 8021q vlan id 2 vlan ์œ ํ˜• ip ์นด์šดํ„ฐ
  • ํ†ตํ•ฉ ๊ณ„์ธต cgroups v2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. cgroups v2์™€ v1์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ CPU ๋ฆฌ์†Œ์Šค ํ• ๋‹น, ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„ ์กฐ์ ˆ ๋ฐ I/O๋ฅผ ์œ„ํ•ด ๋ณ„๋„์˜ ๊ณ„์ธต ๊ตฌ์กฐ ๋Œ€์‹  ๋ชจ๋“  ์œ ํ˜•์˜ ๋ฆฌ์†Œ์Šค์— ๊ณตํ†ต cgroups ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฒซ ๋ฒˆ์งธ ์ˆ˜์ค€ cgroupv2์— ์žˆ๋Š” ์†Œ์ผ“์˜ ์กฐ์ƒ์ด "system.slice" ๋งˆ์Šคํฌ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ... ์†Œ์ผ“ cgroupv2 ์ˆ˜์ค€ 1 "system.slice"
  • ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฟั€ะพะฒะตั€ะบะธ ัะพัั‚ะฐะฒะฝั‹ั… ั‡ะฐัั‚ะตะน ะฟะฐะบะตั‚ะพะฒ SCTP (ะฝะตะพะฑั…ะพะดะธะผะฐั ะดะปั ั€ะฐะฑะพั‚ั‹ ั„ัƒะฝะบั†ะธะพะฝะฐะปัŒะฝะพัั‚ัŒ ะฟะพัะฒะธั‚ัั ะฒ ัะดั€ะต Linux 5.14). ะะฐะฟั€ะธะผะตั€, ะดะปั ะฟั€ะพะฒะตั€ะบะธ ะฝะฐะปะธั‡ะธั ะฒ ะฟะฐะบะตั‚ะต chunk-ะฐ ั ั‚ะธะฟะพะผ โ€˜dataโ€™ ะธ ะฟะพะปะตะผ โ€˜typeโ€™: โ€ฆ sctp chunk data exists โ€ฆ sctp chunk data type 0
  • "-f" ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทœ์น™ ๋กœ๋“œ ์ž‘์—… ์‹คํ–‰์ด ์•ฝ XNUMX๋ฐฐ ๊ฐ€์†ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทœ์น™ ๋ชฉ๋ก ์ถœ๋ ฅ๋„ ๊ฐ€์†ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ”Œ๋ž˜๊ทธ ๋น„ํŠธ๊ฐ€ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ํ˜•์‹์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, snat ๋ฐ dnat ์ƒํƒœ ๋น„ํŠธ๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ... ct status ! snat,dnat๋Š” syn ๋น„ํŠธ๊ฐ€ ๋น„ํŠธ๋งˆ์Šคํฌ์— ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. syn,ack: ... tcp๋Š” syn / syn,ack์— ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜์—ฌ fin ๋ฐ rst ๋น„ํŠธ๊ฐ€ ๋น„ํŠธ๋งˆ์Šคํฌ์— ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์€์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. syn,ack,fin,rst: ... tcp ํ”Œ๋ž˜๊ทธ! = fin,rst / syn,ack,fin,rst
  • set/map typeof ์ •์˜์—์„œ "verdict" ํ‚ค์›Œ๋“œ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. map xm { typeof iifname ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”. IP ํ”„๋กœํ† ์ฝœ th dport : ํ‰๊ฒฐ ;}

์ถœ์ฒ˜ : opennet.ru

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster