정보보안개론 (1)

송예원·2024년 9월 9일
0

보안

목록 보기
4/11
  1. 정보 보안의 세계

1) 정보 보안의 역사

  • 1950년대 이전
    에니그마: 평문 메시지를 암호화된 메시지로 변환하는 장치
    => 전쟁시 암호화를 하며 사용했지만, 컴퓨터로 해독이 가능해짐

  • 1960~ 1970년대
    해킹과 컴퓨터가 직접적 연관을 맺으며 발전
    => ARPA/ 유닉스 운영채제 개발/ 이메일 프로그램 개발/ 마이크로소프트 설립/ 애플 컴퓨터 탄생

  • 1980~ 1990년대
    해킹의 종류, 사건 발생이 다양해지고 그 수가 증가
    => 네트워킹 해킹 시작/ 정보 권리 논쟁 시작/ 해킹 문화 등장/ 해킹 도구 등장

  • 2000년대 이후
    컴퓨터가 대중화되며, 방화벽이나 백신이 보급됨.
    => 다양한 해킹 공격/ 바이러스/ 개인정보 유출, 도용/ 전자상거래 증가

2) 정보 보안의 이해

(1) 보안의 3대 요소

  • 기밀성: 인가된 사용자만 정보 자산에 접근 가능
    => 방화벽/ 암호/ 패스워드
  • 무결성: 적절한 권한을 가진 사용자가 인가한 방법으로만 정보 변경 가능
    => 정부가 아닌 개인이 위조지폐를 만든다거나...
  • 가용성: 필요한 시점에 정보 자산에 대한 접근이 가능
    => 24시간 편의점

(2) 보안 전문가의 자격 요건

  • 다양한 범죄 유형에 대한 학습 필요 (사이버 테러형 범죄, 일반 사이버 범죄...)
  • 윤리 의식 => 범죄에 사용하지 않을 것
  • 다양한 분야의 지식 (네트워크, 웹, DB 등)
  1. 시스템 보안

1) 시스템 보안의 이해

(1) 시스템

  • 시스템= 하드웨어+ 소프트웨어 +a

(2) 시스템 보안 주제

  • 시스템 보안: 비인가자가 파일, 폴더, 장치 등을 사용하지 못하게 제한해 시스템을 보호하는 기능
    • 계정 관리
    • 세션 관리
    • 접근 제어
    • 권한 관리
    • 로그 관리
    • 취약점 관리

2) 계정 관리

  • 계정 관리: 적절한 권한을 가진 사용자 식별
    기본 구성 요소: 아이디, 패스워드
    식별: 아이디로 가능하지만, 정확한 식별을 위해서는 인증이 필요함
    인증방법
    • 알고 있는 것: 기억하고 있는 정보로 인증
    • 가지고 있는 것: 신분증/ OTP이용
    • 자신의 모습: 홍채, 지문 등
    • 위치하는 곳: 위치의 적절성, 콜백 이용
      ** 콜백: 접속을 요청한 사람의 신원을 확인하고 본인인증 진행

(1) 운영체제의 계정 관리

  • 운영체제: 시스템을 구성하고 운영하기 위한 가장 기본적인 소프트웨어
    => 권한을 가지게 되면 해당 시스템에서 동작하는 다른 응용 프로그램에서도 권한을 가질 수 있음
