시스템 보안

WooBuntu·2020년 7월 24일
2

시스템의 이해

시스템 보안

권한이 없는(허가받지 않은) 사용자가 파일이나 폴더, 장치 등을 사용하지 못하게 제한하여 시스템을 보호하는 기능

  • 계정 관리

  • 세션 관리

    세션 : 사용자와 시스템 사이 또는 두 시스템 사이의 활성화된 접속
    (체류 기간이 명시된 비자)

  • 접근 제어

  • 권한 관리

  • 로그 관리

  • 취약점 관리

계정 관리

운영체제의 계정 관리

  • 운영체제 관리자로부터 응용 프로그램에 있는 기밀 정보, 인증 정보 등을 보호하는 한 가지 방법은 응용 프로그램을 암호화하는 것이다.

  • 운영체제 내에서는 관리자 권한을 가진 계정뿐만 아니라 일반 사용자 권한을 가진 계정도 적절하게 제한해야 한다.

윈도우의 계정 관리

  • 운영체제의 관리자 권한을 가진 계정 : administrator

  • net localgroup administrators

    관리자 그룹에 속하는 각 계정의 존재 형태를 확인 가능

  • net localgroup

    시스템에 존재하는 그룹 목록을 확인 가능

유닉스의 계정 관리

  • 유닉스 계열의 시스템에서는 기본 관리자 계정으로 root가 존재한다.

  • /etc/passwd 파일에서 계정 목록을 확인할 수 있다.

  • /etc/group 파일에서 그룹을 확인할 수 있다.

  • 유닉스에서도 root를 제외한 그룹은 윈도우처럼 모두 임의로 생성되며 고유의 권한이 없다.

데이터베이스의 계정 관리

  • 운영체제 계정을 제대로 관리하지 못하면 데이터베이스 계정 관리는 아무 소용이 없다.

  • 운영체제와 마찬가지로 데이터베이스도 관리자 계정과 일반 사용자 계정으로 나뉜다.

  • MS-SQL의 관리자 계정

    sa(system administrator)

  • 오라클의 관리자 계정

    sys, system

    (sys와 달리 system은 데이터베이스를 생성할 수 없는 계정)

세션 관리

  • 세션 : 사용자와 시스템 사이 또는 두 시스템 사이의 활성화된 접속

    • 세션 하이재킹이나 네트워크 패킷 스니핑에 대응하기 위해 암호화

    • 세션에 대한 지속적인 인증

  • 시스템에서는 이러한 문제를 세션에 대한 타임아웃 설정으로 보완(ex : 윈도우의 화면 보호기)

  • 데이터베이스에서는 일반적으로 세션에 대한 타임아웃을 적용하지 않는다.

  • 데이터베이스는 사람이 접근하는 경우도 있지만 대부분 시스템 간의 세션을 가지고 있기 때문이다.

접근 제어

네트워크에 대한 접근 제어의 가장 기본적인 수단은 IP와 서비스 포트이다.

운영체제의 접근 제어

  • 접근 제어를 수행할 부분 자체를 최소화해야 효율적인 보안 정책을 적용할 수 있다.

  • 운영체제에 대한 접근 목적의 인터페이스(SSH 등)를 결정한 다음에는 접근 제어 정책을 적용해야 한다.

  • 시스템에 대한 접근 제어 정책은 기본적으로 IP를 통해 수행된다.

응용 프로그램의 접근 제어

  • SSL(Secure Socket Layer)

    클라이언트와 서버 인증서를 이용하여 접근 제어를 수행

권한 관리

운영체제의 권한 관리

윈도우의 권한 관리

  • NTFS(new technology file system) : 윈도우의 기본 파일 시스템

  • NTFS에서 그룹 또는 개별 사용자에 대해 설정할 수 있는 권한의 종류

    • 모든 권한

    • 수정

    • 읽기 및 실행

    • 디렉토리 내용 보기

    • 읽기

    • 쓰기

  • 이러한 여섯 가지 권한에는 다음과 같은 규칙이 적용된다.

    • 접근 권한이 누적된다.

    • 파일 접근 권한이 (해당 파일이 위치한) 디렉토리 접근 권한보다 우선한다

    • 허용보다 거부가 우선이다.

