1 / 32

Security

Security. SPARCS 10 김민규. Security for Wheel. System Admin 의 입장에서 알아야 할 것들 DDoS 등 공격 차단 netstat iptables 서버 설정 제대로 하기 Apache Authorization Bypass 시스템 권한 취약점 관리 setuid bit System security. Dos / DDoS Attack. DoS / DDoS attack. (Distributed) Denial of Service 서비스를 뻗게 만드려는 시도를 총칭

sydney
Download Presentation

Security

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Security SPARCS 10 김민규

  2. Security for Wheel • System Admin의 입장에서 알아야 할 것들 • DDoS등 공격 차단 • netstat • iptables • 서버 설정 제대로 하기 • Apache Authorization Bypass • 시스템 권한 취약점 관리 • setuid bit • System security

  3. Dos / DDoS Attack

  4. DoS /DDoS attack • (Distributed) Denial of Service • 서비스를 뻗게 만드려는 시도를 총칭 • 공격에 다수의 시스템이 사용되면 DDoS • SYN Flood, Ping Flood등 다양한 공격 방법

  5. SYN Flooding • TCP 3-way Handshake • C: How are you? • S: I’m fine, and you? • C: I’m fine too. • SYN Flood • A: How are you? • S: I’m fine, and you? • A: … • C: How are you? • S: … (Waiting for A)

  6. netstat • netstat –an • -a : listening/ non-listening socket 둘다 표시 • -n : host를 숫자로 표시 • SYN Flooding공격을 받고 있다면매우 많은 양의 SYN 패킷이 보임 • Host를 확인해서 차단!

  7. iptables • Administration tool for IPv4 Packet & NAT • Firewall 역할 • 패킷에 대한 규칙을 설정할 수 있다.

  8. iptables : chain • iptables는 커널이 가진 netfilter를 세팅 • netfilter에는 세가지 chain이 있다. • INPUT chain • local system으로 들어오는 패킷이 통과 • OUTPUT chain • local system에서 나가는 패킷이 통과 • FORWARD chain • local system을 경유하는 패킷이 통과

  9. iptables: options • -A <chain> • <chain>에 룰을 추가한다. • -s <ip> • 패킷의 source가 <ip> 인 패킷에 대해 적용 • -d <ip> • 패킷의 destination이<ip> 인 패킷에 대해 적용 • -p <protocol> • 패킷의 protocol이 <protocol>인 패킷에 대해 적용

  10. iptables: options • --sport <port> • 패킷의 출발지 포트가 <port>인 패킷에 대해 적용 • --dport<port> • 패킷의 도착지 포트가 <port>인 패킷에 대해 적용 • -i <device> • input device가 <device>인 패킷에 대해 적용 • -o <device> • output device가 <device>인 패킷에 대해 적용

  11. iptables: options • -j <command> • 앞의 조건에 만족하는 패킷의 처리 방법을 결정 • ACCEPT : 패킷의 이동을 허가 • DROP : 패킷의 이동을 거부 • QUEUE / RETURN • 더 자세한 옵션은 man iptables에!

  12. iptables : example • # iptables–A INPUT –p TCP –i eth0–s 192.168.1.13 –sport 10 –dport 80-j DROP • device eth0에 오는 패킷 중 192.168.1.13의 10번포트에서 출발해, 80번 포트로 들어오는 모든 패킷을 거부

  13. Apache Authorization Settings

  14. Apache Authorization :Settings • httpd.conf • <Directory "/var/www/html">…AllowOverrideAuthConfig…</Directory> • htpasswd도구를 사용해 passwdfile을 만든다 • htpasswd –c <filename> <username>

  15. Apache Authorization :Settings • httpd.conf또는 .htaccess에 추가 • AuthType BasicAuthName<Auth Name>AuthUserFile <passwdfile path><Limit GET POST> Require valid-user</Limit> • 매우 많은 페이지가 위와 같이 설정되어 있다.

  16. Apache Authorization :Limit Option • Limit 옵션에 설정한 프로토콜에 대해서만 아래의 검사를 실행 • 그 외의 프로토콜로 접근하면 인증을 하지 않는다. • 인터넷에 Apache 인증 예시로 저런 방식의 구현이 많이 퍼져버려서 생긴 취약점

  17. Apache Authorization :Bypass • http://webhacking.kr/challenge/web/web-09/index.php

  18. Apache Authorization :Solution • AuthType BasicAuthName <Auth Name>AuthUserFile <passwdfile path>Require valid-user • Limit Option은 정말 필요할 때 아니면 아예 빼자

  19. System Permission Vulnerabilities

  20. setuid • chmod +s 옵션으로 setuid bit를 설정 가능 • ls –al 했을때 권한 칸에 s가 보인다. • setuid bit가 있는 프로그램은 실행시 파일의 소유자의 권한을 갖게 된다.

  21. Goal of System Exploit • main(){setreuid(geteuid(),geteuid());setregid(getegid(),getegid());execl(“/bin/sh”,0);} • setuid bit가 걸린 프로그램이 실행 도중에 저걸실행하면 소유자의 권한을 갖는 shell 획득

  22. Way of System Exploit • Buffer Overflow Attack • System Call Vulnerablity • Format String Bug • Double Free corruption

  23. Buffer Overflow Vulnerability • 버퍼의 크기를 확인하지 않고 값을 덮어쓰는 경우에 발생 • strcpy 함수에서 가장 많이 발생하는 취약점 • 함수의 return address를 덮을 수 있다

  24. Buffer Overflow Vulnerability:Example • bof.c • vuln함수에서 버퍼 크기를 생각하지 않고 strcpy를 사용

  25. Buffer Overflow Vulnerability:Example • ebp+4 : 함수의 return address • 어셈블리코드 leave, ret를 실행하면 ebp+4 의 주소에 있는 코드로 돌아간다. • ebp+4의 값을 바꾸면 어떻게 될까? • shellcode를 환경변수에 올리고ebp+4의 값을 환경변수의 주소로

  26. Buffer Overflow Vulnerability:Solution • 버퍼 크기 체크 • 가장 확실한 Solution • strcpy, gets 등 크기를 생각하지 않는 함수 자제 • strncpy • 스택 상에서 실행권한 제거 • /etc/system 파일 편집 • set noexec_user_stack=1set noexec_user_stack_log=1 항목 추가 • 우회할 수 있는 exploit이 존재하지만좋은 예방책이 될 수 있다.

  27. System Call Vulnerability • 일단 예시를 봅시다. • 뭐가 문제일까요?

  28. Environment Variable: PATH • system(“clear”) => /usr/bin/clear • wiki@sparcs:~/vuln$ env...PATH=/SPARCS/bin:/var/lib/gems/1.8/bin:/usr/local/bin:/usr/bin:/bin:/usr/games... • PATH에 있는 순서대로 명령어를 찾는다.

  29. System Call Vulnerability:Exploitation • euid로 shell을 실행하는 프로그램을 구현 • 프로그램 이름을 clear로 바꿈 • 환경변수 PATH 가장 앞에 경로 추가 • 취약점이 있는 프로그램을 실행

  30. System Call Vulnerability:Solution • System함수의 인자에 상대경로가 들어가면 PATH변수등의 조작으로 원하지 않는 실행이 일어날 수 있다. • System함수의 인자는 절대경로로 사용 • Ex) /usr/bin/clear • 프로그램 실행시 PATH환경변수를 지우기도 한다.

  31. Things to Remember • 유저가 보내는 정보를 믿지 말자 • 입력값에 대한 철저한 검사는 필수! • 보안상 위험한 기능은 꼭 필요할 때만 쓰자 • .htaccess / setuid등 • 최신 버전을 유지하자 • 구버전의 경우 취약점이 있었다가 패치된 경우도 많다

  32. Thank you for Listening synthdnb@gmail.com

More Related