운영체제 관리자로부터 응용 프로그램에 있는 정보를 보호하는 방법= 응용 프로그램 암호화
  • 윈도우의 계정 관리
    • Administrator: 윈도우에서 운영체제의 관리자 권한을 가진 계정
      윈도우 시스템의 모든 권한을 가지고 있음
      시스템에 가장 기본으로 설치되는 계정
      사용자 계정을 만들거나 없앨 수 있으며 디렉터리와 프린터를 공유하는 명령을 내릴 수 있음
      사용 가능한 자원에 대한 권한 설정 가능
      - net localgroup administrators 명령: 관리자 그룹에 속하는 각 계정의 존재 형태 확인 가능
      - net users 명령: 사용자 계정 모두 확인
      - net localgroup 명령: 시스템에 존재하는 그룹 목록 확인
    • Power Users: Administrators 그룹이 가진 권한을 대부분 가지지만 로컬 컴퓨터에서만 관리할 능력도 가짐
      해당 컴퓨터 밖의 네트워크에서는 일반 사용자로 존재
    • Backup Operators: 윈도우 시스템에서 시스템 파일을 백업하는 권한을 가지고 있음
      로컬 컴퓨터에 로그인하고 시스템을 종료할 수 있음
    • Users: 대부분의 사용자가 기본으로 속하는 그룹으로, 여기에 속한 사용자는 네트워크를 통해 서버나 다른 도메인 구성 요소에 로그인할 수 있음. 관리 계정에 비해 한정된 권한을 가지고있음
    • Guests: Users 그룹과 같은 권한
      네트워크를 통해 서버에 로그인할 수 있으며 서버로의 로컬 로그인은 금지
  • 유닉스의 계정 관리
    root: 기본 관리자 계정
    • /etc/passwd: 계정 목록 확인 가능
      root : x : 0 : 0 : root: /root: /bin/bash
      사용자 계정, 암호화된 패스워드의 저장 위치, 사용자 번호, 그룹 번호, 실제 이름, 사용자의 홈 디렉토리 설정, 사용자의 셸 정의
      • 관리자 권한은 사용자번호와 그룹 번호로 식별됨 (관리자는 0, 0)
      • 암호화된 패스워드의 저장 위치와 사용자의 셸 정의를 확인하면 일반 사용자 계정도 확인가능
    • /etc/group
      root : x : 0 : root
      그룹 이름, 그룹에 대한 패스워드, 그룹 번호, 해당 그룹에 속한 계정 목록
  • root를 제외한 그룹은 모두 임의로 생성, 고유 권한 없음
  • 계정이 보안상 문제 되는 경우: 계정을 가지고 있을 필요가 없는 사람이 계정을 가지고 있는 경우 => 계정 생성, 삭제시 적절한 승인절차가 필요

(2) 데이터베이스의 계정 관리

  • 데이터베이스 계정이 고유의 계정을 가지기도, 운영체제와 계정을 공유하기도 함
    => 어떻든 운영체제의 관리자 권한에 의해 노출, 통제되는 경우가 많음
    • sa: MSSQL의 관리자 계정
    • sys, system: 오라클의 관리자 계정

(3) 응용 프로그램의 계정 관리

  • FTP/ 웹 서비스: 고유의 계정을 가지기도, 운영체제와 계정을 공유하기도 함
    ** FTP: 파일 전송 프로토콜
  • TFTP: 인증이 필요한 별도의 계정이 존재하지 않아 더욱 조심해야함
    ** TFTP: 간단한 파일 전송 프로토콜

(4) 네트워크 장비의 계정 관리

  • 네트워크 장비는 보통 패스워드만 알면 접근이 가능함
    => 패스워드를 이용해 일반 사용자 모드와 관리자모드 접근 가능
  • 네트워크 장비에서도 계정 생성은 가능한데
  • 대규모 네트워크의 경우 계정 관리의 어려움때문에 통합된 계정관리를 위해 추가로 TACACS+같은 솔루션을 적용하기도 함
    ** TACACS+: 유닉스 시스템에서 시스템에 접근하는 사용자 인증 프로토콜... 모든 패킷을 암호화함

3) 세션 관리

세션: 사용자와 시스템/ 두 시스템 사이의 활성화된 접속
일정시간이 지나면 세션을 종료하고, 비인가자의 세션 가로채기 통제

  • 세션 하이재킹, 네트워크 패킷 스니핑 대응
    ** 세션 하이재킹: 다른 사람의 세션 상태를 훔치거나 도용하여 액세스하는 해킹방법
    네트워크 패킷 스니핑: 네트워크 주변을 지나다니는 패킷을 엿보는 행위
  • 세션에 대해 지속적인 인증 (시스템+ 웹서비스 +a)
    • 한 사용자가 인증 절차를 거쳐 시스템에 접근하는데 성공한 뒤 재접근을 한다면, 재인증을 수행해야 함 = 지속적인 인증
      ex) 윈도우의 화면보호기, 인터넷 뱅킹의 패스워드 반복 입력, 패스워드 기간 만료 이후 재설정 요구 등
    • 데이터베이스에서는 일반적으로 세션에 대한 타임아웃을 적용하지 않음 (대부분 시스템 간의 세션을 가지고 있기 때문, 타임아웃이 있다면 시스템간 통신이 없을 때 사람이 다시 연결해주어야 함)

4) 접근 제어

= 다른 시스템으로부터 적절히 보호할 수 있도록 네트워크 관점에서 접근 통제 (인가자만 시스템 사용 가능)
시스템 및 네트워크에 대한 접근 제어의 가장 기본적인 수단: IP, 서비스 포트

