기사 자격증(알기사, 유닉스, 리눅스 서버 보안)

반응형

UNIX 시스템 특징

1. 대화식 운영체제 : 사용자와 운영체제는 명령어 해석기(SHELL)을 통해 대화가 이뤄짐

2. 멀티태스킹

3. 멀티유저

4. 호환성 및 이식성

5. 계층적 파일시스템

6. 뛰어난 통신기능

7. 다양한 기능의 유틸리티와 개별환경 제공

8. 유닉스는 4개의 링으로 구성(하드웨어, 커널, 쉘 응용프로그램)

 ※ 링의 개수가 많을수록 보안레벨이 높아지지만 윈도우가 유닉스보다 보안레벨이 높다고 할 수는 없다.(유닉스가 윈도우보다 조금 더 높은 보안 수준 유지)

 

구분

제품명

개발 회사

유닉스

오라클 솔라리스

오라클

AIX

IBM

HP-UX

HP

리눅스

페도라

레드햇

우분투

캐노니컬

 

UNIX 운영체제 종류

커널

 - 항상 메모리에 상주

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

 - 프로세스 스케줄링, 기억장치 관리, 파일 관리, 시스템 호출 인터페이스, 입출력 서비스를 사용자에게 제공

 

시스템 호출

- 사용자 프로그램이 커널에 접근하는 인터페이스 제공

- 커널 내 서브루틴 형태로 존재

- 입출력 시스템호출, 프로세스 간 통신시스템 호출, 프로세스 관리시스템 호출로 구분 가능

 

(SHELL)

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

- 운영체제에서 명령어 해석기라 불리는 부분 기능 담당

- 본쉘, C, 콘쉘, 배시쉘 등의 종류가 있음

 

파일시스템

1. 디렉터리 구조

 - UNIX 파일 시스템은 디렉터리파일로 구성

 - 디렉터리는 트리구조, 최상위 디렉터리는 root 이다.

 - UNIX의 디렉터리구조

디렉터리

내용

/

root디렉터리, 최상위 디렉터리

/etc

시스템의 환결설정 및 주요 설정파일

/usr/bin

기본적으로 실행 가능한 파일

/dev

물리적인 장치 다루기 위한 파일

/usr/include

C 언어 라이브러리 헤더 파일 저장

/usr/lib

기본 프로그램의 모듈

/usr/sbin

시스템 관리 명령어 저장

/home

사용자 홈 디렉터리 저장

/tmp

임시파일 저장

/var

시스템 로그 저장

 

파일 시스템 구조

- 부트블록, 슈퍼블록, I-node, 데이터 블록 4가지 영역으로 나뉨

 1. I-node

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

  - 파일에 대한 정보와 파일에 할당된 디스크 블록의 주소를 저장하는 필드로 구성

  - 일반파일, 디렉터리 파일의 I-node파일의 디스크 블록위치 포함, 특수파일의 I-node주변장치 식별 정보 포함

  - I-node에는 파일명이 없으며 파일명은 디렉터리를 통해 관리 됨

  - 침해사고 발생 시 파일에 대한 무결성을 확인, 타임라인을 분석함 MAC Time을 점검

 2. 슈퍼블럭

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

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

 

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

- 특정 디렉터리에 있는 디렉터리와 파일을 열거하고 추가옵션으로 이들에 관한 여러 가지 정보도 알수 있게 한다.

- ls 명령 출력 결과

- 파일 유형

문자

파일유형

-

일반(정규)파일

d

디렉터리 파일

l

심볼릭 링크 파일

b

블록장치 특수 파일

c

문자장치 특수 파일

p

파이프, 프로세스 간 통신에 사용

s

소켓, 네트워크 통신에 사용되는 특수 파일

 

Unix의 접근권한

- 접근권한은 읽기(r,4), 쓰기(w,2), 실행(x,1)로 나뉘고 권한 부여 대상은 user, group, others로 나뉜다.

권한

파일

디렉터리

읽기(4)

파일을 읽거나 복사 가능

ls 명령어로 디렉터리 목록 볼 수 있음

쓰기(2)

파일 수정, 이동, 삭제 가능

