본문 바로가기

System Security/Theory

Chapter 2. System Security Setting

Chapter 2. System Security Setting
1. Windows Security Setting : 로컬 보안 정책
 - Windows는 보안 설정을 할 수 있도록 '로컬 보안 정책'에서 따로 기능을 지원하며 계정, 감사 등의 정책을 설정할 수 있다.
 - 계정 정책

  · 계정은 암호를 추측해서 해당 계정으로 침투하는 공격(Brute Force 공격)에 이용당할 수 있어 계정 정책을 통해 계정을 보호한다.
  · 계정 정책의 종류
  ◦ 암호 정책

   ▹ 암호의 사용 기간 및 복잡성 설정
   ▹ 설정 정책
    ▸  최대 암호 사용 기간 : 암호를 최대로 사용할 수 있는 기간(Default : 42일)
    ▸  최소 암호 사용 기간 : 암호를 최소 사용해야하는 기간(Default : 1일)
    ▸  최소 암호 사용 길이 : 암호를 설정할 때 최소 문자의 수(Default : 7문자)
    ▸  복잡성 : 암호의 복잡성을 사용할 것 인지에 대한 값. 복잡성 설정은 보안 템플릿에서 설정 가능(Default : 사용)
    ▸  해독 가능한 암호화 : 운영 체제가 해독 가능한 암호화를 사용하여 암호를 저장할지 여부를 결정(Default : 사용 안 함)
  ◦ 계정 잠금 정책

   ▹ 계정 잠금 임계값 설정(Log on에 몇 회 이상 실패 했을 시 계정이 잠기는 값 설정)
   ▹ 설정 정책
    ▸  계정 잠금 기간 : Log on 실패 제한 횟수 초과 시 계정이 잠기는 기간 설정(Default : 정의되지 않음)
    ▸  계정 잠금 임계 값 : Log on 실패 제한 횟수 설정(Default : 0)
    ▸  계정 잠금 수를 원래대로 설정 : Log on 실패 횟수 Counter 초기화 시간(Default : 정의되지 않음)
 - 감사 정책
  · 사용자의 흔적 또는 운영 체제가 사용하는 것을 확인하고 보안 Log에 기록하는 것
  · 감사 내용은 Log(보안 로그에 저장) 기록 또는 보고서로 작성될 수 있으며 6하 원칙으로 작성된다.
  · 일반적인 감사 Event 유형
  ◦ 개체 Access 감사
  ◦ 계정 관리
  ◦ System에 Log on, Log off하는 사용자
  · 설정 방법 : secpol.msc에서 감사정책 또는 개체에서 '개체 액세스 감사'에서 설정
  · 정책 설정이유
  ◦ System 내의 성공, 실패 Event 확인
  ◦ 공인 되지 않은 자원 사용 최소화
  ◦ 활동 기록 유지
  ◦ 기록 유지로 인한 보안성 확대
  · 감사 정책 설정 시 미리 결정해야하는 사항
  ◦ 감사하려는 Event 범주 지정
  ◦ 보안 Log의 크기 및 동작 설정
  ◦ 개체 Access 감사를 할 경우 개체 Access 유형 결정
  · 감사 Event 유형

  ◦ 개체 액세스 감사
   ▹ 감사할 개체로 설정한 개체에 접근 시 감사할지 여부를 결정
   ▹ 감사할 개체 설정 방법
    ▸  감사할 개체는 해당 개체의 속성에서 설정
  ◦ 계정 관리 감사
   ▹ 계정의 설정을 바꿀 시 감사할지 여부를 결정
  ◦ 계정 로그온 이벤트 감사
   ▹ 계정을 확인하기 위해 해당 Computer를 사용하는 다른 Computer에서의 사용자 Log on Instance 또는 Log off Instance를 감사할지 여부를 결정
  ◦ 권한 사용 감사

   ▹ 사용자 권한을 실행하는 사용자의 각 instance를 감사할지 여부를 결정
  ◦ 디렉터리 서비스 액세스 감사 
   ▹ SACL(System Access Control List)이 지정된 Active Directory 개체에 Access하는 사용자의 Event를 감사할지 여부를 결정
   ▹ 감사 내용
    ▸  Directory Service 변경
    ▸  Directory Service 복제
    ▸  Directory Service 복제 상세 정보
  ◦ 로그온 이벤트 감사
   ▹ 사용자 Log on Instance 또는 Log off Instance를 감사할지 여부를 결정
  ◦ 시스템 이벤트 감사
   ▹ Computer를 다시 시작하거나 종료할 때 또는 System 보안이나 보안 Log에 영향을 주는 Event가 발생할 때 감사할지 여부를 결정
  ◦ 정책 변경 감사
   ▹ 사용자 권한 할당 정책, 감사 정책 또는 Trust 정책에 대한 모든 변경 문제를 감사할지 여부를 결정
  ◦ 프로세스 추적 감사
   ▹ Program 정품 인증, Process 종료, Handle 복제 및 간접 개체 Access 등과 같은 Event에 대한 자세한 추적 정보를 감사할지 여부를 결정
 - Local 정책
  · 사용자 권한 할당

  ◦ 객체(사용자, Group, Computer)가 System에 접근할 수 있는 권한
  ◦ 항목
   ▹ 네트워크에서 이 컴퓨터 액세스/액세스 거부
    ▸  Windows 설정은 기본적으로 거부가 우선권을 갖기 때문에 Access 거부에 접근을 차단할 계정을 설정하면 Remote Login을 할 수 없게 된다.
    ▸  접속이 차단된 게정에 Login을 시도하면 경고 창이 발생한다.
   ▹ 로컬 로그온 허용/거부
    ▸  Network에서 해당 Computer Access 또는 Access 거부와 비슷하지만 Local Logon 거부는 Local에서 접속이 불가능하다.
    ▸  '네트워크에서 이 컴퓨터 액세스 거부' '로컬 로그온 거부' 모두 설정시 계정 사용을 중지한 것과 같다.
   ▹ 시스템 종료/원격에서 강제로 시스템 종료
    ▸  Local 또는 Remote에서 System을 종료할 수 있는 계정이나 Group을 설정한다.
  · 보안 옵션

  ◦ Local에서의 여러 가지 부가적인 Option을 설정할 수 있는 항목
  ◦ 항목
   ▹ 대화형 로그온 : 마지막 사용자 이름 표시 안함
    ▸  Login 할 때 System의 계정 목록이 뜨며 이 경우 사용자 편의를 위한 것이나 이 설정은 Login 권한이 없는 사용자가 해당 System의 계정을 알 수 있게 한다.
    ▸  해당 설정은 XP에서 사용자 계정의 Log on/Log off 방법에서 새로운 시작 Option을 해제하고 다시 Log on 시도 시 계정을 알 수 없다.
   ▹ 대화형 로그온 : 로그온 시도하는 사용자에 대한 메시지 제목/텍스트
    ▸  Local Log on이나 GUI 환경의 Terminal 접속, Remote 접속을 이용해 Login 시도 시 경고 창을 생성해 Login 시도자에게 알려주기 위한 설정이다.
    ▸ 제목과 Message를 설정해 경고 창을 보이긴 하지만 Hacking을 막을 수는 없다.
   ▹ 네트워크 보안 : 다음 암호 변경 시 Lan Manager 해시 값 설정 안 함
    ▸  LM Hash 값의 저장 여부에 대한 설정이다.
    ▸  Vista 이후의 System에서는 기본적으로 저장하지 않는다.

 

