권한이 없는(허가받지 않은) 사용자가 파일이나 폴더, 장치 등을 사용하지 못하게 제한하여 시스템을 보호하는 기능
계정 관리
세션 관리
세션 : 사용자와 시스템 사이 또는 두 시스템 사이의 활성화된 접속
(체류 기간이 명시된 비자)
접근 제어
권한 관리
로그 관리
취약점 관리
운영체제 관리자로부터 응용 프로그램에 있는 기밀 정보, 인증 정보 등을 보호하는 한 가지 방법은 응용 프로그램을 암호화하는 것이다.
운영체제 내에서는 관리자 권한을 가진 계정뿐만 아니라 일반 사용자 권한을 가진 계정도 적절하게 제한해야 한다.
운영체제의 관리자 권한을 가진 계정 : 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 : 권한 관리를 위한 질의문
DDL과 DML은 DCL에 의해 허용 또는 거부된다.
뷰에 대한 권한 설정 = 테이블에 대한 권한 설정
보안 관리자 입장에서는 응용 프로그램 내의 권한 관리보다 응용 프로그램 자체의 실행 권한이 더 중요한 경우가 있다.
응용 프로그램은 자신을 실행한 계정의 권한을 물려받기 때문에, 보안상 문제가 있는 취약한 응용 프로그램의 경우 해당 프로그램을 실행한 계정의 권한이 악용되는 문제가 발생한다.
ex: 공격자가 응용 프로그램의 보안상 취약점을 이용하여 해당 프로세스의 권한을 얻을 수 있다.
ex: 아파치 같은 웹 서버가 root권한으로 실행되는 경우 공격자가 웹 취약점을 악용하여 root권한을 획득하는 것
시스템 사용자가 로그인 후 명렬을 내리는 과정에 대한 시스템의 동작 구분(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파일에 하드웨어의 구동, 서비스의 동작, 에러 등의 다양한 로그를 남긴다.
-네트워크 트래픽을 모니터링할 수 있는 태핑 장비를 네트워크에 설치하고, 네트워크 패킷 중에서 데이터베이스 질의문을 확인하여 이를 로그로 남긴다.
일반적으로 네트워크의 경우에는 대량의 트래픽이 생성되고 대부분의 트래픽이 일시적으로 존재했다가 사라지기 때문에 살펴볼 수 있는 로그가 그리 다양하지 않다.
네트워크와 관련한 다양한 시스템을 구비해놓을 경우 살펴볼 수 있는 로그는 크게 세 가지이다.
네트워크 보안 시스템의 로그
다양한 보안 시스템의 로그는 통합 로그 관리 시스템에 의해 수집, 관리되기도 한다.
네트워크 관리 시스템의 로그
네트워크 트래픽 모니터링 시스템
네트워크 관리 시스템
네트워크 장비 인증 시스템의 로그
라우터나 스위치 같은 네트워크 장비에는 로그를 남기는 기능이 있지만, 대부분의 네트워크 장비 자체에는 하드디스크와 같은 저장 공간이 없어 로그를 남기지 않은 채로 운영된다.
(대신 로그 서버를 별도로 두고 운영한다)
공격자가 로그를 삭제하려면 로그 서버에 대한 해킹도 성공해야 한다.
해커가 어떤 네트워크 장비에 침투하더라도 자신의 흔적을 지우기는 쉽지 않다.
보안 설정을 아무리 잘해도 시스템 자체에 취약점이 존재하면 시스템 운영자 수준에서 이를 막을 수 있는 방법이 없다.
이럴 때는 운영체제나 데이터베이스와 같은 응용 프로그램을 만든 제작사가 배포하는 패치 또는 서비스 팩을 적용해야 한다.
응용 프로그램 중에는 해당 응용 프로그램을 통해 운영체제의 파일이나 명령을 실행할 수 있는 것이 있다.
응용 프로그램이 운영체제에 직접적인 영향을 미치지 않더라도 응용 프로그램의 특정 기능이 운영체제의 정보를 노출시키기도 한다.
일반 사용자는 텔넷을 이용하여 시스템에 존재하는 계정 목록을 어느 정도 파악할 수 있다.
이러한 응용 프로그램의 기능은 제한하는 것이 바람직하다.