IT 그리고 정보보안/Knowledge base

iptables 에서의 TCP 응답

plummmm 2021. 4. 19. 07:37
반응형

* 악의적인 연결에 대한 TCP 응답

대부분의 방화벽 혹은 IDS 에서는 악의적인 목적을 갖고 시스템에 연결을 시도하는 경우에 RST나 RST/ACK 메시지를 보내어 연결을 강제로 종료시킨다.

시스템에 어떤 패킷이 전송되는지, 패킷이 전송되는 상황이 어떠한지에 따라 RST 플래그 패킷이 전송될수도, RST/ACK 패킷이 전송될수도 있다.

 

각각의 경우를 아래 기술하였다.

      

1. 대부분의 경우 RST 패킷을 전송하여 연결을 강제 종료한다.

RFC 793에 따르면, 몇가지 경우를 제외하고 대부분 ACK를 설정하지 않은 RST 패킷으로 연결 상태를 제어한다.

 

2. ACK 플래그와 RST 플래그 간은 서로 반대 관계 이다.

이말인 즉슨, 마지막에 전송된 패킷이 ACK 패킷이라면 RST 패킷은 ACK를 가질 수 없다.

반대 경우인 마지막에 전송된 패킷이 ACK 패킷이 없다면, RST/ACK 패킷이 전송된다. 

e.g. 포트가 닫힌 상태일 때, 그 포트로 SYN 패킷이 전송되면 응답은 RST/ACK, SYN/ACK 패킷이 전송되면 응답은 RST가 전송된다.         

[그림 1. TCP Scanning 응답으로 RST/ACK 확인 화면]

 

[그림 2. TCP Half Scanning 으로 SYN/ACK 에 대한 응답 RST 확인 화면]

 

그림 1, 2를 보면 SYN에 대한 응답과 SYN/ACK에 대한 응답이 각각 RST/ACK, RST로 ACK와 RST가 반대 관계에 있다는 것을 확인할 수 있다.

 

 3. IDS(침입 탐지 시스템)는 TCP 연결을 종료시킬 때 RFC 793을 따르지 않는다.

IDS(침입 탐지 시스템)은 TCP 연결을 강제 종료 시킬때 RFC 793의 규칙을 따르지 않는다.

그말인 즉슨, ACK 플래그가 포함된 패킷이 마지막 전송 되더라도 RST/ACK가 응답하게 끔 설정 되어있다.

 

 

 4. SYN Cookie를 이용해 정상 사용자로 판별이 된 사용자에게만 ACK 패킷을 전송한다.

일반적으로 TCP는 SYN 패킷을 전송 받으면 SYN/ACK를 응답하도록 설계되어 있다.

하지만 SYN FLOODING 같은 SYN 플래그를 이용한 악의적인 공격 기법들이 나타나면서 SYN Cookie 개념이 생겨났다. 다니엘 번스타인이 처음 처음 고안한 방법으로, 

SYN 패킷을 받았을 때 쿠키 개념을 도입하여 L4 방화벽에서 쿠키값으로 SYN/ACK를 보내어 정상적인 접속을 원하는 사용자인지 아니면 악의적인 목적을 가진 사용자 인지 판별한 후 사용자에게 SYN 패킷을 전송해주는 것이다.

    

     

   상기 기술된 내용과 같이 SYN cookie를 이용하면 악의적인 SYN 공격에 대해 효과적으로

   대처할 수 있다.

반응형