KR20060068083A - 분산 저장장치 기반 침입 탐지 시스템 및 방법 - Google Patents

분산 저장장치 기반 침입 탐지 시스템 및 방법 Download PDF

Info

Publication number
KR20060068083A
KR20060068083A KR1020040106025A KR20040106025A KR20060068083A KR 20060068083 A KR20060068083 A KR 20060068083A KR 1020040106025 A KR1020040106025 A KR 1020040106025A KR 20040106025 A KR20040106025 A KR 20040106025A KR 20060068083 A KR20060068083 A KR 20060068083A
Authority
KR
South Korea
Prior art keywords
node
file
intrusion
nodes
read
Prior art date
Application number
KR1020040106025A
Other languages
English (en)
Other versions
KR100623553B1 (ko
Inventor
이강신
이태진
임채태
조병진
Original Assignee
한국정보보호진흥원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국정보보호진흥원 filed Critical 한국정보보호진흥원
Priority to KR1020040106025A priority Critical patent/KR100623553B1/ko
Publication of KR20060068083A publication Critical patent/KR20060068083A/ko
Application granted granted Critical
Publication of KR100623553B1 publication Critical patent/KR100623553B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action

Abstract

본 발명은 자체적으로 침입을 탐지할 수 있는 분산 저장장치에 관한 것이다. 더욱 구체적으로, 본 발명에 따른 분산 저장 장치는 i) 파일의 읽기/쓰기 동작을 수행하는 스토리지 노드 모듈, ii) 침입을 모니터링하고, 침입탐지시 손상된 데이터를 복구하는 관리 노드 모듈, iii) 침입 탐지 디렉토리를 설정하는 설정 노드 모듈, 및 iv) 네트워크를 통하여 파일에 대한 읽기/쓰기를 요청하는 클라이언트 노드 모듈을 포함하되, 상기 관리 노드 모듈은 상기 스토리지 노드가 파일 읽기/쓰기 동작을 요청받은 때에 보내온 파일 버전 정보를 분석하여 상기 스토리지 노드 상의 파일에 대한 침입을 탐지한다.
본 발명에 따른 침입 탐지 시스템 및 방법은 저장장치에 저장된 데이터의 자체적인 정보에 의하여 침입을 탐지하므로, 기존의 시스템 및 네트워크 침입 탐지 시스템이나 방화벽과 같은 일차적인 보안 기법에 자체적인 장애가 발생하여 침입을 탐지할 수 없는 경우에도 데이터에 대한 무결성 및 가용성을 제공할 수 있다. 또한, 본 발명에 따른 침입 탐지 시스템 및 방법은 저장장치 시스템에 기반 하여 침입탐지 기법을 수행하므로, 기존의 데이터보안에 가장 취약한 문제점이었던 인증된 내부 사용자에 의한 불법적인 데이터 유출 및 변경의 탐지가 가능하다.

Description

분산 저장장치 기반 침입 탐지 시스템 및 방법 {A system and a method for detecting intrusion based on distributed storage device}
도 1은 리눅스 운영체제에서 사용되는 Ext2 파일 시스템 구조를 도시한 것.
도 2는 복제 프로토콜 중 하이브리드 프로토콜의 노드 구성의 예를 도시한 것.
도 3a 및 도 3b는 하이브리드 프로토콜의 동작 예를 도시한 것.
도 4는 본 발명에 따른 침입 탐지 시스템의 구성도.
도 5는 본 발명에 따른 침입 탐지 시스템에서 네트워크 테이블 구조체를 도시한 것.
도 6은 연결 리스트 형식의 맵 구조를 도시한 것.
도 7a 내지 도 7c는 각각 본 발명에 따른 실시예에서 설정 노드(set-up node)의 사용자 로그인 UI(user interface), 설정 제어 UI, 및 보고서 UI의 예를 도시한 것.
도 8a 및 도 8b는 각각 관리 노드의 메인 함수의 동작 및 상기 메인 함수에서 생성한 쓰레드 함수의 흐름도를 도시한 것.
도 9는 클라이언트의 읽기 요청에 대한 처리 과정을 도시한 것.
도 10은 클라이언트의 쓰기 요청에 대한 처리 과정을 도시한 것.
도 11은 2 레벨의 스토리지 노드 구조를 도시한 것.
도 12a 및 도 12b는 합법적인 쓰기 과정의 흐름도 및 구성요소 간의 동작을 도시한 것.
도 13a 및 도 13b는 불법적인 쓰기 과정의 흐름도 및 구성요소 간의 동작을 도시한 것.
도 14a 및 도 14b는 합법적인 읽기 과정의 흐름도 및 구성요소 간의 동작을 도시한 것.
도 15는 불법적인 읽기 과정의 흐름도.
본 발명은 자체적으로 침입을 탐지할 수 있는 분산 저장장치에 관한 것이다. 더욱 구체적으로, 본 발명에 따른 분산 저장 장치는 i) 파일의 읽기/쓰기 동작을 수행하는 스토리지 노드 모듈, ii) 침입을 모니터링하고, 침입탐지시 손상된 데이터를 복구하는 관리 노드 모듈, iii) 침입 탐지 디렉토리를 설정하는 설정 노드 모듈, 및 iv) 네트워크를 통하여 파일에 대한 읽기/쓰기를 요청하는 클라이언트 노드 모듈을 포함하되, 상기 관리 노드 모듈은 상기 스토리지 노드가 파일 읽기/쓰기 동작을 요청받은 때에 보내온 파일 버전 정보를 분석하여 상기 스토리지 노드 상의 파일에 대한 침입을 탐지한다.
오늘날, 네트워크의 급속한 발전으로 인하여 네트워크를 이용한 서비스의 대중화는 매우 빠르게 이루어지고 있다. 또한, 정보의 디지털화로 인하여 대용량 정보 발생은 필수 불가결하게 되었고, 급격하게 증가하는 정보를 효율적으로 관리해야하는 문제도 발생하게 되었다. 이를 위해 저장장치의 용량과 입출력 속도의 한계를 극복한 네트워크화된 저장장치 시스템(Storage Area Network; SAN) 및 분산 저장장치 시스템이 등장하였고, 저장장치 관련 사업이 중요하게 부각되었다.
특히 국가 및 기업의 데이터베이스는 규모가 커지게 되고, 각종 업무의 자료를 디지털화하여 보관하는 것이 일반화되어 있으므로, 자연 재해나 공격과 같은 의도적 요인에 기인한 저장장치 시스템의 고장이나 오류, 정보의 손실 등은 막대한 경제적 피해는 물론 국가 및 기업의 생존까지도 위협한다.
이와 같이 산업 및 국가에서 저장장치에 대한 의존도가 높아지면서 네트워크 기반 분산 저장장치 시스템에서 안전한 데이터 보관이 최우선으로 요구되고 있으며, 범국가적인 정보저장시스템의 구축이나 전자 상거래의 활성화를 위해서 저장장치 시스템의 안전성 향상에 관한 연구가 전 세계적으로 활발하게 이루어지고 있다.
네트워크 기반 분산 저장장치 시스템의 특성은 공격자들에게 시스템을 공격할 수 있는 다양한 기회를 제공하게 되며, 공격자들은 네트워크를 통해 전 세계의 어느 곳에서나 특정 저장장치 시스템에 대한 공격이 가능하고, 공격의 형태 또한 매우 다양화되고 있다.
이러한 네트워크 환경 분산 저장장치 시스템의 문제로 인하여, 최근 다양한 공격으로부터 네트워크화된 시스템을 보호하기 위한 효율적인 방법이 요구되고 있 다. 이러한 요구에 따라 최근 다양한 공격에 효율적으로 대비하고 통합적인 대응 기법을 갖춘 침입탐지 시스템은 널리 사용되고 있다.
그러나, 침입탐지 시스템 자체가 공격에 노출되거나 자체 결함으로 인하여 정상적인 동작이 불가능한 경우, 저장장치 시스템은 무방비 상태에 놓이게 된다. 그러므로, 안전한 분산 저장장치 시스템 구축을 위하여 분산된 저장장치 시스템의 자체적인 공격 탐지 기법 개발이 필수적이다.
본 발명은 상기한 바와 같은 필요성에 따라 안출된 것으로서, 본 발명에 따른 침입 탐지 시스템 및 방법은 분산 저장장치 시스템 환경에서 저장장치에 기반하여 공격 탐지를 수행한다.
본 발명에 따른 침입 탐지 시스템 및 방법은 분산 저장장치의 시스템 성능에 영향을 미치지 않도록 경량화하기 위하여, 분산 저장장치의 커널 상에서 시스템 동작과 함께 이루어지도록 구현되었다.
본 발명에 따른 침입 탐지 시스템 및 방법은 저장장치에 저장된 데이터의 자체적인 정보에 의하여 침입을 탐지하므로, 기존의 시스템 및 네트워크 침입 탐지 시스템이나 방화벽과 같은 일차적인 보안 기법에 자체적인 장애가 발생하여 침입을 탐지할 수 없는 경우에도 데이터에 대한 무결성 및 가용성을 제공할 수 있다.
또한, 본 발명에 따른 침입 탐지 시스템 및 방법은 저장장치 시스템에 기반 하여 침입탐지 기법을 수행하므로, 기존의 데이터보안에 가장 취약한 문제점이었던 인증된 내부 사용자에 의한 불법적인 데이터 유출 및 변경의 탐지가 가능하다. 최 종적으로 침입으로 인하여 손상된 데이터는 복제 프로토콜에 따라 복구 기능을 수행한다.
따라서, 본 발명의 목적은 저장 장치를 기반으로 하여 외부의 침입을 탐지할 수 있는 시스템 및 방법을 제공하기 위한 것이다.
본 발명은 자체적으로 침입을 탐지할 수 있는 분산 저장장치에 관한 것이다. 본 발명에 따른 분산 저장장치는,
i) 파일의 읽기/쓰기 동작을 수행하는 스토리지 노드 모듈, ii) 침입을 모니터링하고, 침입탐지시 손상된 데이터를 복구하는 관리 노드 모듈, iii) 침입 탐지 디렉토리를 설정하는 설정 노드 모듈, 및 iv) 네트워크를 통하여 파일에 대한 읽기/쓰기를 요청하는 클라이언트 노드 모듈을 포함하되,
상기 관리 노드 모듈은 상기 스토리지 노드가 파일 읽기/쓰기 동작을 요청받은 때에 보내온 파일 버전 정보를 분석하여 상기 스토리지 노드 상의 파일에 대한 침입을 탐지한다.
또한, 본 발명은 분산 저장 장치에서의 침입 탐지 방법에 관한 것이다. 본 발명에 따른 침입 탐지 방법은, i) 스토리지 노드 모듈, ii) 관리 노드 모듈, iii) 설정 노드 모듈, 및 iv) 클라이언트 노드 모듈을 포함하는 분산 저장장치에서,
상기 클라이언트 노드 모듈이 상기 스토리지 노드에 저장되어 있는 파일에 대한 읽기/쓰기를 요청하는 단계;
상기 스토리지 노드 모듈이 상기 클라이언트 노드 모듈의 파일 읽기/쓰기 요 청을 받은 경우, 파일의 버전 정보를 상기 관리 노드에 전송하는 단계;
상기 관리 노드 모듈은 상기 스토리지 노드가 전송한 파일의 버전 전보를 분석하여 침입 여부를 탐지하는 단계; 및
상기 관리 노드 모듈이 침입인 것으로 판정한 경우, 파일을 복구하는 단계를 포함한다.
본 발명에 있어서, 파일의 버전은 파일 시스템에서 파일이 변경되는 경우 이를 알려주는 변수이다. 파일의 구조체에 정의되어 있으며, 파일이 변경되는 경우 변수의 값을 증가하도록 정의되어 있다. 문제가 발생한 경우, 상기 파일의 버전 값을 사용함으로써 파일을 원상태로 복원할 수도 있다.
이하에서는, 도면을 참조하여 본 발명에 따른 침입 탐지 시스템 및 방법의 실시예를 구체적으로 설명한다. 그러나, 본 발명이 하기 실시예에 의하여 제한되는 것은 아니다.
본 실시예에서는 리눅스 개발 환경에서 침입 탐지 시스템 및 방법을 구현하였다. 따라서, 리눅스 커널 시스템에 대하여 먼저 설명한다.
1. Ext2 디스크 자료 구조
리눅스 운영체제는 기본적으로 Ext2(2차 확장 파일 시스템)을 사용한다. Ext2의 디스크상 자료 구조는 도 1과 같다. 모든 Ext2 파티션의 첫 번째 블록은 Ext2 파일 시스템이 관리하지 않는다. 이 블록은 파티션 부트섹터를 위해 예약되어 있기 때문이다.
Ext2 파티션의 나머지 부분은 '블록 그룹' 단위로 나뉜다. 어떤 자료 구조는 반드시 한 블록에 저장해야 하고, 어떤 자료 구조는 한 블록 이상을 사용한다. 파일 시스템의 모든 블록 그룹은 크기가 동일하며, 순차적으로 저장된다. 그러므로, 커널은 블록 그룹의 정수 인덱스로부터 디스크에서 블록 그룹이 차지한 위치를 알 수 있다.
커널은 가능한 한 하나의 파일의 데이터 블록을 동일한 블록 그룹에 저장하려 하므로, 블록 그룹은 파일 단편화를 줄이는 효과가 있다. 블록 그룹의 각 블록은 다음의 정보를 포함하고 있다.
a. 파일 시스템의 슈퍼블록 복사본
슈퍼블록에는 그 파일 시스템의 기본적인 크기나 모양에 대한 설명이 들어 있다. 여기에 들어 있는 정보를 이용하여 파일 시스템 관리자는 파일 시스템을 활용하고 유지한다. 보통, 파일 시스템이 마운트될 때에는 블록 그룹 0에 들어있는 슈퍼블록을 읽어 들인다. 하지만 모든 블록 그룹에는 동일한 복사본이 존재하며, 파일 시스템이 손상되는 경우를 대비하고 있다.
b. 그룹 디스크립터 그룹의 복사본
각 블록 그룹은 자신을 기술하는 자료구조를 가지고 있다. 슈퍼블록과 마찬가지로 모든 블록 그룹을 위한 그룹 기술자는 각 블록 그룹에 복제되어 파일 시스템이 손상되는 경우를 대비한다. 그룹 기술자는 잇달아 나타나서 전체적으로는 하나의 그룹 기술자 테이블을 형성한다. 각 블록 그룹에는 슈퍼블록 바로 뒤에 그룹 기술자 테이블 전체가 놓여있다. EXT2 파일 시스템에서 실제로 사용되는 것 은 (블록 그룹 0에 있는) 첫 번째 복사본 뿐이다. 다른 복사본들은, 슈퍼블록의 복사본들과 마찬가지로, 원본이 손상되는 경우를 대비하고 있다.
c. 데이터 블록 비트맵
d. 저장되는 데이터 블록
e. 아이노드 그룹
f. 아이노드 비트맵
Ext2 파일 시스템에서 아이노드는 가장 기본이 되는 단위이다. 파일 시스템의 모든 파일이나 디렉토리는 각기 단 하나의 아이노드에 의하여 표현된다. 각 블록 그룹을 위한 Ext2 아이노드는 어떠한 아이노드가 할당되었는지 아닌지를 추적하기 위한 비트맵과 함께 아이노드 테이블에 저장된다. Ext2 아이노드는 특별 장치 파일을 표현할 수도 있다. 이들 파일은 실제 파일은 아니지만 장치를 액세스하는데 사용되는 프로그램을 다룬다. /dev 디렉토리 아래의 모든 장치 파일은 프로그램이 리눅스 장치를 액세스할 수 있게 한다. 예를 들어 마운트 프로그램은 마운트하려는 장치 파일을 인자로 사용한다.
g. Ext2 디렉토리
Ext2 파일 시스템에서 디렉토리는 파일 시스템 내의 파일에 대한 접근 경로를 만들고, 저장하는 특별한 파일이다. 디렉토리 파일은 디렉토리 엔트리의 리스트이다.
2. 아이노드 생성
리눅스에서 각 파일 및 디렉토리는 하나의 아이노드와 대응된다. 즉, 아이노드는 전술한 바와 같이 파일 및 디렉토리의 정보를 가진 자료 구조이다. 따라서, 파일이 생성될 때 아이노드 역시 동일하게 생성된다. 파일의 내용이 변경되는 경우에도 아이노드의 내용이 변경된다. 또한, 파일이 삭제되는 경우, 해당 아이노드도 삭제된다.
ext2_new_inode 함수는 Ext2 디스크 아이노드를 생성하고, 대응하는 아이노드 객체의 주소를 반환한다. 이 함수는 새로운 아이노드가 삽입될 디렉토리를 가리키는 아이노드 객체의 주소인 dir과 생성할 아이노드 유형을 나타내는 mode를 매개 변수로 사용한다. 이하에서는 아이노드가 실제 생성되는 과정을 설명한다.
a. new_inode()를 호출하여 새로운 아이노드 객체를 할당받고, 이 객체의 i_sb 필드는 dir→i_sb에 저장된 슈퍼블록 주소로 설정한다.
b. 부모 슈퍼블록에 있는 s_lock 세마포어에 대해 down()을 호출한다. 세마포어가 이미 사용 중인 경우, 커널은 현재 프로세스를 연기한다.
c. 새로운 아이노드가 디렉토리인 경우, 채워지지 않은 블록 그룹에 디렉토리가 골고루 흩어지도록 시도한다. 특히, 평균보다 많은 여유 아이노드가 있는 모든 블록 그룹 중에서 가장 많은 여유 블록이 있는 블록 그룹에 새로운 디렉토리를 할당한다(여기에서, 평균은 전체 여유 아이노드 수를 블록 그룹 수로 나눈 값이다).
d. 새로운 아이노드가 디렉토리가 아닌 경우, 여유 아이노드가 있는 블록 그룹에 이 아이노드를 할당한다. 이 함수는 부모 디렉토리가 들어 있는 그룹에서 시 작하여 점점 더 멀어지는 방향으로 이동한다.
e. load_inode_bitmap()을 호출하여 선택한 블록 그룹의 아이노드 비트맵을 얻고, 그 안에서 맨 처음 널 비트를 찾아서 첫 번째 여유 디스크 아이노드 번호를 얻는다.
f. 디스크 아이노드를 할당한다. 아이노드 비트맵에서 아이노드에 대응하는 비트를 1로 설정하고, 비트맵을 포함하는 버퍼를 dirty로 표시한다.
g. 그룹 디스크립터의 bg_free_inde_count 필드를 감소시킨다. 새로운 아이노드가 디렉토리인 경우, bg_used_dirs_count를 증가시킨다. 그룹 디스크립터를 포함하는 버퍼를 dirty로 표시한다.
h. 디스크 슈퍼블록의 s_free_inodes_count 필드를 감소시키고, 이 슈퍼블록을 포함하는 버퍼를 dirty로 표시한다.
i. 아이노드 객체의 필드를 초기화한다. 특히, 아이노드 번호 i_ino를 설정하고, xtime.tv_sec 값을 i_atime, i_mtime 및 i_ctime에 복사한다. 또한, ext2_inode_info 구조체에 i_block_group 필드를 블록 그룹 인덱스로 채운다.
j. 새로운 아이노드 객체를 해시 테이블 inode_hashtable에 삽입한다. 또한, mark_inode_dirty()를 호출하고, 아이노드 객체를 슈퍼블록의 dirty inode 리스트로 옮긴다.
k. 부모 슈퍼블록에 있는 s_lock 세마포어에 대해 up()을 호출한다.
l. 새로운 아이노드 객체의 주소를 반환한다.
이하에서는 쓰기 동작에 대하여 설명한다. write() 시스템 콜은 자신을 호출한 프로세스의 사용자 모드 주소 공간에 있는 데이터를 커널 자료 구조로 옮긴 후, 다시 디스크로 옮긴다. 파일 객체의 쓰기 메소드는 각 파일 시스템 유형이 독자적인 쓰기 연산을 정의하도록 한다. 현재 리눅스 2.4에서 각 디스크 기반 파일 시스템의 쓰기 메소드는 쓰기 연산에 관련된 디스크 블록을 찾아서, 데이터를 사용자 모드 주소 공간에서 페이지 캐시에 속한 페이지로 복사하고, 페이지의 버퍼를 dirty로 표시한다.
표 1은 Ext2 파일 시스템의 write 메소드인 gerneric_file_write()함수의 매개변수이다:
[표 1]
변수 설명
file 파일 객체 포인터
buf 파일에 기록할 문자(character)를 가져올 주소
count 파일에 기록할 문자의 수
ppos 쓰기 연산을 시작할 파일 오프셋을 담고 있는 변수의 주소
gerneric_file_write()함수는 다음과 같이 동작한다:
a. 매개변수 count와 buf가 유효한지 검사한다(이 변수들은 반드시 사용자 모드 주소 공간을 가리켜야 한다). 유효하지 않은 경우, 에러코드 -EFAULT를 반환한다.
b. 기록할 파일에 대응하는 아이노드 객체의 주소 아이노드를 결정한다(file→f_dentry→d_inode→i_mapping→host).
c. 세마포어 inode→i_sem을 획득한다. 세마포어를 사용하기 때문에 한번에 한 프로세스만 파일에 대한 write()시스템 콜을 처리할 수 있다.
d. file→flags의 O_APPEND 플래그가 설정되어 있으며 정규 파일인 경우(블록 장치 파일이 아닌 경우), *ppos를 파일의 끝으로 설정하여 모든 새로운 데이터를 파일의 끝에 추가하도록 한다.
e. 파일의 크기에 대한 몇 가지 검사를 실행한다. 예를 들어, 쓰기 연산은 current→rlim[RLIMIT_FSIZE]에 저장된 사용자별 한계를 넘거나, inode→i_sb→s_maxbytes에 저장된 파일 시스템 한계를 넘도록 정규 파일을 확장하면 안 된다.
f. 현재 시각을 inode→mtime 필드(마지막 파일 쓰기 연산 시각)와 inode→ctime 필드(마지막 inode 변경 시각)에 저장한다. 그리고 아이노드 객체를 dirty로 표시한다.
g. 파일 객체의 O_DIRECT 플래그를 검사한다. 플래그가 설정되어 있는 경우, 페이지 캐시를 무시한다.
h. 파일 쓰기 연산에 관련된 모든 페이지에 대한 반복 작업을 시작한다. 각 페이지에 대해 다음과 같은 작업을 수행한다:
· 페이지를 페이지 캐시에서 찾아본다. 페이지 캐시에 없으면, 여유 페이지를 할당하여 새로 페이지 캐시에 추가한다.
· 페이지에 락을 건다. 즉, PG_locked 플래그를 설정한다.
· 예방을 위해 페이지 사용 카운터를 증가시킨다.
· kmap()을 호출하고 페이지의 시작 선형 주소를 얻는다.
· 아이노드의 address_space 객체에 있는 prepare_write 메소드를 호출한다(file→f_dentry→d_inode→i_mapping). 메소드에 대응하는 함수는 페이지에 대한 비동기적인 버퍼 헤드를 할당하고, 필요하다면 디스크에서 버퍼를 읽어온다.
· copy_from_user()를 호출하여 사용자 모드 버퍼에서 페이지로 데이터를 복사한다.
· 아이노드의 address_space 객체에 있는 commit_write 메소드를 호출한다(file→f_dentry→d_inode→i_mapping). 대응하는 함수는 버퍼를 dirty로 표시하고 나중에 디스크에 기록되도록 한다.
· kunmap()을 호출하여 kmap()에서 설정한 선형 주소의 맵핑을 해제한다.
· 페이지에 PG_refernced 플래그를 설정한다.
· PG_locked 플래그를 삭제하고, 페이지의 락이 풀리기를 기다리는 프로세스를 호출한다.
· 위에서 증가시킨 페이지 사용 카운터를 감소시킨다.
i. 파일의 쓰기 연산에 관련된 모든 페이지를 처리하였으므로, 마지막으로 기록한 문자 다음을 가리키도록 *ppos의 값을 변경한다.
j. 파일의 O_SYNC 플래그를 검사한다. 플래그가 설정되어 있는 경우, generic_osync_inode()를 호출하여 커널이 페이지의 모든 dirty 버퍼를 디스크에 플러시하도록 하고, 입출력 데이터 전송이 완료될 때까지 현재 프로세스를 중단한다.
k. inode→i_sem 세마포어를 해제한다.
l. 파일에 기록한 문자 수를 반환한다.
이하에서는 쓰기 동작에 대하여 설명한다. Ext2 파일 시스템에서 사용하는 읽기 메소드는 대부분의 디스크 기반 파일 시스템의 정규 파일과 모든 블록 장치 파일의 읽기 메소드로 구현하는 generic_file_read() 함수이다. 표 2는 Ext2 파일 시스템의 read 메소드인 gerneric_file_read()함수의 매개변수이다:
[표 2]
변수 설명
file 파일 객체 주소
buf 파일에서 읽은 내용을 저장하기 위한 사용자 모드 메모리 영역의 선형 주소(linear address)
count 읽으려는 문자 수
ppos 읽기를 시작할 파일 오프셋을 담은 변수를 가리키는 포인터 (보통은 filp 파일 객체의 f_pos 필드)
gerneric_file_read()함수는 다음과 같이 동작한다:
a. 읽으려는 파일에 해당하는 address_space 객체를 얻는다. file→f_dentry→d_inode→i_mapping에 객체의 주소가 있다.
b. 주소 공간(address space)을 소유한 아이노드 객체를 얻는다. 객체의 주소는 address_space 객체의 호스트 필드에 있다. 이 객체의 file→f_dentry→d_inode가 가리키는 아이노드 객체와 상이한 것일 수도 있다.
c. 파일이 페이지(페이지 당 4096바이트) 단위 데이터로 나뉘어 있다고 가정하고, 파일 포인터 *ppos로부터, 요청한 첫 번째 바이트를 포함하고 있는 페이지의 논리적인 인덱스를 구한다. 또한, 페이지 안에서 요청한 첫번째 바이트의 위치를 오프셋에 저장한다.
d. 파일 포인터가 파일의 '미리 읽기(read-ahead)' 윈도우 안에 있는지, 밖 에 있는지 결정한다.
e. 요청한 dec→count 바이트를 포함하는 모든 페이지를 읽는 작업을 각 페이지에 대해 반복한다.
f. *ppos에 인덱스*4096+오프셋 값을 저장한다. 이 값은 이 함수를 다음에 호출했을 때 읽기 연산을 수행할 위치다.
g. 파일 디스크립터의 f_reada필드를 1로 설정하여 파일에서 데이터를 순차적으로 읽고 있다는 사실을 기록한다.
h. update_atime()을 호출하여 현재 시간을 파일 아이노드의 i_atime 필드에 저장하고, 아이노드를 dirty로 표시한다.
이하에서는, 본 발명에 따른 시스템 및 장치에서 사용되는 복제 프로토콜에 대하여 설명한다. 복제 프로토콜은 데이터의 일관성을 유지하면서, 침입으로 인하여 발생하는 데이터를 찾고, 침입으로 인하여 장애가 발생한 저장장치의 복구를 수행하기 위해서 사용된다. 또한, 복제 프로토콜의 사용으로 데이터의 가용성을 높이고, 전체 시스템의 성능을 향상시킬 수 있다. 또한, 다중 노드를 사용함으로써 단일 노드의 사용으로 인한 병목현상 문제를 해결할 수 있다.
그러나, 노드의 수가 증가할수록 통신비용은 증가하게 되므로, 전체 시스템을 구성하는 노드 중에 읽기/쓰기 동작을 수행하는 노드의 수는 가능한 한 적은 수로 유지하는 것이 바람직하다.
가장 대표적인 복제 프로토콜은 트리 쿼럼(Tree Quorum) 프로토콜 및 그리드 (Grid) 프로토콜이다.
트리 쿼럼 프로토콜은 트리의 루트 노드를 이용하여 루트 노드의 장애가 발생하지 않을 경우, 적은 읽기 비용을 갖는다. 그러나, 트리의 높이가 증가할수록 노드의 수가 기하급수적으로 증가한다는 단점이 있다. 그러므로, 노드 장애 발생 확률이 증가하는 경우에는 더 많은 노드를 접근해야 하기 때문에, 읽기 비용이 노드의 개수만큼 증가하게 된다.
그리드 프로토콜은 노드를 행과 열로 구성하여, 논리적인 그리드 형태로 구성한다. 그리드 프로토콜은 트리 쿼럼 프로토콜에 비하여 높은 가용성을 보인다. 그러나, 노드의 장애가 발생하지 않는 환경에서도 항상 같은 읽기/쓰기 비용을 갖는다는 단점이 있다.
따라서, 본 발명에서는 기존의 트리 쿼럼 프로토콜 및 그리드 프로토콜의 장점을 모두 가지면서, 기존 프로토콜의 단점을 해결할 수 있는 하이브리드 복제 프로토콜을 사용한다. 하이브리드 복제 프로토콜은 노드의 장애가 없는 경우, 트리 쿼럼 프로토콜과 같이 우수한 동작 비용을 갖는다. 노드의 장애가 존재하는 경우에도 기존의 프로토콜에 비해 상대적으로 적은 동작 비용을 갖는다.
하이브리드 프로토콜은 트리 쿼럼 프로토콜 및 그리드 프로토콜의 조합에 의하여 구성된다. 그러므로, 트리 쿼럼 프로토콜과 같이 최선의 경우 최소 읽기 동작 비용의 장점을 가지며, 그리드 프로토콜과 같이 적은 수의 노드를 이용하여 전체 시스템을 구성할 수 있다는 장점을 가진다.
하이브리드 프로토콜의 노드 구성은 도 2와 같이 삼각형 구조로 구성된다. 첫번째 열은 하나의 노드로 구성되고, 두 번째 열은 세 개의 노드로 구성되며, n번째 열은 2n-1개의 노드로 구성된다.
읽기 동작은 임의의 열의 전체 노드에 대하여 수행한다. 노드의 장애가 발생하는 경우, 다음 레벨로 이동하여 동일한 동작을 수행한다. 읽기 동작은 마지막 레벨에 도달할 때까지 계속된다. 쓰기 동작은 첫번째 레벨부터 시작하여 마지막 레벨까지 각 레벨에서 임의의 하나의 노드를 선택하여 수행한다. 상기 도 2에서 읽기 동작이 가능한 노드들의 집합은 {R1}, {R2, R3, R4}, 및 {R5, R6, R7, R8, R9}이다. 쓰기 동작에 필요한 노드들의 집합은 예를 들어, {R1, R3, R5, R13} 또는 {R1, R2, R9, R10}이다.
하이브리드 프로토콜은 이해와 동작이 쉽다는 장점을 갖는다. 그러나, 모든 쓰기 동작과 대부분의 읽기 동작이 루트 노드부터 시작하므로, 루트 노드에 병목현상이 발생할 수 있다. 이러한 루트 노드에 대한 병목현상 문제는 임의의 레벨에서 읽기 동작을 수행할 수 있도록 프로토콜의 알고리즘을 변경함으로써 해결할 수 있다. 실제로, 읽기 동작은 임의의 레벨에서 전체 노드에 대하여 수행하고, 쓰기 동작은 각 레벨에서 하나의 노드에 대하여 수행하기 때문에, 알고리즘의 변경에 따른 문제가 발생하지 않는다.
도 3a 및 도 3b는 하이브리드 프로토콜의 동작 예를 도시한 것이다. 상기 예에서는 16개의 노드를 갖는 레벨 4의 구조를 사용한다. 도 3a에 도시되어 있는 바와 같이, 쓰기 동작은 각 레벨의 하나의 노드에 대하여 쓰기를 수행한다. 읽기 동작을 위하여, 루트 노드가 읽기 가능하다면, 오직 루트 노드만 읽기를 수행한다.
도 3b에 도시되어 있는 바와 같이, 만약 노드-0이 가능하지 않으면, 노드-0 대신에 노드-1, 노드-2, 및 노드-3에 대하여 읽기 동작을 수행한다. 전술한 바와 같이, 읽기 동작은 만약 각 레벨에서 하나 이상의 노드에 장애가 발생하는 경우, 다음 레벨로 이동하여 읽기 동작을 수행하고, 이를 마지막 레벨까지 계속한다.
도 4는 본 발명에 따른 침입 탐지 시스템의 구성도이다. 도 4에 도시되어 있는 바와 같이, 본 발명에 따른 침입 탐지 시스템은 클라이언트; 분산 스토리지 노드; 전체 시스템을 모니터링 하는 관리 노드; 및 침입 탐지 디렉토리 설정 및 탐지 로그 정보 등을 보여주는 설정 노드를 포함한다.
클라이언트는 네트워크를 통하여 임의의 스토리지 노드에게 파일의 읽기/쓰기 요청을 수행한다. 쓰기의 경우는 클라이언트 모듈 자체적으로 이전에 설명한 복제 프로토콜에 의하여 요청한다. 읽기는 전체 스토리지 노드 중에 임의의 노드에게 요청하면, 전체 시스템을 관리하는 관리 노드에 의하여 각 노드의 파일에 대한 버전 값에 따라 최신 파일을 찾고, 해당 노드에게 파일 전송을 명령한다.
상기 도 4에서는 기본적으로 스토리지 노드가 일렬로 구성되는 것으로 도시하였으나, 실제로는 전술한 복제 프로토콜에 따라 논리적인 레벨로 구성된다.
클라이언트, 스토리지 노드, 관리 노드, 및 설정 노드의 기본적인 동작을 하기 표 3에 나타내었다:
[표 3]
구성 요소 기능
클라이언트 - 파일에 대한 쓰기 및 읽기 동작을 요청 - 저장장치 노드와 TCP를 통하여 연결
저장장치 노드 - 요청된 Read/Write 동작 처리 - 복제 프로토콜에 의하여 동작 - 현재 동작 상태를 관리 노드로 전송 - 노드들은 논리적인 형태로 구성
관리 노드 - 전체 분산 저장장치 시스템의 모니터링 - 기존 침입탐지 시스템과 연동한 관리 - 복제 프로토콜에 근거한 침입 탐지 수행 - 손상된 데이터 복구 수행
설정 노드 -저장장치 노드로부터 디렉토리 목록 가져오기 - 관리 노드로 침입 탐지 목록 전송하기 - 침입 목록 리포트 작성
이하에서는, 본 발명에 따른 침입 탐지 시스템에서의 자료 구조에 대하여 설명한다.
본 발명에 따른 침입 탐지 시스템은 전술한 바와 같이 여러 스토로지 노드 및 관리 노드 등을 포함한다. 따라서, 클라이언트, 각 스토리지 노드, 및 관리 노드에서는 각 노드들의 네트워크 주소인 IP를 보관하여야 한다. 이러한 IP 관리 테이블은 네트워크 테이블 구조체를 이용한다.
네트워크 테이블의 각 구조체는 도 5에 도시되어 있는 바와 같이 sid와 IP주소로 구성된다. sid 필드는 각 노드의 고유한 식별자이고, IP 주소 필드는 16 크기의 문자형 배열로 구성된다. 이 테이블은 정적으로 모듈이 시작될 때 관리자 정의에 의하여 정해진다.
메시지 헤더는 두 가지로 분류할 수 있다. 첫 번째는 클라이언트와 스토리지 노드간의 통신에 사용되는 형태이고, 두 번째는 스토리지 노드 간 또는 스토리지 노드와 관리 노드 간의 통신에 사용되는 형태이다.
첫 번째 형태의 메시지 헤더는 클라이언트와 스토리지 노드 간에 사용된다. 헤더의 형태는 메시지 타입(읽기 : 1, 쓰기 : 2)과 요청하는 파일의 이름으로 구성된다. 여기에서 이름의 길이는 최대 20글자까지 허용한다.
두 번째 형태의 메시지 헤더는 스토리지 노드 간 또는 스토리지 노드와 관리 노드 간의 통신에 사용된다. 메시지 헤더는 하기 표 4에서 나타낸 바와 같이, 상기 첫 번째 형태의 메시지 헤더에 비해 보다 많은 정보를 가지고 있다.
[표 4] 스토리지 노드와 관리 노드 메시지 헤더
변수 설명
sid 관리 노드와 스토리지 노드 식별자
version 동작에 사용되는 파일의 버전 값
op_type 어떤 동작을 수행할 것인지에 대한 정의
inode_num 파일 시스템에서 유일한 파일의 아이노드 번호
file_name 파일 이름
읽기/쓰기 동작을 수행하는데 있어서 침입 탐지와 정상적 파일 처리를 수행하기 위하여 스토리지 노드 간 또는 스토리지 노드와 관리 노드 간에는 메시지 헤더에 요청하는 동작 타입이 정의되어 있다. 본 발명에 따른 시스템에 있어서, 동작 타입은 하기 표 5와 같이 8가지로 분류하였다:
[표 5] 메시지 헤더 동작 타입
타입 설명
1 읽기 동작 수행(관리 노드의 R_MAP에서 메시지 관리)
2 쓰기 동작 수행(관리 노드의 W_MAP에서 메시지 관리
3 버전 갱신 메시지 (관리 노드에서 스토리지 노드로 파일의 버전 값을 바꿀 경우에 전송)
4 복구 메시지 (침입에 의하여 손상된 파일 복구시 사용)
5 파일 전송 (읽기 동작 요청시 클라이언트로 파일 전송)
6 버전 값 요구 메시지 (관리 노드에서 스토리지 노드로 전송)
7 버전 값 전송 (타입 6의 메시지에 대한 응답 메시지)
8 복구 성공 메시지 (타입 4의 메시지에 대한 응답 메시지)
관리 노드는 스토리지 노드들로부터 전송되는 모든 메시지를 관리하고 메시지들의 내용에 따라 특정 동작을 수행해야 한다. 따라서, 메시지를 분류하고 검색 하여 현재 스토리지 노드들의 상태를 계속적으로 확인하여야 한다. 본 발명에 따른 시스템에서 상기 관리 노드는 스토리지 노드들로부터 전송되는 메시지를 관리하기 위하여 STL(standard Template Library)의 맵(map)을 사용하였다.
정상적인 읽기/쓰기 동작을 위해 각각 한 개씩의 맵을 사용하고, 공격이 발생한 파일을 관리하기 위하여 읽기/쓰기 각각 한 개씩의 맵을 사용하여 총 4개의 맵을 구성한다. 맵에 사용되는 키는 파일의 디렉토리까지 포함하는 전체 이름으로 설정한다.
스토리지 노드가 파일과 관련된 동작을 수행하면, 커널 및 서버 모듈에 의하여 관리 노드로 파일 정보와 관련된 메시지를 자동적으로 보낸다. 각 스토리지 노드에서 보내는 파일 정보 메시지는 도 6에 도시되어 있는 바와 같이 연결 리스트(linked-list) 형식으로 연결되어 관리된다.
이하에서는, 설정 노드, 클라이언트, 스토리지 노드 및 관리 노드에 대하여 각각 설명한다.
1. 설정 노드
설정 노드의 가장 큰 기능은 저장장치 디렉토리 중 임의의 디렉토리에 대해서만 침입 탐지가 가능하도록 설정하는 것이다. 관리자는 GUI 환경에서 윈도우의 탐색기와 같은 구조로 만들어진 창에서 임의로 자신이 원하는 디렉토리를 선택하게 되고, 관리 노드는 해당 디렉토리를 침입 탐지 대상에 등록하게 된다. 따라서, 관리자가 선택하지 않은 디렉토리는 침입 탐지 대상에서 제외된다.
구체적인 기능은 다음과 같다:
· 저장장치 노드에 있는 디렉토리 관리 프로그램과 네트워크 통신을 수행하여 저장장치 노드의 디렉토리 구조 정보를 가져와 사용자가 보기에 편한 트리 형태로 보여준다.
· 사용자가 침입/탐지 기법을 적용할 디렉토리를 선택하면, 설정 노드는 관리 노드에게 관리할 디렉토리 목록을 전송하며, 관리 노드는 STL(Standard Template Library)의 자료구조인 벡터를 활용하여 침입 탐지 목록을 관리한다.
· 관리 노드에서 침입 발생을 탐지한 경우, 침입이 발생한 디렉토리명과 저장장치 노드 이름 등의 정보를 설정 노드의 보고서 부분에 표시한다.
도 7a 내지 도 7c는 각각 본 실시예에서 상기 설정 노드의 사용자 로그인 UI(User Interface), 설정 제어 UI, 및 보고서 UI의 예를 도시한 것이다.
2. 클라이언트 모듈
클라이언트 모듈은 TCP 프로토콜을 이용한 일반적인 파일 송·수신 기능을 가지며, 임의의 스토리지 노드에게 읽기/쓰기 동작을 요청한다. 클라이언트 모듈은 컴파일되어 바이너리 코드로 제공되는 하나의 명령어이기 때문에, 스토리지 노드의 구성이나 관리노드의 존재를 알 수 없으며, 오로지 초기에 주어지는 스토리지 노드의 IP 테이블에 의존하여 동작을 수행하게 된다.
클라이언트 모듈은 초기에 스토리지 서버에 TCP 프로토콜을 이용하여 접속하고, 파일 이름과 메시지 타입으로 스토리지 노드에 패킷을 전송하고, 스토리지 노드로부터의 응답을 대기한다.
클라이언트 모듈에서 사용되는 명령어는 명령어 이름, 동작 타입, 및 파일 이름 등을 포함한다. 동작 타입은 간단하게 읽기와 쓰기로 구별한다. 여기에서, 읽기 동작이란 스토리지 노드에게 해당 파일을 요청하여 자신의 디스크에 쓰는 것을 의미하고, 쓰기 동작이란 자신의 디스크에 저장된 해당 파일을 스토리지 노드에 전송하여 저장하는 것을 의미한다.
3. 스토리지 노드 모듈
스토리지 노드 모듈은 다음과 같이 두 부분으로 구성된다:
a. 서버 모듈 : 클라이언트 및 관리 노드와 TCP 및 UDP 통신하기 위한 모듈
b. 커널 수정 : 읽기 및 쓰기 동작과 함께 관리 노드로 메시지 전송을 위한 부분으로 아이노드 관련 함수와 읽기/쓰기 관련 함수를 수정하고, 메시지 생성과 메시지 전송에 필요한 함수를 구현.
이하에서는, 상기 스토리지 노드 모듈의 동작에 대하여 구체적으로 설명한다.
a. 아이노드 필드 추가
본 발명에 따른 침입 탐지 시스템 및 방법은 복제 프로토콜에서 사용하는 버전 정보를 사용한다. 따라서, 저장장치에 저장된 파일의 쓰기 동작이 발생하면 자동적으로 파일에 대한 버전 정보를 변경해야 한다.
전술한 바와 같이, 아이노드는 파일에 대한 정보를 담고 있는 파일 시스템의 메타 데이터로서, 모든 파일은 각자의 아이노드를 가지고 있다. 따라서, 파일을 읽거나 쓰기 위해서는 아이노드에 대한 접근이 우선이다. 아이노드에 파일의 시각을 제공해주는 필드는 다음과 같이 4가지로 나뉜다.
· i_ctime : 아이노드가 마지막으로 변경된 시각
· i_mtime : 파일의 내용이 마지막으로 변경된 시각
· i_atime : 마지막 파일 접근 시각
· i_dtime : 파일 삭제 시간
파일에 대한 동작을 수행하는 순간, 시스템의 CURRENT_TIME을 이용하여 각 시간 필드를 변경한다. 본 실시예에서 사용될 필드는 다음과 같다:
b. ext2_new_node 함수 수정
Ext2 파일 시스템에서 파일이 생성될 때, 파일에 대한 아이노드를 생성해야 한다. 파일에 대한 아이노드를 할당받고, 해당 아이노드에 파일에 대한 정보를 기입한 후에 generic_file_write 함수를 이용하여 실제 쓰기 동작을 수행한다. 따라서, 아이노드를 할당하고 초기화하는 순간에 새로이 추가한 i_modver의 값을 초기화하여야 한다.
c. generic_file_write 함수 수정
파일이 실제로 생성되고 수정되는 경우, 관리노드로 파일 변경에 대한 정보를 UDP 프로토콜을 이용하여 전송하는 부분에 대한 수정을 설명한다.
본 발명에 따른 침입 탐지 시스템 및 방법은 시스템 상에 어떠한 파일의 변 경에 대해서도 탐지가 가능하도록 설계되었다. 그러나, 시스템 상에서 관리자나 침입으로 인한 파일 변경 이외에, 시스템에 상주하는 프로세스에 의하여 자체적으로 주기적인 갱신이 발생하는 파일들도 존재한다. 이러한 파일은 실제 탐지를 수행하는데 있어서 많은 착오를 일으키게 하며, 자주 변경되기 때문에 관리 노드의 부하를 발생시킨다. 따라서, 인증된 관리자에 의한 인증된 접근과 네트워크를 통한 사용자의 접근을 제외한 파일 변경은 무시하도록 설계되었다.
시스템이 부팅되는 순간에 가장 많은 파일의 변경이 발생한다. 이는 시스템의 자체적인 파일 변경이므로 이러한 변경에 대해서는 무시하도록 generic_file_write 함수를 수정한다. 또한, 시스템이 처음 부팅되는 CURRENT_TIME을 저장하고, 계속적으로 CURRENT_TIME을 점검하여 일정시간 이후에 침입탐지 기법이 동작하도록 구현하였다.
또한, 시스템이 자체적으로 주기적인 변경을 수행하는 파일에 대해서 제어하여야 한다. 이 부분은 실제 시스템 상에서 사용자의 의도와 상관없이 수행되는 부분이므로, 계속적으로 갱신되어야 한다.
본 실시예에서는 13개의 파일 이름(message, boot.log, wtmp, utmp, cron, messages.swp, viminfo.tmp, saved_state, saved_state.tmp, cookie, secure, 휴지통, sa18)에 대하여 점검하도록 구현하였다. 파일 이름은 헤더에서 문자열 배열로 구성된다. 점검할 파일을 계속적으로 추가할 수 있다.
상기 조건들을 모두 만족하는 경우에 침입 탐지 기법을 위해 추가된 메시지 생성 함수와 관리노드로 메시지를 전송하는 함수를 호출한다. 그 이후에 발생하는 모든 동작은 서버모듈에서 처리하도록 한다.
d. make_header, send_mn 함수 추가
이 함수들은 커널이 쓰기 및 읽기 동작을 수행할 때, 파일의 정보를 메시지 헤더에 구성하고, 메시지를 관리노드로 전송하는 역할을 수행한다.
send_mn함수는 make_header에서 생성된 메시지를 UDP 프로토콜을 이용하여 관리 노드로 전송하는 역할을 수행한다. 일반 사용자 모드로 구성되는 것이 아니므로, 커널의 소켓 프로그래밍 방식에 따라 구현한다.
커널상의 소켓 프로그램 특성은 일반적으로 UDP에서 사용하는 메시지 전송 함수의 형태가 아닌 주소를 직접 함수의 입력 인자로 사용하지 않는다는 것이다. 관리 노드의 주소를 sockaddr_in에 저장하고, msghdr 메시지의 첫 번째 필드인 msg_name에 저장한다. 그 후에 소켓을 이용하여 메시지를 전송할 때는 msghdr의 메시지만 넣어주면, 커널 상에서 메시지 내용에 따라 해당 주소로 메시지를 전송한다. 실제 메시지의 내용은 iovec의 자료 구조를 따른다.
4. 관리 노드 모듈
관리 노드는 전체 시스템의 상태를 확인하고 그에 따른 동작을 수행하는 노드이다. 관리노드가 수행하는 역할은 다음과 같다:
· 스토리지 노드의 모든 상태정보를 수신하여 관리
· 수신된 정보를 바탕으로 파일에 대한 침입을 판별
· 침입이 발생한 파일에 대한 복구 명령 수행
· 읽기 동작 요청시 사용자에게 최신 내용의 파일을 송신하도록 명령
관리 노드는 여러 스토리지 노드로부터 전송되는 메시지를 비교하고 분석하여 동작하여야 한다. 따라서, 수신되는 메시지를 보관하고 관리하여야 한다. 이를 위해 전술한 바와 같은 STL 맵을 사용한다. 관리 노드는 스토리지 노드와 실제적인 파일 전송은 수행하지 않으므로 UDP 프로토콜만을 사용하여 동작하게 된다.
관리 노드의 동작은 크게 2가지로 구분한다.
첫 번째는, 메인 함수로 UDP 메시지를 수신하는 부분이다. 메시지를 수신하고, 메시지의 타입에 따라 해당 맵에 메시지를 연결하고, 다시 UDP 메시지를 수신하기 위하여 대기한다.
두 번째는, 메인 함수에서 생성된 쓰레드 함수로서, 메인함수의 메시지 수신 대기와 별도로 맵의 상태를 점검하여 전체 시스템 상태를 파악하는 부분이다. 이 쓰레드 함수의 동작은 다시 3가지로 분류할 수 있다.
· 맵의 메시지를 분석하여 침입 여부 판별
· 침입으로 인하여 파일의 내용이 변경될 경우 복구 명령을 스토리지 노드로 전송
· 읽기 동작의 경우에 스토리지 노드 중에 최신 파일을 찾아 요청한 클라이언트에게 파일을 전송할 수 있도록 스토리지 노드로 메시지를 전송
도 8a는 관리 노드의 메인 함수의 동작을 나타낸 것이다. 관리 노드 모듈의 시작과 함께 build_network 함수를 호출하여 스토리지 노드의 네트워크를 구축하 고, UDP 소켓을 생성한다. 이후, 메시지 관리를 위한 4개의 맵을 구성한다. 이후, 실제 스토리지 노드의 관리를 수행하는 쓰레드를 생성하고, UDP의 메시지 수신 명령인 recv_from 함수를 동작시킨다. 이 순간부터 스토리지 노드로부터의 메시지를 수신하고, 이와 동시에 맵을 조사하여 스토리지 노드의 파일에 대한 점검을 시작한다.
도 8b는 메인 함수에서 생성한 쓰레드 함수의 흐름도를 도시한 것이다. 쓰레드가 동작하면 처음에 맵의 메시지 개수를 검사하게 된다. 메시지의 개수는 복제 프로토콜에 따라 미리 정의되어 있다. 예를 들어, 레벨 2의 구조를 사용한다면, 읽기 동작의 경우는 노드 수만큼의 메시지를 수신하여야 동작하고, 쓰기 동작의 경우는 레벨 수만큼의 메시지를 수신하면 된다. 이 개수가 정상적으로 맵에 있을 경우에만 스토리지 노드의 정상 동작으로 판별하여 이후 동작을 수행하게 된다.
메시지의 수가 정상적이면, 읽기와 쓰기의 두 가지 상태로 나누어서 실제 메시지의 내용을 검사하게 된다.
파일의 침입 여부 판별은 수신된 모든 메시지의 버전 값을 비교하고, 버전 값이 복제 프로토콜에 준하는지 확인함으로써 판별할 수 있다.
침입 여부 판별 후, 정상이라면 읽기/쓰기에 해당하는 정상 동작을 수행하기 위해 스토리지 노드로 메시지를 전송하고, 정상적이지 않고 침입이 발견되었다면 그에 해당하는 복구 동작을 수행하게 된다.
도 9는 클라이언트의 읽기 요청에 대한 처리 과정을 도시한 것이다. 상기 도면에서, 클라이언트의 읽기 요청은 스토리지 노드에서 바로 처리되지 않고, 바로 관리 노드로 전달된다. 클라이언트의 읽기 요청에 대하여 분산스토리지 노드는 버전정보를 관리노드에게 알려준다. 관리노드는 상기 버전정보 중 버전정보 구성에 문제가 있는지 식별하고(식별 방법은 후술한다), 문제가 없는 경우, 가장 높은 버전을 가진 스토리지 노드가 클라이언트 요청에 응답을 주고 종료된다.
도 10은 클라이언트의 쓰기 요청에 대한 처리 과정을 도시한 것이다. 상기 도면에서, 클라이언트의 쓰기 요청은 스토리지 노드에 전달되고, 각 레벨 중 하나의 노드는 클라이언트의 요청에 따라 쓰기를 수행한다. 또한, 이때의 파일정보를 관리노드로 보내게 된다. 관리노드는 이 파일에 대한 정보를 비교하여 침입이 있는 경우, 기존의 버전값을 통하여 분산스토리지 노드를 복구한다.
이하에서는 상기 관리 노드 모듈에서 사용하는 침입 탐지 알고리즘을 설명한다.
본 발명에서
i) 복제 프로토콜에 따라 전체 노드 중에 구성된 레벨 수만큼의 노드는 동일한 버전 값을 가져야 하고,
ii) 동일 레벨에서는 동일한 버전 값을 가질 수 없으며,
iii) 루트 레벨을 제외한 노드들은 루트 노드보다 높은 버전 값을 가질 수 없는 것으로 전제되어야 한다.
최상위 노드가 아닌 레벨의 노드에서는, 공격으로 의심되는 노드들은 모두 최상위 노드의 정보를 이용하여 복구한다. 동일 레벨에서 하나의 노드만 최상위 노드와 동일한 버전 값을 갖도록 조정한다. 최상위 노드의 버전 값을 증가시킬 수 없으므로, 다른 노드의 버전 값을 감소시킨다.
최상위 레벨의 노드에서는, 공격이 발생한 최상위 노드를 제외하고 가장 높은 버전 값을 가진 노드가 최신 파일이므로, 그 파일을 이용하여 복구를 수행한다. 이후, 루트 노드의 버전 값을 감소시킨다.
예를 들어, 도 11과 같이 3개의 스토리지 노드를 이용하여 2 레벨로 구성되어 있는 경우의 침입 탐지에 대하여 설명한다.
상기 도 11과 같이 3개의 스토리지 노드를 2 레벨로 구성하는 경우, 가능한 버전 값은 하기 표 6과 같다:
[표 6]
동작1 동작2 동작3 동작4
노드 1 1 2 3 4
노드 2 0 2 3 3
노드 3 1 1 1 4
동작 1에서는 노드 1 및 노드 3에 파일의 쓰기 동작을 수행한다. 동작 2에서는 노드 1 및 노드 3에 파일의 쓰기 동작을 수행한다. 동작 3에서는 노드 1 및 노드 2에 파일의 쓰기 동작을 수행한다. 최종적으로, 동작 4에서는 노드 1 및 노드 3에 파일의 쓰기 동작을 수행한다.
이 상태에서 3개의 노드 중에 임의의 노드에 침입이 발생한다고 가정한다. 다음과 같이 2가지 경우로 나누어 설명한다:
i) 최상위 레벨이 아닌 노드(노드 2 또는 노드 3)에 침입이 발생한 경우
만약 노드 2가 임의로 쓰기가 수행되었다면 모든 노드의 버전 값은 4가 된다. 이러한 경우, 두 번째 전제 조건에 의하여 '동일 레벨에서는 동일한 버전 값 을 가질 수 없다'에 위배된다. 따라서, 두 번째 레벨의 임의의 노드가 공격당했다고 판단하게 된다. 이때, 노드 1의 데이터를 이용하여 두 번째 레벨의 모든 노드에 대한 복구를 수행한다. 이때, 노드 2 및 노드 3의 버전 값은 5로 바뀌게 된다. 관리 노드는 두 번째 레벨의 임의의 노드에게 노드 1과 동일한 같은 버전 값을 갖도록 메시지를 전송하고, 다른 노드에는 노드 1의 버전 값에서 1을 감소시킨 값을 갖도록 메시지를 전송한다.
ii) 최상위 레벨의 노드(노드 1)에 침입이 발생한 경우
만약 노드 1에 임의의 쓰기 동작이 수행되었다면, 노드 1 내지 3의 버전 값은 각각 5, 3, 4가 된다. 관리 노드는 첫 번째 전제조건인 '레벨 수만큼의 노드는 동일한 버전 값을 가져야 한다'에 맞지 않는다. 따라서 가장 큰 값을 갖는 노드 1의 공격을 탐지 할 수 있다. 이러한 경우, 공격이 발생한 노드 외에 다른 노드들 중에 가장 높은 버전 값을 갖는 노드에게 노드 1의 파일을 복구하라는 메시지를 전송한다. 또한, 노드 1의 버전 값은 6이 되므로, 현재의 노드 3과 같은 동일한 버전 값을 갖도록 메시지를 전송한다.
이하에서는 합법/불법적인 파일 쓰기/읽기 요청에 대한 침입 탐지 시스템의 대응 시나리오를 설명한다.
1. 합법적인 파일 쓰기 동작 시나리오
클라이언트로부터의 정상적인 파일 쓰기 동작 요청은 복제 프로토콜에 의하여 한꺼번에 여러 노드로 동작하게 된다. 정확하게 말하면 각 레벨의 임의의 하나의 노드에 대하여 동작하게 된다. 클라이언트의 쓰기 요청 메시지를 수신한 스토 리지 노드는 커널의 쓰기 동작을 수행하기 전에 관리 노드로 메시지(SID, Filename, 요청한 클라이언트의 IP)를 전송한다. 메시지를 수신한 관리 노드는 W_MAP의 맵 구조체에 파일이름을 이용하여 엔트리를 할당받고 수신한 메시지를 맵의 구조체에 연결 리스트로 연결한다.
스토리지 노드는 관리 노드로 메시지를 전송한 후, 커널의 쓰기 명령을 수행하고 쓰기 명령과 동시에 수정된 커널은 파일 정보를 담고 있는 메시지를 관리 노드로 전송한다. 관리 노드는 수신된 메시지를 이미 할당된 엔트리에 삽입하거나 이미 존재할 경우 필드를 채워 넣는다. 이후, 맵의 수신 메시지 수가 정상적이므로, 버전 값을 비교하여 같은 버전 값을 만들기 위해 적은 버전 값을 가지고 있는 스토리지 노드에게 버전 갱신 메시지를 전송하게 된다. 이렇게 함으로써 정상적인 파일 쓰기 동작은 끝나게 된다.
도 12a 및 도 12b는 각각 상기 과정에 도시한 흐름도 및 구성요소 간의 동작을 도시한 것이다.
2. 불법적인 파일 쓰기 동작 시나리오
불법적인 쓰기 동작은 관리 노드가 스토리지 노드로부터 커널 메시지를 받을 때 탐지가 가능하다. 따라서, 전송되는 메시지는 정상적인 W_MAP이 아닌 WH_MAP으로 저장된다. WH_MAP에 저장된 메시지의 파일은 반드시 복구가 요구된다. 복구를 위한 알고리즘은 복제 프로토콜에 따라 수행하게 된다.
도 13a 및 도 13b는 불법적인 쓰기 과정을 도시한 흐름도 및 구성요소 간의 동작을 도시한 것이다.
불법적인 사용자가 네트워크를 통하여 접속하여 불법적으로 파일을 수정하거나 내부의 인증된 사용자에 의하여 파일이 변경되면, 변경과 동시에 변경된 파일의 정보는 관리 노드로 보내지게 된다. 이때, 관리 노드는 이전에 서버 모듈로부터 해당 파일에 대한 정보를 수신하지 못하였으므로, 맵의 엔트리를 찾지 못하게 된다. 맵의 엔트리를 찾지 못하는 경우, 관리 노드는 해당 메시지를 WH_MAP에 저장한다.
관리 노드는 WH_MAP에 저장된 메시지의 SID를 제외한 다른 모든 스토리지 노드에게 버전 정보를 보내줄 것을 요청한다. 스토리지 노드들은 이 버전 정보 요청 메시지에 따라 관리 노드로 자신이 가지고 있는 파일의 버전 정보를 다시 전송하게 된다. 전송된 메시지는 WH_MAP의 동일한 엔트리에 저장되게 되고, 관리 노드가 모든 스토리지 노드로부터 메시지를 수신하면 모든 스토리지 노드에 있는 해당 파일의 버전 정보를 비교하게 된다. 버전 정보 비교의 결과에 따라 공격당하지 않은 스토리지 노드의 최신의 데이터를 이용하여 공격당한 스토리지 노드의 파일을 복구하게 된다. 물론, 복구 후에는 복제 프로토콜에 따라 버전 정보를 정리해 주어야 한다.
3. 합법적인 파일 읽기 동작 시나리오
합법적인 읽기 동작은 쓰기 노드와 마찬가지로 커널 메시지 이전에 서버 모듈로부터 메시지를 수신하였는지에 따라 결정된다. 본 발명에서는, 정상적인 요청일지라도 동작을 수행하는 중간에 파일 정보를 통하여 이전의 불법적인 접근을 찾아낼 수 있다는 것이다. 읽기 동작을 위해서는 모든 노드의 버전 정보가 필요하 다. 이 과정에서 불법적인 쓰기 동작에서 설명한 버전 값 비교 및 갱신 알고리즘을 적용하면 쉽게 침입이 발생한 파일을 찾아 낼 수 있다.
도 14a 및 도 14b는 합법적인 읽기 과정을 도시한 흐름도 및 구성요소 간의 동작을 도시한 것이다.
클라이언트가 임의의 스토리지 노드에게 파일 읽기를 요청하면, 요청을 수신한 스토리지 노드는 우선 (SID, 파일이름, 요청한 클라이언트의 IP)로 구성된 메시지를 관리 노드로 전송한다. 관리 노드는 메시지를 수신하면 R_MAP에 엔트리를 생성하고 메시지를 저장한다. 관리 노드는 다른 모든 노드들에게 버전 값을 보내 줄 것을 요청한다. 전체 노드에 대한 버전 값을 모두 수신하면 이전 장에 설명한 버전 값 비교 및 갱신 알고리즘에 따라 버전 값을 점검한다.
만약 버전 값에 문제가 발생하면 복구 방법에 따라 복구를 수행하고 정상적일 경우에는 가장 큰 버전 값을 갖는 스토리지 노드 중에 임의의 노드를 선택하여 파일 전송 명령 메시지를 전송한다. 이러한 과정을 거쳐서, 정상적인 읽기 동작이 완료된다.
4. 불법적인 파일 읽기 동작 시나리오
불법적인 읽기 동작의 탐지는 쓰기 동작에서와 마찬가지로 첫 번째 메시지의 수신과 함께 탐지할 수 있다. 정상적인 경우에는 커널의 generic_file_read 함수의 메시지를 사용하지 않으므로, 관리 노드에서 바로 탐지할 수 있다. 불법적인 읽기 동작에 대해서는 탐지만 가능할 뿐, 다른 동작은 불가능하다. 그러나, 불법적으로 읽은 파일의 내용이 항상 최신 파일은 아니다.
도 15는 불법적인 읽기 과정을 도시한 흐름도이다.
본 발명에 따른 침입 탐지 시스템 및 방법은 저장장치에 저장된 데이터의 자체적인 정보에 의하여 침입을 탐지하므로, 기존의 시스템 및 네트워크 침입 탐지 시스템이나 방화벽과 같은 일차적인 보안 기법에 자체적인 장애가 발생하여 침입을 탐지할 수 없는 경우에도 데이터에 대한 무결성 및 가용성을 제공할 수 있다.
또한, 본 발명에 따른 침입 탐지 시스템 및 방법은 저장장치 시스템에 기반 하여 침입탐지 기법을 수행하므로, 기존의 데이터보안에 가장 취약한 문제점이었던 인증된 내부 사용자에 의한 불법적인 데이터 유출 및 변경의 탐지가 가능하다.
최종적으로 침입으로 인하여 손상된 데이터는 복제 프로토콜에 따라 복구한다.

