iptables의 상태 추적(stateful inspection) 기능은 단순히 포트를 열고 닫는 수준을 넘어, 패킷이 현재 TCP 연결 상태와 맞지 않을 때 이를 INVALID로 분류해 자동으로 차단한다.
이번에는 hping3로 비정상 패킷을 직접 만들어 INVALID 동작을 검증하고, LOG 타깃을 활용해 실시간 패킷 로깅 체계를 구축하는 방법을 알아보자.
1. INVALID 패킷이란?
iptables의 -m state 모듈은 각 패킷을 NEW, ESTABLISHED, RELATED, INVALID 중 하나의 상태로 분류한다.
이 중 INVALID는 기존 연결 테이블에 존재하지 않는 세션에 대해 연결 종료/리셋 신호가 들어올 때 붙는 레이블이다.
TCP 플래그와 연결 상태의 관계를 정리하면 다음과 같다.
| TCP 플래그 | 의미 | 정상 조건 |
| SYN | 연결 요청 | 처음 연결 시도 → NEW |
| ACK | 수신 확인 | 기존 세션 응답 교환에 사용 (ESTABLISHED) — 세션 없이 단독 전송 시 INVALID |
| FIN | 정상 종료 | 기존 세션에서만 유효 → ESTABLISHED |
| RST | 강제 리셋 | 기존 세션에서만 유효 → ESTABLISHED |
세션이 없는 상태에서 FIN, ACK, RST를 보내면 커널의 conntrack 테이블에 매칭되는 항목이 없으므로 INVALID로 처리된다. 포트 스캐닝, 세션 하이재킹 시도, TCP 상태 머신 우회 공격 등이 이 방식으로 탐지된다.
2. hping3 실습 — SYN vs FIN 비교
1️⃣ hping3 주요 플래그
# -S : SYN (정상 접속 요청)
# -A : ACK (연결 확립 후 교환)
# -F : FIN (정상 종료 신호)
# -R : RST (강제 리셋)
# -p : 대상 포트 지정
# -c : 전송 패킷 수
2️⃣ 실습 준비 — 기본 상태 추적 룰 적용
서버에 아래 룰이 적용되어 있어야 SYN/FIN 카운트를 확인할 수 있다.
# 루프백 인터페이스 허용
iptables -A INPUT -i lo -j ACCEPT
# [1] INVALID 패킷 차단
iptables -A INPUT -m state --state INVALID -j DROP
# [2] ESTABLISHED,RELATED 패킷 허용
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# [3] NEW 패킷 허용 (새 SSH 접속)
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
# [4] 나머지 전부 차단
iptables -A INPUT -j DROP
3️⃣ SYN vs FIN 패킷 전송 후 카운트 확인
Kali linux 머신에서 아래 명령을 순서대로 실행한다.
# kali 머신에서 SYN 패킷 전송 (정상 연결 요청)
hping3 -S -p 22 -c 3 [서버 IP]

# 서버에서 카운트 확인
iptables -nvL INPUT

# kali 머신에서 FIN 패킷 전송 (연결 없이 종료 신호 — 비정상)
hping3 -F -p 22 -c 3 [서버 IP]

# 서버에서 카운트 확인
iptables -nvL INPUT

위 두 케이스의 시퀀스 흐름을 비교하면 다음과 같다.

결과 비교:
| 케이스 | 매칭 룰 | 응답 | 패킷 손실 |
| SYN | state NEW 룰 카운트 증가 | flags=SA (SYN-ACK) 수신 | 0% |
| FIN | state INVALID 룰 카운트 증가 | 응답 없음 | 100% |
'Journey to Security > 리눅스' 카테고리의 다른 글
| [방화벽] iptables LOG target- 패킷 모니터링 (0) | 2026.06.03 |
|---|---|
| [방화벽] iptables Conntrack (1) 상태 기반 룰 설정 (0) | 2026.06.03 |
| [방화벽] iptables - DNS 룰 설정 (0) | 2026.06.03 |
| [방화벽] iptables 저장/복구 방법 (0) | 2026.06.02 |
| [방화벽] 리눅스 호스트 방화벽 iptables에 대해 알아보자 (0) | 2026.05.30 |