정보보안개론 0x01

Kail-KM
|2015. 1. 11. 03:52

System Security


시스템이란?

        필요한 기능을 실현하기 위해 관련 요소를 어떤 법칙에  따라 조합한 집합체를 말한다.


시스템 보안은 권한 없는 사용자에 의한 파일, 폴더 및 장치 등의 사용을 제한하여 보호하는 시스템 기능을 말한다.


시스템 관련한 보안기능의 6가지 주제

  • 계정과 패스워드 관리
적절한 권한을 가진 사용자를 식별하기 위한 가장 기본적인 인증 수단
  • 세션 관리
사용자와 시스템 또는 두 시스템 간의 활성화된 접속에 대한 관리
  • 접근 제어
시스템이 네트워크 안에서 다른 시스템으로부터 적절히 보호될수 있도록 네트워크관점에서 접근을 통제
  • 권한 관리
시스템의 각 사용자가 적절한 권한으로 적절한 정보 자산에 접근할수 있도록 통제
  • 로그 관리
시스템 내부나 네트워크를 통한 외부에서 시스템에 어떤 영향을 미칠 경우 해당 사항을 기록
  • 취약점 관리
시스템자체의 결함에 의한 것으로 이를 체계적으로 관리하는 것이 취약점 관리이다.





계정과 패스워드 관리


어떤 시스템에 로그인을 하려면 먼저 자신이 누군지를 알려야 하는데 이를 식별과정이라 합니다.

아이디만으로는 정확한 식별이 어렵기때문에 로그인을 허용하기 위한 확인, 즉 인증을 위한 패스워드를 요청


  • 운영체제의 계정관리

하나의 계정은 위에서 말한바와 같이 식별과 인증으로 접근을 허용 받을수 있다. 운영체제는 시스템을 구성하고 운영하는 가장 기본이므로 운영체제에 대한 권한을 갖는 것은 해당시스템에서 동작하는 다른 응용 프로그램에 대해서도 어느정도의 권한을 갖는 것을 의미한다.

<윈도우의 계정관리>

net localgroup administrators 명령을 사용해 관리자 그룹에 속하는 계정을 확인할수 있다.

(일반 사용자 확인하려면 net users)


//운영체제의 계정관리에서 고려할 또 한가지는 바로 그룹이다.

//윈도우의 주요그룹//

Administrators : 대표적인 관리자 그룹으로 윈도우 시스템의 모든 권한을 가지고 있다.

Power Users : 로컬 컴퓨터에서만 관리를 할수 있는 능력을 가지며, 밖의 네트워크에선 일반사용자이다.

Backup Operators : 윈도우 시스템에서 시스템 파일을 백업하는 권한을 가지고 있다.

Users : 일반사용자가 속하는 기본 그룹으로 네트워크를 통해 서버나 다른도메인 구성요소에 로그인 가능

Guests : 윈도우 시스템에서 Users 그룹과 같은 권한을 가진다.


<유닉스의 계정관리>

유닉스에서 관리자 권한을 UID와 GID로 식별합니다. 관리자 ROOT는 UID와 GID가 둘다 0 이다.

/etc/passwd 를 통하여 사용자를 확인할수 있습니다. 그룹의 경우 /etc/group를 통해 확인이 가능합니다.

계정이 보안상 문제가 되는 경우는 '계정을 가지고 있을 필요가 없는 사람이 가지는 경우뿐' 입니다. 그러므로 적절한 승인절차와 지속적인 관리가 필요하다 할수 있습니다.


  • 데이터 베이스의 계정관리

데이터베이스도 운영체제처럼 계정이 존재하며, 운영체제와 데이터베이스의 계정이 완전히 별도로 존재하기도 하지만, 일반적으로 운영체제 계정을 이용하여 데이터 베이스에 접근할 수 있다.

MS-SQL의 관리자 계정은 sa 이고 오라클의 경우 sys와 system 입니다.

불필요한 경우에는 잠금상태로 바꾸고, 그렇지 않은 경우에는 패스워드를 적절히 바꿔야 한다.


  • 응용프로그램의 계정관리

FTP와 웹서비스와 같은 응용프로그램 역시 고유의 계정을 갖기도 하고, 운영체제와 계정을 공유하기도 합니다. 운영체제와 응용프로그램의 계정이 다른 경우 응용 프로그램의 계정을 소홀히 하는 경우가 있는데 이는 보안상의 위협이 될때가 있다. 그 이유는 취약한 응용 프로그램을 통해 공격자는 운영체제에 접근해서 민감한 정보를 습득하여 운영체제를 공격하는데 이용할수 있기 때문이다.


  • 네트워크 장비의 계정 관리