Claims (16)

  1. 자체적으로 침입을 탐지할 수 있는 분산 저장장치로서,
    i) 파일을 저장하고, 상기 저장된 파일에 읽기/쓰기 동작을 수행하는 스토리지 노드 모듈,
    ii) 침입을 모니터링하고, 침입탐지시 손상된 데이터를 복구하는 관리 노드 모듈,
    iii) 침입 탐지 디렉토리를 설정하고, 침입 목록을 작성하는 설정 노드 모듈, 및
    iv) 네트워크를 통하여 임의의 스토리지 노드 모듈에 저장되어 있는 파일에 대한 읽기/쓰기를 요청하는 클라이언트 노드 모듈을 포함하되,
    상기 관리 노드 모듈은 상기 스토리지 노드 모듈이 파일 읽기/쓰기 동작을 요청받은 때에 보내온 파일 버전 정보를 분석하여 상기 스토리지 노드 상의 파일에 대한 침입을 탐지하는 것을 특징으로 하는 시스템.
  2. 제 1 항에 있어서, 상기 파일에 대한 읽기/쓰기 동작은 복제 프로토콜에 의하여 이루어지는 것을 특징으로 하는 장치.
  3. 제 2 항에 있어서, 상기 복제 프로토콜로서 하이브리드 복제 프로토콜이 사용되는 것을 특징으로 하는 시스템.
  4. 제 3 항에 있어서, 상기 하이브리드 복제 프로토콜은,
    k번째 레벨의 노드의 개수가 2k-1개인 n개의 레벨로 구성되는 스토리지 노드 모듈에서,
    읽기 동작은 임의의 레벨의 전체 노드에 대하여 수행하되, 노드의 장애가 발생한 경우, 다음 레벨로 이동하여 전체 노드에 대하여 읽기 동작을 수행하고,
    쓰기 동작은 첫 번재 레벨로부터 마지막 레벨까지 이동하면서, 각 레벨 중 임의의 하나의 노드를 선택하여 수행하는 것을 특징으로 하는 시스템.
  5. 제 4 항에 있어서, 상기 스토리지 노드 모듈이 파일에 대한 읽기 요청을 받은 경우, 상기 파일에 대한 버전 정보를 관리 노드 모듈로 전송하며,
    상기 관리 노드 모듈은 상기 스토리지 노드 상의 버전 정보를 모두 체크하여 침입 여부를 탐지하고, 침입이 아닌 것으로 판정되는 경우 가장 높은 버전의 스토리지 노드가 상기 읽기 동작을 수행하는 것을 특징으로 하는 시스템.
  6. 제 4 항에 있어서, 상기 스토리지 노드 모듈이 파일에 대한 쓰기 요청을 받은 경우, 쓰기 동작을 수행하고, 상기 파일에 대한 버전 정보를 관리 노드로 전송하며,
    상기 관리 노드는 상기 스토리지 노드 상의 버전 정보를 모두 체크하여 침입 여부를 탐지하고, 침입인 것으로 판정되는 경우 상기 파일을 복구하는 것을 특징으 로 하는 시스템.
  7. 제 5 항 또는 제 6 항에 있어서, 상기 관리 노드 모듈은,
    i) 상기 복제 프로토콜에 따라 구성된 전체 노드 중에서 레벨의 개수인 n개의 노드가 동일한 버전 값을 갖지 않거나;
    ii) 동일 레벨에서 동일한 버전 값을 갖는 노드들이 존재하거나;
    iii) 루트 레벨을 제외한 노드가 루트 노드보다 높은 버전 값을 갖는 경우에 침입이 있는 것으로 판정하는 것을 특징으로 하는 시스템.
  8. 제 6 항에 있어서,
    i) 최상위 노드가 아닌 노드들에 대해서는 최상위 노드의 정보를 이용하여 침입으로 의심되는 노드를 복구하고, 노드들의 버전 값을 감소시키며,
    ii) 최상위 노드에 대해서는, 상기 최상위 노드를 제외한 노드 중에서 가장 높은 버전 값을 갖는 노드의 정보를 이용하여 복구하고, 상기 최상위 노드의 버전 값을 감소시키는 것을 특징으로 하는 시스템.
  9. i) 파일을 저장하고, 상기 저장된 파일에 읽기/쓰기 동작을 수행하는 스토리지 노드 모듈,
    ii) 상기 분산 저장장치에 대한 침입을 모니터링하고, 침입탐지시 손상된 데이터를 복구하는 관리 노드 모듈,
    iii) 침입 탐지 디렉토리를 설정하고, 침입 목록을 작성하는 설정 노드 모듈, 및
    iv) 네트워크를 통하여 임의의 스토리지 노드 모듈에 저장되어 있는 파일에 대한 읽기/쓰기를 요청하는 클라이언트 노드 모듈을 포함하는 분산 저장장치에서 침입을 탐지하는 방법으로서,
    상기 클라이언트 노드 모듈이 상기 스토리지 노드 모듈에 저장되어 있는 파일에 대한 읽기/쓰기를 요청하는 단계;
    상기 스토리지 노드 모듈이 상기 클라이언트 노드 모듈의 파일 읽기/쓰기 요청을 받은 경우, 파일의 버전 정보를 상기 관리 노드에 전송하는 단계;
    상기 관리 노드 모듈은 상기 스토리지 노드가 전송한 파일의 버전 전보를 분석하여 침입 여부를 탐지하는 단계; 및
    상기 관리 노드 모듈이 침입인 것으로 판정한 경우, 파일을 복구하는 단계를 포함하는 것을 특징으로 하는 방법.
  10. 제 9 항에 있어서, 상기 파일에 대한 읽기 및 쓰기 동작은 복제 프로토콜에 의하여 이루어지는 것을 특징으로 하는 방법.
  11. 제 10 항에 있어서, 상기 복제 프로토콜로서 하이브리드 복제 프로토콜이 사용되는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서, 상기 하이브리드 복제 프로토콜은,
    k번째 레벨의 노드의 개수가 2k-1개인 n개의 레벨로 구성되는 스토리지 노드 모듈에서,
    읽기 동작은 임의의 레벨의 전체 노드에 대하여 수행하되, 노드의 장애가 발생한 경우, 다음 레벨로 이동하여 전체 노드에 대하여 읽기 동작을 수행하고,
    쓰기 동작은 첫 번재 레벨로부터 마지막 레벨까지 이동하면서, 각 레벨 중 임의의 하나의 노드를 선택하여 수행하는 것을 특징으로 하는 방법.
  13. 제 12 항에 있어서,
    상기 스토리지 노드 모듈이 파일에 대한 읽기 요청을 받은 경우, 상기 파일에 대한 버전 정보를 관리 노드 모듈로 전송하며,
    상기 관리 노드 모듈은 상기 스토리지 노드 상의 버전 정보를 모두 체크하여 침입 여부를 탐지하고, 침입이 아닌 것으로 판정되는 경우 가장 높은 버전의 스토리지 노드가 상기 읽기 동작을 수행하는 것을 특징으로 하는 방법.
  14. 제 12 항에 있어서, 상기 스토리지 노드 모듈이 파일에 대한 쓰기 요청을 받은 경우, 쓰기 동작을 수행하고, 상기 파일에 대한 버전 정보를 관리 노드로 전송하며,
    상기 관리 노드는 상기 스토리지 노드 상의 버전 정보를 모두 체크하여 침입 여부를 탐지하고, 침입인 것으로 판정되는 경우 상기 파일을 복구하는 것을 특징으 로 하는 시스템.
  15. 제 13 항 또는 제 14 항에 있어서, 상기 관리 노드 모듈은,
    i) 상기 복제 프로토콜에 따라 구성된 전체 노드 중에서 레벨의 개수인 n개의 노드가 동일한 버전 값을 갖지 않거나;
    ii) 동일 레벨에서 동일한 버전 값을 갖는 노드들이 존재하거나;
    iii) 루트 레벨을 제외한 노드가 루트 노드보다 높은 버전 값을 갖는 경우에 침입이 있는 것으로 판정하는 것을 특징으로 하는 방법.
  16. 제 14 항에 있어서,
    i) 최상위 노드가 아닌 노드들에 대해서는 최상위 노드의 정보를 이용하여 침입으로 의심되는 노드를 복구하고, 노드들의 버전 값을 감소시키며,
    ii) 최상위 노드에 대해서는, 상기 최상위 노드를 제외한 노드 중에서 가장 높은 버전 값을 갖는 노드의 정보를 이용하여 복구하고, 상기 최상위 노드의 버전 값을 감소시키는 것을 특징으로 하는 방법.
