iptables의 주요 사용법과 설정 방법

Share

iptables는 Ubuntu에서 네트워크 트래픽을 필터링하고 방화벽 역할을 하는 강력한 도구입니다. 다음은 Ubuntu에서 iptables의 주요 사용법과 설정 방법을 안내합니다.


1. 기본 명령어 구조

iptables 명령어는 다음과 같은 구조를 가집니다:

iptables [테이블] [체인] [동작] [매개변수]
  • 테이블: filter, nat, mangle 등이 있습니다. 기본은 filter.
  • 체인: INPUT, OUTPUT, FORWARD 등이 있습니다.
    • INPUT: 서버로 들어오는 트래픽.
    • OUTPUT: 서버에서 나가는 트래픽.
    • FORWARD: 서버를 경유하는 트래픽.
  • 동작: -A(추가), -D(삭제), -I(삽입), -L(목록 보기) 등이 있습니다.

2. 기본 명령어 예제

(1) 포트 열기

특정 포트(예: 80번 포트)를 허용하려면:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  • -A INPUT: 입력 체인에 규칙 추가.
  • -p tcp: TCP 프로토콜 대상.
  • --dport 80: 80번 포트 지정.
  • -j ACCEPT: 트래픽 허용.

443번 포트(HTTPS)를 열려면:

sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

(2) IP 차단

특정 IP(예: 192.168.1.100)에서 들어오는 트래픽을 차단:

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

(3) 기본 정책 설정

기본 정책을 설정하여 트래픽을 허용하거나 차단:

  • 모든 입력 차단: sudo iptables -P INPUT DROP
  • 모든 출력 허용: sudo iptables -P OUTPUT ACCEPT

(4) 현재 규칙 보기

적용된 규칙 목록을 확인하려면:

sudo iptables -L -v

3. 규칙 관리

(1) 규칙 삽입

특정 위치에 규칙을 삽입하려면 -I를 사용합니다:

sudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT

위 명령은 입력 체인의 첫 번째 위치에 규칙을 삽입합니다.

(2) 규칙 삭제

특정 규칙을 삭제하려면:

sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT

또는 규칙 번호를 사용하여 삭제:

  1. 규칙 번호 확인: sudo iptables -L --line-numbers
  2. 규칙 삭제: sudo iptables -D INPUT [번호]

4. 규칙 저장 및 복원

(1) 규칙 저장

iptables 규칙은 서버 재부팅 시 사라집니다. 영구적으로 저장하려면:

  1. iptables-persistent 패키지 설치: sudo apt install iptables-persistent
  2. 규칙 저장: sudo netfilter-persistent save
  3. 규칙 복원: sudo netfilter-persistent reload

(2) 수동으로 저장 및 복원

규칙을 수동으로 저장하고 복원할 수도 있습니다.

  • 규칙 저장: sudo iptables-save > /etc/iptables/rules.v4
  • 규칙 복원: sudo iptables-restore < /etc/iptables/rules.v4

5. 기본 설정 예제

기본 보안 설정 예제입니다.

모든 트래픽 차단 후 필요한 것만 허용:

# 기본 정책 설정
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

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

# HTTP/HTTPS 허용 (포트 80, 443)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# localhost 트래픽 허용
sudo iptables -A INPUT -i lo -j ACCEPT

# 이미 허용된 연결 유지
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

위 설정 후 트래픽이 정상적으로 작동하는지 확인하고 필요에 따라 조정하세요.

You may also like...