강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

비정상적인 tcp-flags 차단

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

비정상적인 tcp-flags 차단



 

$IPTABLES -A INPUT -p TCP --tcp-flags ACK,FIN FIN -j DROP

$IPTABLES -A INPUT -p TCP --tcp-flags ALL NONE -j DROP

$IPTABLES -A INPUT -p TCP --tcp-flags ALL PSH,FIN -j DROP

$IPTABLES -A INPUT -p TCP --tcp-flags ALL URG,PSH,FIN -j DROP

$IPTABLES -A INPUT -p TCP --tcp-flags ALL SYN,ACK,FIN -j DROP

$IPTABLES -A INPUT -p TCP --tcp-flags ALL SYN,FIN,PSH -j DROP

$IPTABLES -A INPUT -p TCP --tcp-flags ALL SYN,FIN,RST -j DROP

$IPTABLES -A INPUT -p TCP --tcp-flags ALL SYN,FIN,RST,PSH -j DROP

$IPTABLES -A INPUT -p TCP --tcp-flags ALL SYN,FIN,ACK,RST -j DROP

$IPTABLES -A INPUT -p TCP --tcp-flags ALL SYN,ACK,FIN,RST,PSH -j DROP

$IPTABLES -A INPUT -p TCP --tcp-flags FIN,RST FIN,RST -j DROP

$IPTABLES -A INPUT -p TCP --tcp-flags SYN,FIN SYN,FIN -j DROP

$IPTABLES -A INPUT -p TCP --tcp-flags ACK,PSH PSH -j DROP

$IPTABLES -A INPUT -p TCP --tcp-flags ACK,URG URG -j DROP

 

앞에서 tcp-flags에 대해 간단히 설명하였는데, 다시 한번 확인해 보자. 위와 같이 설정하였을 경우 주로 스캐닝을 차단하거나 비정상적인 tcp 트래픽을 필터링할 때 유용하다.

 

 

 

 

tcp-flagsspace(공란)를 기준으로 좌측과 우측의 비트로 구분되는데, 좌측은 살펴볼 비트이고 우측은 좌측의 비트 중에서 해당 비트가 있는지 여부를 살펴볼 부분이다.

 

 

 

 

, 좌측의 비트를 모두 살펴보아 우측의 비트가 모두 있으면 매칭되는 것이며 좌측에서 언급되지 않은 비트는 있거나 없거나 관계없다.

 

 

 

 

또한 좌측의 비트에는 정의되어 있는데, 우측의 비트에는 없다면 해당 비트는 반드시 없어야 하는 것이다.

 

 

 

 

그리고 각각의 비트가 여러 개인 경우 콤마(,)를 기준으로 분류할 수 있다.

 

 

 

 

 

 

첫 번째로 아래 룰의 경우 ACK,FIN 이렇게 2개의 tcp flag를 살펴보아 오직 FIN만 설정되어 있고 ACK는 없는 패킷을 차단한다는 룰이다.

 

 

 

 

어떠한 패킷이든지 ACK 없이 오직 FIN 비트만 설정된 패킷은 비정상적인 패킷이기 때문이다.

 

$IPTABLES -A INPUT -p TCP --tcp-flags ACK,FIN FIN -j DROP

두 번째 룰은 6개의 모든 tcp flag을 살펴보아 아무런 비트도 설정되지 않은(NONE) 패킷을 차단하는 룰이다.

 

 

 

 

같은 방식으로 아래 룰의 경우 tcp 패킷에서 좌측의 SYN,FIN 부분을 살펴보아 우측과 같이 SYNFIN이 모두 설정되어 있는 경우에는 거부한다는 의미이다.

 

 

 

 

 

 

$IPTABLES -A INPUT -p TCP --tcp-flags SYN,FIN SYN,FIN -j DROP

 

SYN 패킷은 접속을 시작하는 tcp-flag이고, FIN은 접속을 종료하는 tcp-flag인데 이처럼 한 패킷에서 SYNFIN비트가 함께 지정되어 있다는 것은 정상적인 패킷에서는 있을 수 없는 비정상적인 패킷이기 때문이다.

 

 

 

 

실제로 이는 스캔을 할 때 많이 사용되는 방법이기도 한데, 스캔 시 SYN/FIN이 자주 사용되는 이유는

 

일부 구 버전의 방화벽 등 보안 장비의 경우 SYNFIN비트가 함께 설정된 패킷을 제대로 처리하지 못하는 경우가 있고

또한 일부 시스템에서는 SYN/FIN에 대해서 로그에 남지 않기 때문이다.

 

 

 

 

 

위에서 언급한 경우는 모두 비정상적인 tcp-flags의 조합이므로 필터링하는 것이 좋다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  85 명