디렉터리 생성, 삭제

실행(1)

파일 실행

파일을 디렉터리로 이동, 복사 가능

 

- UNIX 프로그램에서 디렉터리 생성시 접근권한은 777(rwxrwxrwx)이고 파일 생성시 접근권한은 666(rw-rw-rw-)로 한다.

 

접근권한 변경(chmod)

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

- chown/chgrp는 소유자 변경, 소유그룹 변경에 사용된다.

 

첫 번째 프로세스

- 프로세스에서 PID0인 프로세스를 swapper라고 한다.

- swapper는 즉시 PID1,2init, pagedaemon을 만들기 위해 fork /exec를 두 번 실행

- 스와퍼페이지 데몬은 커널모드에서 영구적으로 실행, 커널프로세스라고 함

- 프로세스 중에 PID0swapper를 제외한 모든 프로세스는 부모 프로세스를 가진다.

- 프로세스는 종료시 자신을 생성한 부모 프로세스에게 자신의 종료를 알려야함

 → 만약 부모 프로세스가 이를 확인 하지 않으면 확인할 때 까지 좀비 프로세스가 된다.

  ※ 좀비 프로세스 : 실제로 실행되지는 않지만, 프로세스 테이블 목록을 차지하고 있는 프로세스

- 만약 자식 프로세스보다 부모 프로세스가 먼저 죽으면 자식 프로세스는 고아 프로세스가 된다.

 → 모든 고아 프로세스의 부모 프로세스 역할은 init가 하게 된다.

 

UNIX 런레벨

- 런 레벨 : 시스템의 운영상태를 숫자 혹은 문자로 표현한 것

- 유닉스의 런 레벨

런 레벨

시스템 운영모드

0

PROM 모드

S

시스템 싱글 유저모드, 마운트가 되지 않는 상태

1

시스템 싱글 유저모드, 마운트가 된 상태

2

멀티유저 모드(NFS 클라이언트 모드)

3

멀티유저 모드(NFS 서버 모드)

4

사용안함

5

시스템 power off 모드

6

시스템 리부팅

- INIT의 상태는 런 레벨을 옮겨 다니며 각 레벨마다 역할을 수행함

- init 명령어 다음 런 레벨 쓰면 해당 런 레벨로 이동이 가능

ShutDown - 시스템의 안전한 종료, 시스템의 런 레벨 변경시에 사용

 

하드디스크 동기화

- 유닉스는 하드디스크의 입 출력 효율성 높이기 위해 버퍼를 사용한다.

- 만일 시스템이 비정상 종료시 버퍼에 있는 데이터가 하드디스크에 반영 안 되면 파일 시스템의 무결성 문제가 생김

 

파일시스템 연결 / 해제

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

 - 보조 기억장치에 설치된 파일시스템을 UNIX 시스템이 인식하도록 특정 디렉터리에 논리적 연결을 해주는 것

 - /etc/mtab 파일에 시스템에 마운트 된 파일 시스템 정보가 포함되어 있다.

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

 - 마운트된 파일시스템 연결 헤제

 - umount 이용하면 /etc/mtab에 있는 정보가 삭제 됨

 

프로세스의 정기적 스케쥴 관리 - cron

- cron 데몬은 UNIX 시스템에서 정기적인 작업을 지정시간에 처리할 수 있도록 도와준다.

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

- crountab 파일은 6개의 필드로 구성

- crontab 파일은 사용자 계정별로 만들어진다.

- root는 다른 사용자의 crontab 파일을 편집 가능하다

- 일반 사용자는 자신의 crontab 파일만 편집 가능하다.

 

UNiX 서버 보안

1. 사용자 패스워드 관리

 - 사용자 관리 : UNIX 시스템을 이용하는 사용자의 계정과 인증을 관리하는 것

 - /etc/passwd : UNIX 시스템에 등록된 사용자 계정마다의 정보가 담겨있음

                       패스워드는 평문 형태로 담겨있어 보안적으로 취약

 - /etc/shadow : UNIX의 패스워드를 암호화하여 저장

