[정보보안기사 PART 04] 시스템 보안 - 유닉스/리눅스 서버 보안


Section 17 유닉스/리눅스 서버 보안

 

1. 유닉스(UNIX)

 

(1) 개요

1) UNIX 시스템의 특징

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

 

(2) UNIX의 구성

1) 커널(kernel)

 메모리에 상주!, 가장 하위 수준에서 하드웨어와 직접 관계!

 CPU, 메인 메모리, 하드디스크 등의 하드웨어 자원 제어

 프로세스 스케줄링, 기억장치관리, 파일관리, 시스템호출 인터페이스, 입출력서비스 등의 기능 제공

 

2) 셸(Shell)

 운영체제와 사용자가 대화하기 위한 기반을 제공하는 중요한 프로그램

 명령어 해석기(Command Interpreter)

 ex) 본 셸, C 셸, 콘 셸, 배시 셸 등

 

3) 파일시스템(File System)

- 디렉터리 구조

  계층화된 트리구조를 가지며, 최상위 디렉터리는 루트(root)이다.

디렉터리 내용
/ root 디렉터리나 최상위 디렉터리이다.
/etc 시스템의 환경 설정 및 주요 설정 파일을 담고 있다.(passwd, hosts 등)
/dev 프린터나 터미널 같은 물리적인 장치를 다루기 위한 특수 파일을 담고 있다.
/usr/bin 기본적으로 실행 가능한 파일을 담고 있다.(echo, mv, copy, pwd 등)
/usr/include C 언어 라이브러리 헤더 파일이 저장되는 디렉터리이다.
/usr/lib 기본 프로그램의 모듈을 담고 있다.
/usr/sbin 시스템 관리 명령어가 저장되는 디렉터리이다.
/home 사용자 홈 디렉터리가 저장되는 디렉터리이다.
/tmp 프로그램 실행 및 설치 시 생성되는 임시 파일을 담고 있다. 이 디렉터리에 파일을 저장하면 재부팅 시 임의로 삭제될 수 있다.
/var 시스템 로그가 저장되는 디렉터리이다.

 

- 파일시스템의 구조

  파티션에 생성된 파일시스템은 부트 블록(Boot Block), 슈퍼 블록(Super Block), i-node 리스트, 데이터 블록(Data Block)의 네가지 영역으로 분리된 자료구조를 갖는다.

 

- i-node

  유닉스에서 각 파일에 대한 정보를 기억하는 약 120byte의 고정된 크기의 구조체

  일반 파일이나 디렉터리 파일의 i-node는 각 파일의 디스크 블록의 위치를 포함하고 있으며, 특수파일의 i-node는 주변장치를 식별할 수 있는 정보 포함

 

- 슈퍼 블록(Super Block)

  파일시스템의 정보를 유지하는 자료구조

  좀 더 빠르고 효과적인 파일시스템의 관리 가능

  파일시스템의 요약정보와 함께 사용하지 않고 있는 i-node와 디스크 블록의 위치정보도 가지고 있다.

 

 

2. UNIX 기본 사용법

 

(1) 파일시스템 응용

1) 파일과 디렉터리 관리

 디렉터리(파일) 정보 출력(ls)

특정 디렉터리에 있는 디렉터리와 파일을 열거하고 추가 옵션으로 이들에 관한 여러가지 정보(크기, 소유주, 만든 시간, 변경 시간, 이름, 접근권한 등)도 알 수 있다.

 

- rw-r--r-- 1 root root 50316 2009-06-14 03:08 install.log

 

파일 유형   : -

문자 파일 유형
- 일반(정규) 파일
d 디렉터리 파일
| 심볼릭 링크 파일
b 블록 장치 특수 파일
c 문자 장치 특수 파일
p 파이프, 프로세스간 통신에 사용되는 특수 파일
s 소켓, 네트워크 통신에 사용되는 특수 파일

 

접근권한  : rw-r--r--

 user : 파일을 만든(생성) 소유주

 group : 파일을 만든 소유주가 속한 그룹의 사용자

 other : 기타 사용자

권한 파일
읽기 r (4) 파일을 읽거나 복사할 수 있다.
쓰기 w (2) 파일을 수정, 이동, 삭제할 수 있다.
실행 x (1) 파일을 실행할 수 있다.

 

하드 링크수(Hard Link)   : 1

 링크 카운터라고도 하며, 동일한 i-node를 참조하는 파이릐 수

 

소유주   : root

소유 그룹    : root

파일크기 (Byte)   : 50316

마지막 변경 날짜/시간   : 2009-06-14 03:08

파일 이름    : install.log

 

2) 파일 권한 관리

접근권한 변경(chmod)

 기존 파일 또는 디렉터리에 대한 접근권한을 변경할 때 사용

chmod [-R] permission file_name1 | directory_name1 [file_name2 | director_name2....]

- R : 하위 디렉터리와 파일의 권한까지 변경

permission : 기호나 8진수로 접근권한을 지정

 

접근권한을 기호로 기술하는 방법

