제4회 해킹방지 워크샵 2000. 12. 5 phpschool.com 정진호 loveme

Download Report

Transcript 제4회 해킹방지 워크샵 2000. 12. 5 phpschool.com 정진호 loveme

Web & PHP 보안 대책




제4회 해킹방지 워크샵
2000. 12. 5
phpschool.com 정진호
[email protected]
와우리눅스㈜
Contents
 무엇이 무엇인가?
 PHP 의 특징
 PHP Usage Stats
 웹 서버 보안 관리
 아파치 설정 - httpd.conf
 PHP 설정 - php.ini
 웹서버 보안 문제의 몇가지 유형
 서버 설정 문제의 실례
 NMAP & Web Probe
와우리눅스㈜
무엇이 무엇인가?
 웹의특성




buggy software opens up security holes
large, complex programs contain bugs
web servers are large, complex programs
불특정 다수라는 웹 서비스의 특성상 보안 문제의 발생 가능성
이 높다
 관리자 측면
 시스템 사용자들의 CGI 서비스
 외부 사용자에 대한 노출
 잘못 설정된 설정파일의 위험성
와우리눅스㈜
무엇이 무엇인가?
 사용자 측면
 웹서핑은 안전해 보이나 그렇지 않음
 ActiveX 또는 Java 애플릿 등은 사용자 시스템 침입 가능
 쿠키(cookie) 및 서핑 히스토리의 보관
 운영자 및 사용자 모두 Web 의 특성에 대한 이해 필요
 TCP/IP 프로토콜은 보안이 고려되지 않은 설계
 브라우저를 통해 전송되는 사용자 정보는 누출 가능
와우리눅스㈜
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
와우리눅스㈜
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
Module
2000/9
2000/9
%
2000/10
2000/10
%
Growth
%
PHP
437327
32.96%
429589
32.49%
1.45%
FrontPage
248015
18.69%
247642
18.73%
-0.19%
perl
134207
10.11%
111576
10.09%
0.25%
mod_ssl
114988
8.67%
133414
8.44%
2.71%
OpenSSL
81016
6.11%
78030
5.90%
3.47%
Apache
JServ
48715
3.67%
46404
3.51%
4.62%
출처 : http://www.securityspace.com/s_survey/
와우리눅스㈜
PHP Usage Stats
 Domains : 3,815,440
 IP Addresses : 715,283
출처 : http://www.netcraft.com/Survey/
와우리눅스㈜
웹 서버 보안 관리
 DMZ에 웹 서버를 위치시키고 http(80) 혹은 https(443)를 제외한 모든 포
트에 대해 방화벽을 설치.
 SSH 과 같은 보안 로그인 기능이 없는 서비스는 제거. 불필요한 서비스는
공격에 이용 가능
 일회성 패스워드 혹은 암호화된 연결이 아니라면 모든 원격 관리는 불허
 관리자나 루트 레벨의 접근을 가질 수 있는 사람의 수를 제한
 모든 사용자의 활동을 기록하고 인터넷 상의 다른 호스트에 로그들을 저
장한다.
 모니터링 시스템으로 주기적으로 의심이 가는 활동에 대해 기록
 /cgi-bin 스크립트 디렉터리에서 불필요한 파일을 삭제
 Printenv , test-cgi
 웹 서버에 기본적으로 제공되는 문서 트리 삭제
 htdocs/manual 등
 발표되는 즉시 관련된 모든 패치를 적용
 원격관리 시 보안 연결이 가능하도록 하는 SSH 이용
 nmap 과 같은 툴로 취약성에 대해 웹 서버를 주기적으로 스캔
와우리눅스㈜
아파치 설정 – httpd.conf
 User nobody
 Group nobody
 아파치의 최초의 프로세스만 수퍼유저 권한으로 실행 이후 실
제 서비스는 복사(fork)된 자식 프로세스가 담당
 부모 프로세스는 요청에 따라 적절한 수의 자식 프로세스를 생
성하고 제거하는 것을 담당
 Port 80
 1023 이하의 포트 사용 시 root 권한으로 실행
 <Directory />

Options FollowSymLinks Indexes

AllowOverride None
 </Directory>
 Indexes 옵션제거
와우리눅스㈜
아파치 설정 – 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
와우리눅스㈜
PHP 설정 – php.ini
 include_path
 require(), include() 등의 함수에 의해 사용되는 인클루드 파일
의 디렉토리 위치
 :(unix) , ;(win32) 로 복수의 디렉토리 지정 가능
 gpc_order
 GET/POST/COOKIE 변수의 우선 순위
 초기값 - GPC
 ex) GP - 쿠키무시 , 동일한 이름의 post 변수는 get 변수로
덮어씀
 open_basedir




