2009년 10월 5일 월요일

[01] 개요

1.1 웹어플리케이션 개요
웹어플리케이션이라함은 브라우저를 통해 접근할 수 있는 소프트웨어 응용프로그램으로 통상 서버 측에서 비즈니스 로직을 실행하고, 클라이언트 측에서 웹 브라우저를 이용하여 운용할 수 있는 프로그램을 UI를 구현한다.

그림1. 전형적인 웹어플리케이션의 아키텍처


1.2 보안

[보안의 3요소]
  • 비밀성(Confidentially)
    정보는 소유자가 원하는 대로 비밀이 유지되어야 한다
    허가받지 않은 비인가자나 프로세스에게 정보가 노출되지 않도록 하는 것을 보장한다.
    인가받은 사람만이 정보에 접근할 수 있어야 한다.
    비밀성 보장을 위한 수단에는 접근통제, 암호화 등이 있음

  • 무결성(Integrity)
    비 인가된 자에 의한 정보의 변경, 삭제, 생성을 보호하여 정보의 정확성과 완전성이 보장되게 한다.
    무결성을 통제하기 위한 수단에는 물리적 통제, 접근 통제 등이 있음

  • 가용성(Availability)
    정보시스템은 적절한 방법으로 작동되어야 하며, 정당한 방법으로 권한이 주어진 사용자에게 정보서비스를 거부하여서는 안 된다는 원칙
    가용성 확보를 위한 통제 수단에는 데이터백업, 중복성 유지, 물리적 위협 요소로부터 보호등이 있다.
[보안의 평가 기준]
다음은 대표적인 보안 평가 기준이다.
  • TCSEC (Trusted Computer System Evaluation Criteria)
    Orange Book이라고도 부름
    1985년 미국방부 표준으로 채택된 컴퓨터 시스템 보안성 평가 기준
    다른 나라의 보안성 평가 기준서에 큰 영향을 미침
    등급 : (낮음)D, C1, C2, B1, B2, B3, A(높음)

  • ITSEC (Information Technology Security Evaluation Criteria)
    영국, 독일, 프랑스, 네덜란드 등에서 사용하는 보안성 평가 기준
    등급 : (낮음)E0 ~ E6(높음)

  • CC (Common Criteria)
    국제 공통 평가 기준
    세계 각국의 평가 기준이 상이하여 평가에 비용과 시간에 많이 소요되는 문제점을 해결하기 위함
    등급 : (낮음)EAL0 ~ EAL7(높음)

[보안및해킹 영역]
  • 시스템 보안
    운영체제 취약점 -> 패치 및 업그레이드
    환경설정 취약점 -> 주기적인 감사

  • 네트워크 보안
    네트워크 취약점 -> 방화벽, IDS(Intrusion Detection Systems : 침입탐지시스템), VPN(Virtual Private Network : 가상사설망), IPS(Intrusion Prevention Systems : 침입방지시스템)
    프로토콜 취약점 -> DoS(Denial of Service : 서비스 거부 공격), DDoS(Distributed Dos : 분산서비스 거부 공격), DrDoS(Distributed Reflection DoS : 분산 반사 서비스 거부 공격) 방지

  • 웹보안 (전체 해킹 중 80% 이상 비중 차지함)
    웹서버와 방화벽의 보안을 강화
    개발시 보안을 고려해서 코딩
    DBMS 취약성을 패치를 통해 보안을 강화

[최신 보안 이슈]

  • 키보드보안
    인터넷 뱅킹 및 쇼핑몰의 온라인 거래 시 필수적으로 입력되는 개인정보 유출
    유출시 금융사고로 직결
    사용자의 키보드 입력정보를 도청하는 것을 방지
    사용자 PC에 키보드 보안을 위한 Key device driver 설치
    사용자 Key 입력시 Filter driver나 Hooking driver를 통해 입력 값을 가로채서 암호화한 후 해당 어플리케이션에 전달
    키로거 기술은 키로거에 감염된 컴퓨터를 쓰는 사람들의 키보드 입력을 기록하는 것

  • 파밍(Pharming)
    범죄를 목적으로 하는 해커들이 인터넷 트래픽을 원래 사이트에서 동일해 보이는 다른 사이트로 리다이렉션하여 사용자가 가짜 사이트의 데이터베이스에 사용자 이름과 암호를 입력하도록 하는 수법
    가짜 웹사이트의 사용을 의미하는 파밍은 전자메일 피싱사기와 비슷해 보이나, 사용자의 참가 또는 지식이 전혀 없는 상태에서 가짜 사이트로 리다이렉션 될 수 있다는 점에서 좀 더 교활한 사기 수법
    DNS 서버를 공격하거나 사용자의 host 파일을 공격하여 URL의 IP를  크래커의 IP로 변조

  • 피싱(Phishing)
    개인정보를 낚시하듯  낚아챈다는 뜻에서부터 유래
    AOL 계정 도둑에서 유래 네티즌이 만드는 온라인 백과사전 위키피디아에 따르면 피싱은 1996년 처음 등장, 당시 해커들이 아메리카온라인(AOL)계정을 훔치려고 사용한 수법

