반응형
정보보안기사 필기 4-3. 유닉스/리눅스 서버 보안(파일시스템, 하드/심볼릭 링크)
1. 유닉스(UNIX)
- 유닉스의 링 구조는 4개로 "하드웨어, 커널, 셀, 응용 프로그램"으로 구성되어 있으며, 윈도우보다 링 구조가 더 명확하게 나눠져 있어 조금 더 높은 보안 수준을 유지한다.
1) 유닉스 시스템의 특징
구분 | 설명 |
대화식 운영체제 | - 사용자와 운영체제간의 상호작용은 명령어 해석기인 셸(Shell)에 의해 이루어짐 |
멀티태스킹 | - 여러 개의 명령어를 동시에 처리하는 방식 |
멀티유저 | - 동시에 여러 사용자가 하나의 컴퓨터를 사용 가능 → 보안 ▲ |
호환성 및 이식성 | - 하드웨어적인 구조에 독립적으로 응용프로그램을 작성할 수 있는 환경 제공 |
계층적 파일시스템 | - 정보의 고유구조를 반영하도록 그룹화하는 기능으로 파일관리에 상당한 유연성 제공 |
통신 기능 | - TCP/IP에 기반한 통신기능을 운영체제 자체에 내장하고 있어 프로세스 간을 연결하는 파이프 기능이 있어서 명령어 간의 데이터 전달이 수월 |
다양한 기능과 유틸리티 제공 | - 수백여 개의 명령어와 유틸리티를 사용자 및 개발자에게 제공하여 도움을 준다. |
2) 유닉스의 구성
2-1) 커널(Kernel)
- 커널은 항상 메모리에 상주하여 CPU, 메인 메모리, 하드디스크 등의 하드웨어 자원을 제어하면서 프로세스 스케줄링, 기억장치 관리, 파일 관리, 시스템 호출 인터페이스, 입출력서비스 등의 기능을 사용자에게 제공한다.
- 가장 하위 수준에서 하드웨어와 직접 관계하며, 커널의 일부분은 특정 컴퓨터 시스템의 하드웨어에 종속적이다.
- 이중모드에서 사용자 모드는 명령어 제한이 있는데 이런 경우에 사용자 프로세스는 운영체제에 도움을 요청하게 되고 이를 시스템 호출이라고 한다.
- 시스템 호출(System call)은 커널 내에 서브루틴 형태로 존재하고 있으며, 사용자 프로그램이 커널에 접근하는 인터페이스를 제공한다. 즉 실행 중인 프로그램과 운영체제 사이에 인터페이스를 제공하는 것이다.
2-2) 셸(Shell)
- 운영체제와 사용자가 대화하기 위한 기반을 제공하는 중요한 프로그램으로, 일반적인 운영체제에서 명령어 해석기라 불리는 부분의 기능을 담당한다.
2-3) 파일시스템(File System)
- 유닉스의 파일시스템은 디렉터리와 파일로 구성되어 있다. 디렉터리는 계층화된 트리(Tree) 구조를 가지며 최상위 디렉터리는 루트(root)로 효과적인 파일 처리 및 접근의 편의성을 제공해준다.
- 물리적인 디스크는 논리적인 파티션으로 나누어지며, 각 파티션별로 고유한 파일시스템을 생성한다.
디렉터리 | 내용 |
/etc | - 시스템의 환경 설정 및 주요 설정 파일을 담고 있다. (passwd, hosts 등) |
/dev | - 프린터나 터미널 같은 물리적인 장치를 다루기 위한 특수 파일을 담고 있다. |
/usr/bin | - 기본적으로 실행 가능한 파일을 담고 있다. (echo, mv, copy, pwd 등) |
/usr/include | - C 언어 라이브러리 헤더 파일이 저장되는 디렉터리이다. |
/usr/lib | - 기본 프로그램의 모듈을 담고 있다. |
/usr/sbin | - 시스템 관리 명령어가 저장되는 디렉터리이다. |
/home | - 사용자 홈 디렉터리가 저장되는 디렉터리이다. |
/tmp | - 프로그램 실행 및 설치 시 생성되는 임시 파일을 담고 있으며, 이 디렉터리에 파일을 저장하게 되면 재부팅 시 임의로 파일이 삭제될 수 있다. |
/var | - 시스템 로그가 저장되는 디렉터리이다. |
2-4) 파일시스템의 구조
- 파티션에 생성된 파일시스템은 "부트 블록(Boot Block), 슈퍼 블록(Super Block), I-node 리스트, 데이터 블록(Data Block)의 네 가지 영역으로 분리된 자료구조를 가진다.
- 부트 블록(Boot Block)은 유닉스 시스템의 부팅 과정에서 필요한 운영체제의 실행 파일정보를 저장하고 있다.
- 슈퍼 블록(Super Block)은 파일시스템의 정보를 유지하는 자료구조로 전체 파일시스템의 정보 뿐만아니라, 요약정보와 함께 사용하지 않고 있는 I-node와 디스크 블록의 위치정보도 가지고 있다.
- 데이터 블록(Data Block)은 실제 데이터가 저장되는 공간이다.
- i-node list(Index node)는 유닉스에서 각 파일에 대한 정보를 기억하는 약 120 Byte의 고정된 크기의 구조체이다.
- i-node는 파일에 대한 정보(파일의 허가권, 소유권, 그룹, 최근 수정된 시간 등)와 이 파일에 할당된 디스크 블록의 주소를 저장하는 필드들로 구성되어 있다. 단, 파일이름은 i-node 리스트에 존재하지 않고 i-node의 번호와 함께 디렉터리에 저장된다.
- i-node 포인터 구조를 통해 파일의 실제 데이터가 저장된 블록의 정보를 포함하여 파일의 메타 데이터 정보만 저장한다.
속성 | 설명 |
I-node number | - 파일시스템 내에서 해당 파일을 식별하기 위한 고유 식별자(전체 파일시스템X) |
파일타입 | - 일반파일, 디렉터리, 장치파일 등의 파일 유형 |
접근권한 | - 파일에 대한 접근권한 |
link count | - 해당 I-node를 참조하는 링크 개수(하드링크 카운트) |
소유자 | - 파일의 소유자/UID |
소유그룹 | - 파일의 소유그룹/GID |
파일크기 | - 파일의 크기 |
MAC Time | - last Modification Time : 파일의 내용을 마지막으로 수정한 시간 - last Access Time : 파일을 마지막으로 접근한 시간 - last Change Time : 파일의 속성(I-node의 정보)을 마지막으로 변경한 시간 → 즉 소유자, 접근권한 등의 I-node의 정보가 변경되면 last Change Time이 변경된다. |
Block index | - Data Blocks에 저장되어 있는 파일 내용에 대한 색인 정보 |
- 특정 파일/디렉터리에 대한 속성정보는 stat 명령을 통해 확인할 수 있다.
2-5) 파일시스템의 유형
- 일반파일 : 실행가능한 프로그램 파일, 원시 프로그램 파일, 문서파일 등 사용자가 정의한 그대로의 파일을 디스크 등에 내용이 저장된다. (Text File, Binary File)
- 디렉토리 파일 : 디스크에 저장되며 디렉토리에 포함되어 있는 여러가지 파일들과 디렉토리에 관한 정보 등을 저장하는 논리적 영역이다. (/, /bin(실행파일), /dev(장치파일))
- 특수파일 : 주변 장치 또는 파이프와 소켓 같은 프로세스간 상호통신, 표준입출력 시스템 호출(문자/블록 특수파일)
3) 파일시스템과 링크(link)파일
3-1) 개요
- 링크(link)는 윈도우의 바로가기 아이콘처럼 기존 파일에 대한 또 다른 접근 포인트를 만들어주는 기능이다. 즉 A(Chrome 설치 경로)까지 꼭 가지 않더라도 B(바탕화면 바로가기)에서 실행시킬 수 있게 된다.
- 링크에는 하드 링크(Hard link)와 심볼릭 링크(Symbolic link)로 구분할 수 있다.
문법 | - ln [-s] source_file | source_directory target_file |
옵션 | - [-s] 이 옵션이 있으면 심볼릭 링크, 없으면 하드 링크를 만든다. |
설명 | - 하드 링크는 파일에만 링크하고, 심볼릭 링크는 파일 또는 디렉터리에 링크할 수 있다. |
3-2) 하드 링크
- 유닉스 초기시절부터 지원해주던 방식으로 기존파일과 동일한 i-node number를 가지는 파일을 생성하여 원본 데이터와 직접적으로 연결하여 접근하는 방식을 말한다. (동일한 파일시스템에서 파일에만 부여가능)
- 하드 링크 파일은 원본 파일과 동일한 내용의 다른 파일이라고 할 수 있으며, 같은 i-node 값을 가지고 있어, 원본 파일을 수정하여도 하드 링크 파일이 수정되고, 하드 링크 파일을 수정하여도 원본 파일에 반영이 되는 구조이다.
- 하드 링크 파일을 생성하면 해당 i-node의 링크 카운트가 1 증가하며, 파일 삭제 시에는 링크 카운트를 1 감소시킨 후 그 값이 0이 되었을 때 해당 파일의 i-node 정보 및 데이터가 삭제된다. 단, i-node를 참조하는 파일이 있으면 삭제되지 않는다.
3-3) 심볼릭 링크
- 원본 파일에 대한 파일 경로를 파일 내용으로 하는 새로운 파일을 생성해서 접근하는 방식으로 하드 링크와 달리 i-node number가 아닌 파일 경로를 기반으로 하므로 파일시스템에 제한이 없으며 디렉터리도 가능하다.
- 심볼릭 링크 파일은 원본 파일의 포인터를 가리키고 있어 원본 파일이 삭제되면 심볼릭 링크는 아무런 구실을 못한다.
- 일반적으로 디렉터리의 경로 단축이나 변경에 사용이 되며, 생성된 링크 파일의 크기는 매우 작으며 원본 파일과 무관하게 퍼미션의 값은 777로 표시된다.
2. 유닉스 기본 사용법
1) 파일시스템 응용
1-1) 파일과 디렉터리 관리
- 디렉터리(파일) 정보 출력 - ls : 특정 디렉터리에 있는 디렉터리와 파일을 열거하고 추가 옵션으로 이들에 관한 여러가지 정보(크기, 소유주, 만든 시간, 변경 시간, 이름, 접근권한 등)도 알 수 있다.
문법 | ls [-alFR] [file_name | directory_name] |
옵션 | -l : 목록(List) 형태로 디렉터리 및 파일의 정보를 자세히 보여준다. -a : 도트(.) 파일을 포함하여 디렉터리 내에 있는 모든 디렉터리 및 파일을 보여준다. -R : 하위 디렉터리에 있는 내용까지 보여준다. -F : 디렉터리인지 어떤 종류의 파일인지를 알려준다. → 디렉터리 : /, 실행파일 : *, 심볼릭링크 : @ -i : 디렉터리 및 파일에 지정된 i-node 번호를 보여준다. |
- 파일 유형
문자 | 파일 유형 |
- | - 일반(정규) 파일 |
d | - 디렉터리 파일 |
l | - 심볼릭 링크 파일 |
b | - 블록 장치 특수 파일 |
c | - 문자 장치 특수 파일 |
p | - 파이프, 프로세스간 통신에 사용되는 특수 파일 |
s | - 소켓, 네트워크 통신에 사용되는 특수 파일 |
- 접근권한 : 유닉스 운영체제에서는 권한 부여의 대상을 user, group, other 세 종류로 구분한다.
- user : 파일을 만든 소유주
- group : 파일을 만든 소유주가 속한 그룹의 사용자
- other : 기타 사용자
권한 파일 디렉터리 읽기(r, 4) - 파일을 일거나 복사할 수 있다. - ls 명령으로 디렉터리 목록을 볼 수 있다.
- ls 명령의 옵션은 실행권한이 있어야 사용할 수 있다.쓰기(w, 2) - 파일을 수정, 이동, 삭제할 수 있다.
- 디렉터리에 쓰기 권한이 있어야 한다.- 파일을 생성하거나 삭제할 수 있다.
- touch, mkdir, rmdir, rm 등실행(x, 1) - 파일을 실행할 수 있다.
- 셀 스크립트나 실행 파일의 경우- 파일을 디렉터리로 이동하거나 복사할 수 있다.
- cd 명령의 사용이 가능하다. - 유닉스 시스템에서는 각각 파일과 디렉터리를 생성할 때, 일반 파일의 경우 접근권한으로 666(rw_rw_rw_)을, 디렉터리의 경우 접근권한으로 777(rwxrwxrwx)을 디폴트 값으로 취한다.
- 디렉터리가 777인 이유는 실행 권한(x)가 없으면 디렉터리 안으로 들어갈 수 없기 때문이다.
- 단, 파일이 갖지 말아야 할 접근권한을 명시하는 명령어인 "umask"로 지정한 값만큼 디폴트 값에서 빼야한다.
2) 파일 권한 관리
2-1) 접근 권한 변경(chmod)
- 기존 파일 또는 디렉터리에 대한 접근권한을 변경할 때 사용하며 해당 파일의 소유주 또는 슈퍼 유저(root)만 사용할 수 있다.
- 예1) chmod go-w test.c : test.c의 group, others에 w 권한 제거
- 예2) chmod a=rw test.c : test.c의 모든 사용자에 rw 권한 설정
- 예3) chmod g+x,o-x test.c : test.c의 group에 x 권한 추가, others에 x 삭제
- 예4) chmod 664 test.c : user, group에 rw 권한, others에 r 권한 설정
2-2) 소유권 또는 그룹 변경(chown/chgrp)
- 파일이나 디렉터리의 소유주나 그룹을 변경할 때 사용하며 명령을 실행하고 나면 파일의 이전 소유주는 해당 파일에 이 명령을 다시 실행할 수 없으며, 슈퍼 유저(root)만 실행할 수 있다.
반응형
'정보보안기사 필기 > 1. 정보보안 일반' 카테고리의 다른 글
정보보안기사 필기 4-5. 유닉스/리눅스 서버 보안(패스워드 관리, 프로세스 실행권한) (0) | 2022.04.19 |
---|---|
정보보안기사 필기 4-4. 유닉스/리눅스 서버 보안(프로세스) (0) | 2022.04.19 |
정보보안기사 필기 4-2. 윈도우 서버 보안 (0) | 2022.04.19 |
정보보안기사 필기 4-1. 클라이언트 보안 (0) | 2022.04.19 |
정보보안기사 필기 3-6. 네트워크 보안 요점 정리(1) (0) | 2022.04.19 |