유닉스의 권한 관리

유닉스에서는 '파일 또는 디렉토리의 소유자', '그룹', '소유자도 그룹도 아닌 사용자'로 구분하여 읽기, 쓰기, 실행 권한을 부여할 수 있다.

데이터베이스의 권한 관리

질의문에 대한 권한 관리

  • DDL : 데이터 구조를 정의하는 질의문

  • DML : 데이터의 검색과 수정 등을 처리

  • DCL : 권한 관리를 위한 질의문

    • GRANT : 데이터베이스 객체에 권한을 부여
    • DENY : 사용자에게 해당 권한을 금지
    • REVOKE : 이미 부여된 데이터베이스 객체의 권한을 취소

DDL과 DML은 DCL에 의해 허용 또는 거부된다.

뷰에 대한 권한 관리

뷰에 대한 권한 설정 = 테이블에 대한 권한 설정

응용 프로그램의 권한 관리

  • 보안 관리자 입장에서는 응용 프로그램 내의 권한 관리보다 응용 프로그램 자체의 실행 권한이 더 중요한 경우가 있다.

  • 응용 프로그램은 자신을 실행한 계정의 권한을 물려받기 때문에, 보안상 문제가 있는 취약한 응용 프로그램의 경우 해당 프로그램을 실행한 계정의 권한이 악용되는 문제가 발생한다.

    ex: 공격자가 응용 프로그램의 보안상 취약점을 이용하여 해당 프로세스의 권한을 얻을 수 있다.

    ex: 아파치 같은 웹 서버가 root권한으로 실행되는 경우 공격자가 웹 취약점을 악용하여 root권한을 획득하는 것

    • 윈도우의 IIS에서는 실행 프로세스 권한을 별도로 만들어 사용
    • 유닉스에서는 nobody와 같이 제한된 계정 권한을 사용

로그 관리

시스템 사용자가 로그인 후 명렬을 내리는 과정에 대한 시스템의 동작 구분(AAA)

  • Authentication(인증)

    • 자신의 신원을 시스템에 증명하는 과정

    • 아이디와 비밀번호 입력하는 과정

  • Authorization(인가)

    • 신원이 확인되어 인증받은 사람이 출입문에 들어가도록 허락하는 과정
    • 로그인하는 과정
  • Accounting

    • 로그인을 했을 때 시스템이 이에 대한 기록을 남기는 활동

    • 객체나 파일에 접근한 기록

책임 추적성 : 추적에 대한 기록의 충실도

감사 추적 : 보안과 관련하여 시간대별 이벤트를 기록한 로그

운영체제의 로그 관리

윈도우의 로그

  • 윈도우는 이벤트라고 불리는 중앙 집중화된 형태로 로그를 수집하여 저장한다.

  • 중앙 집중화되어 있기 때문에 로그 관리가 편하지만, 그만큼 위험도 크다.
    (=보안 수준이 높지 않다)

  • 윈도우의 감사 정책(로깅 정책)은 기본적으로 수행하지 않게 설정되어 있다.