1.[user account]: 2.[user password]: 3.[user id]: 4.[group id]: 5.[comment]: 6.[home-directory]: 7.[login shell]

 - passwd 파일의 필드 구분

  1. user account : 사용자 계정 또는 로그인 이름

  2. user passowrd : 사용자 계정의 비밀번호 만약 /etc/shadow에 저장되어 있을 시 passwd부분이 x로 표시

  3. user ID : 시스템 사용 허가를 얻을 때 필요한 ID 0번은 root를 의미, 해킹시 루트권한을 얻기위해 주로 타깃이 됨

  4. group ID : 사용자가 속한 기본 그룹 ID, 해킹시 루트권한을 얻기 위한 타깃이 됨

  5. comment : 사용자 관련 기타 정보로 일반적으로 사용자 이름을 설정

  6. home directory

  7. login shell : 로그인 시 어떤 쉘의 종류로 들어왔는지 확인

 

 - shadow 파일의 필드 구분

1.[user account]: 2.[encrypted password]: 3.[last change]: 4.[minlife]: 5.[maxlife]: 6.[warn]: 7.[inactive]: 8[expire]

  1. user account : 사용자 계정

  2. encrypted password : 일방향 해시함수 이용

  3. last change : 마지막으로 패스워드를 변경한 날(197011일 기준)

  4. minlife : 최소변경일수(패스워드를 변경할 수 없는 기간의 일수 지정)

  5. maxlife : 최대 변경 일수(현재 사용중인 패스워드를 변경 안 하고 사용할 수 있는 기간)

  6. warn : 경고일수(maxlife가 며칠 남지 않았음을 알려주는 필드)

  7. inactive : 최대 비활성 일 수(로그인을 자주 하지 않을 경우 계정을 잠기게 함)

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

 

접근권한 마스크(umask)

- 사용자의 접근권한을 빼앗는 것

- 시스템 관리자는 /etc/profileumask 설정해 전체 사용자에게 획일적인 umask값 적용이 가능

 

권한상승(SetUID, SetGID)

- SetUID가 설정되어 있는 프로그램 실행시 프로세스의 권한이 프로그램 소유자의 권한이 됨

- root만 접근할 수 있는 파일이나 명령에 일반 사용자로 접근할 때 사용시 효율적

- SetGID 설정 시 실행 중인 프로세스는 소유주의 그룹 권한을 갖게 됨

- RUID : 프로세스를 실행시킨 사용자의 ID

- RGID : 프로세스를 실행시킨 그룹의 ID

- EUID : 프로세스가 실행중인 동안에만 부여되는 UID로 자원에 대한 접근권한 판단에 사용

- EGID : 프로세스가 실행중인 동안에만 부여되는 GID로 자원에 대한 접근권한 판단에 사용

- SetUID 비트가 설정된 파일은 백도어 오퍼플로우 공격에 이용될 수 있다.

  →목록화하여 관리가 필요

 

스티키 비트(Sticky-bit)

- UNIX 시스템은 sticky-bit를 이용해 디렉터리에 특별한 접근권한을 부여 가능

  → 공유모드라고 함

- sticky-bit 설정된 디렉터리는 시스템에 있는 모든 사용자가 파일이나 하위 디렉터리를 생성은 가but 디렉터리 지우는 것은 소유자와 root만 가능

 

슈퍼 데몬(inetd 데몬)

- 슈퍼데몬이란 데몬을 관리하는 데몬이다.

- N개의 개별 서버를 하나로 통합하여 클라이언트로부터 서비스 요청이 올 때마다 해당 서비스와 관련된 실행 모듈을 실행시켜줌

- /etc/inetd.conf = 슈퍼데몬에서 관리하는 서비스 목록

- 데몬실행모드 비교

구분

xinetd 환경

standalone 서비스

의미

xinetd 슈퍼데몬이 제어하는 서비스 데몬

독립적 실행되는 서비스 데몬

실행방법

xinetd에 의해 수행

독립적으로 수행

데몬 상주여부

서비스 완료 후 종료

독립적으로 메모리에 상주

접근제어

tcpd에 의해 접근제어

자체 설정파일에 의해 접근제어 가능

 