(1) 운영체제의 접근 제어

  • 윈도우 운영체제: 터미널 서비스, GUI 관리용 툴
  • 유닉스 운영체제: 텔넷, SSH, XDMCP, FTP
    => 운영체제에 대한 접근 제어를 가능하게 하는 관리 인터페이스
  • 접근 제어를 수행할 부분을 최소화해야 효율적인 보안 정책을 적용할 수 있기 때문에, 불필요한 인터페이스는 제거하는 것이 좋음
    • 불필요한 인터페이스를 제고할 때는 사용할 인터페이스에 보안 정책을 적용할 수 있는지를 판단해야 함
      ex) 텔넷은 스니핑, 세션 하이재킹 공격에 취약하기에 사용 지양
  • 접근 제어 정책 적용: IP를 통해 수행
    ex) 텔넷은 TCPWrapper, 윈도우는 방화벽 등을 통해 접근 제어 가능
    ** TCPWrapper: 유닉스 환경에서 해킹을 차단하는 프로그램

(2) 데이터베이스의 접근 제어

  • 데이터베이스는 핵심 응용 프로그램으로서 적절한 접근 제어가 필수이지만,
    모든 데이터베이스가 접근 제어 수단을 제공하진 않음
    ex) 오라클, MySQL, MS-SQL 등이 접근 제어 수단 제공
    • 오라클: $ORACLE_HOME/network/admin/sqlnet.ora
      ( IP접근 차단/ 허용)
    • MySQL: 명령 사용
    • MS-SQL: 방화벽 이용

(3) 응용 프로그램의 접근 제어

  • 응용 프로그램의 목적에 따라 접근제어 제공 여부가 달라짐
    • IIS, NGINX: IP에 대한 접근 제어 제공
      ** IIS, NGINX: 웹서비스 제공
    • SSL: 클라이언트와 서버 인증서 이용해 접근 제어 제공
      ** SSL: 웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술

(4) 네트워크 장비의 접근 제어

  • IP에 대한 접근 제어 가능
    • 관리 인터페이스에 대한 접근 제어 (유닉스의 접근 제어와 유사)
    • ACL을 통한 네트워크 트래픽 접근 제어 (방화벽 통한 접근 제어와 유사)
      ** ACL: 방화벽, 웹 사이트 등에서 사용자가 정보에 대해 어떤 권한을 가지는지 정해 놓은 목록

5) 권한 관리

= 각 사용자가 적절한 권한으로 적절하게 정보 자산에 접근할 수 있도록 통제

(1) 운영체제의 권한 관리

  • 윈도우의 권한 관리
    NTFS: 윈도우의 기본 파일 시스템
    모든 권한, 수정, 읽기 및 실행, 디렉터리 내용 보기, 읽기, 쓰기에 대해 권한 설정 가능
  • 권한에 대한 규칙
    • 접근 권한 누적: 개별 사용자가 여러 그룹에 속하면 특정 파일이나 디렉터리에 대한 접근 권한이 누적됨 (+)
    • 파일 접근 권한> 디렉터리 접근 권한
    • 거부> 허용: 허용권한 없음 !=거부, 권한이 중첩되어 적용되므로 그 중 명백한 거부가 설정되어있으면 거부가 우선적용

(2) 유닉스의 권한 관리

  • 파일, 디렉터리에 대해 권한 설정 방법이 같음
  • 소유자/ 그룹/ 소유자도 그룹도 아닌 사용자로 구분해 읽기/ 쓰기/ 실행 권한 부여 가능

2) 데이터베이스의 권한 관리

(1) 질의문에 대한 권한 관리

  • DDL: 데이터 구조를 정의하는 질의문
    - CREATE: 데이터베이스 객체 생성
    • DROP: 데이터베이스 객체 삭제
    • ALTER: 기존 데이터베이스 객체 재정의
  • DML: 데이터 검색, 수정 처리 질의문
    - SELECT: 사용자가 테이블이나 뷰의 내용을 읽고 선택
    • INSERT: 데이터베이스 객체에 데이터 입력
    • UPDATE: 기존 데이터베이스 객체에 있는 데이터 수정
    • DELETE: 데이터베이스 객체에 있는 데이터 삭제
  • DCL: 권한 관리 관련 질의문
    • GRANT: 데이터베이스 객체에 권한 부여
    • DENY: 사용자에게 해당 권한 금지
    • REVOKE: 이미 부여된 데이터베이스 객체의 권한 취소


      => DDL, DML은 DCL에 의해 허용/ 거부됨

(2) 뷰에 대한 권한 권리
** 뷰: 참조 테이블의 각 열에 대해 사용자의 권한을 설정하는 것이 불편해 만든 가상 테이블
=> 테이블에 대한 권한 설정과 기본적으로 같지만 접근권한 영역이 달라 관리가 더 쉬워짐