대상 : u(user), g(group), o(other), a(ll)

연산자 : +(추가), -(제거), =(지정)

접근권한 : r(읽기), w(쓰기), x(실행)

ex) chmod go-w daemon.c : daemon.c의 group, others에 w 권한 제거

 

접근권한을 숫자로 기술하는 방법

파일의 접근권한을 세 개의 8진수로 기술

r(읽기)=4, w(쓰기)=2, x(실행)=1

ex) chmod 777 daemon.c : 모든 사용자에게 rwx권한 설정

 

소유권 또는 그룹 변경(chown/chgrp)

 파일이나 디렉터리의 소유주나 그룹을 변경할 때 사용한다. 명령을 실행하고 나면 파일의 이전 소유주는 해당 파일에 이 명령을 다시 실행할 수 없다.

chown [-hR] owner file_name1 | directory_name1 [file_name2 | director_name2....]
chgrp [-hR] group file_name1 | directory_name1 [file_name2 | director_name2....]

- h : 심볼릭 링크 파일 자체의 소유주나 그룹을 변경한다.

 

(2) 프로세스 응용

1) 프로세스 개요

 시스템 호출은 없는 대신, 유닉스에서는 기존의 프로세스를 복제한다.

 프로세스 id(PID)가 0인 swapper라는 첫 번째 프로세스는 부팅 시간 동안 운영체제에 의해서 생성

 이 프로세스는 PID 1과 2를 가지는 2개의 프로세스 init와 pagedaemon을 만들기 위해 fork/exec 두번 실행

 

 

 

3. UNIX 시스템 관리

 

(1) 시스템 시작과 종료

1) 부팅 관련 용어 정의

 런 레벨(Run Level)

런 레벨 시스템의 운영 상태
0 PROM(Programmable Read-Only Memory) 모드
S, s 시스템 싱글 유저 모드, 로컬 파일시스템이 마운트 되지 않은 상태
1 시스템 싱글 유저 모드, 로컬 파일시스템이 마운트 된 상태
2 멀티 유저 모드(NFS 클라이언트 모드)
3 멀티 유저 모드(NFS 서버 모드), UNIX 기본 Run Level
4 사용 안하
5 시스템 power Off 모드
6 시스템 리부팅

 

2) 시스템 종료

접속 중인 사용자에게 시스템의 종료를 공지하여 작업을 마무리하도록 한다.

 운영 중인 서비스(프로세스)를 안전하게 종료

 하드디스크를 갱신하여 파일시스템의 무결성 유지

 shutdown 명령은 시스템을 안전하게 종료할 때 사용!

 

(2) 파일시스템 관리

1) 파일시스템 연결(mount)

 보조기억장치에 들어 있는 데이터를 읽어 오고, 여기에 저장하려면 먼저 해당 장치를 UNIX 시스템에 연결 작업 필요

 mount 명령은 보조기억장치에 설치된 파일시스템을 UNIX 시스템이 인식하도록 특정 디렉터리에 논리적으로 연결

 

2) 파일시스템 연결 해제(umount)

 마운트 된 파일시스템의 연결 해제

 마운트된 정보는 /etc/mtab에 기록되고, umount는 정보를 삭제한다.

 

(3) 프로세스 스케줄 관리

1) 정기적 스케줄 관리(cron)

 UNIX 시스템에서 정기적인 작업을 지정시간에 처리하기 위해 사용

 

아래와 같은 특징을 가지면 cron 데몬 이용

- 일괄적으로 처리해야 하는작업인 경우

- 작업에 대한 요구가 불규칙하지 않은 경우

 

cron 데몬 프로세스를 사용하기 위한 3가지 구성요소

- 정기적으로 처리할 작업 목록을 정의한 crontab 파일

- crontab 파일을 제어(편집)하는 crontab 명령

- crontab 파일을 읽어서 내용에 정의된 대로 작업을 처리하는 cron 데몬 프로세스

 

2) crontab 파일의 구조

crontab 파일은 정기적으로 처리해야 하는 작업목록을 정의한 파일

구분 기술방법
필드 의미
필드1 분은 0-59까지의 숫자로 기술한다.
필드2 시은 0-23까지의 숫자로 기술한다.
필드3 일은 1-31까지의 숫자로 기술한다.
필드4 월은 1-12까지의 숫자로 기술한다.
필드5 요일 요일은 0-6까지의 숫자로 기술한다. (0: 일요일)
필드6 작업 지정 시간에 실행할 작업을 절대 경로로 기술하고 필요한 옵션 및 인수를 함께 나열한다.

ex) crontab -l

20 6 * * 1-5 /work/batch_job parm1

:매월 매일 월~금요일 오전 6시 20분에 /work/batch_job 명령을 param1 인수와 함께 실행

 

 

 

4. UNIX 서버 보안

 

(1) 시스템 보안

1) 사용자의 패스워드 관리

 사용자의 계정가 인증을 관리하는 것

/etc/passwd 파일에 등록된 사용자 계정마다 정보가 담겨있다.

최근에는 /etc/shadow 파일에 암호화된 패스워드를 저장하고 있다.

 

passwd 파일

UNIX 시스템은 시스템 관리자가 사용자 계정을 만들 때마다 해당 사용자와 관련된 정보를 /etc/passwd 파일에 저장한다.

[user_account]:[user_password]:[user_ID]:[group_ID]:[comment]:[home_directory]:[login_shell]

ex) root:x:0:0:Super-User:/root:/bin/sh

1. 로그인 ID(root)

2. 비밀번호(x)

3. 사용자 ID(0) : 100번 이하는 시스템이 사용하는 값, 0번은 시스템 관리자

4. 그룹 ID(0)

5. 사용자 설명(Super-User) : 사용자 이름

6. 홈 디렉터리(root) : 홈 디렉터리의 절대 경로

7. 로그인 셸(/usr/bin/bash) : 로그인 셸의 절대 경로

 

shadow 파일

암호화된 패스워드를 저장하고 관리자만 읽을 수 있도록 제한

[user_account]:[encrypted_password]:[last_change]:[minlife]:[maxlife]:[warn]:[inactivel]:[expires]

ex) root:$1$VE59oY1q$z74b9wxdTyB8oUenreT9g/:13115:0:99999:7:10::

1. User Account(root) : 사용자 계정

2 $1$VE59oY1q$z74b9wxdTyB8oUenreT9g/ : 암호화된 패스워드(일방향 해시 알고리즘 이용)

3. 13115 : 마지막으로 패스워드르 변경한 날

4. 0 : 최소 변경 일수

5. 99999 : 최대 변경 일수

6. 7 : 경고 일수

7. 10 : 최대 비활서 일수

8. EXPIRE DATE : 사용자계정이 만료되는 날

 

2) 접근권한 마스크(umask)

 파일을 생성할 때는 666에서 umask로 지정한 값을 빼고, 디렉터리의 경우 777에서 umask로 지정한 값을 빼게한다.

 

3) 권한 상승(SetUID, SetGID)

 사용자의 권한이 아닌 프로그램 소유주의 권한이 되어야한다.

파일종류 특수권한(3bit) user(3bit) group(3bit) other(3bit)
-,d,c,b,s,l,p 4 2 1 4 2 1 4 2 1 4 2 1
suid sgid sticky-bit r w x r w x r w x

 

4) 디렉터리 접근권한(Sticky-bit)

 sticky-bit를 이용하여 디렉터리에 트별한 접근권한을 부여할 수 있다.

 공유모드라고도 한다.

구분 기호방식 8진수 방식 특수권한 설정
setuid(4) s 4000 chmod 4777 a.out
chmod u+s a.out
setgid(2) s 2000 chmod 2777 a.out
chmod g+s a.out
sticky-bit(1) r 1000 chmod 1777 /testdir
chmod o+t /testdir

 

(2) 네트워크 보안

1) 슈퍼 서버[inetd 데몬]

 inetd 데몬은 N개의 개별 서버를 하나로 통합하여 클라이언트로부터 서비스 요청이 올때마다 해당 서비스와 관련된 실행 모듈(FTP, Telnet, TFTP 등)을 실행해준다.

 

2) 접근 통제(TCP Wrapper)

 외부에서 들어오는 클라이언트에 대해 접근통제 기능 제공

 클라이언트의 IP주소를 확인하여 시스템관리자가 접근을 허용한 호스트들에 대해서만 서비스 허용하기 때문에 외부의 해킹으로부터 시스템 보호 가능!

 모든 프로토콜에 대한 접근 제어 할 수 없다. standalone 데몬 같은 경우 inetd 데몬 통제 불가능, TCP 외의 일부 프로토콜에 대해서만 통제 가능

 

3) PAM(Pluggalbe Authentication Modules, 장착형 인증 모듈)

 사용자 인증의 핵심, 각 응용 프로그램에 대한 인증 형태, 사용자 권한, 접근 자원 등을 선택할 수 있는 라이브러리

 

 

 

5. 리눅스(Linux)

 

1) 파일시스템의 종류

minix, ext, ext2, ext3, ext4, nfs 등

 

 

 

6. 유닉스/리눅스 서버 취약점 분석, 평가

 

(1) 계정 관리

1) root 계정 원격 접속 제한

2) 패스워드 복잡성 설정

3) 계정 잠금 임계값 설정

4) 패스워드 파일 보호

5) root 이외의 UID가 '0' 금지

6) 패스워드 최소 길이 설정

7) 패스워드 최대 사용 기간 설정

8) 패스워드 최소 사용기간 설정

 

(2) 파일 및 디렉터리 관리

1) root, 홈, 패스 디렉터리 권한 및 패스 설정

2) 패스 및 디렉터리 소유자 설정

3) HOME/.rhosts, hosts.quiv 사용 금지

 

(3) 서비스 관리

1) Anonymous FTP 비활성화

 

 

 

 

*출처:[알기사] 2019 정보보안기사&산업기사

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

+ Recent posts