네트워크 장비도 계정을 생성하여 각 계정으로 사용 할수 있는 명령어 집합을 제한 할수 있다.

  • 패스둬드관리

단순한 패스워드는 사용하지 않아야 한다.




세션 관리


세션의 의미를 한번 다시 짚고 넘어가본다면, 앞에서 말한바와 같이 '사용자와 컴퓨터 또는 두 컴퓨터 간의 활성화된 접속을 의미합니다.


컴퓨터에서 세션을 유지하기 위한 보안사항은 두가지입니다.

  1. 세션 하이재킹이나 네트워크 패킷 스니핑에 대응하기 위해 암호화를 하는 것
  2. 세션에 대한 지속적인 인증(Continuous Authentication)을 하는것 입니다.
                                                                          //1번의 경우 추후에 살펴볼것이며 2번의 경우를 살펴보자

세션에 대한 지속적인 인증

사용자가 인증절차를 통하여 시스템에 접근하는데 성공히였을 경우, 얼마후 같은 아이디로 접근하는 사용자는 처음에 인증에 성공했던 사용자가 맞는지 재인증을 하여야합니다. 하지만 명령 하나마다 이렇게 인증을 할수가 없기에 시스템에서는 이러한 문제를 세션에 대힌 타임아웃설정으로 보완 하고 있습니다.


  • 윈도에의 화면 보호기(다시 시작할때 로그온 화면 표시)
  • 리눅스에서는 일반적으로 /etc/default/login 이나 /etc/profile 에 타임 아웃 값을 명시적으로 설정
  • 데이터베이스의 경우 세션에 대한 타임아웃을 적용하지 않는다(대부분 시스템 간의 세션이기에).
  • 웹서비스를 이용할때도 '지속적인 인증'은 적용된다. 인터넷뱅킹을 할떄 공인인증서 등등



접근 제어 (Access Control)


접근제어는 적절한 권한을 가진 인가자만 특정 시스템이나 정보에 접근할수 있도록 통제하는 것으로 시스템의 보안수준을 갖추기 위한 가장 기본적인 수단이며 시스템 및 네트워크에 대한 접근 제어의 가장 기본적은 수단은 IP와 서비스 포트입니다.


  • 운영체제의 접근 제어

일반적으로 운영체제에 대한 접근 제어를 언급하면, 윈도우의 경우 터미널서비스를 생각하고 유닉스의 경우 텔넷이나 SSH에 대한 접근 제어를 생각합니다. 하지만 이에 대한 접근 제어를 수행하는 것만으로 운영체제에 대한 접근제어를 모두 수행했다고 생각하면 안됩니다. 운영체제에 대한 적절한 접근 제어를 수행하기 위해서는 가장 먼저 운영체제에 어떤 관리 인터페이스가 운영되고 있는지를 파악해야 합니다.


일반적 사용 관리 인터페이스

운영체제



서비스 이름 

사용 포트  

특징 

텔넷 

23 

암호화 되지 않음 

SSH 

22 

 SFTP가능

XDMCP 

6000 

유닉스용 GUI(Xmanager) 

FTP 

21 

파일전송 서비스 

윈도우 


터미널 서비스  

3389 

포트변경가능 

GUI 관리용 툴 

VNC,Radmin 등 

텔넷은 암호화 되지 않은 세션을 제공하며, FTP 또한 스니핑을 토해 접근 아이디와 패스워드를 획득할수 있으므로 가능하면 SSH나 XDMCP를 사용하는 것이 좋다.


운영체제에 대한 접근 목적의 인터페이스를 결정했다면, 이제 접근제어 정책을 적용해야합니다. 시스템에 대한 접근제어 정책은 기본적으로 IP를 통해 수행합니다. 유닉스의 SSH,FTP등은 TCPWrapper을 통해 접근제어가 가능 합니다.

TCPWrapper가 설치되면 inetd 슈퍼데몬은 연결을 TCPWrapper의 tcpd 데몬에 넘겨준다. tcpd데몬은 접속을 요구한 클라이언트에 적절한 접근권한이 있는지 확인후 해당 데몬에 연결을 넘겨주며 이떄 연결에 대한 로그도 실시 할수 있다.


  • 데이터베이스의 접근 제어

데이터베이스는 조직의 영업이나 운영정보를 담고 있는 핵심 응용프로그램으로, 데이터베이스에 대한 적절한 접근 제어는 필수적이다. 오라클의 경우 허용ip와 차단ip를 설정할수가 있으며 MS-SQL은 윈도우의 다른 서비스처럼 설치된 방화벽을 통해 ip접근 제어를 수행해야 한다. MS-SQL에서는 윈도우 인증모드와 함께 SQL인증을 모두 사용할수 있는 혼합인증모드도 지원한다.


  • 응용프로그램의 접근 제어

