IPTABLES

๊ฐœ์š”

iptables ๋ช…๋ น์–ด๋กœ ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„ IN/OUT ํŒจํ‚ท์„ ํ•„ํ„ฐ๋ง ํ•˜๊ฑฐ๋‚˜ NAT ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.ํŠน์ • ์กฐ๊ฑด์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์˜ ํŒจํ‚ท ํ•„ํ„ฐ๋ง๊ณผ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ์ง€์› ์ˆœ์ฐจ์  ์‹คํ–‰์œผ๋กœ ์ •์ฑ… Top-Down ๋ฐฉ์‹์œผ๋กœ ์ •์ฑ…์ด ์œ ํšจํ•˜๋‹ค.์„ค์ • ํŒŒ์ผ ์œ„์น˜ : /etc/sysconfig/iptables

iptables ์„œ๋น„์Šค ์„ค์น˜

RHEL/CentOS 7๋ถ€ํ„ฐ๋Š” ๋ฐฉํ™”๋ฒฝ์„ firewalld ๋ผ๋Š” ๋ฐ๋ชฌ์œผ๋กœ ๊ต์ฒดํ–ˆ๊ณ  ํ”„๋กœ๊ทธ๋žจ์€ iptables ๋ช…๋ น์–ด ๋Œ€์‹  CLI์—์„œ๋Š” firewall-cmd, GUI์—์„œ๋Š” firewall-config๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

iptables ๋ฐ๋ชฌ ์ œ์–ด ๋ช…๋ น์–ด

์‚ฌ์šฉ๋ฒ•

table

  • filter - iptables์˜ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”๋กœ ํŒจํ‚ท ํ•„ํ„ฐ๋ง

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

  • mangle - ํŒจํ‚ท ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ํŠน์ˆ˜ ๊ทœ์น™์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ToS ์„ค์ • raw - netfilter์˜ ์—ฐ๊ฒฐ ์ถ”์  ํ•˜์œ„ ์‹œ์Šคํ…œ๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•ด์•ผ ํ•˜๋Š” ๊ทœ์น™์„ ์„ค์ •

๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ filter

action

  • -A (--append) : ์ƒˆ๋กœ์šด ์ •์ฑ…์„ ์ถ”๊ฐ€

  • -I (--insert) : ์œ„์น˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์ •์ฑ…์„ ์‚ฝ์ž… # iptables -I INPUT 2 (2ํ–‰์— ์ถ”๊ฐ€)

  • -D (--delete) : ์ •์ฑ…์„ ์‚ญ์ œ

  • -R (--replace) : ์ •์ฑ…์„ ๊ต์ฒด

  • -F (--flush) : ์ฒด์ธ์œผ๋กœ๋ถ€ํ„ฐ ๋ชจ๋“  ์ •์ฑ… ์‚ญ์ œ

  • -P (--policy) : ๊ธฐ๋ณธ ์ •์ฑ…์„ ์„ค์ •

  • -L (--list) : ์ •์ฑ… ๋ชฉ๋ก์„ ํ™•์ธ

chain

  • INPUT - ์„œ๋ฒ„๋กœ ๋“ค์–ด์˜ค๋Š” ํŒจํ‚ท์€ INPUT ์ฒด์ธ์„ ํ†ต๊ณผ

  • OUTPUT - ์„œ๋ฒ„์—์„œ ๋‚˜๊ฐ€๋Š” ํŒจํ‚ท์€ OUTPUT ์ฒด์ธ์„ ํ†ต๊ณผ

  • FORWARD - ์„œ๋ฒ„๊ฐ€ ๋ชฉ์ ์ง€๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ํŒจํ‚ท์€ FORWARD ์ฒด์ธ์„ ํ†ต๊ณผ

match

๋งค์น˜ ์˜ต์…˜์„ ํ†ตํ•ด์„œ ์„ธ๋ถ€์ ์ธ ํŒจํ‚ท์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ

  • -s (--source, --src) : ์ถœ๋ฐœ์ง€, ๋„๋ฉ”์ธ or ip or ๋„ท๋งˆ์Šคํฌ ๊ฐ’

  • --sport : ์ถœ๋ฐœ์ง€ ํฌํŠธ

  • -d (--destination, --dst) : ๋ชฉ์ ์ง€ , ๋„๋ฉ”์ธ or, ip or ๋„ท๋งˆ์Šคํฌ ๊ฐ’

  • --dport : ๋ชฉ์ ์ง€ ํฌํŠธ -p : ํ”„๋กœํ† ์ฝœ TCP, UDP, ICMP์™€ ๊ฐ™์€ IP ํ”„๋กœํ† ์ฝœ

  • -i (--in-interface) : ์ž…๋ ฅ ์ธํ„ฐํŽ˜์ด์Šค

  • -o (--out-interface) : ์ถœ๋ ฅ ์ธํ„ฐํŽ˜์ด์Šค

  • -m (--match) : ํŠน์ • ๋ชจ๋“ˆ ์‚ฌ์šฉ (๋ณดํ†ต state ๋ชจ๋“ˆ ์‚ฌ์šฉ)

  • --state : ์—ฐ๊ฒฐ ์ƒํƒœ (NEW, ESTABLISHED, RELATED, INVALID)

  • --line : ์ค„๋ฒˆํ˜ธ ์ถœ๋ ฅ -j (--jump) : ๊ทœ์น™์— ๋งž๋Š” ํŒจํ‚ท์˜ ํ–‰๋™

target

์กฐ๊ฑด์— ๋งค์นญ๋˜๋Š” ํŒจํ‚ท์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€ ์ง€์ •ํ•˜๋Š” ๋ถ€๋ถ„

  • ACCEPT : ๋งค์นญ๋˜๋Š” ํŒจํ‚ท ํ—ˆ์šฉ

  • DROP : ๋งค์นญ๋˜๋Š” ํŒจํ‚ท ๊ฑฐ๋ถ€

  • LOG : ๋งค์นญ๋˜๋Š” ํŒจํ‚ท ๋กœ๊ทธ ์ €์žฅ

  • REJECT : ๋งค์นญ๋˜๋Š” ํŒจํ‚ท ๊ฑฐ๋ถ€ (TCP-RST, UDP-ICMP Port Unreachable)

  • RETURN : ์ฒด์ธ ๋‚ด์—์„œ ํŒจํ‚ท ์ฒ˜๋ฆฌ๋ฅผ ๊ณ„์†ํ•จ (์žฌ๊ท€)

๋ฐฑ์—…, ๋ณต์›

์—ฐ๊ฒฐ ์ถ”์ (Connection Tracking)

iptables๋Š” ์—ฐ๊ฒฐ ์ถ”์ (Connection Tracking)์ด๋ผ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ์ƒ ์„œ๋น„์Šค ์—ฐ๊ฒฐ ์ƒํƒœ์— ๋”ฐ๋ผ์„œ ๊ทธ ์—ฐ๊ฒฐ์„ ๊ฐ์‹œํ•˜๊ณ  ์ œํ•œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

์—ฐ๊ฒฐ ์ถ”์  ๋ฐฉ์‹์€ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ํ‘œ์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฐ๊ฒฐ ์ƒํƒœ์—์„œ ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฒฐ์„ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • NEW - ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•˜๋Š” ํŒจํ‚ท

  • ESTABLISHED - ๊ธฐ์กด ์—ฐ๊ฒฐ์˜ ์ผ๋ถ€์ธ ํŒจํ‚ท

  • RELATED - ๊ธฐ์กด ์—ฐ๊ฒฐ์— ์†ํ•˜์ง€๋งŒ ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•˜๋Š” ํŒจํ‚ท

  • INVALID - ์—ฐ๊ฒฐ ์ถ”์ ํ‘œ์—์„œ ์–ด๋”” ์—ฐ๊ฒฐ์—๋„ ์†ํ•˜์ง€ ์•Š์€ ํŒจํ‚ท

์ƒํƒœ์— ๊ธฐ๋ฐ˜(Stateful)ํ•œ iptables ์—ฐ๊ฒฐ ์ถ”์  ๊ธฐ๋Šฅ์€ ์–ด๋А ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์—์„œ๋‚˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ, UDP์™€ ๊ฐ™์ด ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”(Stateless) ํ”„๋กœํ† ์ฝœ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„ ์˜ˆ์ œ์™€ ๊ฐ™์ด INPUT์—์„œ SSH ํ—ˆ์šฉ ํ›„ OUTPUT์—์„œ ESTABLISHED๋ฅผ ํ—ˆ์šฉํ•ด์ฃผ๋ฉด

OUTPUT์—์„œ ๋‹ค๋ฅธ ์ •์ฑ… ์ถ”๊ฐ€ ์—†์ด Client๋Š” SSH ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์˜ˆ์ œ

Last updated