[Linux] iptables ์™„์ „ ์ •๋ณต (๊ตฌ์กฐ, ๋™์ž‘ ์›๋ฆฌ, NAT๊นŒ์ง€)

๐Ÿ“… 2026-03-09 07:58:27.649327 | ๐Ÿ‘€ 19

iptables๋Š” ๋‹จ์ˆœํ•œ ๋ฐฉํ™”๋ฒฝ์„ ๋„˜์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


  • ํŒจํ‚ท ํ•„ํ„ฐ๋ง
  • NAT (Network Address Translation)
  • ํŠธ๋ž˜ํ”ฝ ์ œ์–ด
  • ํŒจํ‚ท ์ˆ˜์ •
  • ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ์ •์ฑ… ์ ์šฉ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” iptables์˜ ๊ตฌ์กฐ, ๋™์ž‘ ๋ฐฉ์‹, NAT ์ฒ˜๋ฆฌ ๊ณผ์ •๊นŒ์ง€ ์ „์ฒด์ ์œผ๋กœ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


iptables ๊ธฐ๋ณธ ๊ตฌ์กฐ

iptables๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

CODE
text
Table
 โ”” Chain
    โ”” Rule


๊ตฌ์กฐ์™€ ์˜๋ฏธ

Table - ํŒจํ‚ท ์ฒ˜๋ฆฌ ๋ชฉ์ 

Chain - ํŒจํ‚ท ํ๋ฆ„ ๋‹จ๊ณ„

Rule - ์‹ค์ œ ํŒจํ‚ท ์ฒ˜๋ฆฌ ๊ทœ์น™


์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๊ทœ์น™์„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

CODE
bash
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • INPUT ์ฒด์ธ์— ๊ทœ์น™ ์ถ”๊ฐ€
  • TCP 22๋ฒˆ ํฌํŠธ ํ—ˆ์šฉ


iptables Table ์ข…๋ฅ˜

iptables์—๋Š” ์—ฌ๋Ÿฌ Table์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.


Table ์—ญํ• 

filter - ๊ธฐ๋ณธ ๋ฐฉํ™”๋ฒฝ

nat - ์ฃผ์†Œ ๋ณ€ํ™˜

mangle - ํŒจํ‚ท ์ˆ˜์ •

raw - connection tracking ์ œ์–ด

security - SELinux ์ •์ฑ…


์ผ๋ฐ˜์ ์ธ ์„œ๋ฒ„์—์„œ๋Š” ์ฃผ๋กœ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

CODE
text
filter
nat
mangle


iptables Chain ๊ตฌ์กฐ

๊ฐ Table์—๋Š” Chain์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.


๋Œ€ํ‘œ์ ์ธ ์ฒด์ธ

Chain ์„ค๋ช…

INPUT - ์„œ๋ฒ„๋กœ ๋“ค์–ด์˜ค๋Š” ํŒจํ‚ท

OUTPUT - ์„œ๋ฒ„์—์„œ ๋‚˜๊ฐ€๋Š” ํŒจํ‚ท

FORWARD - ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ๋กœ ์ „๋‹ฌ๋˜๋Š” ํŒจํ‚ท


NAT table์—์„œ๋Š” ๋‹ค์Œ ์ฒด์ธ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Chain ์„ค๋ช…

PREROUTING - ๋ผ์šฐํŒ… ์ „์— ์ฒ˜๋ฆฌ

POSTROUTING - ๋ผ์šฐํŒ… ํ›„ ์ฒ˜๋ฆฌ

OUTPUT - ๋กœ์ปฌ ํŒจํ‚ท ์ฒ˜๋ฆฌ


iptables ํŒจํ‚ท ํ๋ฆ„

iptables๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ํŒจํ‚ท ํ๋ฆ„ ๊ตฌ์กฐ๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ท์ด ์„œ๋ฒ„์— ๋„์ฐฉํ•˜๋ฉด ๋‹ค์Œ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

CODE
text
Network Interface
      โ†“
PREROUTING
      โ†“
Routing Decision
   โ†“        โ†“
INPUT     FORWARD
   โ†“        โ†“
Local     Other Host
Process
   โ†“
OUTPUT
   โ†“
POSTROUTING
   โ†“
Network


PREROUTING

ํŒจํ‚ท์ด ์‹œ์Šคํ…œ์— ๋“ค์–ด์˜จ ์งํ›„ ์ฒ˜๋ฆฌ

์ฃผ๋กœ NAT์—์„œ ์‚ฌ์šฉ


INPUT

์„œ๋ฒ„๋กœ ๋“ค์–ด์˜ค๋Š” ํŒจํ‚ท ์ฒ˜๋ฆฌ

์˜ˆ

  • SSH ์ ‘์†
  • ์›น ์š”์ฒญ

FORWARD

์„œ๋ฒ„๊ฐ€ ๋ผ์šฐํ„ฐ ์—ญํ• ์„ ํ•  ๋•Œ ์‚ฌ์šฉ

์˜ˆ

  • VPN ์„œ๋ฒ„
  • NAT ๊ฒŒ์ดํŠธ์›จ์ด

OUTPUT

์„œ๋ฒ„์—์„œ ์™ธ๋ถ€๋กœ ๋‚˜๊ฐ€๋Š” ํŒจํ‚ท

