본문 바로가기
보안

정보보호개론] 14. WWW 보안

by excelnote2 2013. 5. 17.

* WWW 보안

WWW

  - 인터넷의 많은 서비스 중 가장 최근에 개발된 멀티미디어 서비스

  - 유럽 입자물리학연구소(CERN)이 처음 개발

  - GUI 서비스와 하이퍼텍스트 제공

  - 하이퍼텍스트는 HTML로 제공되며 HTTP 통신 프로토콜 사용


인터넷이 정보보호에 취약한 이유

  - 인터넷의 개방성

  - 인터넷이 사용하는 유닉스, TCP/IP 등의 원시코드 개방

  - 침입자들의 정보교환 용이


WWW 보안위협

  - 응용프로그램의 오류 이용 : 유닉스의 취약점과 웹서버, 웹브라우저, CGI

  - 네트워크 구조적 결함 이용 : IP위장, TCP 용량초과 공격, ICMP폭탄 같은

  - 불법적 웹 서버 설치 공격 : 성인사이트

  - 웹 브라우저와 외부 표시기에 존재할 수 있는 보안구멍으로 인한 치명적 위협요소


WWW 보안요구사항

  - 웹브라우저 보안

  - 호스트 보안

  - 웹 서버 보안

  - CGI 보안

  - 자바보안

  - 웹 보안 프로토콜


웹브라우저 보안

  - 캐쉬 : 사용자의 인터넷항해 기록을 갖고 있음(프라이버시 노출)

  - 캐쉬 디렉토리를 통해 사용자의 정보누출 뿐 아니라 악성 코드를 캐쉬에 저장하기도

  - 전자우편을 통한 메시지의 내용도 하드디스크에 저장

  - 외부프락시 서버를 사용할 경우 서버 운영자가 사용자의 항해 기록을 입수

  - 자바와 자바 스크립트 기능의 사용은 보안상 많은 취약점

  - 웹 브라우저가 다우로드 받은 파일을 처리하지 못할 때 외부도움 프로그램 실행 : 도움프로그램이 악성인 경우 많음

  - 팝업 윈도우 잘 안 읽음

  - 웹브라우즈의 크기에 의한 문제 : 웹브라우저가 큰 프로그램이라 보안취약점 있음(URL 365자 이상인경우 프로그램처럼)


호스트 보안

  - 호스트는 웹서버 프로그램이 수행되는 컴퓨터로써 호스트가 안전하게 운영되어야

  - 간결성 : 웹 서버를 구축할 시스템에 보안에 민감한 기능은 다른 시스템에 설치

  - 슈퍼사용자의 권한 제한

  - 접근통제 : 호스트에 대한 접근통제 매우 중요

  - 책임 추적정 확보 : 누가 어떤 일을 하는지 기록

  - 시스템 감사 : 업무수행의 효율성에 비추어 적정하게 정기적으로 시스템 감사

  - 보안의 중요성 공고

  - 백업 및 복구


