tcpdump로 22, 443 포트 제외하는 완벽 가이드: 2026 네트워크 분석 필수 기법

현대 서버 환경에서는 SSH(22)와 HTTPS(443) 두 포트만으로도 전체 인바운드·아웃바운드 트래픽의 75~85%를 차지합니다. 이 트래픽은 대부분 암호화되어 있어 내용 분석이 불가능하고, 패킷 수가 많아 실제 이상 징후를 찾는 데 방해가 됩니다.

포트 서비스 트래픽 비중 제외 이유 우선도
22 SSH 35–40% 암호화, 관리 트래픽 최우선 제외
443 HTTPS 40–45% TLS 암호화, 내용 불가 최우선 제외
80 HTTP 10–15% 상황에 따라 제외 선택적 제외
53 DNS 5–8% 짧은 질의·응답 노이즈 선택적 제외
💡 실무 효과

SSH·HTTPS 제외 후 네트워크 장애 원인 트래픽을 평균 90% 더 빠르게 식별할 수 있습니다. 필터 없이 10분 걸리던 분석이 1분 이내로 줄어듭니다.

tcpdump는 Berkeley Packet Filter(BPF) 문법을 사용합니다. 커널 레벨에서 패킷을 걸러내므로 유저 스페이스로 올라오는 데이터 자체가 줄어 성능이 뛰어납니다.

 
BPF SYNTAX
# 논리 연산자
and  (&&)    # A이면서 B
or   (||)    # A이거나 B
not  (!)     # A가 아님

# 포트 한정자
port 80          # src 또는 dst 포트 80
src port 22     # 소스 포트 22만
dst port 443    # 목적지 포트 443만

# 호스트·네트워크 한정자
host 10.0.0.1      # 특정 IP (src 또는 dst)
net 192.168.0.0/24 # 서브넷 전체
src host 10.0.0.1  # 소스 IP

아래는 가장 일반적으로 사용되는 22·443 포트 제외 명령어입니다. 각 구성 요소가 무엇을 의미하는지 확인하세요.

tcpdump -nni any host 10.38.23.137 and not dst port 22 and not src port 22 and not dst port 443 and not src port 443
-nnIP 주소·포트를 숫자로 표시. DNS 역방향 조회 생략으로 속도 향상
-i any모든 네트워크 인터페이스에서 캡처 (eth0, lo 등 전부)
host 10.38.23.137이 IP를 src 또는 dst로 포함하는 패킷만 선택
not dst port 2222번으로 향하는 패킷 제외
not src port 2222번에서 나오는 응답 패킷 제외
not dst/src port 443443번 양방향 트래픽 제외

같은 결과를 내는 여러 문법이 있습니다. 상황에 맞게 선택하세요.

1
port 키워드 (권장)
권장
# port N = "src port N or dst port N"과 동일
tcpdump -nni any \
  host 10.38.23.137 \
  and not port 22 \
  and not port 443
2
괄호 그룹핑
주의 필요
# 셸에서 괄호 이스케이프 필수
tcpdump -nni any \
  host 10.38.23.137 \
  and not \(port 22 or port 443\)

# 또는 따옴표로 감싸기
tcpdump -nni any \
  "host 10.38.23.137 and not (port 22 or port 443)"
3
다중 포트 제외
복잡 환경
# 4개 포트 동시 제외
tcpdump -nni any \
  host 10.38.23.137 \
  and not \(port 22 or port 443 \
          or port 80 or port 53\)
방법 가독성 성능 포트 추가 용이성 추천
개별 and not port 보통 높음 불편 소수 포트
괄호 그룹핑 높음 높음 편리 다수 포트
src/dst 분리 낮음 보통 불편 방향 구분 시
🌐
웹 서버 모니터링
관리 트래픽을 제외하고 실제 서비스 트래픽만 분석
# FTP, SMTP, DB 연결 등 서비스 트래픽만 캡처
tcpdump -nni eth0 not \(port 22 or port 443 or port 80\)
🗄️
데이터베이스 서버 분석
MySQL · PostgreSQL · MongoDB 트래픽만 선택적 캡처
# DB 연결만 보이도록
tcpdump -nni any \
  \(port 3306 or port 5432 or port 27017\) \
  and not \(port 22 or port 443\)
🔒
보안 이벤트 분석
비정상 포트 사용 트래픽 탐지
# 일반 서비스 포트 모두 제외 → 비정상 트래픽만 캡처
tcpdump -nni any \
  not \(port 22 or port 443 or \
        port 80 or port 53 or port 25\) \
  -w suspicious.pcap
⚖️
로드밸런서 환경
헬스체크 및 관리 트래픽 동시 제외
# 실제 서버 트래픽만 (헬스체크 IP도 제외)
tcpdump -nni any \
  dst host 10.0.1.100 \
  and not \(port 22 or port 443\) \
  and not host 10.0.1.1  # LB 헬스체크 제외
 
ADVANCED FILTERS
# 큰 패킷만 (파일 전송, 데이터 전송 분석)
tcpdump -nni any greater 1000 \
  and not port 22 and not port 443

# 작은 패킷만 (명령어, 쿼리 패턴 분석)
tcpdump -nni any less 100 \
  and not port 22 and not port 443

