무단 접근과 서버 해킹은 심각한 위협입니다. 네트워크 보안의 일환으로 방화벽을 반드시 구성해야 하는 이유입니다. iptables 규칙을 다룰 줄 아는 것은 Linux 시스템에서 이러한 위험을 줄이는 핵심 역량 중 하나입니다. 이 튜토리얼에서는 iptables show rules와 iptables 규칙 삭제 등 기본 방화벽 개념을 익힐 수 있도록 안내합니다. Ubuntu. 간단한 명령어로 이를 수행하는 방법을 설명합니다. iptables 규칙을 조회하거나 삭제하는 방법을 다루기 전에, iptables 규칙이 무엇이고 왜 사용하는지 먼저 살펴보겠습니다.
Iptables란 무엇입니까?
iptables는 트래픽을 허용하거나 차단하는 커맨드라인 방화벽 유틸리티로, 정책 체인. 시스템에서 연결 시도가 발생하면, iptables는 해당 연결과 일치하는 규칙을 목록에서 찾아 네트워크 보안을 처리합니다. 일치하는 규칙이 없으면 기본 동작을 적용합니다.
iptables는 대부분의 Linux 배포판에 기본적으로 설치되어 있습니다. 다음 명령어로 설치하거나 업데이트할 수 있습니다:
sudo apt-get install iptables
iptables를 사용하는 이유
Linux 커맨드라인 방화벽인 iptables를 사용하면 시스템 관리자가 설정 가능한 테이블 규칙을 통해 인바운드 및 아웃바운드 트래픽을 제어할 수 있습니다. iptables는 기본 제공 규칙이나 사용자 정의 규칙으로 구성된 체인을 포함하는 테이블 집합을 사용합니다.
앞서 언급했듯이, iptables는 대부분의 Linux 시스템에서 네트워크 보안의 핵심 역할을 담당합니다. 이 문서의 나머지 부분에서는 iptables 규칙 전체 조회 방법을 중심으로, iptables 규칙을 확인하고 삭제하는 개념을 설명합니다.
구체적으로는 규칙 목록 조회, 패킷 및 바이트 카운터 초기화, iptables 규칙 삭제, 체인 플러시, 전체 체인 삭제 및 전체 트래픽 허용 등 주요 iptables 작업을 다룹니다.
Ubuntu에서 iptables 완전 정복 가이드
iptables 규칙 조회 방법을 살펴보기 전에, iptables 명령어가 설치된 Linux 서버를 사용 중이어야 하며 sudo 권한이 필요합니다. 방화벽 설정 시 SSH 트래픽(기본 포트: 22)을 차단하여 서버 접속이 끊기지 않도록 주의하십시오. 방화벽 설정으로 접속이 차단된 경우, 대역 외 콘솔을 통해 접속하여 복구해야 할 수 있습니다.
규칙 명세별 조회
활성 iptables 규칙을 표 형식으로 또는 as 규칙 사양 목록으로확인할 수 있습니다. 두 방법 모두 동일한 정보를 서로 다른 형식으로 제공합니다. 활성 iptables의 전체 규칙을 사양 형식으로 조회하려면 다음 옵션과 함께 iptables 명령어를 실행하십시오: -S 옵션:
sudo iptables -S
이 iptables 규칙 조회 명령어를 실행하면 다음과 같은 출력 결과를 볼 수 있습니다:

특정 체인 조회
iptables 출력을 INPUT, OUTPUT 또는 TCP와 같은 특정 체인으로 제한하려면 -S 옵션 바로 뒤에 체인 이름을 지정하면 됩니다. 예를 들어, 다음 iptables 규칙 조회 명령어는 TCP 체인만 조회합니다:
sudo iptables -S TCP

앞서 언급한 것처럼, iptables 규칙을 테이블 형식으로 확인하는 방법도 있습니다. 이 방법을 살펴보겠습니다.
테이블 형식으로 규칙 조회
테이블 형식으로 iptables 규칙을 확인하면 여러 규칙을 한눈에 비교할 수 있습니다. 다음 옵션과 함께 iptables 명령어를 실행하면 -L 옵션 활성 규칙 전체를 테이블로 출력합니다:
sudo iptables -L
이 명령어는 현재 규칙 전체를 체인별로 분류하여 출력합니다. INPUT, OUTPUT, TCP 등 특정 체인으로 출력을 제한하려면 -L 옵션 바로 뒤에 체인 이름을 지정하십시오. 다음은 INPUT 체인으로 iptables 규칙 조회를 제한하는 예시입니다:
sudo iptables -L INPUT

위 출력의 첫 번째 줄에는 체인 이름(이 경우 INPUT)과 기본 정책(DROP)이 표시됩니다. 다음 줄에는 테이블 각 열의 헤더와 체인 규칙이 나옵니다. 각 항목을 하나씩 살펴보겠습니다:
- Target: 패킷이 규칙과 일치할 때 적용할 동작을 정의합니다. 패킷을 허용(ACCEPT), 차단(DROP), 로깅하거나 다른 체인으로 전달하여 추가 규칙과 비교할 수 있습니다.
- prot: 프로토콜(TCP, udp, ICMP, all 등)
- opt: IP 옵션을 나타냅니다(거의 사용되지 않음)
- source: 트래픽의 출발지 IP 주소/서브넷을 표시합니다
- destination: 트래픽의 목적지 IP 주소/서브넷을 표시합니다
레이블이 없는 열은 규칙의 옵션을 나타내며, 이전 열에서 명시되지 않은 규칙의 모든 요소가 여기에 포함됩니다. 출발지/목적지 포트부터 패킷의 연결 상태까지 다양한 정보가 이 열에 표시될 수 있습니다.
패킷 수와 누적 크기를 확인하는 방법
iptables 규칙을 나열할 때, 각 규칙에 매칭된 패킷 수와 총 바이트 크기를 함께 표시할 수 있습니다. 어떤 규칙이 실제로 패킷에 적용되고 있는지 파악하는 데 유용합니다. 이를 위해서는 -L 및 -v 옵션을 함께 사용해야 합니다 이것.
다음은 INPUT 체인에 -v 옵션을 적용한 예시입니다:
sudo iptables -L INPUT -v

이제 목록에 두 개의 열이 추가된 것을 확인할 수 있습니다: pkts 및 bytes. iptables 규칙을 전체 조회하는 다양한 방법을 살펴봤습니다. 이제 패킷 수와 총 바이트 크기를 초기화하는 방법을 알아볼 차례입니다.
패킷 수와 누적 크기를 초기화하는 방법
규칙의 패킷 및 바이트 카운터를 초기화하려면 -Z 옵션을 사용하십시오. 카운터는 서버 재부팅 시에도 초기화됩니다. 기존 규칙에 새로운 트래픽이 매칭되는지 확인하고 싶을 때 유용합니다.
모든 체인과 규칙의 카운터를 초기화하려면 다음 명령을 사용하십시오: -Z 옵션 혼자로:
sudo iptables -Z
특정 체인의 모든 규칙 카운터를 초기화하려면 -Z 옵션과 함께 체인 이름을 지정하십시오. 예를 들어, INPUT 체인의 카운터를 초기화하는 명령은 다음과 같습니다:
sudo iptables -Z INPUT
특정 규칙의 카운터만 초기화하려면 체인 이름과 규칙 번호를 정확히 지정해야 합니다. 예를 들어, INPUT 체인의 첫 번째 규칙 카운터를 초기화하려면 다음 명령을 실행하십시오:
sudo iptables -Z INPUT 1
iptables 규칙 전체 조회 명령과 패킷/바이트 카운터 초기화 방법 외에도, iptables 규칙을 삭제하는 방법을 알아두면 좋습니다.
함께 읽기: VPS에 PPTP VPN 서버를 설치하는 방법
iptables 규칙을 삭제하는 방법
iptables 규칙을 개별 삭제하거나 체인 내 모든 규칙을 한 번에 삭제하는 등 여러 방법을 사용할 수 있습니다. 각 방법을 순서대로 살펴보겠습니다.
규칙 명세로 삭제하기
iptables 규칙을 삭제하는 방법 중 하나는 규칙 사양을 이용하는 것입니다. iptables 명령에 -D 옵션 옵션과 규칙 사양을 함께 지정하여 실행합니다. 이 방식으로 규칙을 삭제할 때는 iptables -S 명령의 출력 결과를 참고하면 편리합니다.
예를 들어, 유효하지 않은 수신 패킷을 차단하는 규칙(-A INPUT -m conntrack –ctstate INVALID -j DROP)을 삭제하려면 다음 명령을 실행하십시오:
sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP
-A 옵션은 규칙 생성 시 위치를 지정하는 용도이므로, 삭제 명령에서는 제외해야 합니다.
체인과 번호로 규칙 삭제하기
체인과 줄 번호를 이용해 iptables 규칙을 삭제할 수도 있습니다. 먼저 다음 명령으로 규칙을 테이블 형식으로 나열하고 –line-numbers 옵션:
sudo iptables -L --line-numbers