웹서버 보안

 - 호스트를 위한 안전한 보안환경이 구축되었다면 웹서버도 안전하게 구축, 운용해야

 • 웹서버의 설치 및 관리

   - 루트가 아닌 사용자(webmaster)의 권한으로 서버 실행

   - 웹 서버가 설치된 디렉토리에 대한 접근권한 관리

   - 침입차단(firewall) 시스템 사용

     · 내부설치 : 프록시 기능을 이용하여 웹 서버를 보호

     · 외부설치 : 라우터의 접근제어 기능을 이용하여 웹 서버 포트만 열어줌

   - 만약 웹 서버가 유닉스의 루트권한으로 동작된다면 CGI 등의 취약점을 통해 중요한 시스템 파일에 접근 가능

   - 웹 서버 구축시 다음의 4개 파일 생성(소유자는 루트!)

     · access.conf : 서버 관련 파일 및 서버에서 사용하는 문서파일에 대한 접근통제권한 설정

     · httpd.conf : 웹서버 운용에 필요한 기본적 옵션 설정

     · mine.types : 파일 확장자와 MINE 파일 형식간의 매핑 정보 저장

     · srm.conf : 문서의 소유자가 누구인지, CGI스크립트는 어디에 존재하는지, 서버의 자원에 대한 전반적 내용을 담고있는 설정 파일

 • 로그(log)파일 관리

   - 웹 서버 프로그램에는 "log"라는 디렉토리 존재

     · access.logerror.log(웹서버 접근 성공 또는 실패)

   - 웹 서버에 문제 발생시 이 두 파일 비교

   - 사고방지는 불가능하며, 접근자료가 계속 누적되기 때문에 파일의 검토가 어려워 짐

 • 사용자 식별자와 패스워드를 이용한 기본 인증

   - 기본적 방법으로 HTTP 1.0버전부터 제공된 클라이언트 인증 방법

   - .htaccess : 접근통제를 요구하는 디렉토리마다 존재. 접근을 허용하는 사용자 식별자의 목록과 .htpasswd파일의 위치 등을 명시

   - .htpasswd : 사용자들의 로그인 이름과 패스워드 저장

   - .htgroup : 접근허용된 사용자가 많을 때 그룹으로 관리


CGI(Common Gateway Interface)보안

  - CGI는 웹 서버에서 외부 프로그램이나 소프트웨어를 실행하는 가장 간단한 방법

  - 클라이언트가 URL과 기타의 정보를 이용해서 웹 서버에게 서비스를 요청하면 웹 서버는 적절한 방법으로 CGI 스크립트를 실행시키고 이후 CGI스크립트가 요청에 대한 응답에 책임진다

  - CGI 실행결과는 일반적인 HTML 문장이 된다

  - 충분히 검증되지 않은 CGI가 웹서버에 설치되면 보안문제

  - 대부분 웹 서버가 지원하는 디렉토리 별 인증시스템도 CGI에 대해서는 효력없음

  - CGI 프로그램은 사용자 입력을 입력값으로 받아 실행


자바 보안

  - 자바는 네트워크 환경 및 분산환경의 사용을 위해 고안

  - 컴파일된 자바 코드는 이진 파일로 네트워크를 통해 전달되어 여러 시스템에서 실행

  - 자바 응용프로그램 : 일반적 응용프로그램들과 동일한 규칙을 따라 시스템 자원을 접근하거나 사용 + 자바 환경에 추가적으로 정의된 모든 규칙을 따라야 함

  - 자바애플릿 : 자바 환경에 추가적으로 정의된 규칙을 따르는 것보다 더욱 제약된 환경에서 수행(자바애플릿 열람기 또는 웹 브라우저에 의해 제공)

<!--[if !supportEmptyParas]--> <!--[endif]-->

<!--[if !supportEmptyParas]-->     웹 보안 프로토콜

암호 알고리즘 사용의 필요성

  - 웹 서버와 웹 브라우저간의 안전한 통신을 위한 사용자 인증 방법들은 만족할 요구사항 충족 못함

  - 현재의 HTTP에 암호 알고리즘을 추가시키는 것이 필요


웹에 암호알고리즘을 추가 작업의 어려움

  - 웹 서버와 웹 브라우저 프로그램에 암호 알고리즘 추가

  - 향후 개발될 암호 알고리즘까지 수용해야

  - 암호 기술은 국가간 수출입 제한

  - 모든 서버와 사용자의 키 인증을 전담할 기구는??


