본문으로 건너뛰기

iptables로 포트와 IP를 허용/차단하려면?

💡 요약 정리

  • iptables는 리눅스 방화벽 도구로, 체인과 규칙을 통해 패킷을 허용/차단합니다.
  • 규칙은 위에서 아래로 평가되며, 첫 번째로 매칭된 규칙이 즉시 적용됩니다.
  • 일치 규칙이 없으면 체인의 기본 정책(ACCEPT 또는 DROP)으로 처리됩니다.
  • 차단 정책(DROP)을 먼저 적용하면 접속이 끊길 수 있으니, 필요한 포트/관리자 IP를 먼저 허용하세요.
  • 아래 예시 명령을 그대로 복사해 포트·IP 허용/차단, 저장, 삭제, 백업/복원을 수행할 수 있습니다.

1. iptables란?

  • 패킷을 제어하는 리눅스 기반의 프로그램입니다.
  • 체인(Chain)과 규칙(Rule)을 사용하여 네트워크 패킷을 처리(허용/차단 등)할 수 있습니다.

2. 체인(Chain)

기본적으로 3개의 체인을 제공합니다.

1) INPUT Chain

  • 서버로 들어오는 패킷을 처리하는 Chain

2) FORWARD Chain

  • 서버를 통과해 다른 네트워크로 전달되는 패킷을 처리하는 Chain

3) OUTPUT Chain

  • 서버에서 외부로 나가는 패킷을 처리하는 Chain

3. iptables 정책 읽는 방법

  • 위에서 아래로 적용: 체인에 등록된 규칙은 맨 위에서부터 순차적으로 평가됩니다.
  • 첫 번째로 일치하는 규칙: 트래픽이 첫 번째로 일치하는 규칙에 따라 처리되며, 해당 규칙 이후의 규칙은 무시됩니다.
  • 기본 정책: 규칙을 모두 통과했지만 일치하는 규칙이 없을 경우, 기본 정책에 따라 처리됩니다.
    • 기본 정책이 ACCEPT이면 트래픽이 허용되고, DROP이면 차단됩니다.

4. iptables 명령어

차단 정책을 먼저 설정하면, 서버에 대한 모든 접속이 즉시 차단될 수 있으므로, 차단 정책 설정 전 필요한 포트를 반드시 허용해야 합니다.
  • 들어오는 모든 패킷 차단 정책
iptables -P INPUT DROP

1) 정책 확인

  • 명령어
iptables -nvL

2) 정책 등록

① 특정 포트 허용

  • 명령어
iptables -A INPUT -p tcp --dport (PORT) -j ACCEPT
  • ex)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

② 특정 IP 허용

  • 명령어
iptables -I INPUT -s 192.168.1.100 -j ACCEPT
  • ex)
iptables -I INPUT -s (IP) -j ACCEPT

③ 특정 IP대역 및 포트 허용

  • 명령어
iptables -I INPUT -p tcp --dport 80 -s 192.168.0.0/24 -j ACCEPT
  • ex)
iptables -I INPUT -p tcp --dport (PORT) -s (IP대역) -j ACCEPT

④ 특정 포트 차단

  • 명령어
iptables -I INPUT -p tcp --dport 8080 -j DROP
  • ex)
iptables -I INPUT -p tcp --dport 8080 -j DROP

⑤ 특정 IP 차단

  • 명령어
iptables -I INPUT -s 192.168.1.100 -j DROP

3) 정책 저장

  • 명령어 입력(CentOS)
service iptables save
  • 명령어 입력(Ubuntu)
iptables-save > /etc/iptables/rules.v4

4) 정책 삭제

① 번호로 삭제

  • 규칙 번호 확인
iptables -L INPUT 5
  • ex)
iptables -L (Chain) (번호)
  • 규칙 삭제
iptables -D INPUT 5
  • ex)
iptables -D (Chain) (번호)
참고: 규칙 번호 확인 시 일반적으로 --line-numbers 옵션을 함께 사용합니다.

② -D옵션으로 삭제

  • 명령어
iptables -D INPUT -s 192.168.1.100 -j DROP
  • ex)
iptables -D INPUT -s (IP) -j DROP

5) 정책 백업

  • 명령어
iptables-save > /path/to/backup/iptables-backup.txt

6) 정책 복원

  • 명령어
iptables-restore < /path/to/backup/iptables-backup.txt

7) 정책 초기화

  • 명령어
iptables -F