프로그래밍[Univ]/컴퓨터보안

[컴퓨터보안] Access Control part 3. 제한 방법/도구

Cloud Travel 2013. 5. 11. 23:11

* CAPTCHA

 - Completely Automated Public Turing test to tell Computers and Human Apart

 - 완전히 컴퓨터 주관으로 Turing Test를 하는데 사람은 통과하지만 컴퓨터는 통과하지 못하게 하는 것

 - 컴퓨터가 문제를 만들고 책점을 하지만 자신은 통과할 수 없다.(Paradox)

 ⓐ 사용처

  - bots가 무더기로 투표하는 것을 막는데 사용한다.

  - 무료 이메일 서비스에서 스팸성으로 무한정으로 이메일 등록하는(Bot 생성)을 방지한다.

  - 검색엔진에 의해 자신의 HTML을 숨기기 위해서 사용한다.

 ⓑ 원칙/법칙

  - 인간은 쉽게 해결해야 한다.

  - 기계는 통과하기 힘들거나 불가능해야 한다.

  - 사람도 통과하지 못하는 문제에 대비하기 위해 여러개의 CAPTCHA를 준비한다.

 ⓒ 예

  - OCR문제

 

 ⓓ CAPTCHA와 AI

  - 왜곡된 텍스트를 컴퓨터가 인식하는 것은 AI의 도전과제이다.

  - 해커는 CAPTCHA에 의해 보호된 것을 자동으로 뚫는 것을 만들기 위해 AI에[ 대한 상당한 지식을 필요로 할 것이다.


* Firewalls 

 - 외부망으로부터 들어오는 특정 패킷의 접근을 막으므로서 외부망으로부터 내부망을 보호하는 것

 - 불법적인 동작, 비허가 사용자의 접근, 서비스 거부 공격을 막는다.

 - packet filter, application gateway, privacy firewalls 방법으로 구현된다.

 ⓐ packet filter

  - 내부망은 특정 라우터를 반드시 통과해야 외부망에 접근이 가능하다.

  - 이 라우터는 각 패킷에 통과 여부를 결정하는 packet을 필터링 기능을 수행한다.

  - 패킷 필터 여부는 표로 정의하여 저장한다.(Policy and setting)

  - ACL(Access control lists) : 모든 도착 패킷에 적용되는 규칙들을 정의한 테이블

  - stateless packet filter : 논리적으로 타당하지 않은 패킷도 허용될 수 있다.

  - stateful packet filter : 모든 TCP연결을 추적한다.

  - stateless 일 경우 공격자는 지속적으로 port번호를 변경하면서 ACK을 보낸다. 

   > 방화벽을 통과하는 경우 그 port를 이용하여 내부로 접속이 가능하게 된다.

  - stateful 일 경우 ACL에 연결검사 항목을 추가하여 stateless에서 발생하는 공격을 방어한다.

  - 빠르지만, 바이러스에 취약하며, 현재 연결 상태를 기억하지 못한다.

 ⓑ Application gateways

  - 응용 데이터 필드에서 필터링을 실시한다.

  - 느리지만, 나쁜 데이터를 걸러 낼 수 있다.


* 침입 방지 시스템(Intrusion Prevention Systems)

 - 공격자기 들어오는 것을 방지한다.

 - 일종의 경보시스템으로 인증, 방화벽, 바이러스 방어등 전통적인 컴퓨터 보안의 관심이 사항이다.


* 침입 탐지 시스템(Intrusion Detection Systems)

 - 침입 방어에도 불구하고 공격자가 시스템 내로 들어올 수 있다.

 - Intrusion detection systems(IDS)

  > 비정상적인 행위를 찾는 것으로 침입한 사람이 있는지를 판별한다.

  > 자동 IDS는 로그 파일을 분석하면서 이를 판별한다.

 - IDS는 침입 탐지에만 목적이 있지 해결은 하지 않는다.

 - 공격자는 내부인일 수도 있고 외부인일 수도 있다.

 - 공격 형태가 희귀하고 잘 알려지지 않을 수록 탐지가 점점 힘들어 진다.

 - 방화벽은 수동적으로 설정하는 것에 비해 IDS는 자동적으로 활동을 한다.

 - 침입 탐지 접근 방법

  ⓐ 흔적 기반 IDS

   > 일련의 미리 정의된 공격을 탐지하는 유형

   > 네트워크 트래픽을 탐지

   > 단순하며, 효율적이다. 하지만 이미 알려진 공격에만 반응을 하고, 새로운 공격 방법에 대해서 지속적인 갱신이 필요하다.

   eg) M초 동안 N번 로그인 실패(Trial Error) : 크래킹 시도로 보고, 경고를 한다.

        ( N과 M을 적당하게 하는 것이 힘들며, 공격자는 여러번의 시도로 N과 M을 알아낼 것이다.

          이를 이용하여 지속 공격을 실시할 것이며, 공격을 지연시키지만 막을 수는 없다. > N과 M을 계속 바꿔준다)

  ⓑ 비정상 기반 IDS

   > 비정상적인 행동은 높은 확률로 공격이다.

   > 통계를 기반으로 정상과 비정상적인 행동을 나눈다.

   > 정상적인 행동이라는 것을 하는 동안 이를 데이터화하여 추척하여, 정상행동을 추출해낸다.

   > 이때 분산도 계산해야 Trial 횟수에 대해서 어느정도 여유를 줄 수 있다.

   > 시스템이 변화함에 따라 IDS도 발전해야 한다.(Adaptation 필요)

   > 알려지지 않은 공격을 탐지할 수 있지만, 신뢰성이 불분명하다.

   eg1) Open, Read, close의 명령어에 대해서 올바르지 않은 순서로 발생하면 공격이다.

          (open,read), (read,close), (close, open), (open,open) : 정상

          (read, open), (close, read) : 비정상

   eg2) 정상적인 행동을 했을 때 얻은 통계량과 최근 사용자가 행동한 통계량을 비교한다.

          // h[i] : 정상적인통계량, a[i] : 현재 행동의 통계량

          for ( i = 0 ; i < n ; i++ ) s += (h[i] - a[i])^2;

          여기서 계산된 s값이 0.1보다 작으면 정상. 아니면 비정상 처리

          여기서 정상으로 처리된 경우 이전에 있던 통계량과 합쳐서 계산해야한다.

          이때 새로운 통계량은 h[i] = 0.8*h[i] + 0.2*a[i] 와 같이 일정 비율로 적용시킨다. 

 - 침입 탐지 적용 위치

  ⓐ 호스트 기반 IDS

   > 알려진 공격(흔적 기반), 의심스런 행동(비정상 기반)을 감지한다.

   > 오버플로우, 권한 상승등과 같은 공격을 탐지 하기 위해서 설계

   > 잘 알려진 공격은 백신으로 통해서 호스트에게 배포된다.

  ⓑ 네트워크 기반 IDS

   > 네트워크에서 잘알려진 공격(흔적 기반), 의심스러운 행위(비정상 기반)를 감시

   > 서비스 거부, 네트워크 탐색, 잘못 된 패킷 전송등의 공격을 탐지하게 설계되었으며 방화벽과 겹치는 부분이 많다.