본문 바로가기
정보보안기사&CISSP관련/보안장비 운영

[Day 108] iptables (2) - 상태 추적, 확장 모듈(connlimit, limit)

by minimalist_2022 2020. 11. 26.

상태 유형

  • NEW : 최초로 들어온 패킷 상태. 상태추적 테이블에 정보 없고 TCP의 경우 SYN 패킷이 해당됨
  • ESTABLISHED : 상태추적 테이블에 연결정보를 갖고 있는 상태. 연결된 이후 송수신 패킷은 전부 이 상태
  • RELATED : 상태추척 테이블에 연관된 연결정보를 가지고 있는 패킷 상태. FTP 프로토콜이 해당. Active mode는 21/tcp로 제어채널 형성 후 20/tcp로 데이터채널 형성하는데 데이터채널로 송수신되는 패킷은 모두 RELATED 상태가 됨
  • INVALID 상태 : 연결상태를 알 수 없거나 잘못된 헤더정보를 갖고 있어서 어떤 상태에서 해당 안되는 패킷

 

프로토콜별 상태 유형

TCP 프로토콜 상세

  • SYN이 보이면 NEW 상태가 됨
  • SYN+ACK가 보이면 ESTABLISHED 상태가 되고, 마지막 ACK 받기 전까지 상태유지

 

UDP 프로토콜 상세

  • 비연결 프로토콜이라 연결상태정보 없음
  • UDP패킷이 들어올때마다 TTL 유지되는 동안 ESTABLISHED 상태로 봄

 

상태 추적 Rule 설정 예시

위조된 TCP SYN 패킷을 차단하기 위한 룰 설정

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
--> inbound TCP 패킷의 상태가 NEW이면서(--state NEW) SYN 플래그가 설정되지 않은(! --syn) 비정상패킷을 차단( -j DROP)

 

FTP Active Mode 상태추적 기능 테스트

iptables -A INPUT -m state --state NEW -p tcp -dport 21 -j ACCEPT
--> INPUT 체인에 대해 TCP 21번 포트에 대한 연결 요청 허용

iptables -A OUTPUT -m state --state ESTABLISHED, RELATED, -j ACCEPT
--> OUTPUT 체인에 대해 ESTABLISHED, RELATED 상태의 패킷을 모두 허용

 

iptable 확장 모듈

connlimit 모듈

  • 동일한 IP 또는 IP 대역의 동시 연결 개수에 대한 제한(디도스 공격 대응 목적)

iptables -A INPUT -p tcp --syn --dport 80 -m --connlimit-above 5 -j DROP
--> TCP 80 포트 요청에 대해 동일 출발지 IP로 동시 연결 개수가 5개 초과시(--connlimit-above 5) 이를 차단

 

limit 모듈

  • snort threshold와 유사하게 룰에 매치되는 비율 제한

iptables -A INPUT -p tcp --tcp-flags ALL SYN, FIN -m --limit 6/minite -j LOG
--> TCP 패킷의 모든 플래그를 검사해서 SYN, FIN 플래그만 설정되어 있는 비정상패킷을 분당 최대 6개까지 로그에 남김

iptables -A INPUT -p tcp --tcp-flags ALL SYN, FIN -j DROP
--> TCP 패킷의 모든 플래그를 검사해서 SYN, FIN 플래그만 설정되어 있는 비정상패킷을 차단

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
--> TCP 패킷의 모든 플래그를 검사해서 플래그가 설정되지 않은 비정상패킷을 차단