[네트워크 보안]

  • DoS 공격
    시스템이나 네트워크의 구조적인 취약점을 공격하여 리소스를 고갈시켜 정상적인 서비스를 지연시키거나 마비시키는 공격
    => 방화벽 설치, IDS 운영, 안정적인 네트워크 설계

  • Spoofing
    사전적으로는 "속이기"라는 의미이며, 다른 시스템의 신뢰관계를 속여 침입하는 해킹기술

  • Sniffing
    컴퓨터 네트워크 상에 흘러 다니는 패킷을 엿듣는 도청과 같은 행위
    => 암호화, 스니퍼탐지

  • Session Hijacking
    클라이언트의 세션을 가로채서 일시적으로 클라이언트 세션을 끊고 세션을 빼앗아 인증을 회피하는 방법
[서버시스템 보안]

  • 슈퍼유저 통제
    슈퍼유저 권한에서 보안관리 권한을 분할하여 보안관리자에게 이관
    슈퍼유저의 로그인 위치 및 로그인 방법 통제
    일반 사용자의 su사용 통제
    슈퍼유저의 권한 중 필요한 부분을 일반사용자에게 이양
    핵심자원에 대한 접근 통제 (프로세스 kill 방지, 핵심파일 접근 통제)

  • 접근통제 강화
    모든 사용자에게 별도의 계정을 할다하여 개인별 책임 추적성 구현
    계정 보호 구현
    => 비 활동성 계정 정리, 임시 계정 발급 및 말소 절차 구현, 패스워드 강화 정책 구현
        반복적인 로그인 시도 통제
    파일 시스템 통제를 강화하기 위해 퍼미션 모드를 세분화 하여 접근 통제 정책을 수립
    백업 오퍼레이터는 특정 시간에 특정 백업 소프트웨어를 사용해서만 전체 시스템 읽을 수 있도록 함
    불필요한 TCP 서비스를 모두 제거하고 포트별로 서비스 대상 네트워크, 호스트, 터미널을 통제
    중요 위반 사항 발생시 감사 로그

  • 로그 보호
    분산되어 있는 시스템 파일들의 변경에 대한 감사 정책을 수립
    특정 로그 파일들은 반드시 관련 프로세스에 의해서만 변경되도록 하여 슈퍼유저 권한으로도 조작 할 수 없도록 통제 정책을 수립
    원척적으로 조작이 불가능한 별도의 감사로그의 운용

  • 관리 강화
    일관된 보안 관리 수준
    직무기반 접근 통제를 수립하여 통제 정책을 구현
    => 반복적인 통제 정책의 수립작업을 피한다.
    서버간 통제 정책의 자동 전파
    로그 필터링 및 라우팅
    => 정책 시뮬레이션 기능을 구현 - 통제 정책의 수립, 시험, 적용
[어플리케이션 보안]

  • 사용자 인증 및 접근 통제
    상호인증, 복합인증의 지원
    => SmartCard, OTP, 인증서 등

  • 권한별 접근 제어
  • 기밀성 유지를 위해 전송중인 데이터 암호화 및 무결성 보장
  • 감사 및 추적을 위한 로그
  • 어플리케이션 개발시 자체적인 취약성으로 발생할 수 있는 불법적인 접근을 차단하기 위해 개발 단계부터 보안 취약성을 고려한 개발
[데이터 보안]

  • 접근제어
    강력한 인증 시스템 필요
    모든 커넥션에 대한 접근 통제

  • 권한관리
    세부적인 권한 제어
    완벽한 통제를 위한 미리 등록된 SQL만 수행이 가능하도록 하는 기능

  • 데이터 암호화
    정보는 모두 암호화하여 저장
    암호화를 풀 수 있는 권한은 DB관리자에게는 주지 않고 보안 담당자만 가능하도록 함
    DB관리자나 시스템 관리자들이 사용하는 모든 툴은 서버와 통신을 할 때 데이터를 암호화

  • 감사
    사고 원인 추적을 위해 DB에서 사용된 SQL을 모두 기록하고 원하는 것을 추출할 수 있어야 함
    보안 규칙 위반시 경고할 수 있어야 함

