nftables ๋ฐ iptables ํจํท ํํฐ์ ๋ํ ๋ํผ ํํ๋ก ๊ตฌํ๋ ๋์ ์ผ๋ก ์ ์ด๋๋ ๋ฐฉํ๋ฒฝ Firewalld 1.0์ ๋ฆด๋ฆฌ์ค๊ฐ ์ ๊ณต๋ฉ๋๋ค. Firewalld๋ ํจํท ํํฐ ๊ท์น์ ๋ค์ ๋ก๋ํ๊ฑฐ๋ ์ค์ ๋ ์ฐ๊ฒฐ์ ๋์ง ์๊ณ ๋ D-Bus๋ฅผ ํตํด ํจํท ํํฐ ๊ท์น์ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ก ์คํ๋ฉ๋๋ค. ์ด ํ๋ก์ ํธ๋ ์ด๋ฏธ RHEL 7+, Fedora 18+ ๋ฐ SUSE/openSUSE 15+๋ฅผ ํฌํจํ ๋ง์ Linux ๋ฐฐํฌํ์์ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. Firewalld ์ฝ๋๋ Python์ผ๋ก ์์ฑ๋์์ผ๋ฉฐ GPLv2 ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ผ์ด์ ์ค๊ฐ ๋ถ์ฌ๋ฉ๋๋ค.
๋ฐฉํ๋ฒฝ์ ๊ด๋ฆฌํ๋ ค๋ฉด ๊ท์น์ ์์ฑํ ๋ IP ์ฃผ์, ๋คํธ์ํฌ ์ธํฐํ์ด์ค ๋ฐ ํฌํธ ๋ฒํธ๊ฐ ์๋ ์๋น์ค ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ Firewall-cmd ์ ํธ๋ฆฌํฐ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค(์: SSH์ ๋ํ ์ก์ธ์ค๋ฅผ ์ด๋ ค๋ฉด ๋ค์์ด ํ์ํจ). "firewall-cmd โadd โservice= ssh"๋ฅผ ์คํํ์ฌ SSH๋ฅผ ๋ซ์ต๋๋ค(โfirewall-cmd โremove โservice=sshโ). ๋ฐฉํ๋ฒฝ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ฐฉํ๋ฒฝ ๊ตฌ์ฑ(GTK) ๊ทธ๋ํฝ ์ธํฐํ์ด์ค์ ๋ฐฉํ๋ฒฝ ์ ํ๋ฆฟ(Qt) ์ ํ๋ฆฟ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. D-BUS API ๋ฐฉํ๋ฒฝ์ ํตํ ๋ฐฉํ๋ฒฝ ๊ด๋ฆฌ ์ง์์ NetworkManager, libvirt, podman, docker ๋ฐ fall2ban๊ณผ ๊ฐ์ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฒ์ ๋ฒํธ์ ์ค์ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ๊นจ๋จ๋ฆฌ๊ณ ์์ญ ์์ ๋์์ ๋ณ๊ฒฝํ๋ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. ์์ญ์ ์ ์๋ ๋ชจ๋ ํํฐ๋ง ๋งค๊ฐ๋ณ์๋ ์ด์ ๋ฐฉํ๋ฒฝ์ด ์คํ ์ค์ธ ํธ์คํธ๋ก ํฅํ๋ ํธ๋ํฝ์๋ง ์ ์ฉ๋๋ฉฐ ์ ์ก ํธ๋ํฝ์ ํํฐ๋งํ๋ ค๋ฉด ์ ์ฑ ์ ์ค์ ํด์ผ ํฉ๋๋ค. ๊ฐ์ฅ ๋์ ๋๋ ๋ณํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- iptables ์์์ ์๋ํ๋๋ก ํ์ฉํ ๋ฐฑ์๋๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ฒ์ผ๋ก ์ ์ธ๋์์ต๋๋ค. iptables์ ๋ํ ์ง์์ ๊ฐ๊น์ด ๋ฏธ๋์๋ ์ ์ง๋ ์์ ์ด์ง๋ง ์ด ๋ฐฑ์๋๋ ๊ฐ๋ฐ๋์ง ์์ต๋๋ค.
- ์์ญ ๋ด ์ ๋ฌ ๋ชจ๋๋ ๋ชจ๋ ์๋ก์ด ์์ญ์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ๋คํธ์ํฌ ์ธํฐํ์ด์ค ๋๋ ํ ์์ญ(๊ณต์ฉ, ๋ธ๋ก, ์ ๋ขฐํ ์ ์๋, ๋ด๋ถ ๋ฑ) ๋ด์ ํธ๋ํฝ ์์ค ๊ฐ์ ํจํท์ ์์ ๋ก์ด ์ด๋์ ํ์ฉํฉ๋๋ค. ์ด์ ๋์์ ๋๋๋ฆฌ๊ณ ํจํท์ด ํ ์์ญ ๋ด์์ ์ ๋ฌ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ค๋ฉด "firewall-cmd โpermanent โzone public โremove-forward" ๋ช ๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ฃผ์ ๋ณํ(NAT)๊ณผ ๊ด๋ จ๋ ๊ท์น์ "inet" ํ๋กํ ์ฝ ๊ณ์ด๋ก ์ด๋๋์์ต๋๋ค(์ด์ ์๋ "ip" ๋ฐ "ip6" ๊ณ์ด์ ์ถ๊ฐ๋์ด IPv4 ๋ฐ IPv6์ ๋ํ ๊ท์น์ ๋ณต์ ํด์ผ ํ์ต๋๋ค). ์ด ๋ณ๊ฒฝ์ ํตํด ipset์ ์ฌ์ฉํ ๋ ์ค๋ณต ํญ๋ชฉ์ ์ ๊ฑฐํ ์ ์์์ต๋๋ค. ์ด์ ipset ํญ๋ชฉ์ ๋ณต์ฌ๋ณธ ์ธ ๊ฐ ๋์ ํ๋๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- "--set-target" ๋งค๊ฐ๋ณ์์ ์ง์ ๋ "๊ธฐ๋ณธ" ์์ ์ ์ด์ "๊ฑฐ๋ถ"์ ๋์ผํฉ๋๋ค. ํด๋น ์์ญ์ ์ ์๋ ๊ท์น์ ์ํ์ง ์๋ ๋ชจ๋ ํจํท์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐจ๋จ๋ฉ๋๋ค. ์ฌ์ ํ ํต๊ณผ๊ฐ ํ์ฉ๋๋ ICMP ํจํท์ ๋ํด์๋ง ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ณต๊ฐ์ ์ผ๋ก ์ก์ธ์คํ ์ ์๋ "์ ๋ขฐํ ์ ์๋" ์์ญ์ ๋ํ ์ด์ ๋์์ ๋ฐํํ๋ ค๋ฉด ๋ค์ ๊ท์น์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ์ฑ ํ์ฉํฌ์๋ โ์ถ๊ฐ ์์ -์์ญ ๊ณต์ฉ ๋ฐฉํ๋ฒฝ-cmd โ์๊ตฌ โ์ ์ฑ ํ์ฉํฌ์๋ โ์ถ๊ฐ ์ก์ ์์ญ ์ ๋ขฐํ ์ ์๋ ๋ฐฉํ๋ฒฝ-cmd โ๋ค์ ๋ก๋
- ์ด์ "--set-target catch-all" ๊ท์น์ด ์คํ๋๊ธฐ ์ง์ ์ ๊ธ์ ์ ์ธ ์ฐ์ ์์ ์ ์ฑ ์ด ์คํ๋ฉ๋๋ค. ์ต์ข ๋๋กญ์ ์ถ๊ฐํ๊ธฐ ์ ์ "--set-target drop|reject|accept"๋ฅผ ์ฌ์ฉํ๋ ์์ญ์ ํฌํจํ์ฌ ๊ท์น์ ๊ฑฐ๋ถํ๊ฑฐ๋ ์๋ฝํฉ๋๋ค.
- ์ด์ ICMP ์ฐจ๋จ์ ํ์ฌ ํธ์คํธ(์ ๋ ฅ)๋ก ์ฃผ์๊ฐ ์ง์ ๋ ์์ ํจํท์๋ง ์ ์ฉ๋๋ฉฐ ์์ญ ๊ฐ์ ๋ฆฌ๋๋ ์ ๋๋(์ ๋ฌ) ํจํท์๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค.
- TFTP ํ๋กํ ์ฝ์ ๋ํ ์ฐ๊ฒฐ์ ์ถ์ ํ๋๋ก ์ค๊ณ๋์์ง๋ง ์ฌ์ฉํ ์ ์๋ ํํ์๋ tftp-client ์๋น์ค๊ฐ ์ ๊ฑฐ๋์์ต๋๋ค.
- "์ง์ " ์ธํฐํ์ด์ค๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ์ด๋ฏธ ๋ง๋ค์ด์ง ํจํท ํํฐ ๊ท์น์ ์ง์ ์ฝ์ ํ ์ ์์ต๋๋ค. ๋ฆฌ๋๋ ์ ๋ ํจํท๊ณผ ๋๊ฐ๋ ํจํท์ ํํฐ๋งํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ํ์๋ ์ด ์ธํฐํ์ด์ค์ ๋ํ ํ์์ฑ์ด ์ฌ๋ผ์ก์ต๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก "no"๋ก ๋ณ๊ฒฝ๋๋ CleanupModulesOnExit ๋งค๊ฐ๋ณ์๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. ์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฉํ๋ฒฝ์ด ์ข ๋ฃ๋ ํ ์ปค๋ ๋ชจ๋์ ์ธ๋ก๋๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
- ๋์ ์์คํ (๋์)์ ๊ฒฐ์ ํ ๋ ipset์ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค.
- WireGuard, Kubernetes ๋ฐ netbios-ns ์๋น์ค์ ๋ํ ์ ์๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
- zsh์ ๋ํ ์๋ ์์ฑ ๊ท์น์ ๊ตฌํํ์ต๋๋ค.
- Python 2 ์ง์์ด ์ค๋จ๋์์ต๋๋ค.
- ์ข ์์ฑ ๋ชฉ๋ก์ด ๋จ์ถ๋์์ต๋๋ค. ๋ฐฉํ๋ฒฝ์ด ์๋ํ๋ ค๋ฉด Linux ์ปค๋ ์ธ์๋ ์ด์ ์ ์ผํ Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ dbus, gobject ๋ฐ nftables๊ฐ ํ์ํ๋ฉฐ ebtables, ipset ๋ฐ iptables ํจํค์ง๋ ์ ํ ์ฌํญ์ผ๋ก ๋ถ๋ฅ๋ฉ๋๋ค. Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ์ฝ๋ ์ดํฐ ๋ฐ ์ฌ๋ฆฝ์ด ์ข ์์ฑ์์ ์ ๊ฑฐ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru