iptables๋ ๋จ์ํ ๋ฐฉํ๋ฒฝ์ ๋์ด ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํํ ์ ์์ต๋๋ค.
์ด๋ฒ ๊ธ์์๋ iptables์ ๊ตฌ์กฐ, ๋์ ๋ฐฉ์, NAT ์ฒ๋ฆฌ ๊ณผ์ ๊น์ง ์ ์ฒด์ ์ผ๋ก ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค.
iptables๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ํฉ๋๋ค.
text
Table
โ Chain
โ Rule
๊ตฌ์กฐ์ ์๋ฏธ
Table - ํจํท ์ฒ๋ฆฌ ๋ชฉ์
Chain - ํจํท ํ๋ฆ ๋จ๊ณ
Rule - ์ค์ ํจํท ์ฒ๋ฆฌ ๊ท์น
์๋ฅผ ๋ค์ด ๋ค์ ๊ท์น์ ๋ณด๊ฒ ์ต๋๋ค.
bash
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables์๋ ์ฌ๋ฌ Table์ด ์กด์ฌํฉ๋๋ค.
Table ์ญํ
filter - ๊ธฐ๋ณธ ๋ฐฉํ๋ฒฝ
nat - ์ฃผ์ ๋ณํ
mangle - ํจํท ์์
raw - connection tracking ์ ์ด
security - SELinux ์ ์ฑ
์ผ๋ฐ์ ์ธ ์๋ฒ์์๋ ์ฃผ๋ก ๋ค์ ์ธ ๊ฐ์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค.
text
filter
nat
mangle
๊ฐ Table์๋ Chain์ด ์กด์ฌํฉ๋๋ค.
๋ํ์ ์ธ ์ฒด์ธ
Chain ์ค๋ช
INPUT - ์๋ฒ๋ก ๋ค์ด์ค๋ ํจํท
OUTPUT - ์๋ฒ์์ ๋๊ฐ๋ ํจํท
FORWARD - ๋ค๋ฅธ ๋คํธ์ํฌ๋ก ์ ๋ฌ๋๋ ํจํท
NAT table์์๋ ๋ค์ ์ฒด์ธ์ด ์ฌ์ฉ๋ฉ๋๋ค.
Chain ์ค๋ช
PREROUTING - ๋ผ์ฐํ ์ ์ ์ฒ๋ฆฌ
POSTROUTING - ๋ผ์ฐํ ํ ์ฒ๋ฆฌ
OUTPUT - ๋ก์ปฌ ํจํท ์ฒ๋ฆฌ
iptables๋ฅผ ์ดํดํ๋ ค๋ฉด ํจํท ํ๋ฆ ๊ตฌ์กฐ๋ฅผ ์์์ผ ํฉ๋๋ค.
ํจํท์ด ์๋ฒ์ ๋์ฐฉํ๋ฉด ๋ค์ ์์๋ฅผ ๋ฐ๋ฆ ๋๋ค.
text
Network Interface
โ
PREROUTING
โ
Routing Decision
โ โ
INPUT FORWARD
โ โ
Local Other Host
Process
โ
OUTPUT
โ
POSTROUTING
โ
Network
ํจํท์ด ์์คํ ์ ๋ค์ด์จ ์งํ ์ฒ๋ฆฌ
์ฃผ๋ก NAT์์ ์ฌ์ฉ
์๋ฒ๋ก ๋ค์ด์ค๋ ํจํท ์ฒ๋ฆฌ
์
์๋ฒ๊ฐ ๋ผ์ฐํฐ ์ญํ ์ ํ ๋ ์ฌ์ฉ
์
์๋ฒ์์ ์ธ๋ถ๋ก ๋๊ฐ๋ ํจํท
์
ํจํท์ด ๋๊ฐ๊ธฐ ์ง์ ์ ์ฒ๋ฆฌ
์ฃผ๋ก SNAT ์ฒ๋ฆฌ
iptables ๊ท์น์ ์์์ ์๋ ์์๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
์
text
1 allow 192.168.1.10
2 deny all
192.168.1.10์์ ํจํท์ด ๋ค์ด์ค๋ฉด
text
rule 1 โ allow
๋ฐ๋๋ก
text
1 deny all
2 allow 192.168.1.10
์ด๋ฉด
text
rule 1์์ drop
์ฆ
๐ ์ฒซ ๋ฒ์งธ๋ก ๋งค์นญ๋ ๊ท์น์ด ์ ์ฉ๋ฉ๋๋ค.
ํ์ฌ ๊ท์น ํ์ธ
bash
iptables -L -n -v
๊ท์น ์ถ๊ฐ
bash
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
๊ท์น ์ญ์
bash
iptables -D INPUT 1
์ ์ฑ ์ค์
bash
iptables -P INPUT DROP
iptables๋ stateful firewall ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์
bash
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
์ํ ์ข ๋ฅ ๋ฐ ์๋ฏธ
NEW - ์๋ก์ด ์ฐ๊ฒฐ
ESTABLISHED - ์ด๋ฏธ ์ฐ๊ฒฐ๋ ํธ๋ํฝ
RELATED - ๊ด๋ จ ํธ๋ํฝ
INVALID - ์๋ชป๋ ํจํท
์ด ๊ท์น์ ๋๋ถ๋ถ์ ์๋ฒ์์ ํ์์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
iptables๋ NAT ๊ธฐ๋ฅ๋ ์ ๊ณตํฉ๋๋ค.
NAT๋ ์ฃผ์ ๋ณํ ๊ธฐ๋ฅ์ ๋๋ค.
์ถ๋ฐ์ง ์ฃผ์ ๋ณ๊ฒฝ
์
bash
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 1.2.3.4
์ฌ์ฉ ์
SNAT ์๋ ๋ฒ์
bash
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
์ฃผ๋ก
์์ ์ฌ์ฉํฉ๋๋ค.
๋ชฉ์ ์ง ์ฃผ์ ๋ณ๊ฒฝ
์
bash
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.100:80
์
text
public ip โ internal server
์ฆ ํฌํธ ํฌ์๋ฉ ๊ธฐ๋ฅ์ ๋๋ค.
์ผ๋ฐ์ ์ธ ์๋ฒ ๋ฐฉํ๋ฒฝ ์ค์
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
์๋ฏธ
iptables๋ ๋จ์ํ ๋ฐฉํ๋ฒฝ์ด ์๋๋ผ Linux ํจํท ์ฒ๋ฆฌ ์์คํ ์ ์ด ๋๊ตฌ์ ๋๋ค.
iptables๋ฅผ ์ด์ฉํ๋ฉด ๋ค์ ์์คํ ์ ๋ง๋ค ์ ์์ต๋๋ค.
iptables๋ Linux ๋คํธ์ํฌ ๋ณด์์์ ๋งค์ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
ํต์ฌ ๊ฐ๋
์ด ๋ค ๊ฐ์ง๋ฅผ ์ดํดํ๋ฉด ๋๋ถ๋ถ์ iptables ์ค์ ์ ์ดํดํ ์ ์์ต๋๋ค.