SHTTP(Secure HTTP)

  - 웹의 상업적 이용에 대비 HTTP에 보안요소 첨가

  - 범용으로 사용가능토록 설계

  - 응용수준에서 메시지암호화를 통해 안전한 트랜젝션 보장

  - 공개키 암호 알고리즘

  - SHTTP 특징

    · 클라이언트와 서버에서 행해지는 암호화 동작이 동일

    · HTTP가 가지고 있는 트랜잭션의 형태를 변화시키지 않음

    · PRM, PGP 등에서 쓰이는 다양한 암호문 형태 지원

    · 클라이언트의 공개키 요구하지 않음 -> 서버보다 클라이언트가 좀더 비밀유지 가능

    · 선택협상 과정이 있어서 획일적 암호화 지향(다양한 암호 알고리즘 사용 가능)HTTP와 양립 가능

    · 이론상 우수, 규격지원하는 브라우저와 서버 개발이 미비


SSL(Secure Soket Layer)

  - 넷스케이프사에서 처음 제안

  - 응용프로토콜과 TCP/IP 사이에 위치하며 데이터의 암호화, 서버의 인증, 메시지의 무결성을 제공

  - 서버에 대한 인증은 반드시 수행되지만 클라이언트에 대한 인증은 선택적으로 수행 가능

  - 서버와 클라이언트 양쪽의 TCP/IP 연결을 위해서 핸드쉐이크 프로토콜을 수행

  - 이 결과 양쪽은 암호화 통신에 합의하고 암호화 통신과 인증에 필요한 값을 생성 준비

  - SSL은 응용 프로토콜에서 생성해 낸 바이트 스트림의 암호화와 복호화만 수행

  - HTTP요청과 응답에 포함되는 모든 정보가 암호화 전송

  - 국내에서 많이 사용 40비트로 제한(80비트~128비트 권유)

  - 2계층 구조

    · SSL Record Protocol + SSL Handshake Protocol

  - SSL의 특징

    · 데이터의 암호화를 위한 비밀키를 핸드쉐이크 프로토콜 단계에서 정한 후, 그 키를 사용하여 암호화된 메시지로 통신하기 때문에 비밀성 보장

    · 공개키 암호 알고리즘 사용

    · 해쉬 알고리즘으로 메시지 인증코드를 만들어 메시지에 포함시키기 때문에 신뢰성 있는 통신

  - SSLSHTTP

    · SSLHTTP와 같은 응용 프로토콜의 하위에서 동작

    · SHTTP는 메시지 기반의 접근 방법을 사용

    · SSL의 상위에 SHTTP가 위치하는 구조로 서로 보완하여 새로운 웹 보안 매커니즘 개발 가능


단순 메시지 다이제스트 인증

  - HTTP가 가지는 특징을 모두 수용하며 안전한 사용자 인증을 추구

  - 사용이 자유로운 알고리즘을 이용하는 방법 중 가장 효과적 사용자 인증 기술

  - 클라이언트와 서버를 간단히 수정함으로 HTTP가 지원하는 기본인증 대치

  - 패스워드가 평문으로 전송되는 기본인증문제 해결

  - 전송시 웹 브라우저 사용자의 식별자와 패스워드, 타임스탬프를 입력값으로 하여 메시지 다이제스트 함수를 적용하여 일정한 길이의 출력하여 전송

  - 메시지 다이제스트 함수는 일방향 함수임

  - 서버는 요청을 받은 후 사용자의 입력값을 대입하여 비교


외부 프로그램을 이용한 웹 보안

  - 미국의 NCSA에서 연구한 방법

  - 전자우편을 위한 보안도구로 널리 이용되는 PGP를 웹의 보안 모듈로 사용하면서 설계된 방식

  - PGP는 다른 응용프로그램에 독립적으로 구성되어 있기 때문에 이것을 웹에 접속시켜 HTTP를 암호화시킴으로 안전한 웹 통신 구현 가능

  - 호환성 : 기존의 HTTPHTML에 수정을 요하지 않음

  - 이 방법에서는 웹 브라우저와 서버가 각각의 컴퓨터에서 암호화를 담당하는 외부 프로그램과 통신 가능해야 함

  - 웹 서버와 외부 프로그램간은 CGI 프로그램밍을 이용

  - 통신량 증가 ; 기존 웹 시스템에 외부프로그램을 추가

 

댓글