haproxy 로 DDoS 방어하기

이전에 봤던 내용인데 급히 보고 싶을때 링크를 못찾아서 메모용 으로 작성.  https://www.haproxy.com/blog/application-layer-ddos-attack-protection-with-haproxy/ 모든 상황에 100% 대응 할 수 있는 방법은 아니지만 WAF나 ALB, Route53의 GeoLocation Routing등과 같이 다른 서비스와 병용 함으로서 어느 정도의 효과를 얻을 수 있을 듯 하다.

curl 명령어 옵션

# 결과를 지정한 이름으로 파일에 저장
$ curl -o response.txt https://www.example.net
# 결과를 파일이름으로 저장, index.html 이 저장됨 
$ curl -O https://www.example.net/index.html
# SSL증명서 에러 무시
$ curl -k https://www.example.net
# 진척상황을 표시 하지 않기, 에러도 표시되지 않음
$ curl -s -o response.txt http://www.example.net
# 에러메시지는 보고 싶을때
$ curl -sS -o response.txt http://www.example.net
# progress bar로 진척상황표시
$ curl -# -O http://www.example.net/index.html
# proxy이용시
$ curl -x <proxyip>:<port> --proxy-user <username>:<password> http://www.example.net
$ curl -x <username>:<password>@<proxyip>:<port> http://www.example.net
# 301/302등의 redirect를 자동인식
$ curl -L http://www.example.net
# http의 메소드를 지정
$ curl -X [PUT|GET|POST] http://www.example.net
# parameter를 POST로 송신
$ curl -w '\n' 'http://www.example.net/posturl' -X POST --data 'name=myname&mode=create'
# status code만 출력
$ curl -sS -w '%{http_code}\n' http://www.example.net 
# http의 response header를 확인
# -I 는 헤더만, -i는 body도 출력
$ curl -I http://www.example.net
# http 자세한 정보를 볼때, request header를 확인 할 때 필요
$ curl -v http://www.example.net
# http의 packet data까지 확인이 필요할때
# --trace는 binary, --trace-ascii는 텍스트, --trace-time은 시간표시
$ curl -sS http://www.example.net -X POST -F "test=data" --trace.log trace.log -o /dev/null
$ curl -sS http://www.example.net -X POST -v -F "test=data" --trace-ascii trace-ascii.log -o /dev/null
# reqeust의 결과만 확인
$ curl -s http://www.example.net -o /dev/null -w '%{http_code}¥n'
# DDoS 부하시험
$ for((;;)) { curl -v --header "Connection: keep-alive" "http://www.example.net";}
# 전송속도 제한
# k, m, g등을 이용
$ curl --limit-rate [10k|1m,1g] http://www.example.net 
# 수신한 쿠키를 저장
$ curl -c cookie.txt http://www.example.net
# 저장한 쿠키를 송신
$ curl -b cookie.txt http://www.example.net 
# 최대접속시간제한을 설정
$ curl --connect-timeout 600 http://www.example.net 
# User-Agent를 지정
$ curl -s -w '%{http_code}\n' https://www.amazon.co.jp/dp/B00JEYPPOE/ -o /dev/null
503
$ curl -s -w '%{http_code}\n' https://www.amazon.co.jp/dp/B00JEYPPOE/ -o /dev/null -A ''
200
# Header를 지정
$ curl -H "Host: www.example.net" -k https://<IP address> 

쓸일이 있을까 ?

# 범위지정
$ curl 'http://{one,two,three}.example.net'
$ curl 'http://[1-3].example.net

댓글

이 블로그의 인기 게시물

CISCO 2960s 초기화 후 기본 설정

AWS에서 zabbix를 이용한 autoscaling ec2 자동등록/자동삭제