TCP Wrapper

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

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

- TCP wrappertcpd 데몬은 접속을 요구한 클라이언트가 적절한 접근 권한이 있는지 판단, 연결에 대한 로깅 시도

- TCP wrapper로 모든 프로토콜에 대한 접근제어는 할 수 없다.(standalone 방식의 경우 통제 불가)

- 접근여부 판단은 /etc.hosts.allow/etc.hosts.deny 파일에 정의된 호스트 정보를 기준으로 한다.(host.allow host.deny 순으로 읽음)

- host.allowhost.deny 두 파일에 접근하고자 하는 해당 클라이언트가 설정사항 포함 안되어있을 경우 접근을 허용(host.allow의 우선순위가 더 높음)

 

PAM

- 리눅스 배포판에서 사용자 인증의 핵심

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

type control module-path module-arguments

- PAM 설정 형식

 1. type : 모듈 종류

  1. account : 사용자 시스템 사용권한 확인

  2. auth : 실질적인 인증기능, 패스워드 확인

  3. password : 패스워드를 설정, 확인

  4. session : 사용자 인증 성공 시 세션을 맺어주는 모듈

 2. control : 각 모듈 실행 후 성공 또는 실패에 따른 PAM 라이브러리 행동결정

  1. requisite : 모듈 실행 실패시 즉시 인증 거부

  2. required : 모듈 실행 실패시 모듈 완료 시점에 인증 거부(어느 단계에서 인증 실패했는지 모르기 때문에 안정성이 더 높다)

  3. sufficient : 이전 모듈 실패해도 이 모듈에 인증 성공 시 PAM은 인증을 승인

  4. optional : 모듈의 성공, 실패 응답을 상관 안함(거의 사용 x)

 

- PAM 데몬 활용하여 su의 접근통제 설정 가능

 

리눅스

- 1991년 핀란드인 리누즈 토발즈가 최초의 리눅스 개발

- 현재는 스톨만의 GNU 프로젝트로서 진행 중

- 리눅스 파일 시스템

 1. ext : 리눅스 초기에 사용되던 파일시스템

 2. minix : 미닉스에서 사용되었던 파일시스템, 가장 오래되고 기본이 됨

 3. xiafs : minix의 단점을 보완한 minix 수정버전

 4. msdos : FAT 파일시스템과의 호환을 지원하는 파일 시스템

 5. ext2

   - ext3 나오기 전 대부분 리눅스에서 채택

   - 캐시에 저장되어 있는 데이터를 디스크로 저장하는 도중 만약 시스템이 다운되거나 여러문제 발생 시 파일시스템이 손상되는 단점을 가짐

   - fsck라는 파일 시스템이라는 복구기능이 있지만 복구에 시간이 오래 걸리고, 복구하는 동안 시스템 사용이 불가

 6. ext3

   - 커널 2.4버전부터 지원하고 있는 파일 시스템

   - ext2의 단점을 보완한 ext3 파일시스템으로 시스템의 무결성 보장

   - 뛰어난 복구능력 가짐

   - 저널링 기능을 추가 신뢰성과 작업 능률 향상

    ※ 저널링 : fsck보다 빠르고 안정적인 복구기능을 제공하는 기술

 7. ext4

   - ext3보다 파일시스템 성능 향상

   - ext3보다 호환성 좋음

   - 지연된 할당 파일시스템 기능 지원

   - 실제 파일 크기에 기반해 블록 할당

   - 단편화 억제

 8. nfs : 네트워크 파일 시스템

 

유닉스 리눅스 서버 취약점 분석

1, 계정관리

 - root 계정 원격접속제한

 - 패스워드 복잡성 설정

 - 계정 잠금 임계값 설정

 - 패스워드 파일 보호

 - root 이외의 UID ‘0’ 금지

 - 패스워드 최소길이 설정

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

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

2. 파일 및 디렉터리 관리

 - root, 패스 디렉터리 권한 및 패스 설정

 - 파일 및 디렉터리 소유자 결정

 - HOME/.rhosts, hosts.equiv 사용 금지

3. 서비스 관리

 - Annoymous FTP 비활성화

반응형