본문 바로가기
정보보안/시스템보안

유닉스/리눅스 보안 유닉스 1/2

by 피갓자 2025. 1. 17.

유닉스리눅스 보안 유닉스
유닉스리눅스 보안 유닉스

개요

  • 1960년대 후반에 AT&T 사의 Bell 연구소에서 개발한 Multics라는 운영체제가 모태가 됨
  • Ken Thompson이 DEC사의 PDP.7용 운영체제를 어셈블리로 개발하여 기초를 만듦
  • 1973년 Dennis Ritchie가 이식성이 뛰어난 C언어로 유닉스 시스템을 재코딩하여 개발

특징

  • 대화식 운영체제 : 사용자와 운영체제(UNIX) 간의 상호작용은 명령어 해석기인 셸(Shell)에 의해 이루어짐
  • 멀티태스킹 : 여러 개의 명령어를 동시에 처리하는 방식
  • 멀티유저 : 동시에 여러 사용자가 하나의 컴퓨터를 사용 가능 → 보안이 중요해짐
  • 호환성 및 이식성 : 하드웨어적인 구조에 독립적으로 응용프로그램을 작성할 수 있는 환경 제공
  • 계층적 파일시스템 : 계층적 파일시스템은 정보의 고유구조를 반영하도록 그룹 하는 기능으로 파일관리에 상당한 유연성 제공
  • 뛰어난 통신 기능 : TCP/IP에 기반한 통신 기능을 운영체제 자체에 내장하고 있으며 프로세스 간을 연결하는 파이프 기능이 있어서 명령어 간의 데이터 전달이 수월
  • 다양한 기능의 유틸리티와 개발 환경 제공 : UNIX 시스템은 수백 개의 명령어와 유틸리티를 사용자 및 개발자에게 제공하여 도움을 줌

종류

UNIX System V : 벨 연구소에서 개발된 유닉스 시스템의 정식 이름

SunOS : Sun 사의 BSD 중심의 운영체제

Solaris : Sun 사의 SVR4 구현

HP-UX : 휴렛팩커드 버전은 OSF/1의 많은 특성들을 도입한 SVR4의 변형임

AIX : IBM 사의 System V 운영체제로 SVR4, BSD, OSF/1 특징들을 가지고 있음

Linux : 리누스 토발즈가 만들었으며 의미는 Linus의 UNIX라는 뜻으로 인텔 프로세서를 위한 Free UNIX 방식의 운영체제임

구성

커널(Kernel) : 메인 메모리에 상주하여 컴퓨터 자원을 관리함. 디바이스(I/O), 메모리, 프로세스 관리 및 시스템 프로그램과 하드웨어 사이의 함수 관리 및 Swap space, Daemon 관리 등을 담당함

셸(Shell) : 커널과 사용자 간의 인터페이스를 담당하며, 사용자 명령의 입출력을 수행하며 프로그램을 실행시킴. 명령어 해석기/번역기라고도 불림

파일 시스템(File System) : 디렉터리, 서브 디렉터리, 파일 등의 계층적인 트리구조를 의미하며 시스템 관리를 위한 기본 환경을 제공함. 슈퍼블록, Inode list, 데이터의 3부분으로 구성되어 있음

커널

  • 사용자 프로그램들은 때에 따라 시스템의 하드웨어나 소프트웨어의 자원을 엑세스하게 되는데 커널은 이러한 사용자 프로그램을 관리하는 부분을 말함
  • 크게 프로세스, 메모리, 입출력 그리고 파일 관리의 네 부분으로 나누어 생각할 수 있으며 이러한 서브 시스템은 각기 독립적으로 사용자 프로그램에 의해서 의도되는 서비스를 올바르게 제공하기 위해서 상호 협동적으로 작동하게 됨
  • 셸과 상호 연관되어 있어서 셸에서 지시한 작업을 수행하고 결과물을 돌려보냄

역할

프로세서 컨트롤러 : 프로세서를 제어하는 것으로 여러 개의 프로세서들을 실행, 중지하는 등 실행 프로그램을 제어하는 역할

서브 시스템 : 시스템을 제어하는 데 관련된 여러 가지 정보와 참고 자료로 구성된 형태로 커널 자체적인 호출에 사용되는 것

내부 프로세스 통신 : 유닉스 내부에서 운영되는 프로그램들을 연결하는 역할

스케줄러 : 스케줄에 관한 것으로 유닉스 내부에서의 프로그램 처리 순서 등을 관리하는 역할에 관한 내용으로 TSS 방식의 시스템에서는 필수 내용

메모리 관리자 : 메인 메모리에 읽힌 프로그램들의 크기라든가 남아있는 영역의 효율적인 관리를 목적으로 운영되는 프로그램

  • 명령어 해석기(Command Processor)로서 사용자가 입력하는 명령을 읽고 해석하는 것을 의미하며 사용자가 프로그램을 수행하고 프로세스들의 파이프라인을 만들고 출력을 파일에 저장하며 동시에 하나 이상의 프로그램이 수행되도록 함
  • 명령어 해석기의 역할뿐만 아니라 프로그래밍 언어이기도 하여 셸이 해석할 수 있는 스크립트(Scripts)를 작성할 수 있고 유닉스 명령뿐만 아니라 특별한 셸 프로그래밍 언어에 포함될 수 있음

