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

๊ฒŒ์‹œ ๋จ ํŒจํ‚ท ํ•„ํ„ฐ ๋ฆด๋ฆฌ์Šค nftables 0.9.4nftables๋Š” IPv4, IPv6, ARP ๋ฐ ๋„คํŠธ์›Œํฌ ๋ธŒ๋ฆฌ์ง€์— ๋Œ€ํ•œ ํŒจํ‚ท ํ•„ํ„ฐ๋ง ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ iptables, ip6table, arptables ๋ฐ ebtables๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. nftables ํŒจํ‚ค์ง€์—๋Š” ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ ์ž‘๋™ํ•˜๋Š” ํŒจํ‚ท ํ•„ํ„ฐ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ปค๋„ ์ˆ˜์ค€ ๊ธฐ๋Šฅ์€ ์ปค๋„์˜ ์ผ๋ถ€์ธ nf_tables ์„œ๋ธŒ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Linux 3.13 ๋ฆด๋ฆฌ์Šค๋ถ€ํ„ฐ nftables 0.9.4๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ–ฅํ›„ ์ปค๋„ ๋ธŒ๋žœ์น˜์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. Linux 5.6.

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

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

  • ์—ฐ๊ฒฐ(์ฃผ์†Œ์™€ ํฌํŠธ์˜ ํŠน์ • ๋ฐ”์ธ๋”ฉ์œผ๋กœ ๋งค์นญ์„ ๋‹จ์ˆœํ™”) ๋ฒ”์œ„ ์ง€์› ์˜ˆ๋ฅผ ๋“ค์–ด, ์š”์†Œ๊ฐ€ ๋ถ€๋ก์ธ "ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ" ์„ธํŠธ์˜ ๊ฒฝ์šฐ "๊ฐ„๊ฒฉ" ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜๋ฉด ์„ธํŠธ์— ๋ถ€๋ก์˜ ๋ฒ”์œ„๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค(๋ถ€๋ก "ipv4_addr . ipv4_addr . inet_service"์˜ ๊ฒฝ์šฐ ์ด์ „์—๋Š” "192.168.10.35 . 192.68.11.123 . 80" ํ˜•์‹์˜ ์ •ํ™•ํ•œ ์ผ์น˜ ํ•ญ๋ชฉ์„ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์ด์ œ๋Š” "192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80" ์ฃผ์†Œ ๊ทธ๋ฃน์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

    ํ…Œ์ด๋ธ” IP ํ‘ธ {
    ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ์„ค์ • {
    ipv4_addr ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ipv4_addr . inet_service
    ํ”Œ๋ž˜๊ทธ ๊ฐ„๊ฒฉ
    ์š”์†Œ = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80}
    }

    ์ฒด์ธ ๋ฐ” {
    ์œ ํ˜• ํ•„ํ„ฐ ํ›„ํฌ ์‚ฌ์ „ ๋ผ์šฐํŒ… ์šฐ์„ ์ˆœ์œ„ ํ•„ํ„ฐ; ์ •์ฑ… ์‚ญ์ œ;
    ์•„์ดํ”ผ ์‚ฌ๋“œ๋ฅด. ์•„์ดํ”ผ ์•„๋น . tcp dport@whitelist ์ˆ˜๋ฝ
    }
    }

  • ์ง‘ํ•ฉ ๋ฐ ๋งต ๋ชฉ๋ก์—์„œ ๋งคํ•‘ํ•  ๋•Œ ์š”์†Œ์˜ ํ˜•์‹์„ ๊ฒฐ์ •ํ•˜๋Š” "typeof" ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

    ํ…Œ์ด๋ธ” IP ํ‘ธ {
    ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ์„ค์ • {
    ์œ ํ˜•์˜ ip saddr
    ์š”์†Œ = {192.168.10.35, 192.168.10.101, 192.168.10.135}
    }

    ์ฒด์ธ ๋ฐ” {
    ์œ ํ˜• ํ•„ํ„ฐ ํ›„ํฌ ์‚ฌ์ „ ๋ผ์šฐํŒ… ์šฐ์„ ์ˆœ์œ„ ํ•„ํ„ฐ; ์ •์ฑ… ์‚ญ์ œ;
    ip daddr @whitelist ์ˆ˜๋ฝ
    }
    }

    ํ…Œ์ด๋ธ” IP ํ‘ธ {
    ์ง€๋„ addr2mark {
    typeof ip saddr : ๋ฉ”ํƒ€ ๋งˆํฌ
    ์š”์†Œ = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • NAT ๋ฐ”์ธ๋”ฉ์—์„œ ์ฒจ๋ถ€ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋งต ๋ชฉ๋ก ๋˜๋Š” ๋ช…๋ช…๋œ ์ง‘ํ•ฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ NAT ๋ณ€ํ™˜์„ ์ •์˜ํ•  ๋•Œ ์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    nft ์ถ”๊ฐ€ ๊ทœ์น™ ip nat pre dnat ip addr . ํฌํŠธ to ip saddr map {1.1.1.1: 2.2.2.2. ์„œ๋ฅธ }

    nft add map ip nat ๋ชฉ์ ์ง€ { type ipv4_addr . inet_service : ipv4_addr . inet_service\\; }
    nft ์ถ”๊ฐ€ ๊ทœ์น™ ip nat pre dnat ip addr . ip saddr๋กœ ํฌํŠธ. tcp dport ๋งต @destinations

  • ์ผ๋ถ€ ํ•„ํ„ฐ๋ง ์ž‘์—…์„ ๋„คํŠธ์›Œํฌ ์นด๋“œ๋กœ ์˜คํ”„๋กœ๋“œํ•˜์—ฌ ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์†์€ ethtool ์œ ํ‹ธ๋ฆฌํ‹ฐ("ethtool -K eth0 hw-tc-offload on")๋ฅผ ํ†ตํ•ด ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ดํ›„ ๋ฉ”์ธ ์ฒด์ธ์— ๋Œ€ํ•œ nftables์—์„œ "offload" ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Linux 5.6 ๋ฒ„์ „์€ ํ—ค๋” ํ•„๋“œ ์ผ์น˜ ๋ฐ ์ˆ˜์‹  ์ธํ„ฐํŽ˜์ด์Šค ๊ฒ€์‚ฌ์— ๋Œ€ํ•œ ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์„ ์ง€์›ํ•˜๋ฉฐ, ํŒจํ‚ท ์ˆ˜๋ฝ, ํ๊ธฐ, ๋ณต์ œ(dup) ๋ฐ ์ „๋‹ฌ(fwd)์„ ํ•จ๊ป˜ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ์—์„œ๋Š” 192.168.30.20์—์„œ ์˜ค๋Š” ํŒจํ‚ท์„ ์ปค๋„์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ์นด๋“œ ์ˆ˜์ค€์—์„œ ํ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

    # ๊ณ ์–‘์ด ํŒŒ์ผ.nft
    ํ…Œ์ด๋ธ” netdev x {
    ์ฒด์ธ y {
    ์œ ํ˜• ํ•„ํ„ฐ ํ›„ํฌ ์ง„์ž… ์žฅ์น˜ eth0 ์šฐ์„  ์ˆœ์œ„ 10; ํ”Œ๋ž˜๊ทธ ์˜คํ”„๋กœ๋“œ;
    ip saddr 192.168.30.20 ๋“œ๋กญ
    }
    }
    # nft -f ํŒŒ์ผ.nft

  • ๊ทœ์น™์˜ ์˜ค๋ฅ˜ ์œ„์น˜์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    # nft ์‚ญ์ œ ๊ทœ์น™ ip yz ํ•ธ๋“ค 7
    ์˜ค๋ฅ˜: ๊ทœ์น™์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค: ํ•ด๋‹น ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
    ์‚ญ์ œ ๊ทœ์น™ ip yz ํ•ธ๋“ค 7
    ^

    # nft ์‚ญ์ œ ๊ทœ์น™ ip xx ํ•ธ๋“ค 7
    ์˜ค๋ฅ˜: ๊ทœ์น™์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค: ํ•ด๋‹น ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
    ์‚ญ์ œ ๊ทœ์น™ ip xx ํ•ธ๋“ค 7
    ^

    # nft ์‚ญ์ œ ํ…Œ์ด๋ธ” twst
    ์˜ค๋ฅ˜: ํ•ด๋‹น ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ€์กฑ IP์—์„œ 'ํ…Œ์ŠคํŠธ' ํ…Œ์ด๋ธ”์„ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๊นŒ?
    ํ…Œ์ด๋ธ” ํŠธ์œ„์ŠคํŠธ ์‚ญ์ œ
    ^^^^

    ์ฒซ ๋ฒˆ์งธ ์˜ˆ์—์„œ๋Š” ์‹œ์Šคํ…œ์—์„œ ํ…Œ์ด๋ธ” "y"๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ๊ณ , ๋‘ ๋ฒˆ์งธ ์˜ˆ์—์„œ๋Š” ํ•ธ๋“ค๋Ÿฌ "7"์ด ๋ˆ„๋ฝ๋˜์—ˆ์œผ๋ฉฐ, ์„ธ ๋ฒˆ์งธ ์˜ˆ์—์„œ๋Š” ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋ฉด ์˜คํƒ€ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • "meta sdif" ๋˜๋Š” "meta sdifname"์„ ์ง€์ •ํ•˜์—ฌ ์Šฌ๋ ˆ์ด๋ธŒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์ธํ•˜๋Š” ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    โ€ฆ ๋ฉ”ํƒ€ sdifname vrf1 โ€ฆ

  • ์˜ค๋ฅธ์ชฝ ๋˜๋Š” ์™ผ์ชฝ ์ด๋™ ์ž‘์—…์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐ์กด ํŒจํ‚ท ๋ ˆ์ด๋ธ”์„ ์™ผ์ชฝ์œผ๋กœ 1๋น„ํŠธ ์ด๋™ํ•˜๊ณ  ํ•˜์œ„ ๋น„ํŠธ๋ฅผ 1๋กœ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜์‹ญ์‹œ์˜ค.

    โ€ฆ ๋ฉ”ํƒ€ ๋งˆํฌ ์„ธํŠธ ๋ฉ”ํƒ€ ๋งˆํฌ lshift 1 ๋˜๋Š” 0x1 โ€ฆ

  • ํ™•์žฅ๋œ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋Š” "-V" ์˜ต์…˜์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

    #nft -V
    nftables v0.9.4(Jive at Five)
    cli:readline
    json: ์˜ˆ
    minigmp: ์•„๋‹ˆ์š”
    libxtables: ์˜ˆ

  • ์ด์ œ ๋ช…๋ น์ค„ ์˜ต์…˜์„ ๋ช…๋ น๋ณด๋‹ค ๋จผ์ € ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "nft -a list ruleset"์„ ์ง€์ •ํ–ˆ์ง€๋งŒ "nft list ruleset -a"๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

    ์ถœ์ฒ˜ : opennet.ru

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