(3) 응용 프로그램의 권한 관리

  • 일반적으로 관리자 계정과 일반 사용자 계정으로 나눠 관리
  • 응용 프로그램을 실행한 계정의 권한을 물려받기 때문에 권한 악용문제 발생 가능
  • 악용문제 막기 위해서 윈도우 IIS에서는 실행 프로세스 권한을 별도로 만들어서, 유닉스에서는 nobody같은 제한된 계정 권한을 사용해야함

6) 로그 관리
= 로그: 시스템 내부나 네트워크를 통해 외부에서 시스템에 어떤 영향을 미칠 경우의 내용 기록

  • AAA: Authentication (인증), Authorization (인가), Accounting
    • Authentication (인증): 자신의 신원을 시스템에 증명하는 과정
      ex) 아이디와 패스워드 입력
    • Authorization (인가): 로그인이 허락된 사용자로 판명되어 로그인하는 과정
    • Accounting: 로그인했을 때 시스템이 기록을 남기는 활동

      => 모든 시스템에 존재하며, 이에 대한 로그 정보는 시스템에 접근한 사용자를 추적하는데 이용될 수 있음

  • 책임추적성: 추적에 대한 기록의 충실도로, 높을수록 로그가 자세하게 남음
  • 감사 추적: 보안과 관련해 시간대별 이벤트를 기록한 로그

(1) 운영체제의 로그 관리

  • 윈도우: 중앙 집중화된 형태로 로그를 수집해 저장
    => 로그 관리는 편하지만 보안수준은 낮음
    • 로그종류:
      • 객체 액세스 감사: 특정 파일, 프린터와같은 객체 접근 시도/ 속성변경 시도 탐지
      • 계정 관리 감사: 사용자/ 활성화 변경여부, 패스워드 변경 등 탐지
      • 계정 로그인 이벤트 감사: 계정의 로그인에 대한 탐지
      • 권한 사용 감사: 권한설정 변경, 관리자 권한 필요 작업 수행 탐지
      • 로그인 이벤트 감사: 로컬 계정이 접근했을 때 생성되는 이벤트 감시
      • 디렉터리 서비스 액세스 감사: 시스템 액세스 제어 목록이 지정되어있는 액티브 디렉터리 개체에 접근하는 사용자에 대한 탐지
      • 정책 변경 감사: 사용자 권한 할당 정책, 감사 정책 등의 변경 탐지
      • 프로세스 추적 감사: 사용자, 응용프로그램의 활성화/ 비활성화 탐지
      • 시스템 이벤트: 시스템의 시작, 종료 등 시스템의 주요한 사항



  • 유닉스: 로그를 여러곳에 나누어 저장
    => 로그 관리는 어렵지만 보안수준은 높음
    • 로그 종류:
      • utmp: 현재 로그인한 사용자의 아이디, 로그인 종류 등 탐지
        바이너리 형식으로 로그 저장
      • wtmp: 사용자 로그인/ 아웃 시간, IP, 시스템 시작/ 종료 시간 탐지
      • secure (sulog): 원격자 접속 로그, 사용자 생성 등과 같이 보안에 직접적으로 연관된 로그 탐지
        일반적으로 텍스트 형식으로 저장
        [날짜] [시간] [+(성공)/ -(실패)] [터미널 종류] [권한 변경 전 계정 - 변경 후 계정]
      • history: 명령창에서 실행한 명령에 대한 탐지
      • syslog: 시스템 운영돠 관련한 전반적인 로그 탐지

(2) 데이터베이스의 로그 관리

  • 데이터베이스는 데이터를 요청하는 일이 빈번하기 때문에 로그인 외에는 따로 로그를 남기지 않음
  • MS-SQL, MySQL, 오라클 등 다양한 데이터베이스에서 로그 기능을 지원하기 때문에, 필요에 따라 조작해 사용하면 됨
  • 데이터베이스 모니터링: 데이터베이스 자체가 아닌 모니터링 툴을 따로 설치하면 로그를 쉽게 남길 수 있고 관리도 쉬워짐
    ex) 네트워크 트래픽 모니터링 가능한 태핑장비

(3) 응용 프로그램의 로그 관리

  • 웹서버: 날짜, 시간, IP, 서버포트 등의 로그를 제공
    웹서버 로그 분석을 통해 취약점을 알아낼 수있기 때문에 중요
  • FPS 서버

(4) 네트워크 장비의 로그 관리

  • 네트워크에서는 많은 양의 트래픽이 생성되고, 그 트래픽은 대부분 일시적이기 때문에 찾을 수 있는 로그가 다양하지 않음
    • 네트워크 보안 시스템의 로그: 침입 차단 시스템, 침입 탐지 시스템, 침입 방지 시스템 등 다양한 보안 시스템의 로그 확인 가능
    • 네트워크 관리 시스템의 로그: 네트워크 트래픽 모니터링 시스템과 네트워크 관리 시스템의 로그 참고 가능
    • 네트워크 장비 인증 시스템의 로그: 인증서버를 통해 네트워크 장비에 대한 인증 시도 및 로그인 정보 확인 가능
      ** 로그 서버 운영시 공격자의 흔적 찾기도 조금 더 쉬워짐

7) 취약점 관리
취약점 관리: 시스템 자체이 결함을 체계적으로 관리

(1) 패치관리

  • 시스템 자체에 취약점이 존재하면 막기 힘들기 때문에, 운영체제 등의 응용프로그램을 만든 제작사에서 제공하는 패치/ 서비스팩을 적용해야 함
    ex) 시스템 업데이트 관리

(2) 응용 프로그램별 고유 위험 관리

  • 응용 프로그램 중에는 운영체제의 파일이나 명령을 실행할 수 있는 응용프로그램이 존재 (함수 등)
    => 그 프로그램의 적절성을 검토한 뒤 사용하는 것이 중요
    ex) MS-SQL의 확장 저장 프러시저 (xp_cmdshell)

(3) 응용 프로그램의 정보 수집 제한

  • 응용 프로그램의 기능이 운영체제의 정보를 노출시키기도 하기 때문에 , 해당 기능을 파악한 후 제한하는 것이 필요

(4) 불필요한 서비스, 악성 프로그램 확인 후 제거 관리

8) 모바일 보안

  • 모바일 보안도 시스템 보안과 유사하지만, 몇가지 차이점이 존재

(1) 모바일 운영체제 보안

  • iOS: 기본적 통제권은 애플이 소유

  • 보안체계:
    • 안전한 부팅 절차 확보: 무결성 확인 후 동작
    • 시스템 소프트웨어 개인화: 각각의 기기에 설치된 각각의 고유한 코드 값으로 버전을 관리해 임의의 프로그램이 설치되거나 변경되는 것을 통제
    • 응용 프로그램에 대한 서명: 설치 가능한 모든 앱에 코드 무결성 사인을 등록하게 하고, 원격지 삭제 권한을 가짐
    • 샌드박스 활용: 데이터 전송 등에 제한
      ** 샌드박스: 응용 프로그램이 실행될 때 원래의 운영체제와 완전히 독립되어 실행되는 형태
    • 멀티태스킹 금지 (음악 듣기 제외)
    • 원격지에서 iOS 로그인 금지

  • 취약점: 탈옥 기기의 경우 정보 유출 가능
  • 안드로이드: 리눅스 커널 기반의 공개적인 운영체제

  • 보안체계:
    • 응용 프로그램의 권한 관리: 모든 응용 프로그램은 일반 사용자 권한으로 실행되며 접근시 사용자 동의를 받음
    • 응용 프로그램의 서명: 설치 가능한 모든 앱에 개발자가 서명 (응용 프로그램에 대한 통제권은 개발자가 가짐)
    • 샌드박스 활용: 특정 형태를 갖추어 권한을 요청하는 것을 허용

  • 취약점: 리눅스 운영체제와 유사한 보안 취약점을 그대로 가짐
    ( 앱 마켓 여러개, 루팅 (탈옥)가능,

(2) 모바일 기기 보안

  • 이동성: 모바일 기기의 특성상 이동성이 뛰어나기 때문에 공격에 사용될 수 있음
    ex) 워드라이빙: 노트북에 수신율이 좋은 안테나를 연결하고 차에 탄 채 보안이 취약한 무선랜을 탐색하며 해킹 시도

  • 블루투스: 여러 장치가 작은 규격에 적은 전력으로 연결되기에 높은 수준의 암호화나 인증 구현이 어려움
    • 블루프린팅: 블루투스 공격 장치의 검색 활동
    • 블루스나프: 블루투스의 취약점을 이용해 장비의 임의파일에 접근하는 공격
    • 블루버그: 블루투스 장비 간의 취약한 연결 관리를 악용한 공격 (공격 장치와 공격 대상 자치를 연결해 공격 대상 장치에서 임의의 동작 실행.
      한번 연결되면 이후 다시 연결하지 않아도 된다는 점을 이용해 공격)

0개의 댓글

관련 채용 정보