종류

본 셸(sh, Bourne Shell)

  • AT&T의 유닉스 환경을 위해 개발되었으며 대부분의 유닉스에서 제공하는 기본 셸임. 빠른 수행과 최소한의 자원만을 요구하는 것이 특징임
  • 1979년에 발표된 UNIX System B release와 함께 제공된 셸로써 개발자인 Stephen Bourne의 이름을 따서 Bourne Shell이라고 부름

C 셸(csh, C Shell)

  • 사용법이 C 언어와 유사하며 sh, ksh와 기본적으로 유사한 특성이 있으나 대형 시스템을 목표로 설계되었기 때문에 명령어의 용어와 문법적 구조는 다름
  • Berkeley UNIX version과 같이 개발되었으며 다양한 하드웨어에 이식할 수 있는 장점이 있음

콘 셸(ksh, Korn Shell)

  • 벨 연구소의 David Korn에 의해 제작되었으며 Bourne 셸을 포함하여 aliasing, history, command line editing 같은 특성이 추가됨
  • 벨 연구소의 David Korn이 개발한 ksh은 sh의 기능에 csh에서 처음으로 도입된 몇 가지 유용한 기능들을 추가한 것임
  • sh로 작성된 스크립트와 프로그램들을 수정하지 않고도 ksh에서 사용할 수 있음

티시 셸(tcsh, Tenex C Shell)

  • 코넬대학에서 ksh의 매끄러운 히스토리 편집 기능을 포함한 csh의 수정본을 개발한 것으로 95%의 csh과 5%의 새로운 기능으로 구성되었음

배시 셸(bash, Bourne Again Shell)

  • sh의 기능을 확장하고 개선한 셸로 ksh과 csh 계열의 장점을 결합. GNU 프로젝트의 일환으로 개발되었으며 리눅스의 표준 셸로 사용됨

파일 시스템

  • 디렉터리는 계층화된 트리(Tree) 구조를 가지며 최상위 디렉터리는 루트(root)임. 루트는 “/”로 표기되며 거기서부터 서브 디렉터리가 계층적으로 분기되어 나감

구조

부트 블록(Boot Block) : 부팅 시 필요한 코드를 저장하고 있는 블록

슈퍼 블록(Super Block) : 전체 파일 시스템에 대한 정보를 저장하고 있는 블록

아이노드 블록(I-Node Block) : 파일의 이름을 제외한 해당 파일이나 디렉터리에 대한 모든 정보를 저장하고 있는 블록

데이터 블록(Data Block) : 실제 데이터가 파일의 형태로 저장되는 공간

파일 구조

유닉스의 파일은 I-Node Block과 Data Block으로 구성

디렉터리 구조

/bin : System Binary의 약어로 이진 파일이며 리눅스에서 기본 명령어가 저장된 디렉터리

/usr : 시스템에 사용되는 각종 프로그램이 설치되는 디렉터리

/etc : 리눅스 시스템의 각종 환경설정 파일과 디렉터리가 저장된 디렉터리

/sbin : 시스템 관리를 위한 명령어가 저장된 디렉터리

/lib : 프로그램의 각종 라이브러리 파일이 저장된 디렉터리

/var : 시스템에서 사용되는 동적인 파일을 저장하는 디렉터리

/tmp : 임시 디렉터리로 스티키 비트(Sticky Bit)가 설정되어 있음

/root : 시스템관리자(root)의 홈 디렉터리

/proc : 시스템의 각종 프로세서, 프로그램 정보 그리고 하드웨어 정보가 저장된 디렉터리

/dev : 시스템의 각종 장치에 접근하기 위한 장치 드라이버가 저장된 디렉터리

/home : 일반 사용자의 홈 디렉터리

시스템 파티션과 마운트

작업 용도에 따른 시스템의 파티션 분리는 루트 영역과 사용자 파일 시스템이 같은 파티션에 존재하면 공격자가 SUID를 사용할 기회가 늘어나게 되어 보안상 취약하게 되며 백업이 용이하지 못하고 몇몇 파일 손상 등으로 인해 전체 시스템을 재설치하는 일이 발생할 수 있기 때문에 분리하여 사용하는 것이 보안상 유리함. 예로 /server에 웹서버 관련 프로그램을 설치하여 웹서버를 운용하고 /DB에 DB 파일들이 저장되는 디렉터리를 만들어 관리할 수 있음

'정보보안 > 시스템보안' 카테고리의 다른 글

유닉스/리눅스 보안 리눅스  (0) 2025.01.19
유닉스/리눅스 보안 유닉스 2/2  (0) 2025.01.18
접근통제 모델  (1) 2025.01.16
접근통제 관리  (1) 2025.01.15
접근통제 개요 2/2  (0) 2025.01.14