PHP 엔진에 의해 사용될 스크립트 파일의 위치 지정
해당 디렉토리 이외의 스크립트 파일들은 해석(실행)되지 않음
심볼릭 링크의 사용은 가능
초기값은 모든 파일을 실행 가능
와우리눅스㈜
PHP 설정 – php.ini
 safe_mode On
 안전모드로 php를 실행
 doc_root
 만일 safe_mode 가 설정되면 해당 디렉토리 밖의 모든 파일이
실행금지됨
 upload_max_filesize
 업로드 할 수 있는 최대 파일 크기를 설정
 upload_tmp_dir
 파일이 업로드 될 디렉토리. 기본적으로 /tmp
 max_execution_time
 스크립트 실행 시간을 초단위로 설정
 memory_limit
 스크립트 실행시 사용가능한 메모리 크기 (byte).
와우리눅스㈜
웹서버 보안 문제의 몇가지 유형
 서버 설정 상의 오류 → 매뉴얼 숙독 및 관련사
이트 방문
 프로그래밍 상의 오류 → 수많은 테스트와 사
용자 피드백을 통한 지속적 패치
 보안 버그 → 관련 사이트 모니터링
와우리눅스㈜
설정 상의 문제
 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 를 반드시 별도로 관리
와우리눅스㈜
프로그래밍 및 작업상의 오류
 php 스크립트의 업로드
 소스는 올라오는 즉시 확장자를 phps 로 변경
 아파치 설정에서 phps 가 소스만 볼수 있도록 설정
 아예 업로드 금지
 스크립트 파일이름 임의 변경
 DB에 BLOB 으로 입력
 기타 알고리즘의 오류
 기타 백업 파일에 의한 문제
 VIM의 백업파일 생성
 /usr/share/vim/vimrc 파일
 "set nobackup
 FS 이용 시 Editor 의 백업파일 생성
 FTP 의 백업파일 생성
와우리눅스㈜
PHP 자체 버그 예 – syslog()
 문제점
 PHP 스크립트 사용 가능한 웹 서버가 php.ini 에서
에러 로깅의 기능을 가능하게 했을 경우 POST 방식으로
웹 서버에서 php3 스크립트를 생성
 쉘코드와 다른 데이타를 에러 메시지에 포함 시킬수 있음
 이 메시지는 항상 스트링 형식으로 syslog() 함수에 전달
 익스플로잇 프로그램과 함께 쉘 코드를 일반 사용자 아이디로
원격으로 실행이 가능
 해결방법
 php.ini에 로깅를 사용하지 못하도록 설정
 PHP 스크립트에 syslog 명령어를 사용금지
 참고 : http://www.securenews.co.kr/board.html
와우리눅스㈜
서버 설정파일 문제의 실례
 검색엔진 이용 connect.inc 찾기 결과
와우리눅스㈜
서버 설정파일 오류의 실례
 httpd.conf 설정파일
와우리눅스㈜
로컬 사용자의 스크립트 파일 접근 문제
 문제점
 PHP에서 MySQL 이나 oracle 등의 데이타베이스에 접속하기
위해 스크립트 파일에 계정명 그리고 패스워드를 기입
 rw-r--r--라는 디폴트 퍼미션으로 생성된 PHP 소스파일은 같
은 서버에서 웹호스팅서비스를 받는 불순한 사용자의 접근 가
능
 해결책
 패스워드와 계정명 , 데이타베이스명이 기입된 파일은 퍼미션
을 rwxr-x---로 수정
 telnet [사용도메인] 으로 로그인
 php3 소스파일의 퍼미션 수정 : chmod 750 파일명
와우리눅스㈜
NMAP -- The Network Mapper





http://www.insecure.org/nmap/
대규모 네트웍의 포트스케닝 PERL 유틸리티
단일 호스트에도 잘 작동함
다양한 프로토콜을 지원 - UDP, TCP, ICMP...
GUI 및 유용하고 편리한 기능 제공
와우리눅스㈜
NMAP -- The Network Mapper
 namp 실행 결과
와우리눅스㈜
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
와우리눅스㈜
Web Probe - Results
phpschool.com 점검 결과
SecuritySpace (SSL) 점검 결과
와우리눅스㈜
맺음말
 어떠한 시스템도 "완벽하게 안전"할 수 없음
 가능한 최선의 방법은 시스템에 침입하는 일을 최대한
어렵게 만드는 것
 PHP 의 강력함을 적절히 통제하기 위한 조치 및 연구
필요
 웹 프로그래머는 반드시 네트웍 엔지니어 및 시스템 관
리자의 능력 겸비 필요
 PHP의 보안 문제의 대부분은 개발자의 무지와 설정
의 오류에서 비롯됨
 게으름과 무관심이 가장 큰 문제
 주요 사이트의 꾸준한 모니터링 필요
와우리눅스㈜
참고 사이트







통신망침해사고대응팀 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/
감사합니다
Download
http://phpschool.com - 자료실