[경계선 보안]

  • 시설 접근 통제
    잠금 장치

  • 인적 접근 통제
    piggybacking에 대한 예방, 마그네틱 카드
    [piggybacking - 승인된 사용자나 사람이 들어가는 경로를 몰래 같이 들어 가는 것으로 출입문이 열려 있을때 재빨리 들어가는 방법, 또는 전송회선이나 전화선에 인가된 경로로 비 인가된 라인을 연결하여 도청하는 방법 등을 의미]

  • 외부 경계 보호 매커니즘

[물리적 보안]
  • 관리적 통제
    시설선택 또는 건설
    시설관리
    인적 통제
    훈련, 비상 대응 및 절차

  • 기술적 통제
    접근 통제
    침입탐지, 경보, 모니터링
    난방, 통풍, 공기조절 통제
    전력공급
    화재 탐지 및 진압
    백업
    HVAC(Healing, Ventilating, and Air Conditioning)

  • 물리적 통제
    담장
    잠금 장치
    조명, 시설 건축 자재

1.3 인터넷 서비스 구성

[인터넷의 구성요소]

  • WWW (World Wide Web)
    초기 : 정적인 링크를 이동, 정적인 데이터 (HTML 문서)
    현재 : 동적인 데이터의 필요성, 웹을 이용한 데이터 처리
    최신 : Web 2.0 참여와 공유를 통한 정보의 유통

  • Hyper Text
    60년대에 테드 넬슨이 만들어낸 신조어
    다른 문서와 연관관계를 가지는 텍스트를 의미
    하이퍼텍스트를 이용하면, 문서를 읽는 사용자는 단어나 문구를 마우스를 클릭하여 관련제에 대한 정보를 추가로 얻을 수 있다.

  • HTML (Hyper Text Markup Language)
    하이퍼텍스트를 효과적으로 전달하기 위한 언어

  • HTTP (Hyper Text Transfer Protocol)
    웹서버와 웹 브라우저간에 정보를 교환할 목적으로 사용되는 프로토콜

[HTTP Protocol]

  • Stateless Protocol
    이전 상태를 기억하지 못함
    접속을 요청하는 사용자에게 서비스를 제공하고 즉시 세션을 끊음으로써 또 다른 요청을 처리할 수 있는 장점(효율적인 통신이 가능)
    쿠키 또는 세션 정보를 이용하여 사용자의 인증 정보를 유지
    FTP나 Telnet처럼 한번 접속하면 접속을 끊을 때까지 연결된 상태를 유지하는 것이 아니고, 요청이 있을 때 접속을 연결한 다음 응답을 받고 나면 접속을 끊는 프로토콜임

  • HTTP Version
    ▷ HTTP/0.9
    단순한 서버로부터의 읽기 기능만 지원


    ▷ HTTP/1.0
    하나의 문서에 그림이 하나 있더라도 최초 텍스트가 저장된 HTML 문서를 전송 받고 난
            뒤 연결을 끊고, 그림을 받기 위해 다시 연결을 설정 한 후 그림을 전송 받는다.

    ▷ HTTP/1.1
    2001년 공식적으로 출시
    연속된 연결 요청이 있을 경우에 HTML 문서를 받고 난 후 연결을 끊지 않고 바로 그림 파
            일을 요청한다
    HTTP/1.0 에 대해 추가된 내용
    - 계층적이지 않은 프락시 지원
    - 캐시의 지원
    - 부적절한 지속적인 연결과 가상 호스트 통제
    URL 형태
    1.0버전과 다른 가장 큰 특징은 질의를 통해 데이터를 전송하는 것을 지원한다는 것이다.
    동적인 웹 어플리케이션의 주요 부분이긴 하지만 공격의 주요 부분이 되기도 한다. 실제
    로 공격자들이 가장 좋아하는 공격 부분이 이 질의를 하는 부분이다.
[HTTP Request]

  • 구성
    GET http://localhost:8080 HTTP/1.0
    Accept: */*
    Referer: http://localhost:8080/sample/board/List.jsp
    Accept-Language: ko
    Content-Type: application/x-www-form-urlencoded
    Proxy-Connection: Keep-Alive
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1
    .4322; InfoPath.2) Paros/3.2.13
    Host:localhost:8080
    Content-length:0
    Pragma: no-chache
    Cookie: JSESSIONID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Request 메소드
    - GET
       요청받은 정보를 검색해 온다.
       브라우저의 URL 창에 전달 변수 값이 보인다.
       보낼 수 있는 데이터의 크기가 최대 4KB

    - POST
       서버가 동봉된 정보를 받아들이고, 서버에서 동작하도록 하는 요청을 한다.
       URL에 요청 데이터를 기록하지 않고, 소켓을 이용해 데이터를 전송.
       보낼 수 있는 데이터의 크기 제한 없음

    - CONNECT
       HTTP/1.1 추가 요청 방식
       동적 모드로 터널 모드를 교환 할 수 있는 능력을 가진 프록시를 사용한다.

    - DELETE
       HTTP/1.1 추가 요청 방식
       명시된 리소스를 서버가 삭제 할 것을 요청한다. 기본적으로 이 기능은 대부분의 서버에서 비
       활성화 되어 있다.

    - HEAD
       GET 방식과 거의 같지만 요청받은 자료를 되돌려 주지 않는다.
       서버 측의 데이터를 검색하고 요청하는데 사용된다.

    - OPTIONS
       요청 받은 리소스에서 가능한 통신 옵션에 대한 정보를 요청한다.
       만일 "*"가 사용되면 요청받은 리소스는 일반적이라고 여겨지고, 오직 일반적인 것만 허용하
       는 이 요청 방식으로 응답한다.
       예를 들어 "*"를 사용하는 것은 오직 GET, HEAD, OPTIONS, TRACE 요청방식에서만 볼 수
       있다. 그러나 "/"는 모든 요청방식에서 허용한다.
       헤커들의 관점에서 상당히 유용한 정보를 제공해 줌

    - PUT
       내용이 제공되는 리소스에 저장되기를 바라는 요청

    - TRACE
       루프백 메시지를 위한 요청을 송신한다.
       요청은 목적서버로 송신되지만 프록시가 대신 응답하기도 한다.
       클라이언트가 보내는 요구 메시지가 거쳐가는 프록시나 게이트웨이의 중간 경로 및 최종 수
       신 서버까지 이르는 경로를 알아내는 데 쓰인다.

[HTTP Response]

  • 구성
    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Content-Type: text/html;charset=EUC-KR
    Content-Length: 1866
    Date: Wed, 04 Jun 2008 06:39:03 GMT
    Connection: close

  • HTTP Response Code
    - 100번대 : 정보전송
    - 200번대 : 성공
    - 300번대 : 리다이렉션
    - 400번대 : 클라이언트 측 에러
    - 500번대 : 서버측 에러

[웹 프록시]

HTTP 프록시는 인터넷 사용자가 자신의 IP 주소를 숨김으로써 자신의 온라인 ID를 변장하는 데 사용될 수 있다. 즉, 사용자가 웹 서핑을 익명으로, 일종의 게이트웨이 역할을 수행하여 완전히 익명 사용자의 IP 주소 아래 웹사이트를 방문할 수 있도록 할 수 있다. 그러나 안전하지 않은 HTTP 프록시가 있다. 일부 열려있는 HTTP 프록시들 중에는 불법 복제 시도와 사기 등에 사용자가 노출될 수 있다.

[소개] 멀티 코어를 100% 활용하는 자바 병렬 프로그래밍

——————————————————————————————————————————————
저자 : 브라이언 케츠, 더그 리, 팀 피얼스, 조셉 보우비어, 데이빗 홈즈, 조슈아 블로쉬
역자 : 강철구 출판사 : 에이콘 ISBN : 978-89-6077-048-5
가격 : ₩35,000
——————————————————————————————————————————————
[목차]

펼쳐두기..



[소개] 웹 어플리케이션 보안

——————————————————————————————————————————————

저자 : 허진경, 박승규 출판사 : 연학사
ISBN : 978-89-7000-404-4 가격: ₩18,000
——————————————————————————————————————————————
[목차]

펼쳐두기..


[01] 제1장 이클립스 SWT

제1장 이클립스 SWT

리치 클라이언트의 귀환

21세기로 넘어 오면서 웹 브라우져를 필두로 하여 웹페이지, 웹서버, CGI, 웹 애플리케이션과 같은 thin 클라이언트가 PC의 기본 플랫폼이 되었으며 많은 유지보수이슈와 무거운 동작성이라는 약점을 안고 리치클라이언트는 점점 사라져 갔다.
...
...
그러나 사용자 들은 점점 thin 클라이언트를 사용하면서 빈약한 사용자 체험, 웹 엔트로피의 증가, 다양한 플랫폼 및 다중 웹 브라우저에 대한 지원 부족 등의 문제들과 같은 제약을 뛰어 넘기 위해 DHTML, 자바스크립트, 액티브 X 컨트롤, 플래시가 범람하게 되었으며 이로 인해 thin 클라이언트는 다시 무거워 지기 시작했다.
...
이에 다시 리치 클라이언트가 귀환하게 되었으며, 각각의 비지니스 요구에 따라 thin 클라이언트와 Rich 클라이언트는 상호보완적 관계를 맺게 되었다.

리치 클라이언트 어플리케이션으로 일반적인 특징
  • 내부 인트라넷 애플리케이션 (사용자가 수백, 수천명으로 한정되어 있다.)
  • 폰트, 컬러, 위젯 등 UI에 대한 엄격한 요구사항이 존재
  • 파워유저 및 전문적인 이용자가 사용함으로 단축키 등의 빠른 반응을 필요
  • 매우 큰 데이터 셋을 갖고 있으며, 스크린에 많은 정보를 표시
  • 데스크탑과 다른 데스크탑 어플리케이션을 통합
  • 워크플로 유형 또는 협업 유형의 어플리케이션으로, 오픈라인에서 작업할 수 있는 환경이 중요

이클립스 리치 클라이언트 플랫폼
1. 이클립스 RCP
이클립스를 구성하는 컴포넌트와 이클립스 RCP를 구성하는 컴포넌트

이클립스RCP의 기본적인 구성 컴포넌트


2. 이클립스 RCP 리치 클라이언트 애플리케이션
리치클라이언트의 특징
  • 사용자 편의성을 높인 풍부한 사용자 체험제공
  • 플랫폼 독립적 실행
  • 하부 운영체제의 네이티브 위젯을 사용하여 네이티브 룩앤필을 제공
  • 드래그 & 드롭 기능과 같은 고급 사용자 인터페이스 제공
  • 통합된 업데이트 방식 제공
  • 확장성 제공

3. 이클립스 플러그인 아키텍처
이클립스 플러그인 아키텍쳐


4. 플러그인 vs. 제품

독립 어플리케이션인 스탠드얼론을 이클립스 RCP에서는 제품이라는 호칭으로 불린다.

5. 이클립스 SWT와 JFace

Standard Widget Toolkit는 다중 플랫폼에서 네이티브 리치 클라이언트 어플리케이션을 개발하기 위한 이클립스 컴포넌트로서 일종의 라이브러리이며 JFace는 SWT 코드의 반복과 복잡함을 간단하게 처리할 수 있도록 하기 위해 개발되었다.

이클립스 SWT

[02]제2장 제품 백로그 만들기

제2장 제품 백로그 만들기

제품 백로그는 우선순위가 매겨진 고객이 원하는 것(요구사항)에 대한 목록이며 이 백로그가 스크럼의 핵심이다. 고객이 원한는 것은 다른 말로 스토리 또는 백로그 아이템이라고 부른다.

[01]제1장 들어가는글

제1장 들어가는글

... 스크럼은 방법론이 아니라 프레임워크다. ... 스크럼의 장점이자 단점은 처한 상황에 맞게 융통성을 발휘해야만 한다...

주의
... 이 책에 담긴 모든 것은 나의 개인적이고 주관적인 의견을 반영한 것으로, ...

이 책을 쓴 이유
...'정말로 여러분이 어떻게 해야하는지'... 나의 실전 경험을 풀어놓는다...

그런데 스크럼이 뭐지?

 가을생각 ♬

적지않은 프로젝트를 겪으면서 한두가지 개발방법론을 적용하며 여러 시행착오를 겪었다. 새로운 일을 할때마다 마음가짐을 달리하며 '이번에는 잘해야지!', '이번에는 저번처럼 하지말자!!'라는 각오를 가지며 일을 하지만 매번 시지프스의 바위굴리기처럼 같은 실수를 반복하고 만다. 반복적인 실패는 한개인의 마음가짐의 문제는 아닌것 같다. 이젠 체계적인 방법으로 문제를 해결하는 시각이 필요한 때인것 같다.

[소개] 지속적인 통합 - 소프트웨어 품질을 높이고 위험을 줄이기

——————————————————————————————————————————————

저자 : 폴 M. 듀발, 스티븐 M. 마티야스, 앤드류 글로버 역자 : 최재훈
출판사 : 위키북스 ISBN : 978-89-92939-13-3
가격 : ₩22,000
——————————————————————————————————————————————
[목차]

펼쳐두기..