[Linux] ๋ฐฉํ๋ฒฝ(iptables) ๊ธฐ๋ณธ ์ค์ ๊ฐ์ด๋
๋ฆฌ๋ ์ค ์๋ฒ๋ฅผ ์ด์ํ ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ณด์ ์ค์ ์ค ํ๋๋ ๋ฐฉํ๋ฒฝ ๊ด๋ฆฌ์ ๋๋ค.
๋ค์ ์ด์์ฒด์ ์์๋ ์ ํต์ ์ผ๋ก **iptables**๊ฐ ๊ธฐ๋ณธ ๋ฐฉํ๋ฒฝ์ผ๋ก ์ฌ์ฉ๋์์ต๋๋ค.
๋ํ์ ์ธ OS
- CentOS 6
- CentOS 7
- Red Hat Enterprise Linux 6
- ์ผ๋ถ ์ต์ ์ค์น Linux
๋ค๋ง CentOS7 ์ดํ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก
**firewalld**๊ฐ ์ฌ์ฉ๋๋ฉฐ ๋ด๋ถ์ ์ผ๋ก iptables๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๋ฒ ๊ธ์์๋ iptables์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์ค์ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
1.iptables๋ ๋ฌด์์ธ๊ฐ
iptables๋ Linux ์ปค๋์ Netfilter ์์คํ ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ ๋ฐฉํ๋ฒฝ ๊ด๋ฆฌ ๋๊ตฌ์ ๋๋ค.
iptables๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ํน์ IP ํ์ฉ
- ํน์ ํฌํธ ์ฐจ๋จ
- ๋คํธ์ํฌ ํธ๋ํฝ ์ ์ด
- ํจํท ํํฐ๋ง
2.iptables ๊ธฐ๋ณธ ๊ตฌ์กฐ
iptables๋ Table โ Chain โ Rule ๊ตฌ์กฐ๋ก ๋์ํฉ๋๋ค.
๊ตฌ์กฐ ์
Table
โ Filter
โ โ INPUT
โ โ OUTPUT
โ โ FORWARD์ฃผ์ ์ฒด์ธ
์ฒด์ธ์ค๋ช
INPUT - ์๋ฒ๋ก ๋ค์ด์ค๋ ํธ๋ํฝ
OUTPUT - ์๋ฒ์์ ๋๊ฐ๋ ํธ๋ํฝ
FORWARD - ๋ค๋ฅธ ๋คํธ์ํฌ๋ก ์ ๋ฌ๋๋ ํธ๋ํฝ
3.ํ์ฌ iptables ๊ท์น ํ์ธ
ํ์ฌ ์ค์ ๋ ๊ท์น ํ์ธ
sudo iptables -L -n -v์ค๋ช
- -L : ๊ท์น ๋ชฉ๋ก ์ถ๋ ฅ
- -n : IP ์ฃผ์ ์ซ์๋ก ํ์
- -v : ์์ธ ์ ๋ณด ํ์
4.๊ธฐ๋ณธ ์ ์ฑ ์ค์
์๋ฒ ๋ณด์์ ์ํด ๊ธฐ๋ณธ ์ ์ฑ ์ ์ค์ ํฉ๋๋ค.
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP์ค๋ช
INPUT โ ๊ธฐ๋ณธ ์ฐจ๋จ
OUTPUT โ ๊ธฐ๋ณธ ํ์ฉ
5.์ ์ฑ ์ถ๊ฐ ๋ฐ ์ญ์ ๋ฐฉ๋ฒ
Port ์ ๊ทผ ํ์ฉ
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT์ค๋ช
- -A INPUT : INPUT ์ฒด์ธ์ ๊ท์น ์ถ๊ฐ
- -p tcp : TCP ํ๋กํ ์ฝ
- --dport 22 : 22๋ฒ ํฌํธ
- ACCEPT : ํ์ฉ
IP+Port ์ ๊ทผ ํ์ฉ
sudo iptables -A INPUT -p tcp -s 192.168.1.10 --dport 22 -j ACCEPTIP ์ ๊ทผ ์ฐจ๋จ
sudo iptables -A INPUT -s 192.168.1.100 -j DROP์ด๋ฏธ ์ฐ๊ฒฐ๋ ํธ๋ํฝ ํ์ฉ
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT์ด ๊ท์น์ ์๋ฒ ๋ฐฉํ๋ฒฝ ์ค์ ์์ ๊ฑฐ์ ํ์์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
ํน์ ๊ท์น ์ญ์
ํ์ฌ ๊ท์น ํ์ธ
iptables -L --line-numbers์ญ์
sudo iptables -D INPUT 16.CentOS์์ iptables ์ค์ ์ ์ฅ
Ubuntu์ ๋ค๋ฅด๊ฒ CentOS์์๋ iptables ์๋น์ค๊ฐ ๊ท์น์ ์ ์ฅํฉ๋๋ค.
์ ์ฅ
service iptables save๋๋
/etc/init.d/iptables save์ ์ฅ ์์น
/etc/sysconfig/iptables์ด ํ์ผ์ด ์ฌ๋ถํ ํ์๋ ์ ์ฉ๋๋ ๊ท์น ํ์ผ์ ๋๋ค.
7.iptables ์๋น์ค ๊ด๋ฆฌ
์๋น์ค ์์
systemctl start iptables์๋น์ค ์ํ ํ์ธ
systemctl status iptables๋ถํ ์๋ ์์
systemctl enable iptables#CentOS7 ์ดํ ๋ณํ
CentOS7๋ถํฐ ๊ธฐ๋ณธ ๋ฐฉํ๋ฒฝ์
๐ firewalld
์ ๋๋ค.
๊ตฌ์กฐ
firewalld
โ
iptables
โ
Linux Netfilter๊ทธ๋์ iptables๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์์ง๋ง
๋ณดํต firewalld๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ ๋ฆฌ
OS ๊ธฐ๋ณธ ๋ฐฉํ๋ฒฝ
CentOS6 - iptables
CentOS7 - firewalld
Ubuntu - UFW
Debian - iptables / nftables
๐ก ์ค์ ์๋ฒ ์ด์ ํ
์์ฆ Linux ๋ฐฉํ๋ฒฝ ๊ตฌ์กฐ๋ ์ด๋ ๊ฒ ๋ฐ๋๊ณ ์์ต๋๋ค.
nftables
โ
iptables (ํธํ ๊ณ์ธต)๊ทธ๋์ ์ต์ ๋ฐฐํฌํ์์๋
- nftables
- firewalld
์ฌ์ฉ์ด ์ ์ ๋๊ณ ์์ต๋๋ค.