이 명령을 실행하면 모든 iptables 규칙에 num 헤더로 줄 번호가 표시됩니다.
삭제할 규칙의 체인과 줄 번호를 확인했다면, iptables -D 명령에 해당 체인과 규칙 번호를 지정하여 실행하십시오. 예를 들어, 유효하지 않은 패킷을 차단하는 INPUT 규칙이 3번임을 확인했다면 다음 명령을 실행하십시오:
sudo iptables -D INPUT 3
체인을 초기화하는 방법
체인의 모든 Iptables 규칙을 제거하는 방법이 있습니다. 이를 체인 플러시라고 합니다. 여기서는 이를 수행하는 다양한 방법을 다룹니다. 계속하기 전에, 기본 정책이 drop 또는 deny로 설정된 체인을 플러시할 때 SSH를 통해 서버에서 잠기지 않도록 주의하세요. 만약 잠기게 되면 콘솔을 통해 접속하여 접근 권한을 복구해야 할 수 있습니다.
단일 체인 플러시
특정 체인을 플러시하거나, 즉 체인의 모든 규칙을 삭제하려면 -F 또는 동등한 --flush 옵션 와 선택한 체인 이름을 사용할 수 있습니다. 예를 들어 INPUT 체인의 모든 규칙을 제거하려면 어떻게 해야 할까요? 간단합니다. 다음 명령어를 실행하세요:
sudo iptables -F INPUT
모든 체인 플러시
모든 체인을 제거하거나 플러시하려면 -F 옵션 또는 동일한 기능의 –flush 옵션을 단독으로 사용할 수 있습니다:
sudo iptables -F
모든 규칙 초기화, 체인 삭제, 전체 허용 설정하는 방법
이 섹션에서는 모든 방화벽 규칙, 테이블, 체인을 플러시하고 모든 네트워크 트래픽을 허용하는 방법을 설명합니다. 이 과정을 수행하면 방화벽이 사실상 비활성화된다는 점에 주의하세요. 따라서 방화벽 설정을 처음부터 다시 시작하려는 경우에만 이 섹션을 따르시기 바랍니다.
먼저 각 기본 체인의 기본 정책을 ACCEPT로 설정해야 합니다. 이렇게 하는 주된 이유는 SSH를 통해 서버에서 잠기지 않도록 하기 위해서입니다:
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
그런 다음 nat 및 mangle 테이블을 플러시하고, 모든 체인을 플러시한 후 (-F), 기본이 아닌 모든 체인을 삭제해야 합니다 (-X) 이렇게:
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X
위 명령어를 실행하면 방화벽이 모든 네트워크 트래픽을 허용합니다. 이 시점에서 규칙 목록을 확인하면 아무것도 없으며, INPUT, FORWARD, OUTPUT 세 가지 기본 체인만 남아 있습니다.
Ubuntu에서 iptables를 설정하는 방법
일반적인 방화벽 동작과 마찬가지로, iptables 규칙은 각 체인에 나열된 순서대로 적용됩니다. 따라서 규칙을 올바른 순서로 설정해야 합니다. 새 규칙을 추가하면 규칙 목록의 끝에 추가됩니다. 특정 위치에 규칙을 삽입하려면 iptables -I <index> -command. 더 <index> 를 사용하면 됩니다. 이 명령어에서 는 규칙을 삽입할 순서 번호를 의미합니다. 어떤 인덱스 번호를 입력해야 하는지 확인하려면 다음 명령어를 사용하세요:
sudo iptables -L --line-numbers
각 규칙 줄 앞의 숫자는 체인에서의 위치를 나타냅니다. 특정 기존 규칙 위에 새 규칙을 추가하려면 해당 기존 규칙의 인덱스 번호를 사용해야 합니다. 예를 들어 체인의 맨 위에 새 규칙을 추가하려면 인덱스 번호 1과 함께 다음 명령어를 사용하세요:
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
iptables와 firewalld의 차이점
iptables와 firewalld는 모두 다양한 Linux 시스템에서 방화벽을 관리하는 데 유용한 도구로, 패킷 필터링(정적 필터링)을 위해 설계되었습니다. 패킷 필터링은 수신 및 발신 정보 패킷을 관리하여 특정 네트워크에 대한 접근을 제어하는 방화벽 전략입니다. 출발지와 목적지의 프로토콜, 포트, IP 주소에 관한 사전 설정된 방화벽 규칙을 기반으로 패킷의 통과를 허용하거나 차단합니다. 이러한 규칙은 효율적인 보안 메커니즘을 제공하여, 시스템 LAN(Local Area Network) 외부에서 라우팅되는 장치에 대한 방어 수단으로 유용합니다.
firewalld는 원래 iptables를 더 쉽게 사용할 수 있도록 돕는 소프트웨어로 도입되었습니다. 이러한 배경을 바탕으로 두 도구를 좀 더 자세히 비교해 보겠습니다.
iptables vs firewalld: 시스템 설정
firewalld와 iptables는 설정 방식과 기본 저장 방식이 다릅니다. iptables는 변경할 때마다 기존 규칙을 모두 플러시하고 새 규칙을 다시 읽어야 하므로 시스템을 재시작해야 합니다. 반면 firewalld는 규칙을 처음부터 다시 생성하지 않고, 변경된 부분만 기존 규칙에 적용하므로 런타임에서 즉시 효과를 확인할 수 있습니다.
iptables vs firewalld: 사용자 인터페이스
firewalld는 GUI(그래픽 사용자 인터페이스)를 사용합니다. 반면 iptables는 CLI(명령줄 인터페이스)를 사용하기 때문에 iptables로 Linux 커널 방화벽 규칙에 접근하는 것이 일부 사용자에게는 어렵게 느껴질 수 있으며, 그런 경우 firewalld가 더 편리한 선택입니다. 단, iptables는 짧은 명령어만 사용하므로 응답 시간이 더 빠르다는 점도 고려할 만합니다. 두 도구 모두 각자의 사용 사례가 있으므로, 본인에게 더 편한 것을 선택하세요.
마무리: iptables show rules
iptables는 Linux 운영 체제를 위해 만들어진 유연한 방화벽 유틸리티입니다. Linux를 처음 접하는 입문자든 전문 시스템 관리자든, iptables 규칙은 다양한 상황에서 유용하게 활용할 수 있습니다. 이 글에서는 iptables 규칙 확인 및 삭제를 포함한 기본 명령어를 중심으로 Linux의 주요 기능을 간략히 소개했습니다. 또한 저희 Linux VPS 호스팅 솔루션 을 통해 이 훌륭한 운영 체제의 잠재력을 충분히 활용할 수 있습니다. Cloudzy에서는 웹 호스팅, 웹 앱 배포, 코드 개발·테스트·자동화 환경 구성 등 다양한 용도에 맞는 KVM 기반 Linux VPS 플랜을 제공합니다.
자주 묻는 질문
Linux에서 iptables 규칙을 명세별로 전체 조회하는 방법
현재 활성화된 모든 iptables 규칙을 사양이나 기능별로 나열하려면 iptables 명령어 뒤에 -S 플래그를 입력하면 됩니다. 사용 시 주의할 점은 sudo 이 경우의 키워드:
sudo iptables -S
iptables 규칙을 삭제하는 방법
특정 체인을 제거하려면(체인 내의 모든 규칙이 함께 삭제됩니다), -F 또는 –flush 옵션과 체인 이름을 사용해야 합니다. OUTPUT 체인의 모든 규칙을 삭제하려면 어떻게 해야 할까요? 다음 명령어를 실행하면 됩니다:
sudo iptables -F OUTPUT
Ubuntu에서 iptables는 어떻게 동작하는가
iptables 방화벽은 네트워크 트래픽을 일련의 규칙과 비교합니다. iptables 규칙은 패킷이 규칙과 일치하는지 판단하는 조건과, 일치할 경우 취할 동작을 정의합니다. 물론 특정 규칙에 패킷을 매칭시키는 옵션은 다양합니다.
iptables 규칙은 즉시 적용되는가? 그 이유는?
iptables 규칙은 즉시 적용됩니다. 스크립트가 INPUT 및 OUTPUT 체인에 규칙을 추가하는 방식이기 때문에, 규칙은 해당 체인의 끝에 순서대로 추가됩니다.