유닉스의 로그

  • 윈도우와 달리 유닉스 시스템의 로그는 중앙 집중으로 관리되지 않고 분산되어 생성된다.

    ex: 리눅스의 경우 /var/log에 저장

  • 윈도우보다 상대적으로 공격자를 찾기 쉽다

  • utmp

    • 유닉스 시스템의 가장 기본적인 로그

    • 텍스트가 아닌 바이너리 형태로 로그가 저장된다.

    • w, who, users, whodo, finger 등의 명령어로 로그 확인이 가능하다.

    • 주로 계정과 로그인 관련 정보가 기록된다.

  • wtmp

    • utmp 데몬과 비슷하게 사용자들의 로그인과 로그아웃, 시스템 재부팅에 대한 정보를 담고 있다.

    • last명령으로 내용을 확인할 수 있다.

    • 특정 항목의 내용만 확인하고 싶다면, 'last reboot, last console, last 계정명'과 같이 last 명령 뒤에 확인하려는 항목을 추가하면 된다.

  • secure(sulog)

    페도라, CentOS, 레드햇 등의 리눅스는 secure파일에 원격지 접속 로그와 su(switch user), 사용자 생성 등과 같이 보안에 직접적으로 연관된 로그를 저장한다.

  • history

    명령 창에서 실행한 명령에 대한 기록은 history 명령으로 확인할 수 있다.

  • syslog

    • 시스템 운영과 관련한 전반적인 로그이다.

    • /var/log/messages파일에 하드웨어의 구동, 서비스의 동작, 에러 등의 다양한 로그를 남긴다.

데이터베이스의 로그 관리

데이터베이스 모니터링

  • 데이터베이스에 대한 로그를 남기는 가장 좋은 방법은 별도의 데이터베이스 모니터링 툴을 도입하는 것

-네트워크 트래픽을 모니터링할 수 있는 태핑 장비를 네트워크에 설치하고, 네트워크 패킷 중에서 데이터베이스 질의문을 확인하여 이를 로그로 남긴다.

  • 이러한 로그 방식은 데이터베이스의 성능에 영향을 미치지 않으면서 잘못된 접근 시도와 질의문 입력을 모두 모니터링할 수 있다.

네트워크 장비의 로그 관리

  • 일반적으로 네트워크의 경우에는 대량의 트래픽이 생성되고 대부분의 트래픽이 일시적으로 존재했다가 사라지기 때문에 살펴볼 수 있는 로그가 그리 다양하지 않다.

  • 네트워크와 관련한 다양한 시스템을 구비해놓을 경우 살펴볼 수 있는 로그는 크게 세 가지이다.

    • 네트워크 보안 시스템의 로그

      다양한 보안 시스템의 로그는 통합 로그 관리 시스템에 의해 수집, 관리되기도 한다.

    • 네트워크 관리 시스템의 로그

      • 네트워크 트래픽 모니터링 시스템

      • 네트워크 관리 시스템

    • 네트워크 장비 인증 시스템의 로그

      • 라우터나 스위치 같은 네트워크 장비에는 로그를 남기는 기능이 있지만, 대부분의 네트워크 장비 자체에는 하드디스크와 같은 저장 공간이 없어 로그를 남기지 않은 채로 운영된다.
        (대신 로그 서버를 별도로 두고 운영한다)

      • 공격자가 로그를 삭제하려면 로그 서버에 대한 해킹도 성공해야 한다.

      • 해커가 어떤 네트워크 장비에 침투하더라도 자신의 흔적을 지우기는 쉽지 않다.

취약점 관리

패치 관리

  • 보안 설정을 아무리 잘해도 시스템 자체에 취약점이 존재하면 시스템 운영자 수준에서 이를 막을 수 있는 방법이 없다.

  • 이럴 때는 운영체제나 데이터베이스와 같은 응용 프로그램을 만든 제작사가 배포하는 패치 또는 서비스 팩을 적용해야 한다.

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

응용 프로그램 중에는 해당 응용 프로그램을 통해 운영체제의 파일이나 명령을 실행할 수 있는 것이 있다.

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

  • 응용 프로그램이 운영체제에 직접적인 영향을 미치지 않더라도 응용 프로그램의 특정 기능이 운영체제의 정보를 노출시키기도 한다.

  • 일반 사용자는 텔넷을 이용하여 시스템에 존재하는 계정 목록을 어느 정도 파악할 수 있다.

  • 이러한 응용 프로그램의 기능은 제한하는 것이 바람직하다.

0개의 댓글