KR1020040106025A 2004-12-15 2004-12-15 분산 저장장치 기반 침입 탐지 시스템 및 방법 KR100623553B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040106025A KR100623553B1 (ko) 2004-12-15 2004-12-15 분산 저장장치 기반 침입 탐지 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040106025A KR100623553B1 (ko) 2004-12-15 2004-12-15 분산 저장장치 기반 침입 탐지 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20060068083A true KR20060068083A (ko) 2006-06-21
KR100623553B1 KR100623553B1 (ko) 2006-10-16

Family

ID=37162437

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040106025A KR100623553B1 (ko) 2004-12-15 2004-12-15 분산 저장장치 기반 침입 탐지 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR100623553B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110244904A (zh) * 2018-03-09 2019-09-17 杭州海康威视系统技术有限公司 一种数据存储系统、方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110244904A (zh) * 2018-03-09 2019-09-17 杭州海康威视系统技术有限公司 一种数据存储系统、方法及装置

Also Published As

Publication number Publication date
KR100623553B1 (ko) 2006-10-16

Similar Documents

Publication Publication Date Title
US8185614B2 (en) Systems, methods, and apparatus for identifying accessible dispersed digital storage vaults utilizing a centralized registry
US8533256B2 (en) Object interface to a dispersed data storage network
US6421711B1 (en) Virtual ports for data transferring of a data storage system
US6295575B1 (en) Configuring vectors of logical storage units for data storage partitioning and sharing
US10270855B2 (en) Integrated client for use with a dispersed data storage network
US6493825B1 (en) Authentication of a host processor requesting service in a data processing network
US6260120B1 (en) Storage mapping and partitioning among multiple host processors in the presence of login state changes and host controller replacement
US7979416B1 (en) Metadirectory namespace and method for use of the same
EP2754027B1 (en) Method for creating clone file, and file system adopting the same
US8478865B2 (en) Systems, methods, and apparatus for matching a connection request with a network interface adapted for use with a dispersed data storage network
US8209363B2 (en) File system adapted for use with a dispersed data storage network
US7818302B2 (en) System and method for performing file system checks on an active file system
US7533291B2 (en) System and method for storing a data file backup
US7155464B2 (en) Recovering and checking large file systems in an object-based data storage system
US8606759B2 (en) Apparatus, system and method for recovering meta data using fragmentary information
US20090276593A1 (en) Data storage systems, methods and networks having a snapshot efficient block map
US20130311520A1 (en) Storage-service-provision apparatus,system, service-provision method, and service-provision program
US7979395B1 (en) Method and system for determining reclaimable space occupied by a set of snapshots
KR100623553B1 (ko) 분산 저장장치 기반 침입 탐지 시스템 및 방법
Allalouf et al. Block storage listener for detecting file-level intrusions
CN108271420A (zh) 管理文件的方法、文件系统和服务器系统
Zhang et al. Research on object-storage-based intrusion detection
US7870239B1 (en) Method and system for securing network access to dynamically updateable data stored in a data storage system
CN117763636A (zh) 数据写入方法,恢复方法,读取方法以及对应装置
Stein et al. Harvard University 2 Sun Microsystems

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120713

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130830

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee