티스토리 뷰
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로 만들어 줍니다.
2) Back queue를 증가시킨다.
백로그큐를 증가시켜 Syn_recv에 의한 대기를 많이 할 수 있도록 지정한다.
3) 방화벽에서 PPS(Packet Per Second) 조정
위의 그림 처럼 한 IP당 Syn의 PPS를 설정하여 임계치를 초과한 경우 차단을 한다.
4) 라우터에서 차단1: Watch Mode
라우터에서 Syn 패킷을 통과시키고 계속해서 연결이 안되는 경우 라우터가 Syn 패킷을 차단한다.
5) 라우터에서 차단2: Intercept Mode
라우터에서 클라이언트에서 날리는 Syn패킷을 가로채어 클라이언트와 서버를 대신 연결해주는 것이다.
'Security > 네트워크' 카테고리의 다른 글
[Linux] Snort를 활용한 SSH brute attack 탐지 (0) | 2021.01.21 |
---|---|
[CentOS7] IDS 환경을 위한 Snort 구축 및 테스트 (2) | 2021.01.19 |
[Linux] Synflood 공격 및 탐지 (0) | 2020.12.17 |
- Total
- Today
- Yesterday
- lightsail
- 리눅스
- 백준
- 카카오페이면접후기
- 카카오페이
- linux
- 자료구조
- 시간초과
- 코딩테스트
- 보안기사
- t검정
- llm
- springboot
- 다이나믹프로그래밍
- Ai
- 딥러닝
- FastAPI
- 우선순위큐
- 정보보안
- 프로그래머스
- 보안
- 그리디
- 정보보안기사
- t-test
- java
- LangChain
- synflooding
- 파이썬
- 분산시스템
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |