'패킷필터링'에 해당되는 글 2건

  1. 2009.07.29 UDP Flooder 툴 활용 DDoS 공격 (72)
  2. 2008.10.10 리눅스 시스템의 소프트레벨 커널 튜닝
2009.07.29 00:37

UDP Flooder 툴 활용 DDoS 공격

네트워크 장비 또는 서버를 구축 후 차단에 대한 룰을 적용한 후 간단히 UDP Flood Attack 차단에 대한 결과를 확인하기에 쓸만한 툴이 있다.

NetTool 또는 UDP Flooder 등과 같은 것을 이용하면 간단하면서도 손쉽게 테스트 할 수 있다.

아래는 UDP Flooder Tool 을 활용하여 UDP Flooding Attack 를 시도해 보는 과정이다.


첨부된 프로그램을 다운받아서 실행하면 위와 같은 화면이 나오게 된다.
(단, 다른 목적이 아닌 테스트 용도로 사용하기를 권장한다. 무리한 목적으로 사용시 문제의 소지가 있으니 주의!)


패킷 목적지 대상의 IP 또는 호스트 주소와 포트번호를 기입한다. 원하는 특정 포트로 전송이 가능하다.

그리고 스피드는 패킷의 전송 속도를 지정할 수 있다.

그런 후 Go 버튼을 클릭하면 지정된 대상으로 UDP 패킷을 전송하게 된다.


전송되는 데이터를 기본적으로 Text 에서 ***** UDP Flood. Server stress test ***** 를 전송하게 된다.

전송되는 패킷의 량을 증가하기 위해서 From file 옵션을 선택하고 전송하려는 데이터가 저장된 텍스트 파일을 선택하면 된다.


위와 같이 대량의 데이터를 텍스트 파일로 저장 후 해당 데이터를 UDP 패킷의 데이터로 전송할 수 있다.

해당 패킷을 수신하는 측에서는 대량의 패킷을 수신하게되며 DoS 공격에 더 큰 영향을 미치게 된다.

또한, 여러대를 통해 공격을 시도하면 DDoS 공격의 결과를 초래할 수도 있다.


공격을 받는 쪽에서는 위와 같이 패킷이 탐지된다.

이 량이 커져서 네트워크 대역폭을 가득 채우게 될 경우 서비스 거부 공격이 성공하게 된다.


동일한 조건으로 실제 서버에 공격을 시도하여 Wireshark 을 이용하여 패킷을 스니핑 한 모습이다.

아래 첨부된 문서와 페이지를 참조하여 실제 보안 또는 공격 회비에 대한 방어책을 수립하도록 해야할 것이다.


UDP Flood Attack : http://www.javvin.com/networksecurity/UDPFloodAttack.html

저작자 표시
신고

Trackback 0 Comment 72
  1. 이전 댓글 더보기
  2. guest 2014.01.23 08:52 신고 address edit & del reply

    xcvdfg10@naver.com 으로 보내주실수있나요? ㅠ

  3. 부탁.. 2014.02.21 23:49 신고 address edit & del reply

    touo_96@naver.com 부탁드립니다

  4. 보안공부 2014.09.25 20:21 신고 address edit & del reply

    보안공부 하는 학생입니다.파일좀 부탁드려요~ kkkhyunmo@nate.com

  5. 리눅스버전 2014.10.07 13:34 신고 address edit & del reply

    보내주신 윈도우 버전은 받았는데 혹시 리눅스 버전 있으면 추가로 부탁드립니다

  6. 보안공부 2014.10.09 21:43 신고 address edit & del reply

    보안공부 하는 학생인데 파일구하기가 어렵네요 파일좀 부탁드립니다 blue05002@naver.com

  7. 2014.11.13 20:47 address edit & del reply

    비밀댓글입니다

  8. 김정길 2015.03.24 02:12 신고 address edit & del reply

    안녕하세요. 프로그램이 꼭 필요해서 그러는데요, 저도 보한쪽 공부하고 있어서요.
    좀 부탁좀 드릴께요.^^ nowdate@naver.com 입니다.^^

  9. 칼리리눅스 2015.05.30 21:09 신고 address edit & del reply

    vvalstjd@naver.com으로보내주세요;;

  10. 그만해 2015.06.13 01:48 신고 address edit & del reply

    고만해, 미친 놈들아! 그렇게 툴이 가지고싶나;;
    정 필요하면 구글에 검색해서 소스 얻어서 컴파일하던가;

  11. 에휴 2015.11.09 11:31 신고 address edit & del reply

    댓글을 보고 하도 기가쳐서 그렇게 구하기 어려운 툴인가 하고 구글검색했다.
    그냥 3분만에 공식홈페이지에서 다운받을 수 있는데 이걸 못하는건....
    보안공부를 한다는 사람이 이정도 검색실력도 없어서는 그냥 다른쪽을 공부해보라고 하고싶다;

    그리고 댓글들 보면 나이어린 애들이 이걸로 장난치고 싶은모양인데 하다가 걸리면
    쇠고랑 차니까...그만두시길

  12. Favicon of http://sdfsdasdas 칼라리눅스 2016.03.11 19:49 신고 address edit & del reply

    구글에 찾아봐도 없읍니다 혹시 죄송하지만 링크 주실수있나요 비밀 댓글로요 ?>

    • 헤에... 2016.03.20 15:11 신고 address edit & del

      요즘 리눅스는 칼라인가보네요?
      칼리를 말하려 그랬을지도.

  13. 현서 2016.04.14 15:26 신고 address edit & del reply

    goh0430@naver.com
    보내주세요.

  14. 2016.06.16 09:29 address edit & del reply

    비밀댓글입니다

  15. 라미 2016.11.20 22:23 신고 address edit & del reply

    yuehao012@naver.com
    좀보내주세여 ㅠㅠㅠ

  16. Favicon of http://blogger.pe.kr Tae-Ho 2017.02.22 08:46 신고 address edit & del reply

    감사합니다~

  17. 123 2017.03.13 20:33 신고 address edit & del reply

    저도 좀 보내주세요 ㅠㅜㅠ
    hajungho000@naver.com

  18. 여니 2017.06.10 12:42 신고 address edit & del reply

    저도 보내주실 수 있을까요 ㅠㅠ 보안공부하는 학생입니다 ㅜㅜ parkhy0321@naver.com

  19. 이성래 2017.07.21 17:07 신고 address edit & del reply

    tjdfo6089@naver.com 보내주시면 감사하겟습니다

  20. 윤성영 2017.07.28 00:34 신고 address edit & del reply

    안녕하세요 보안관련스터딩하는 학생입니다 offixx@naver.com 부탁드려도될지여쭤봅니다

  21. 키즈 2017.08.22 12:06 신고 address edit & del reply

    댓글들 한심들 해서 남깁니다. 딱 검색 키워드만 드릴께요. udp ddos attack tool
    자 이거가지고 뻘짓하면 철컹철컹 아시죠? 영어로 되있어서 모르시겠으면 영어공부 하시고요.
    보안쪽 공부하신다는 분이 영어못하시면 힘듭니다. 프로그래밍이라는거 자체가 그렇지만, 보안쪽은 국내 자료가 거의 없기 때문에 영어 모르시면 힘들어요.
    그러니까 초딩분들은 영어공부나 하세요.
    @주인장분 거슬리시면 이 댓글은 삭제하셔도 됩니다. 고생하시네요...
    @@아참 저 다운로드 받은 프로그램에 바이러스나 랜섬웨어가 탑재되어 있는 경우는 책임 못집니다. 각자 알아서 책임지시고, 그런 면에서 소스를 받는게 안전하지요.

2008.10.10 19:20

리눅스 시스템의 소프트레벨 커널 튜닝

################################################################################

  리눅스에서 syn flooding 등 각종 공격에 대응하기 위하여 시스템의 kernel 튜닝을
  하는 것이 좋다.
  다음의 기능이 작동하도록 커널 튜닝을 하여라.

   * ping 요청에 반응하지 않도록 설정한다.
   * 소스 라우팅을 차단한다.
   * synflooding 에 대응하기 위해 syncookie를 설정한다.
   * ICMP Redirect를 차단한다.
   * 스푸핑, 소스 라우팅 및 리다이렉트된 패킷은 로그에 남긴다.
   * 패킷 포워딩을 차단한다.

################################################################################
---]]]
syncookies 기능을 켠다

Syncookies('신쿠키'라고 발음한다)는 'Three-way handshake'진행과정을 다소 변경 하는 것으로 Alex Yuriev와 Avi Freedman에 의해 제안되었는데, TCP 헤더의 특정한 부분을 뽑아내어 암호화 알고리즘을 이용하는 방식으로 Three-way Handshake가 성공적으로 이루어지지 않으면 더 이상 소스 경로를 거슬러 올라가지 않는다. 따라서 적절한 연경 요청에 대해서만 연결을 맺기 위해 리소스를 소비하게 되는 것이다.

syncookies 기능은 TCP_Syn_Flooding 공격을 차단하기 위한 가장 확실한 방법으로 이 기능을 이용하려면 일단 커널 컴파일 옵션에서 CONFIF_SYN_COOKIES이 Y로 선택되어 있어야 한다. 자신의 커널 옵션에 이 기능이 설정되어 있는지 /usr/src/linux 디렉토리로 이동 후 make menuconfig 후 다음과 같이 확인하면 된다.

Networking options ---> [*] IP: TCP syncookies support (disabled per default)

만약 설정이 되어 있지 않다면 선택 후 커널 컴파일을 다시 하여야 하지만 대부분 배포본은 기본적으로 이 옵션이 선택되어 있으므로 걱정할 필요는 없다. 그러나 위와 같이 커널 옵션에 설정되어 있다 하더라도 실제 syncookies 적용은 꺼져 있으므로 이 값을 다음과 같은 방법으로 활성화해야 한다.

[root@control src]# sysctl -a | grep syncookienet.ipv4.tcp_syncookies = 0

0으로 설정되어 있으므로 현재 syncookies는 적용되지 않는다. 따라서 다음과 같이 1을 설정하여 syncookies 기능을 활성화도록 한다.

[root@control src]# sysctl -w net.ipv4.tcp_syncookies=1

syncookies는 백로그큐가 가득 찼을 경우에도 정상적인 접속요구를 계속 받아들일수 있도록 해주므로 SYN_Flooding 공격에 대비한 가장 효과적인 방법중 하나다. 만약 공격을 당해 syncookies가 작동할 때에는 /var/log/message 파일에 아래와 같이 SynFlooding 공격이 진행중이라는 메시지가 출력된다.

Jun 11 18:54:08 net kernel: possible SYN flooding on port 80. Sending cookies.

SYN_Flooding 공격이 지속적으로 매우 심하게 진행중일 때에는 syncookies 기능이 작동한다 하더라도 네트워크가 다운되는 현상이 가끔 확인되었다. 따라서 syncookies 기능 외에 몇 가지 설정도 함께 적용하는 것이 시스템의 안정성을 위해 권장하는 방법이다. 아울러 네트워크가 다운되었을 경우에는 /etc/rc.d/init.d/network restart로 네트워크를 재설정해 보거나 리부트해야 한다.

----------------------------------------------------------------------
기타 시스템의 네트워크 설정을 최적화한다

다음 설정은 비단 TCP Syn_Flooding 공격뿐만 아니라 다른 여타 DoS공격에도 효과적으로 방어하므로 적절히 설정할 것을 권장한다.

sysctl -w net.ipv4.icmp_destunereach_rate=1
# 1/100초 동안 받아들일 수 있는 "dest unreach (type 3) icmp"의 개수

sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
# Broadcast로부터 오는 핑을 차단함(Smurt 공격을 차단함).

sysctl -w net.ipv4.icmp_echoreply_rate=1
# 1/100초에 반응하는 핑의 최대 숫자

sysctl -w net.ipv4.icmp_echo_ignore_all=1
# 모든 핑을 차단함

sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
# IP 나 TCP 헤더가 깨진 bad icmp packet을 무시한다.

sysctl -w net.ipv4.icmp_paramprob_rate=1
# 1/100 초에 받아들이는 param probe packet의 수

sysctl -w net.ipv4.icmp_timeexceed_rate=1
# 1/100 초에 받아들이는 timeexceed 패킷의 수(traceroute와 관련)

sysctl -w net.ipv4.igmp_max_memberships=1
# 1/100초에 받아들이는 igmp "memberships"의 수

sysctl -w net.ipv4.ip_default_ttl=64
# 매우 복잡한 사이트에서는 이 값을 늘리는 것도 가능하지만 64로 두는
  것이 적당하며 더 늘렸을 경우에는 큰 문제가 발생할 수도 있다.

sysctl -w net.ipv4.ip_forward=0
# 게이트웨이 서버가 아닌 이상 패킷을 포워딩 할 필요는 없다.

sysctl -w net.ipv4.ipfrag_time=15
# fragmented packet이 메모리에 존재하는 시간을 15초로 설정한다.

sysctl -w net.ipv4.tcp_syn_retries=3
# 일정한 시간과 IP별로 보내고 받는 SYN 재시도 횟수를 3회로 제한한다.
  이 옵션은 스푸핑된(위조된) 주소로 오는 SYN 연결의 양을 줄여준다.
  기본 값은 5이며 255를 넘지 않아야 한다.

sysctl -w net.ipv4.tcp_retries1=3
# 무언가 문제가 있을 때 연결을 위해 재시도 할 횟수,
  최소 값과 기본 값은 3이다.

sysctl -w net.ipv4.tpc_retries2=7
# TCP 연결을 끊기 전에 재시도할 횟수.

sysctl -w net.ipv4.conf.eth0.rp_filter=2
sysctl -w net.ipv4.conf.lo.rp_filter=2
sysctl -w net.ipv4.conf.default.rp_filter=2
sysctl -w net.ipv4.conf.all.rp_filter=2
# 이 설정은 자신의 네트워크가 스푸핑된 공격지의 소스로 쓰이는 것을
  차단한다. 모든 인터페이스에서 들어오는 패킷에 대해 reply를 하여
  들어오는 인터페이스로 나가지 못하는 패킷을 거부한다.

sysctl -w net.ipv4.conf.eth0.accept_redirect=0
sysctl -w net.ipv4.conf.lo.accept_redirect=0
sysctl -w net.ipv4.conf.default.accept_redirect=0
sysctl -w net.ipv4.conf.all.accept_redirect=0
# icmp redirects를 허용하지 않는다.
  만약 ICMP Redirect를 허용할 경우에는 공격자가 임의의 라우팅 테이블을
  변경할 수 있게 되어 자신이 의도하지 않는 경로, 즉 공격자가 의도한
  경로로 트래픽이 전달될 수 있는 위험이 있다.

sysctl -w net.ipv4.conf.eth0.accept_source_route=0
sysctl -w net.ipv4.conf.lo.accept_source_route=0
sysctl -w net.ipv4.conf.default.accept_source_route=0
sysctl -w net.ipv4.conf.all.accept_source_route=0
# 스푸핑을 막기 위해 source route 패킷을 허용하지 않는다.
  소스 라우팅을 허용할 경우 악의적인 공격자가 IP 소스 라우팅을
  사용해서 목적지의 경로를 지정할 수도 있고, 원래 위치로 돌아오는
  경로도 지정할 수 있다. 이러한 소스 라우팅이 가능한 것을 이용해 공격
  자가 마치 신뢰받는 호스트나 클라이언트인 것처럼 위장할수 있는것이다.
sysctl -w net.ipv4.conf.eth0.bootp_relay=0
sysctl -w net.ipv4.conf.lo.bootp_relay=0
sysctl -w net.ipv4.conf.default.bootp_relay=0
sysctl -w net.ipv4.conf.all.bootp_relay=0
# bootp 패킷을 허용하지 않는다.

sysctl -w net.ipv4.conf.eth0.log_martians=0
sysctl -w net.ipv4.conf.lo.log_martians=0
sysctl -w net.ipv4.conf.default.log_martians=0
sysctl -w net.ipv4.conf.all.log_martians=0
# 스푸핑된 패킷이나 소스라우팅, Redirect 패킷에 대해 로그파일에 정보를 남긴다.

sysctl -w net.ipv4.conf.eth0.secure_redirects=0
sysctl -w net.ipv4.conf.lo.secure_redirects=0
sysctl -w net.ipv4.conf.default.secure_redirects=0
sysctl -w net.ipv4.conf.all.secure_redirects=0
# 게이트웨이로부터의 redirect를 허용하지 않음으로써 스푸핑을 막기 위해 설정한다.

sysctl -w net.ipv4.conf.eth0.send_redirects=0
sysctl -w net.ipv4.conf.lo.send_redirects=0
sysctl -w net.ipv4.conf.default.send_redirects=0
sysctl -w net.ipv4.conf.all.send_redirects=0
# icmp redirects를 보내지 않는다.

sysctl -w net.ipv4.conf.eth0.proxy_arp=0
sysctl -w net.ipv4.conf.lo.proxy_arp=0
sysctl -w net.ipv4.conf.default.proxy_arp=0
sysctl -w net.ipv4.conf.all.proxy_arp=0
# proxy arp를 설정하지 않는다. 이 값이 1로 설정되었을 경우
  proxy_arp가 설정된 인터페이스에 대해 arp 질의가 들어왔을 때
  모든 인터페이스가 반응하게 된다.

sysctl -w net.ipv4.tcp_keealive_time=30
# 이미 프로세스가 종료되어 불필요하게 남아 있는 연결을 끊는 시간을 줄이도록 한다.

sysctl -w net.ipv4.tcp_fin_timeout=30
# 연결을 종료시 소요되는 시간을 줄여준다(기본 설정값: 60).

sysctl -w net.ipv4.tcp_tw_buckets=720000
# 동시에 유지 가능한 timewait 소켓의 수이다. 만약 지정된 숫자를 초과하였을 경우에는 timewait 소켓이 없어지며 경고 메시지가 출력된다. 이 제한은 단순한 DoS 공격을 차단하기 위해 존재하는데, 임의로 이 값을 줄여서는 안되며 메모리가 충분하다면 적절하게 늘려주는 것이 좋은데, 64M 마다 180000으로 설정하면 된다. 따라서 256M일 경우에는 256/4=4 4*180000=720000

sysctl -w net.ipv4.tcp_keepalive_probes=2
sysctl -w net.ipv4.tcp_max_ka_probes=100
# 간단한 DoS 공격을 막아준다.

위의 모든 설정은 재부팅 후에 원래의 값으로 다시 초기화되므로 /etc/rc.d/rc.local 에 두어 부팅시마다 실행하도록 하여야 한다. 그리고 리눅스의 버전이 낮아 sysctl 명령어가 없는 경우에는 echo 0 or 1 > /proc/sys/net/*와 같이 직접 /proc 이하의 값을 직접 설정해 주어도 된다. echo 명령어 역시 재부팅되면 초기화되므로 /etc/rc.d/rc.local 에 설정해 두어야 재부팅후에도 적용이 된다. 아울러 레드헷 6.2 이상일 경우에는 /etc/sysctl.conf 파일에 net.ipv4.tcp_syncookies=1과 같이 설정한 후 네트워크를 재시작하는 방법도 있다.


[[[---G
net.ipv4.conf.all.rp_filter=1
net.ipv4.ip_always_defrag = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.tcp_max_syn_backlog=1280
net.ipv4.icmp_echo_ignore_all=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.all.accept_source_route=0
net.ipv4.tcp_syncookies=1
net.ipv4.conf.all.accept_redirect=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.all.log_martians=1
net.ipv4.ip_forward=0

저작자 표시
신고

Trackback 0 Comment 0