Sunday, December 8, 2024
Linuxtechnology

iptables 설정하는 방법

110views

Ubuntu에서 기본적으로 UFW(Uncomplicated Firewall)를 사용하여 방화벽을 관리할 수 있지만, iptables를 직접 사용하여 방화벽을 구성할 수도 있습니다. 아래 단계는 UFW에서 iptables로 변경하고, iptables를 설치 및 구성하는 방법을 설명합니다.

1. UFW 비활성화

먼저, UFW를 비활성화합니다:

sudo ufw disable

2. iptables 설치

Ubuntu에는 기본적으로 iptables가 설치되어 있지만, 없는 경우를 대비해 다음 명령으로 설치할 수 있습니다:

sudo apt update
sudo apt install iptables -y

3. iptables 기본 정책 설정

iptables를 사용하여 기본 정책을 설정합니다. 다음 명령을 사용하여 모든 트래픽을 차단한 후, 필요한 트래픽만 허용하도록 설정할 수 있습니다:

# 모든 기본 정책을 DROP으로 설정
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP

# 루프백 인터페이스 허용
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

# 이미 허용된 연결은 ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# SSH (포트 22) 허용
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

4. 추가적인 규칙 설정

여기서 필요한 추가 규칙을 설정할 수 있습니다. 예를 들어, HTTP와 HTTPS 트래픽을 허용하려면 다음 명령을 사용합니다:

# HTTP (포트 80) 허용
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

# HTTPS (포트 443) 허용
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT

5. iptables 규칙 저장

서버 재부팅 후에도 iptables 규칙이 유지되도록 하려면, iptables-persistent 패키지를 사용하여 규칙을 저장합니다:

sudo apt install iptables-persistent -y
sudo netfilter-persistent save

위 명령을 실행하면 /etc/iptables/rules.v4/etc/iptables/rules.v6 파일에 iptables 규칙이 저장됩니다.

6. iptables 규칙 확인

다음 명령을 사용하여 현재 iptables 규칙을 확인할 수 있습니다:

sudo iptables -L -v

예제 출력

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:http
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:https

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  any    lo      anywhere             anywhere            
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spt:ssh
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spt:http
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spt:https

이제 Ubuntu 서버에서 UFW를 iptables로 대체하고 기본 방화벽 규칙을 설정하는 방법을 마쳤습니다. 필요한 경우 추가 규칙을 설정하여 서버를 더욱 강화할 수 있습니다.

Leave a Response