🔒 리눅스에서 8080 포트 차단하기 — iptables를 이용한 네트워크 제어
🧠 1. 리눅스의 네트워크 처리 구조
리눅스에는 네트워크 패킷을 처리하는 커널 레벨의 모듈이 내장되어 있습니다.
웹 서버(nginx), nc, Spring Boot, Django 등 다양한 프로그램이 내부적으로 TCP 포트를 사용하며, 각각의 포트는 고유해야 합니다.
예를 들어:
-
Spring Boot: 기본적으로
8080포트 사용 -
Django 개발 서버:
8000포트 -
Nginx:
80,443포트
같은 포트를 동시에 여러 프로그램이 점유하면 아래와 같은 오류가 발생합니다.
Address already in use Could not bind to port
이런 포트 충돌을 방지하고, 불필요한 접근을 차단하기 위해 리눅스 커널에는 Netfilter라는 기능이 존재합니다.
🔥 2. Netfilter와 iptables
Netfilter는 리눅스 커널 내부에서 패킷을 필터링, 포워딩, 드롭(drop) 하는 기능을 제공합니다.
이 기능을 제어하기 위한 대표적인 유틸리티가 바로 iptables입니다.
iptables는 다음과 같은 작업을 수행할 수 있습니다:
-
특정 포트로 들어오는 패킷 차단 (
DROP) -
IP 기반 차단 (
BLOCK) -
포워딩 정책 설정 (
FORWARD) -
NAT 설정 (포트 포워딩, 마스커레이드 등)
또한 iptables는 docker, kubernetes 등 다양한 시스템 내부에서도 자동으로 설정되어 사용됩니다.
🧩 3. 실습: 8080 포트 차단하기
이번 예시는 Rocky Linux 기준으로 진행합니다.
다른 배포판이라면 apt, yum 등 패키지 관리자만 바꿔 실행하시면 됩니다.
(1) iptables 설치
sudo dnf install -y iptables
처음 실행 시, DNF가 패키지 메타데이터를 업데이트하므로 약간의 시간이 걸립니다.
(2) 테스트용 포트 개방
이번에는 nc(netcat)를 이용해 임시로 8080 포트를 리슨 상태로 만들어보겠습니다.
sudo dnf install -y nmap-ncat nc -l 8080 &
위 명령으로 8080 포트를 점유하면, 마치 웹 서버가 실행 중인 것처럼 됩니다.
(3) 포트 점유 확인
현재 어떤 프로세스가 8080 포트를 사용 중인지 확인하려면 다음 명령을 사용합니다:
ss -lntp | grep 8080
예상 결과:
LISTEN 0 128 *:8080 *:* users:(("nc",pid=1234,fd=3))
(4) iptables로 8080 포트 차단
이제 본격적으로 8080 포트를 차단(DROP) 해보겠습니다.
sudo iptables -A INPUT -p tcp --dport 8080 -j DROP
-
-A INPUT: 인바운드(들어오는) 패킷 체인에 규칙 추가 -
-p tcp: TCP 프로토콜 기준 -
--dport 8080: 목적지 포트 번호 8080 -
-j DROP: 패킷을 버림(drop)
(5) 규칙 확인
현재 설정된 iptables 규칙을 확인합니다:
sudo iptables -L -n --line-numbers
출력 예시:
Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
(6) 접속 테스트
이제 로컬에서 8080 포트로 접속을 시도해보겠습니다.
nc 127.0.0.1 8080
결과:
접속이 되지 않고 타임아웃(timeout) 으로 종료됩니다.
이는 iptables 규칙에 의해 8080으로 들어오는 패킷이 차단되었기 때문입니다.
🔄 4. 규칙 제거 및 재확인
차단을 해제하려면 이전에 추가한 규칙을 삭제하면 됩니다.
sudo iptables -D INPUT -p tcp --dport 8080 -j DROP
이제 다시 확인해보면, 규칙이 사라졌습니다:
sudo iptables -L -n
다시 접속 테스트:
nc 127.0.0.1 8080
이번에는 정상적으로 연결됩니다 ✅
🧭 5. 정리 및 팁
| 구분 | 명령어 | 설명 |
|---|---|---|
| 포트 점유 확인 | ss -lntp |
현재 리슨 중인 포트 확인 |
| 규칙 추가 | iptables -A INPUT -p tcp --dport 8080 -j DROP |
8080 포트 차단 |
| 규칙 확인 | iptables -L -n |
현재 필터링 규칙 조회 |
| 규칙 삭제 | iptables -D INPUT -p tcp --dport 8080 -j DROP |
8080 포트 차단 해제 |
💡 Tip:
iptables 설정은 시스템 재부팅 후 초기화됩니다.
영구적으로 유지하려면 iptables-save와 iptables-restore 명령을 이용해 설정 파일에 저장하세요.
🚀 결론
리눅스의 Netfilter는 단순히 방화벽 이상의 기능을 제공합니다.
iptables를 이해하고 직접 실습해보면, 네트워크 트래픽의 흐름을 훨씬 명확히 파악할 수 있습니다.
8080 포트 차단 실습을 통해,
“이론 → 실습 → 검증” 과정을 경험해보셨길 바랍니다.
다음에는 nftables를 이용한 현대적 방화벽 설정 방법도 다뤄보겠습니다.
추가적으로 리눅스 네트워크를 더 공부하고싶다면 네트워크 완전 정복을 참고하세요. https://reallinux.co.kr/course/se_network