이번 학습 주제는 1989년 핀란드 헬싱키 대학에 재학 중이던
리누스 토발스(Linus Torvalds)가 개발한 유닉스(Unix) 기반의
공개용(Open Source) 운영체제인 리눅스(Linux)입니다
리눅스의 특징을 살펴보면 다음과 같습니다
특징 | 내용 |
다중 사용자 (Multi User) |
여러 명의 사용자가 네트워크를 통해 접속하여 컴퓨터 시스템을 사용할 수 있음 |
다중 작업 (Multi Tasking) |
여러 개의 프로세스를 동시에 실행시켜 CPU를 스케줄링하여 사용 가능 |
다중 처리기 (Multi Processor) |
한 개 이상의 CPU가 탑재되어 있는 경우 여러 개의 CPU를 지원해 주는 다중 처리기 지원 |
다중 플랫폼 (Multi Platform) |
여러 종류의 CPU(Intel, Sun Sparc, Power PC 등)를 지원하여 대부분의 플랫을 지원 |
계층형 파일 시스템 |
루트(root)를 기반으로 하위 디렉토리를 이루는 계층형 파일 시스템으로 이루어짐 |
POSIX과 호환 |
유닉스(Unix) 시스템의 표준 인터페이스를 정의한 POSIX 표준을 따름 |
우수한 네트워킹 |
TCP/IP, IPX/SPC, Appletalk, Bluetooth 등 다양한 프로토콜을 지원 |
가상 콘솔 (Virtual Console) |
기본적으로 6개의 가상 콘솔이 있어서 각 창마다 서로 다른 작업을 수행 가능 |
가상 기억 장치 (Virtual Memory) |
가상 메모리 사용 가능 |
리눅스의 기능을 살펴보면 다음과 같습니다
구성요소 | 기능 및 역할 |
태스크 관리자 (Task Manager) |
태스크의 생성, 실행, 상태관리, 스케줄링, 시그널 처리, 프로세스 간 통신 등의 서비스 제공 |
메모리 관리자 (Memory Manager) |
세그먼테이션, 페이징, Swap 서비스를 통한 물리 메모리와 가상 메모리 관리 |
파일 시스템 관리자 (File System Manager) |
파일 생성/삭제, 접근제어, 디렉터리 관리, 슈퍼블록 관리 등의 서비스 제공 |
네트워크 관리자 (Network Manager) |
소켓(Socket), TCP/IP, 프로토콜 스택 관리 등의 서비스 |
장치 관리자 (Device Manager) |
디스크, 각종 카드, 외부 인터페이스 등을 제어하는 드라이버 관리 서비스 제공 |
리눅스의 3가지 핵심 구성요소를 살펴보면 다음과 같습니다
구성요소 | 내용 |
커널 (Kernel) |
· 주기억장치(Main Memory)에 상주하면서 사용자 프로그램을 관리하는 운영체제의 핵심 역할 · 프로세스, 메모리, 입출력(I/O), 파일 관리 등을 수행 |
셀 (Shell) |
· 명령어 해석기/번역기로 사용자 명령의 입출력을 수행하며 프로그램을 실행 · 셀의 종류는 Bourne, C, Korn 등이 있고 표준 셀은 bash · 실행파일이며 /bin 디렉터리에 존재 · 시그널을 처리 · 파이프, 리다이렉션, 백그라운드 프로세스 설정 · 와일드 카드, 히스토리 문자, 특수문자 분석 |
파일 시스템 (File System) |
· 여러 가지 정보를 저장하는 기본적인 구조 · 시스템 관리를 위한 기본 환경을 제공 · 계층적인 트리 구조 형태(디렉터리, 서브 디렉터리, 파일 등) |
리눅스의 구성요소 중 쉘(Shell)의 표준인 bash 쉘이 실행될 때는
환경 파일에 설정된 값으로 실행하게 되는데 그 설정 파일은 다음과 같습니다
설정 파일 | 내용 |
.bash_profile |
· 사용자 홈 디렉터리에 있는 파일 · 개별적인 쉘 환경을 설정 |
.bashrc | 사용자 정의 변수, 함수 alias를 정의 |
·bash_logout | 사용자가 로그아웃할 때 실행되는 파일을 정의 |
※ 쉘 환경 파일 중에서 전역 설정 파일은 /etc 디렉터리에 존재
리눅스에는 쉘 환경변수도 있는데
기본적으로 설정되어 있는 환경변수는 SHELL, HOME, PATH 등이 있으며
env 명령어로 현재 환경에 설정되어 있는 모든 변수를 확인할 수 있습니다
환경변수 | 설명 |
SHELL | 사용자의 로그인 쉘의 절대 경로 |
HOME | 홈 디렉터리에 대한 경로 이름 |
PATH | 실행할 명령어를 찾을 경로 |
USER | 사용자 이름 |
LOGNAME | 로그인할 때 사용할 이름 |
TERM | 사용 중인 단말기를 설명 |
전자메일 우편함 | |
HOSTNAME | 호스트 명을 의미 |
TMOUT | 타임아웃 |
끝으로 Shell Shock에 대해 알아보고 마치겠습니다
과학기술정보통신부와 한국인터넷진흥원은 리눅스 계열 및 MAC OS X
운영체제에서 사용되는 GNU Bash 쉘에서 취약점을 발견하고 Shell Shock라고 명명하였는데
취약점은 악의적 명령 실행과 관리자 권한 획득 등입니다
Shell Shock를 이용한 공격 기법은 리눅스 환경변수에 빈 함수를 넣으면
그 뒤에 오는 코드는 무조건 실행되는 심각한 버그로
CGI 스크립트 등을 통해서 공격을 수행할 수 있습니다
이것으로 이번 학습을 마치겠습니다
그럼 이만-_-
'Security' 카테고리의 다른 글
[Security] 리눅스 부팅(Booting) 및 인증과 권한 관리 (0) | 2020.03.08 |
---|---|
[Security] 리눅스 파일 시스템 (0) | 2020.03.08 |
[Security] 장치 관리 (0) | 2020.03.08 |
[Security] 입출력 처리 (0) | 2020.03.07 |
[Security] 웹 서버 보안(Web Server Security) (0) | 2020.03.05 |