티스토리 뷰

반응형

TCP Syn Flooding은 공격자가 자신의 IP를 속여 서버의 패킷을 다량으로 보내어 대기큐를 높여 새로 들어온 요청을 처리하지 못하게 마비시키는 공격입니다.

실습 환경

Computer Name
IP
OS 환경
비고
Attacker
192.168.0.3
Kali Linux
hping3
Victim
192.168.0.6
Kali Linux
80 포트 열기(공격 대상 포트)
Else
192.168.0.7
Kali Linux
 

Attacker

그림의 1번과 같이 먼저 공격자의 PC에서 hping3 명령어를 실행합니다.

#hping3 -S 192.168.0.6 -p 80 -a 192.168.0.7 --flood

●-S: Syn을 날리겠다는 옵션

●192.168.0.6 : 공격대상의 IP

●-p 80 : 80번 포트를 공격

●-a 192.168.0.7 : 가짜 source IP

●--flood : 계속 신호를 보내겠다.

Victim

그림의 2번과 같이 Victim은 Src IP: 192.168.0.7, Dst IP: 192.168.0.6의 패킷을 전송 받습니다. 이는 실제 Victim이 Else에서 패킷을 보낸 것으로 착각하게 만드는 효과가 있습니다.

Else에서 패킷을 전달받은 것으로 착각한 Victim은 Syn/Ack를 실제 Else에게 전달합니다.

Victim의 입장에서 Attacker에게 Syn을 받고 Else에게 Syn/Ack를 전송했으므로 다시 Ack를 전달 받을 때까지 Syn_Recv 상태로 머무르게 됩니다. 아래의 그림처럼 Else에게 Ack를 전달 받지 못해 대기 큐가 쌓여 Syn_Recv 상태가 축적되는 것을 볼 수 있습니다.

Else

마지막 Else 와이어샤크를 보면 Victim으로 부터 받은 Syn/Ack 패킷을 볼 수 있고 이에 대해 RST 패킷을 전송하는 것을 확인할 수 있습니다.

보안 방법

1) Syncookies 기능을 활용한다.

Syncookie는 백로그가 가득 차 있어도 정상적인 접속 요구를 계속 받아드릴 수 있도록 해줍니다. 따라서 syncookies의 값을 1로 만들어 줍니다.

#sysctl -a | grep syncookies #sysctl -w net.ipv4.tcp_syncookies=1

2) Back queue를 증가시킨다.

백로그큐를 증가시켜 Syn_recv에 의한 대기를 많이 할 수 있도록 지정한다.

#sysctl -a | grep syn_backlog #sysctl -w net.ipv4.tcp_max_syn_backlog=1024

3) 방화벽에서 PPS(Packet Per Second) 조정

위의 그림 처럼 한 IP당 Syn의 PPS를 설정하여 임계치를 초과한 경우 차단을 한다.

4) 라우터에서 차단1: Watch Mode

라우터에서 Syn 패킷을 통과시키고 계속해서 연결이 안되는 경우 라우터가 Syn 패킷을 차단한다.

5) 라우터에서 차단2: Intercept Mode

라우터에서 클라이언트에서 날리는 Syn패킷을 가로채어 클라이언트와 서버를 대신 연결해주는 것이다.

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함