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는 소유자 변경, 소유그룹 변경에 사용된다.
첫 번째 프로세스
- 프로세스에서 PID가 0인 프로세스를 swapper라고 한다.
- swapper는 즉시 PID1,2인 init, pagedaemon을 만들기 위해 fork /exec를 두 번 실행
- 스와퍼와 페이지 데몬은 커널모드에서 영구적으로 실행, 커널프로세스라고 함
- 프로세스 중에 PID가 0인 swapper를 제외한 모든 프로세스는 부모 프로세스를 가진다.
- 프로세스는 종료시 자신을 생성한 부모 프로세스에게 자신의 종료를 알려야함
→ 만약 부모 프로세스가 이를 확인 하지 않으면 확인할 때 까지 좀비 프로세스가 된다.
※ 좀비 프로세스 : 실제로 실행되지는 않지만, 프로세스 테이블 목록을 차지하고 있는 프로세스
- 만약 자식 프로세스보다 부모 프로세스가 먼저 죽으면 자식 프로세스는 고아 프로세스가 된다.
→ 모든 고아 프로세스의 부모 프로세스 역할은 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] |
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 : 마지막으로 패스워드를 변경한 날(1970년 1월 1일 기준)
4. minlife : 최소변경일수(패스워드를 변경할 수 없는 기간의 일수 지정)
5. maxlife : 최대 변경 일수(현재 사용중인 패스워드를 변경 안 하고 사용할 수 있는 기간)
6. warn : 경고일수(maxlife가 며칠 남지 않았음을 알려주는 필드)
7. inactive : 최대 비활성 일 수(로그인을 자주 하지 않을 경우 계정을 잠기게 함)
8. expire : 사용자 계정이 만료되는날
접근권한 마스크(umask)
- 사용자의 접근권한을 빼앗는 것
- 시스템 관리자는 /etc/profile에 umask 설정해 전체 사용자에게 획일적인 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 wrapper의 tcpd 데몬은 접속을 요구한 클라이언트가 적절한 접근 권한이 있는지 판단, 연결에 대한 로깅 시도
- TCP wrapper로 모든 프로토콜에 대한 접근제어는 할 수 없다.(standalone 방식의 경우 통제 불가)
- 접근여부 판단은 /etc.hosts.allow와 /etc.hosts.deny 파일에 정의된 호스트 정보를 기준으로 한다.(host.allow → host.deny 순으로 읽음)
- host.allow와 host.deny 두 파일에 접근하고자 하는 해당 클라이언트가 설정사항 포함 안되어있을 경우 접근을 허용함(host.allow의 우선순위가 더 높음)
PAM
- 리눅스 배포판에서 사용자 인증의 핵심
- 각 응용프로그램에 대한 인증형태, 사용자 권한, 접근 자원등을 선택 할 수 있는 라이브러리
type control module-path module-arguments |
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 비활성화
'보안기사 > 필기' 카테고리의 다른 글
기사 자격증(알기사, 각종 시스템 보안 위협 및 대응책) (0) | 2019.01.30 |
---|---|
기사 자격증(알기사, 서버보안 관리) (0) | 2019.01.29 |
기사 자격증(알기사, 윈도우 서버 보안) (0) | 2019.01.25 |
기사자격증(알기사, 클라이언트 보안) (0) | 2019.01.23 |
기사 자격증(알기사, 보안 운영체제) (0) | 2019.01.23 |