2. Linux Security Setting : PAM(Pluggable Authentication Module)

 - PAM의 정의
  · Linux System에 공통적인 인증 방법을 제공한다.
  · Module의 교체, 추가 및 삭제를 통해 인증 방법을 바꿀 수 있다.
  · Service가 바로 Password File을 읽지 않고 PAM에게 요청해 인증하는 방식이다.
  · Service의 개발자가 사용자 인증에 신경 쓰지 않아도 되고 System Administrator가 직접 Service의 인증 동작을 세밀하게 제어할 수 있다.
  · 다양한 인증 Module을 호출해 사용자 인증 과정을 수행한다.
  · Windows Service의 DLL과 같은 Library 역할을 수행한다.
 - PAM의 동작 원리
  · Program이 사용자 인증이 필요하면 PAM Library 함수를 호출한다.
  · Module에서 인증에 대한 결정이 되면 결과 Message가 호출 Service에 전달한다.
  · PAM은 호출되면 호출한 Service의 설정 File을 검사
  ◦ 설정 File이 없으면 기본 설정 File(other)를 사용한다.
  ◦ 설정 File은 사용자 인증을 검사하기 위해 필요한 유형을 가진다.
  ◦ 이를 기초로 적절한 Module을 호출한다.
  ◦ Module을 통해 여러 가지 검사를 수행한다.(/etc/passwd, /etc/shadow 등의 File을 함께 이용해 인증)
 - PAM 관련 File
  · /etc/pam.d/[Service Name]
  ◦ PAM을 사용하는 각 Service에 해당하는 설정 File이 있다.
  ◦ File 이름은 Service 이름으로 되어 있다.
  ◦ 어떤 Service가 설정 File을 갖지 않는다면 기본 값인 Other가 자동으로 사용된다.
  ◦ 구성요소

   ▹ Auth Type 
    ▸  auth : 인증수행
    ▸  accout : 계정 환경에 대한 유효성 검증
    ▸  password : Password 변경에 대한 설정으로 Password 변경 시 적용
    ▸  session : 사용자가 인증을 받기 전후에 수행되어야 할 일을 지정(ex. Log 기록)
   ▹ Control Flag
    ▸  sufficient
     ▫  최종 결과는 성공만 영향을 주며 이전 수행결과에 required를 Control Flag로 사용하는 Module이 실패가 없어야 최종 성공을 반환한다.
     ▫  인증 성공 시
      ▪  다음 Module 실행 중단
      ▪  최종 성공 반환
      ▪  다음 Module이 존재해도 중단과 동시에 최종 성공반환(단, 이전에 required를 사용하는 Module의 실패가 없어야한다.)
     ▫  인증 실패 시 
      ▪  다음 Module 실행
      ▪  실행 결과에 영향을 주지 않음
    ▸  required
     ▫  최종 결과는 실패만 영향을 주며 이전 수행결과에 어떤 Control Flag를 사용하는 Module이 실행되더라도 최종 실패를 반환하게 할 수 있다.
     ▫  인증 성공 시
      ▪  다음 Module 실행
      ▪  실행 결과에 영향을 주지 않음
     ▫  인증 실패 시
      ▪  다음 Module 실행
      ▪  최종 실패 반환
    ▸  requisite
     ▫  최종 결과는 실패만 영향을 주며 이전 수행결과에 어떤 Control Flag를 사용하는 Module이 실행되더라도 최종 실패를 반환하게 할 수 있다.
     ▫  인증 성공 시
      ▪  다음 Module 실행
      ▪  실행 결과에 영향을 주지 않음
     ▫  인증 실패 시
      ▪  다음 Module 실행 중단
      ▪  최종 실패 반환
    ▸  include
     ▫  Auth Type에 따라 해당 File의 Auth Type에 해당하는 Module을 모두 인용한다.
    Module Path
    ▸  호출할 인증 Module의 경로를 포함한 Module의 이름을 사용
    ▸  기본 경로는 /lib/security로 Module의 이름만 사용할 경우 기본 경로가 File 이름 앞에 사용되는 것과 같음
   ▹ Module Argument
    ▸  사용되는 Module의 인자 값으로 각각의 Module이 기본적으로 가지고 있는 인자 값이 존재
    ▸  생략이 가능한 인자가 존재하며 인자 값이 필요한 Module에서만 사용되는 인자도 있으며 인자를 작성하지 않을 경우 Module이 정상적으로 실행되지 않음
  · /lib/security/[Module Name].so
  ◦ PAM Library에 호출되는 인증 Module들로 동적으로 적재된다.
  ◦ 다양한 인증 작업을 수행하는 Module, Library(*.so)로 구현되어 저장되어 있다.
  ◦ /etc/pam.d의 각 Service에 해당하는 File 내에 호출되어 사용된다.
  ◦ PAM Module
  
 ▹ pam_permit.so/pam_deny.so
    ▸  항상 성공/실패를 반환해 접근을 허용/거부
    ▸  모든 Auth Type과 사용가능
   ▹ pam_access.so
    ▸  Login Access Control Table로 IP, Host, Domain, Network를 이용해 접근을 제한한다.
    ▸  모든 Auth Type과 사용가능
    ▸  Module 설정 File /etc/security/access.conf
    ▸  /etc/security/access.conf 내용

     ▫  Field 1 : 접근 허가/거부의 여부( + : 허가 / - : 거부)

     ▫  Field 2 : 접근 허가/거부할 사용자(ex. ALL : 모든 사용자)
     ▫  Field 3 : 접근 허가/거부할 IP(ex. ALL : 모든 사용자 / Local : Local 사용자)
   ▹ pam_time.so
    ▸  Auth Type accout와 사용가능
    ▸  시간으로 계정 유무 검사
    ▸  Module 설정 File : /etc/security/time.conf
    ▸  /etc/security/time.conf 내용

     ▫  Field 1 : 규칙이 적용도리 Service 이름
     ▫  Field 2 : 규칙을 적용할 Terminal 이름
     ▫  Field 3 : 적용할 사용자 이름, 다수의 사용자일 경우 *, &, |, !를 사용해 나열 가능
     ▫  Field 4 : 규칙이 사용될 날짜, 시간을 설정
   ▹ pam_listlife.so
    ▸  지정한 File에 작성된 사용자명 목록을 인용해 접근 허용/거부를 설정한다.
    ▸  모든 Auth Type과 사용가능
    ▸  설정 File은 새로 만들어 사용할 수 있으며 File 경로를 Module Option에 넣으면 File에 작성된 사용자 이름을 Module이 작동할 때 인용하게 된다.
    ▸  Option

     ▫  item
      ▪  File 내용을 인용할 때 인용하는 방식을 설정한다.
      ▪  내용 tty, user, rhost, ruser, group, shell
     ▫  sense
      ▪  접근을 허가/거부 여부를 설정한다.
      ▪  내용 : allow, deny
     ▫  file
      ▪  인용할 File의 경로를 설정한다.
      ▪  내용 예 : /etc/sshuser_permit
     ▫  onerr
      ▪  오류가 발생 시 오류 발생 여부를 관련할 경우(succeed)와 관련하지 않을 경우(fail)를 설정한다.
      ▪  내용 : succeed, fail
    pam_succeed_if.so
    ▸  주어진 조건이 만족할 경우 성공을 반환한다.
    ▸  모든 Auth Type과 사용가능
    ▸  조건 유형
     ▫  user, uid, gid, shell, home, service
   ▹ pam_rootok.so
    ▸  사용자가 root일 경우 성공
   ▹ pam_env.so
    ▸  환경 변수를 적용/미적용 여부를 결정한다.
   ▹ pam_fprintd.so
    ▸  Password Prompt를 대신하는 인증 Service 중 한 가지를 담당하는 Module이다.
   ▹ pam_unix.so
    ▸  Password 검증 Module 중 가장 전통적인 Module이다.
  · /etc/security[Module Setting File]
  ◦ PAM Module 실행에 필요한 추가 설정 File이 저장되어 있다.
  ◦ File 이름은 해당 Service 이름에 .conf를 추가한 것과 같다.

 

'System Security > Theory' 카테고리의 다른 글

Chapter 6. BOF(Buffer OverFlow) II  (0) 2015.08.18
Chapter 5. BOF(Buffer OverFlow) I  (0) 2015.08.18
Chapter 4. Malware II  (0) 2015.08.18
​Chapter 3. Malware I  (0) 2015.08.18
Chapter 1. Password Cracking  (0) 2015.08.18