# TCP만, 특정 포트 제외
tcpdump -nni any tcp \
  and not \(port 22 or port 443\)

# UDP는 전부 허용, TCP는 특정 포트만 제외
tcpdump -nni any \
  "udp or (tcp and not port 22 and not port 443)"

# 여러 서브넷 포함, 관리 포트 제외
tcpdump -nni any \
  \(net 192.168.1.0/24 or net 10.0.0.0/8\) \
  and not port 22 and not port 443
 
PERFORMANCE OPTIONS
# 고성능 환경: 버퍼 확장 + 헤더만 캡처
tcpdump -nni any \
  -B 4096   # 수신 버퍼 4MB (패킷 드롭 방지)
  -s 96     # 패킷당 96바이트만 캡처 (헤더 충분)
  and not port 22 and not port 443

# 파일 자동 로테이션 (디스크 풀 방지)
tcpdump -nni any \
  -C 100                        # 100MB마다 새 파일
  -W 10                         # 최대 10개 파일 유지
  -w traffic_%Y%m%d_%H%M%S.pcap \
  and not port 22 and not port 443

# 필터 최적화: net 사용으로 연산 횟수 감소
# ✗ 비효율: 3개 host 조건
tcpdump host 10.1.1.1 or host 10.1.1.2 or host 10.1.1.3

# ✓ 효율: 서브넷 1개 조건
tcpdump net 10.1.1.0/24
옵션 설명 권장값
-B <kB> 커널 수신 버퍼 크기 2048–8192
-s <bytes> 패킷당 캡처 길이 (0 = 전체) 96 (헤더만) / 0 (전체)
-C <MB> 파일 크기 로테이션 50–200
-W <n> 최대 파일 개수 10–24
-G <sec> 시간 기반 로테이션 3600 (1시간)
🚫 tcpdump: You don't have permission to capture on that device
# 방법 1: sudo 사용
sudo tcpdump -nni any and not port 22

# 방법 2: tcpdump에 캡처 권한 부여 (sudo 없이 실행 가능)
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/tcpdump
🚫 syntax error (괄호 파싱 오류)
# ✗ 잘못됨: 셸이 괄호를 서브셸로 해석
tcpdump -nni any and not (port 22 or port 443)

# ✓ 방법 1: 백슬래시 이스케이프
tcpdump -nni any and not \(port 22 or port 443\)

# ✓ 방법 2: 전체 필터를 따옴표로
tcpdump -nni any "not (port 22 or port 443)"

# ✓ 방법 3: 괄호 없이
tcpdump -nni any not port 22 and not port 443
🚫 인터페이스 not found
# 사용 가능한 인터페이스 목록 확인
tcpdump -D

# 출력 예시
1.eth0 [Up, Running]
2.lo [Up, Running, Loopback]
3.any (모든 인터페이스) [Up, Running]

# 올바른 인터페이스 이름 사용
tcpdump -nni eth0 and not port 22
🧪 단계별 필터 검증 방법

필터 적용 전 -c 10 옵션으로 10개 패킷만 캡처하며 단계적으로 확인하세요. 먼저 기본 연결을 확인하고, 포트 제외를 하나씩 추가합니다.

 
SECURITY USE CASES
# 1. C&C 의심 포트 탐지
tcpdump -nni any \
  \(dst port 6667 or dst port 4444 or dst port 1337\) \
  and not src port 22

# 2. 비암호화 프로토콜 탐지 (Telnet, FTP 등)
tcpdump -nni any \
  \(port 23 or port 21 or port 514\) \
  and not port 22

# 3. 내부 → 외부 대량 데이터 전송 탐지
tcpdump -nni any \
  greater 10000 \
  src net 192.168.0.0/16 \
  and not \(port 22 or port 21 or port 443\)

# 4. 야간 의심 트래픽 캡처 (cron 등록용)
# crontab: 0 2 * * * /usr/local/bin/night_capture.sh
tcpdump -nni any \
  not \(port 22 or port 443 or port 80\) \
  -G 3600 -W 6 \
  -w /var/log/net/night_%Y%m%d_%H.pcap
🥇
일반 네트워크 분석
tcpdump -nni any host TARGET and not port 22 and not port 443
🥈
웹 서버 트러블슈팅
tcpdump -nni any \(port 80 or port 8080\) and not port 22
🥉
보안 분석 (의심 트래픽)
tcpdump -nni any not \(port 22 or 443 or 80 or 53\) -w out.pcap
🏅
고성능 장기 캡처
tcpdump -nni any -B 8192 -s 128 -C 50 -W 20 not port 22 and not port 443 -w cap.pcap
✅ 분석 시작 전 체크리스트
  • 대상 호스트·네트워크 IP 정확성 확인
  • 권한 확보 (sudo 또는 CAP_NET_RAW 설정)
  • 디스크 여유 공간 확인 (최소 분석 시간의 2배 여유)
  • tcpdump -D로 인터페이스 이름 사전 확인
  • -c 10으로 필터 동작 먼저 검증
  • 장기 캡처 시 -C, -W 파일 로테이션 설정

댓글

Designed by JB FACTORY