์˜ˆ

  • curl ์š”์ฒญ
  • DNS ์š”์ฒญ

POSTROUTING

ํŒจํ‚ท์ด ๋‚˜๊ฐ€๊ธฐ ์ง์ „์— ์ฒ˜๋ฆฌ

์ฃผ๋กœ SNAT ์ฒ˜๋ฆฌ


iptables Rule ์ฒ˜๋ฆฌ ๋ฐฉ์‹

iptables ๊ทœ์น™์€ ์œ„์—์„œ ์•„๋ž˜ ์ˆœ์„œ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ

CODE
text
1 allow 192.168.1.10
2 deny all

192.168.1.10์—์„œ ํŒจํ‚ท์ด ๋“ค์–ด์˜ค๋ฉด

CODE
text
rule 1 โ†’ allow

๋ฐ˜๋Œ€๋กœ

CODE
text
1 deny all
2 allow 192.168.1.10

์ด๋ฉด

CODE
text
rule 1์—์„œ drop

์ฆ‰

๐Ÿ‘‰ ์ฒซ ๋ฒˆ์งธ๋กœ ๋งค์นญ๋œ ๊ทœ์น™์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.


iptables ๊ธฐ๋ณธ ๋ช…๋ น์–ด

ํ˜„์žฌ ๊ทœ์น™ ํ™•์ธ

CODE
bash
iptables -L -n -v

๊ทœ์น™ ์ถ”๊ฐ€

CODE
bash
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

๊ทœ์น™ ์‚ญ์ œ

CODE
bash
iptables -D INPUT 1

์ •์ฑ… ์„ค์ •

CODE
bash
iptables -P INPUT DROP


iptables ์ƒํƒœ ๊ธฐ๋ฐ˜ ํ•„ํ„ฐ๋ง

iptables๋Š” stateful firewall ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ

CODE
bash
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

์ƒํƒœ ์ข…๋ฅ˜ ๋ฐ ์˜๋ฏธ

NEW - ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ

ESTABLISHED - ์ด๋ฏธ ์—ฐ๊ฒฐ๋œ ํŠธ๋ž˜ํ”ฝ

RELATED - ๊ด€๋ จ ํŠธ๋ž˜ํ”ฝ

INVALID - ์ž˜๋ชป๋œ ํŒจํ‚ท

์ด ๊ทœ์น™์€ ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋ฒ„์—์„œ ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


iptables NAT ๊ธฐ๋Šฅ

iptables๋Š” NAT ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

NAT๋Š” ์ฃผ์†Œ ๋ณ€ํ™˜ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.


SNAT

์ถœ๋ฐœ์ง€ ์ฃผ์†Œ ๋ณ€๊ฒฝ

์˜ˆ

CODE
bash
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 1.2.3.4

์‚ฌ์šฉ ์˜ˆ

  • ์ธํ„ฐ๋„ท ๊ณต์œ 
  • NAT ๊ฒŒ์ดํŠธ์›จ์ด


MASQUERADE

SNAT ์ž๋™ ๋ฒ„์ „

CODE
bash
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

์ฃผ๋กœ

  • ๊ฐ€์ •์šฉ ๋ผ์šฐํ„ฐ
  • VPN ์„œ๋ฒ„

์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


DNAT

๋ชฉ์ ์ง€ ์ฃผ์†Œ ๋ณ€๊ฒฝ

์˜ˆ

CODE
bash
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.100:80

์˜ˆ

CODE
text
public ip โ†’ internal server

์ฆ‰ ํฌํŠธ ํฌ์›Œ๋”ฉ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.


iptables์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๊ทœ์น™

์ผ๋ฐ˜์ ์ธ ์„œ๋ฒ„ ๋ฐฉํ™”๋ฒฝ ์„ค์ •

CODE
bash
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -P INPUT DROP

์˜๋ฏธ

  • ๊ธฐ์กด ์—ฐ๊ฒฐ ํ—ˆ์šฉ
  • SSH ํ—ˆ์šฉ
  • HTTP ํ—ˆ์šฉ
  • HTTPS ํ—ˆ์šฉ
  • ๋‚˜๋จธ์ง€ ์ฐจ๋‹จ


iptables์˜ ์—ญํ• 

iptables๋Š” ๋‹จ์ˆœํ•œ ๋ฐฉํ™”๋ฒฝ์ด ์•„๋‹ˆ๋ผ Linux ํŒจํ‚ท ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ ์ œ์–ด ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

iptables๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‹ค์Œ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


  • ๋ฐฉํ™”๋ฒฝ
  • NAT gateway
  • VPN ์„œ๋ฒ„
  • Router
  • IDS/IPS ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ


์ •๋ฆฌ

iptables๋Š” Linux ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๊ฐœ๋…

  • Table โ†’ Chain โ†’ Rule ๊ตฌ์กฐ
  • ํŒจํ‚ท ํ๋ฆ„ ์ดํ•ด
  • NAT ์ฒ˜๋ฆฌ
  • ์ƒํƒœ ๊ธฐ๋ฐ˜ ํ•„ํ„ฐ๋ง

์ด ๋„ค ๊ฐ€์ง€๋ฅผ ์ดํ•ดํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„์˜ iptables ์„ค์ •์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


โ† ๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