1 / 26

Web & PHP 보안 대책

Web & PHP 보안 대책. 제4회 해킹방지 워크샵 2000. 12. 5 phpschool.com 정진호 loveme@wowlinux.com. Contents . 무엇이 무엇인가? PHP 의 특징 PHP Usage Stats 웹 서버 보안 관리 아파치 설정 - httpd.conf PHP 설정 - php.ini 웹서버 보안 문제의 몇가지 유형 서버 설정 문제의 실례 NMAP & Web Probe. 무엇이 무엇인가?. 웹의특성

job
Télécharger la présentation

Web & PHP 보안 대책

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. Web & PHP 보안 대책 제4회 해킹방지 워크샵 2000. 12. 5 phpschool.com 정진호 loveme@wowlinux.com

  2. Contents • 무엇이 무엇인가? • PHP 의 특징 • PHP Usage Stats • 웹 서버 보안 관리 • 아파치 설정 - httpd.conf • PHP 설정 - php.ini • 웹서버 보안 문제의 몇가지 유형 • 서버 설정 문제의 실례 • NMAP & Web Probe

  3. 무엇이 무엇인가? • 웹의특성 • buggy software opens up security holes • large, complex programs contain bugs • web servers are large, complex programs • 불특정 다수라는 웹 서비스의 특성상 보안 문제의 발생 가능성이 높다 • 관리자 측면 • 시스템 사용자들의 CGI 서비스 • 외부 사용자에 대한 노출 • 잘못 설정된 설정파일의 위험성

  4. 무엇이 무엇인가? • 사용자 측면 • 웹서핑은 안전해 보이나 그렇지 않음 • ActiveX 또는 Java 애플릿 등은 사용자 시스템 침입 가능 • 쿠키(cookie) 및 서핑 히스토리의 보관 • 운영자 및 사용자 모두 Web 의 특성에 대한 이해 필요 • TCP/IP 프로토콜은 보안이 고려되지 않은 설계 • 브라우저를 통해 전송되는 사용자 정보는 누출 가능

  5. PHP 의 특징 • Easy-to-use : Perl 이나 ASP 에 비해 쉽고 편리한 사용법 • Cross-platform : Apache, Microsoft , Netscape 등 대부분의 웹 서버에서 사용가능 • Database support - Informix, Microsoft SQL Server, mSQL, MySQL, ODBC, Oracle , Sybase. • Popularity - 380만 사이트 이상에서 사용 중 • Open source - 지속적 업그레이드 , 버그 수정 , 저 비용 • Open API - 사용자의 필요에 따라 모듈 작성, 추가 • HTTP 세션, Java , 정규표현 , LDAP, SNMP, IMAP, COM WDDX 지원 *WDDX : Web Distributed Data Exchange

  6. Apache Module Report - October 2000 most add on modules modify the web server "signature" that is returned on each web page, we are able to see who's using PHP, perl, SSL mods, language converters, language mods 출처 : http://www.securityspace.com/s_survey/

  7. 출처 : http://www.netcraft.com/Survey/ PHP Usage Stats • Domains : 3,815,440 • IP Addresses : 715,283

  8. 웹 서버 보안 관리 • DMZ에 웹 서버를 위치시키고 http(80) 혹은 https(443)를 제외한 모든 포트에 대해 방화벽을 설치. • SSH 과 같은 보안 로그인 기능이 없는 서비스는 제거. 불필요한 서비스는 공격에 이용 가능 • 일회성 패스워드 혹은 암호화된 연결이 아니라면 모든 원격 관리는 불허 • 관리자나 루트 레벨의 접근을 가질 수 있는 사람의 수를 제한 • 모든 사용자의 활동을 기록하고 인터넷 상의 다른 호스트에 로그들을 저장한다. • 모니터링 시스템으로 주기적으로 의심이 가는 활동에 대해 기록 • /cgi-bin 스크립트 디렉터리에서 불필요한 파일을 삭제 • Printenv , test-cgi • 웹 서버에 기본적으로 제공되는 문서 트리 삭제 • htdocs/manual 등 • 발표되는 즉시 관련된 모든 패치를 적용 • 원격관리 시 보안 연결이 가능하도록 하는 SSH 이용 • nmap 과 같은 툴로 취약성에 대해 웹 서버를 주기적으로 스캔

  9. 아파치 설정 –httpd.conf • User nobody • Group nobody • 아파치의 최초의 프로세스만 수퍼유저 권한으로 실행 이후 실제 서비스는 복사(fork)된 자식 프로세스가 담당 • 부모 프로세스는 요청에 따라 적절한 수의 자식 프로세스를 생성하고 제거하는 것을 담당 • Port 80 • 1023 이하의 포트 사용 시 root 권한으로 실행 • <Directory /> • Options FollowSymLinks Indexes • AllowOverride None • </Directory> • Indexes 옵션제거

  10. 아파치 설정 –httpd.conf • DirectoryIndex index.html index.php index.php3 index.phtml • 색인파일의 검색 순서 • AddType application/x-httpd-php .php .php3 .inc .html .htm .phtml • AddType application/x-httpd-php-source .phps • Php 스크립트 파일 등록 • 설정파일 점검 • # /usr/local/apache/bin/httpd -t

  11. PHP 설정 –php.ini • include_path • require(), include() 등의 함수에 의해 사용되는 인클루드 파일의 디렉토리 위치 • :(unix) , ;(win32) 로 복수의 디렉토리 지정 가능 • gpc_order • GET/POST/COOKIE 변수의 우선 순위 • 초기값 - GPC • ex) GP - 쿠키무시 , 동일한 이름의 post 변수는 get 변수로 덮어씀 • open_basedir • PHP 엔진에 의해 사용될 스크립트 파일의 위치 지정 • 해당 디렉토리 이외의 스크립트 파일들은 해석(실행)되지 않음 • 심볼릭 링크의 사용은 가능 • 초기값은 모든 파일을 실행 가능

  12. PHP 설정 –php.ini • safe_mode On • 안전모드로 php를 실행 • doc_root • 만일 safe_mode 가 설정되면 해당 디렉토리 밖의 모든 파일이 실행금지됨 • upload_max_filesize • 업로드 할 수 있는 최대 파일 크기를 설정 • upload_tmp_dir • 파일이 업로드 될 디렉토리. 기본적으로 /tmp • max_execution_time • 스크립트 실행 시간을 초단위로 설정 • memory_limit • 스크립트 실행시 사용가능한 메모리 크기 (byte).

  13. 웹서버 보안 문제의 몇가지 유형 • 서버 설정 상의 오류 → 매뉴얼 숙독 및 관련사이트 방문 • 프로그래밍 상의 오류 → 수많은 테스트와 사용자 피드백을 통한 지속적 패치 • 보안 버그 → 관련 사이트 모니터링

  14. 설정 상의 문제 • httpd.conf • 아파치의 UID를 nobody 로 • PHP가 아파치의 모듈로 사용될 때는 아파치의 사용자 permission을 계승받음. (일반적으로 "nobody"로 설정) • php.ini • safe_mode On , doc_root 지정 , • 적절한 크기의 upload_max_filesize , upload_tmp_dir 지정 • 로컬 사용자의 ID / passwd 와 DB User 의 ID / passwd 를 반드시 별도로 관리

  15. 프로그래밍 및 작업상의 오류 • php 스크립트의 업로드 • 소스는 올라오는 즉시 확장자를 phps 로 변경 • 아파치 설정에서 phps 가 소스만 볼수 있도록 설정 • 아예 업로드 금지 • 스크립트 파일이름 임의 변경 • DB에 BLOB 으로 입력 • 기타 알고리즘의 오류 • 기타 백업 파일에 의한 문제 • VIM의 백업파일 생성 • /usr/share/vim/vimrc 파일 • "set nobackup • FS 이용 시 Editor 의 백업파일 생성 • FTP 의 백업파일 생성

  16. PHP 자체 버그 예 –syslog() • 문제점 • PHP 스크립트 사용 가능한 웹 서버가 php.ini 에서 에러 로깅의 기능을 가능하게 했을 경우 POST 방식으로 웹 서버에서 php3 스크립트를 생성 • 쉘코드와 다른 데이타를 에러 메시지에 포함 시킬수 있음 • 이 메시지는 항상 스트링 형식으로 syslog() 함수에 전달 • 익스플로잇 프로그램과 함께 쉘 코드를 일반 사용자 아이디로 원격으로 실행이 가능 • 해결방법 • php.ini에 로깅를 사용하지 못하도록 설정 • PHP 스크립트에 syslog 명령어를 사용금지 • 참고 : http://www.securenews.co.kr/board.html

  17. 서버 설정파일 문제의 실례 • 검색엔진 이용 connect.inc 찾기 결과

  18. 서버 설정파일 오류의 실례 • httpd.conf 설정파일

  19. 로컬 사용자의 스크립트 파일 접근 문제 • 문제점 • PHP에서 MySQL 이나 oracle 등의 데이타베이스에 접속하기 위해 스크립트 파일에 계정명 그리고 패스워드를 기입 • rw-r--r--라는 디폴트 퍼미션으로 생성된 PHP 소스파일은 같은 서버에서 웹호스팅서비스를 받는 불순한 사용자의접근 가능 • 해결책 • 패스워드와 계정명 , 데이타베이스명이 기입된 파일은 퍼미션을 rwxr-x---로 수정 • telnet [사용도메인] 으로 로그인 • php3 소스파일의 퍼미션 수정 : chmod 750 파일명

  20. NMAP -- The Network Mapper • http://www.insecure.org/nmap/ • 대규모 네트웍의 포트스케닝 PERL 유틸리티 • 단일 호스트에도 잘 작동함 • 다양한 프로토콜을 지원 - UDP, TCP, ICMP... • GUI 및 유용하고 편리한 기능 제공

  21. NMAP -- The Network Mapper • namp 실행 결과

  22. Web Probe • URL : http://www.securityspace.com • web server type, OS, response time • certificate data for SSL sites. • Regular Information • Web Server Software • Server History • Response Time • Security Information • Security Protocol • Encryption Level • Certificate Data

  23. Web Probe - Results phpschool.com 점검 결과 SecuritySpace (SSL) 점검 결과

  24. 맺음말 • 어떠한 시스템도 "완벽하게 안전"할 수 없음 • 가능한 최선의 방법은 시스템에 침입하는 일을 최대한 어렵게 만드는 것 • PHP 의 강력함을 적절히 통제하기 위한 조치 및 연구 필요 • 웹 프로그래머는 반드시 네트웍 엔지니어 및 시스템 관리자의 능력 겸비 필요 • PHP의 보안 문제의 대부분은 개발자의 무지와 설정의 오류에서 비롯됨 • 게으름과 무관심이 가장 큰 문제 • 주요 사이트의 꾸준한 모니터링 필요

  25. 참고 사이트 • 통신망침해사고대응팀 http://www.certcc.or.kr/ • 한국정보보호센터 http://www.kisa.or.kr/ • 해커즈 뉴스 http://www.hackersnews.org/ • 한국전산원 http://www.nca.or.kr/ • 한국 아파치 사용자 모임 http://www.apache.kr.net/ • PHPSCHOOL http://phpschool.com/ • ZEND http://zend.com/

  26. 감사합니다 Download http://phpschool.com - 자료실

More Related