pfsense방화벽 dos,ddos 막기.

dos(Denial of Service)

dos 공격이란 간단하게 말해서 시스템이나 네트워크의 취약점을 이용하거나 대량의 패킷 데이터를 보내서 대상 시스템이 정상적으로 서비스 하지 못하도록 마비시키는 공격이다.
이전에 유명했었던 좀비 pc를 이용한 dos 공격은, 다수의 시스템에서 동시에 공격하는 방법인데 이걸 DDOS(Distributed Dos)라고 한다.

일반적인 DoS공격으로는 Smurf 공격과 Synflood 공격이 있다.
*앞서 kalilinux의 hping3를 이용한 port scan과 dos 공격을 해보았는데 참고.

https://blog.dalso.org/linux/kali/3335/kali-linuxhping3%eb%a5%bc-%ec%9d%b4%ec%9a%a9%ed%95%98%ec%97%ac-%ed%8f%ac%ed%8a%b8%ec%8a%a4%ec%ba%94-or-dos%ea%b3%b5%ea%b2%a9%ed%95%98%ea%b8%b0/

여기서 설명하고자 하는 공격은 synflood 공격인데
정상적인 경우 클라이언트와 서버간에 TCP 3way handshaking 중에 서버는 SYN 을 받으면 backlog queue의 자원을 사용하고 SYN에 대한 SYN/ACK 응답을 하고 ACK를 기다린다.

  1. 클라이언트는 서버에 SYN (동기화) 메시지를 보내 연결을 요청
  2. 서버는 SYN-ACK를 클라이언트로 다시 보내이 요청을 승인
  3. 클라이언트는 ACK로 응답하고 연결이 설정됩니다.

하지만 Synflood를 하게되면 정상적인 TCP 3way handshaking을 하는게 아니라 SYN만 엄청나게 보냄으로써 타겟의 backlogqueue 자원을 모두 사용하게 하여 정상적인 통신을 못하게 한다.

SYNflood 예시

kali 서버에서 대상 서버로 공격.

대상서버

공격전
공격 후 SYN_RECV 대량 발생

Pfsense 방화벽에서 SYNflood 보호하기

  1. Filterling
    방화벽에서 초당 연결 수를 제한하여 초당 10회 이상 연결되면 IP를 블락되도록 설정할 수 있다.
    그러나 이방법의 경우 landattack으로 때리면 소스 ip가 제각각 이기 때문에.. 별 효력이 없을것 같지만 다른 공격 막는데는 유용하기때문에 설정.
  2. TCP Intercept 설정
    TCP 인터셉트는 방화벽 or L3장비가 자신이 서버인척하고 클라이언트와 TCP 커넥션을 정상적으로 맺게 되면 해당 커넥션 정보를 서버에게 전달하는것이다.
    SYN Flood 처럼 정상적으로 커넥션이 생성되지 않으면 서버에 넘어가지 않기때문에 서버에는 부하가 없다.
  3. SYN 쿠키 사용
    SYN 패킷에 대한 응답으로 SYN-ACK 패킷을 다시 보내 SYN 대기열 항목을 삭제해서 SYN대기열이 채워지지 않도록 한다.

Filterling 설정하기

먼저 Web UI 접속

맨 아래로 내려가자

초당 20개만 허용

SAVE -> APPLY

TCP Intercept를 위한 synproxy 적용

똑같이 FW -> Rule

쭈욱 내려가서 State type

체크 하고 SAVE -> APPLY

SYN 쿠키 사용 설정하기

System -> Advanced -> System Tunables

“net.inet.tcp.syncookies” value 값 1 설정

테스트

방화벽상태

방화벽 부하

웹서버 상태

깔끔하게 안남는다.

 

————————————————–

사이트 리뉴얼중입니다~

서버(Linux, ESXi), NAS(헤놀로지, ESXi 및 IT관련 정보, 기타 등등을 공유하는 커뮤니티 SVRFORUM을 새로 만들었습니다.
많은 가입(?) 부탁드립니다~
https://svrforum.com

이전글들은 모두 상단 메뉴의 Blog 글 모음에있습니다!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

홈서버 IT 커뮤니티 SVRFORUM
Link