응용프로그램에 따라 접근제어를 제공하는 경우도 있고  그렇지 않은 경우도 있다. 하지만 최근의 상용 응용프로그램의 경우 IP에 대한 접근제어를 제공하는 경우가 많다.


  • 네트워크 장비의 접근 제어

네트워크 장비도 ip에 대한 접근제어가 가능하다.



권한 관리


  • 운영체제의 권한관리

<윈도우의 권한 권리>

윈도우는 NTFS(New Technology File System)을 기본 파일 시스템으로 사용한다.

모든 권한,수정,읽기 및 실행, 디렉터리 내용보기, 읽기, 쓰기


위의 권한은 다음과 같은 규칙이 적용된다.

규칙1 : 접근권한은 누적된다.

개별사용자가 여러 그룹에 속하면 특정 파일이나 디렉터리에 대한 접근 권한이 누적 된다.

규칙2 : 파일에 대한 접근 권한이 디렉터리에 대한 접근 권한보다 우선한다.

디렉터리의 권한 설정보다 파일에 대한 권한 설정이 우선한다

규칙 3 : '허용'보다 '거부'가 우선한다.

허용권한없음이 거부를 의미하지 않으며, 중첩되는 권한중 명백한 거부가 설정되어 있으면 허용보다 거부가 우선하여 적용된다.

<유닉스의 권한 권리>

drwxrwxrwx 117 root root

첫번째 인자의 경우 파일의 종류와 권한으로 나타난다.

첫번째 root의 경우 파일에 대한 소유자이며, 두번쨰 root의 경우 파일에 대한 그룹이다.


  • 데이터베이스의 권한관리

<질의문에 대한 권한 관리>

데이터베이스에 대한 권한을 관리하려면 먼저 데이터베이스에서 사용하는 질의문(Query)을 알아야 한다.

DDL (Data Definition Language) : 데이터 구조를 정의하는 질의문

DML(Data Manipulation Language) : 데이터베이스의 운영 및 사용과 관련해 가장 많이 사용하는 질의문이며 데이터의 검색과 수정들을 처리한다.

DCL (Data Control Language) : 권한 관리를 위한 질의문

DDL과 DML은 DCL에 의해 허용(Grant) 또는 거부(Deny)됩니다.

<뷰에 대한 권한 관리>

데이터베이스에 대한 중요한 보안 사항중 하나는 뷰(View)이다. 뷰는 각 사용자에 대해 참조 테이블의 각 열에 대한 권하을 설정하는 것이 불편해서 만든 가상 테이블이다.


  • 응용프로그램의 권환 관리

응용프로그램의 권한 설정은 관리자 계정고 일반 사용자 계정으로 나뉜다. 

응용프로그램에 보안상 취약점이 있을 경우 공격자는 이 취약점을 통해 해당 프로세스의 권한을 얻을수 있다.


로그 관리


Authentication(인증) : 자신의 신원을 시스템에 증명하는 과정

Authorization(인가) : 신원이 확인된 사람이 출입문에 들어가도록 허락되는 과정

Accounting : 시스템에 로그인한 후 시스템이 이에 대한 기록을 남기는활동

//AAA라 부르기도 합니다.

로그정보는 해커나 시스템에 접근한 악의적인 사용자를 추적하는데 많은 도움이 된다.


  • 운영체제의 로그 관리

윈도우의 경우 이벤트(Event)라 불리는 중앙 집중화된 형태로 로그를 수집하여 저장하지만, 유닉스는 로그를 여러곳에 산발적으로 저장한다. 그래서 윈도우의 경우 관리가 편하지만 공격자가 하나의 로그만 삭제하면 되므로 위험이 크다. 그에 반해 유닉스의 경우는 관리가 어렵지만 윈도우보다 공격자를 찾는것이 훨씬 쉽다.

<윈도우의 로그>

제어판 > 관리도구 > 로컬보안정책 > 로컬정책> 감사정책 을 통하여 로깅정책을 적용하면 제어판 > 관리도구 > 이벤트 뷰어를 통하여 쌓이는 로깅정보를 확인 할수 있다.

>윈도우의 로그 종류

개체액세스 감사            //객체 대하여 접근을 시도하거나 속성변경 등을 탐지

계정관리 감사  

계정로그인 이벤트 감사

권한사용 감사

로그인 이벤트 감사

디렉터리 서비스 액세스 감사

정책변경 감사

프로세스 추적 감사

시스템 이벤트

<유닉스의 로그>

/usr/adm , /var/adm , /var/log , /var/run 과 같은 위치에 기록한다.

-UTMP :유닉스 시스템의 가장 기본적인 로그로 로그인 계정 이름, 환경, 로그인한 디바이스, 셸의 PID 등등의 저장을 확인할수 있다. UTMP는 텍스트가 아닌 바이너리 형태로 로그가 저장되며, w, who, users, whodo, finger 등의 명령어를 사용하여 로그를 확인한다

-WTMP : 위와 비슷하게 사용자들의 로그인,아웃, 시스템의 재부팅에 대한 정보를 담으며 last 명령을통해 확인

-Secure : 파일에 원격지 접속 로그와 su 및 사용자 생성등의 보안과 직접적으로 연관된 로그가 저장된다.

-History : 명령창에서 실행했던 명령에 대한 기록이 저장

-Syslog : 시스템의 운영과 관련한 전반적인 로그로써 서비스의 동작과 에러등 다양한 로그를 남긴다.


  • 데이터베이스의 로그 관리

<MS-SQL의 로그>

MicroSoft SQL Server Management Studio에서 서버를 선택한뒤, 속성 팝업창의 [보안] 메뉴애서 일반 '로그인 감사'와 'C2 감사 추적'을 설정 할 수있다. 

C2감사추적은 상세한 정보를 로그로 남기는 것으로, 빈번한 접속이 있는 경우에는 대량의 로그를 생성할 수 있다.

<오라클의 로그>

문잠감사 : 지정된 문장을 실행시켰을 경우 기록을 남긴다.

권한감사 : 특정한 권한을 사용했을 때 기록을 남긴다.

객체감사 : 특정한 객체에 대한 작업을 했을 경우 기록으 남긴다.


  • 응용프로그램의 로그 관리

응용프로그램 중에 보안과 관련되어 가장 중요도가 높은것은 웹서버와 FTP서버이다.

웹서버의 로그 분석은 웹해킹이 일어나는 원리를 이해하짐 못하면 로그 분석 자체가 어렵다. 따라서 웹서버로그를 분석하기 위해서는 반드시 웹해킹에 대한 상세한 지식의 획득이 선행되어야 한다.

IIS 웹 서버의 로그

아파치 웹서버의 로그


  • 네트워크 장비의 로그 관리

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

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

침입차단, 탐지, 방지 시스템 등 다양한 보안 시스템의 로그를 확인할수 있다. 이러한 다양한 보안 시스템의 로그는 통합로그관리시스템(SIEM)에 의해 수집되고 관리되기도 한다.

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

네트워크 트래픽 모니터링 시스템과 네트워크 관리 시스템의 로그를 참고 할 수 있다.

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

대규모의 네트워크를 운영하는 곳에서는 라우터나 스위치의 인증을 일원화 하기 위해 인정 서버로 TACACS+를 사용하기도 한다.


라우터나 스위치를 제외한 대부분의 장비드에는 저장 공간이 없어 별도로 로그서버를 두고 운영한다.

각 네트워크 장비에서 생성되는 로그는 네트워크를 통해 로그서버로 전송된다. 이는 보안에도 장점이 있는데 바로 공격자가 로그를 삭제하기 위해서는 로그서버의 위치를 찾아야 하고, 이 로그서버에 대한 해킹도 성공헤애 한다는점이다.


취약점 관리


  • 패치관리

보안설정을 아무리 잘해도 시스템 자체에 취약점이 존재하면 시스템 운영자 수준에서 이를 막을 수 있는 방법은 없다.  이럴 경우 제작사가 만들어 배포하는 패치(Patch) 또는 서비스 팩을 적용해야 한다.


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

응용프로그램중에는 해당 응용프로그램을 통해 운영체제의 파일이나 명령을 실행시킬수 있는 것이 있다. 만약 그 해당 응용프로그램의 관리자 계정의 패스워드가 취약한 경우 그에 대한 권한 뿐만 아니라 운영체제에 대한 접근 권한도 노출 될수 있다.


  • 응용프로그램을 통한 정보수집 제한

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


*본 게시글은 정보보안개론(한빛미디어)을 참고하여 복습차원에서 만든 것임을 밝힙니다.


'Study > Book' 카테고리의 다른 글

정보보안개론 0x06  (0) 2015.01.23
정보보안개론 0x05  (0) 2015.01.22
정보보안개론 0x04  (0) 2015.01.21
정보보안개론 0x03  (0) 2015.01.13
정보보안개론 0x02  (0) 2015.01.12