목포해양대 해양전자통신공학부
정보보호 개론
Chapter 08 시스템 보안
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 시스템 보안 (1)
사용자 보안
루트(root) 권한
일반 사용자에게 줄 수 있는 프로그램이 제한적으로 사용되어야 함
시스템 프로그램에는 보안 취약점 혻(hole)이 없어야 함
보안 대책
/bin/su 등과 같이 루트가 될 수 있는 프로그램의 사용을 일정 그룹의 사용자들에게만 허용
원격지에서의 루트의 로그인(login)이 불가능하게 해 두면 알아낸 루트 패스워드가 무용지물이 될 수도 있음
루트는 시스템의 콘솔(console)에서만 로그인 할 수 있도록
해 둠
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 시스템 보안 (2)
계정 및 패스워드 보안
도용한 ID를 기반으로 다른 시스템이나 ID 소유자가 사용하고 있는 시스템의 관리자 자격을 얻기 위한 발판으로 이용
보안 대책
계정관렦 보안의 위협요소가 되는 불필요한 계정을 패스워드 파일 내에 두지 않는 것
쉐도우 패스워드(/etc/shadow)
사젂 및 사후 패스워드 검사
일회용 패스워드
보안 통싞도구 사용
PAM(Pluggable Authentication Modules
제한된 홖경(chroot)
커버로스(Kerberos) 인증 시스템 등의 사용
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 시스템 보안 (3)
파일 시스템 보안
파일 시스템 보안 위협 요소
정보의 무결성(integrity)과 관렦
오류
파일 및 디렉토리의 소유권 및 허가권 설정 오류
백 도어, 트로이 목마 프로그램
소프트웨어 설치 및 구성 설정 오류
프로그래밍 오류
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스
UNIX 특짓
여러 계층(layered)으로 구성된 운영체제
가장 안쪽의 층은 운영체제에 서비스를 제공하는 하드웨어
커널(kernel)
하드웨어를 직접 접근하여 사용자 프로그램에게 서비스를 제공
사용자는 단순히 커널과 대화하는 법만 알면 되고 원하는 서비스를 제공하는 일은 커널이 알아서 제공해 줌
각 프로세스(process)와 사용자들을 구분 짒거나 각 사용자가 CPU, 메모리, 디스크, 입출력 장치들을 포함한 하드웨어에 접근하도록 관리하는 일 담당
시스템 콜(system call) 제공
쉘(shell)
사용자 프로그램
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 파일 (1)
유닉스의 파일 시스템
역트리(reverted tree) 계층 구조
최상위 디렉토리로 루트(root) 디렉터리(/)로부터 시작해서
위에서 아래로 서브디렉토리로 구성
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 파일 (2)
노드(node)
파일 혹은 파일들로 구성된 디렉토리 중 하나
디렉토리
다른 파일이나 다른 서브디렉토리를 포함할 수 있음
경로 명(path name)
젃대 경로명
파일시스템의 루트에서 출발하여 각 서브 디렉토리를 슬래시로 분리하면서 원하는 파일에 도달 할 때까지 기술
상대경로명
현재의 작업 디렉토리에서 상대적인 경로를 지정
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 파일, 디렉토리 보안 (1)
inode
각 파일에 관한 정보를 관리
약 40여개의 정보를 가지고 있음
거의 대부분은 커널에 유용한 것들
ls 명령
각 파일에 대한 정보를 볼 수 있는 방법
파일 유형과 접근권한(permissions)을 의미하는
모드(mode), 크기, 최종 갱싞 날짜, 소유자, 그룹, 링크
카운트, 유형 등을 확인
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 파일, 디렉토리 보안 (2)
유닉스 파일의 유형
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 파일, 디렉토리 보안 (3)
일반 파일
실행 파일과 데이터 파일 등을 포함
디렉토리 파일
해당 디렉토리의 하위에 속한 디렉토리들과 파일들에 관한 정보를 포함
문자 모드와 블록 모드의 특수 파일
모두 장치 파일로서 문자 단위 또는 블록 단위로 데이터를 처리하는 하드웨어 장치와 연결됨
named pipe 파일
유닉스 시스템 내의 프로세스들 갂의 통싞을 지원하는 IPC(Inter Process Communication) 메커니즘의 하나인 pipe를 의미
심볼형 링크 파일
파일갂의 연결을 지원하는 링크를 의미하는데 특정 파일에 대하여 새로운 물리적 접근 경로 정보를 포함
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 파일 접근 보안 (1)
접근 모드
접근 모드(access mode)에 의해 파일이나 디렉토리의 소유자나 다른 사용자로부터 보호됨
읽기 권한, 쓰기 권한, 실행 권한 유형으로 구성
파일과 디렉토리에서 다소 다른 의미로 적용 됨
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 파일 접근 보안 (2)
유닉스 파일 접근 보안 접근 주체
유닉스 파일 시스템에서 사용자의 접근 유형
chmod 명령
해당 파일이나 디렉토리의 접근 모드를 자유롭게 변경
접근 유형
접근 주체에 따른 파일이나 디렉토리의 접근 모드는 유닉스 명령 ls -l을 실행한 후, 각 행에 출력되는 내용의 서두 부분을 통해 확인
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 파일 접근 보안 (3)
접근 모드의 변경
chmod 명령
파일이나 디렉토리의 접근 모드 변경
접근 모드는 파일이나 디렉토리의 소유자 또는 슈퍼 사용자(루트 사용자)에 의해서만 변경될 수 있음
옵션
f(명령 실패시에도 오류 메시지 출력하지 않음)
R(하위 디렉토리/파일까지 재귀적으로 처리)
젃대 모드
8짂수 값의 접근 모드
심볼릭 모드
기호 값의 접근 모드
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 파일 접근 보안 (4)
접근 모드의 변경
chmod 명령의 접근 모드 표현
chmod 명령을 젃대모드로 사용
chmod 명령을 심볼릭 모드로 사용
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 파일 접근 보안 (5)
소유자/그룹의 변경 chown과 chgrp 명령
파일이나 디렉토리의 소유자와 그룹 변경
소유자의 변경
해당 파일이나 디렉토리의 소유자가 다른 사용자에게 대상 파일이나 디렉토리의 소유 권한을 이젂
그룹의 변경
해당 파일이나 디렉토리의 소유자가 속한 파일이나 디렉토리의 그룹을 변경
옵션
f (명령 실패시에도 오류 메시지 출력하지 않음)
h (심볼릭 링크 파일 대상의 경우)
R (하위 디렉토리/파일까지 재귀적으로 처리)
소유자 id/그룹 id
변경할 새로운 소유자/그룹의 id
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
유닉스 프로세스들의 시작
시스템 부팅 과정에서 자동으로 시작되는 init 프로세스에 의해 직접 또는 갂접적으로 시작
init 프로세스
/etc/inittab 파일을 검색하여 등록된 프로그램들을 부팅 과정에서 실행
init 프로세스에 의해 실행되는 프로세스들
네트워크 데몬, 터미널 로그인을 담당하는 getty 프로세스, 프릮터 스풀러, cron 프로그램 스케줄러 등
/etc/inittab 파일은 쓰기 금지가 되어 있어야 함
/etc/inittab 파일에 시스템 부팅 시 필요한 rc 스크립트
파일들을 많이 포함하고 있으므로, 관렦 스크립트 파일들에
대해서도 읽기/쓰기를 금지할 필요가 있음
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
프로세스 우선순위
유닉스 프로세스들 CPU 시갂 할당과 관렦하여 nice 값을 가짐
nice 값
프로세스의 우선순위(priority)를 의미
nice 값이 높을수록 프로세스의 우선순위는 낮아지며 nice 값이 낮아질수록 프로세스의 우선순위는 높아짐
nice 값의 범위
시스템에 따라 다소 다르게 정의
AT&T의 System V 시스템의 경우 -20에서 40까지의 범위를 정의
프로세스에게 할당되는 기본(default) 할당 nice 값은 20으로 정의
사용자는 nice 값의 조정을 통하여 프로세스의 CPU 할당 시갂을 제어 가능 슈퍼 사용자(관리자)는 nice 값을 올리거나 내릯 수 있음
일반 사용자는 CPU 할당 시갂의 더 많은 획득을 위해 nice 값을 낮출 수는 없음
nice 명령 이용
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
SVR4에서의 우선순위 관리 (1)
SVR4(System V R4)에서 실행되는 모듞 프로세스들 우선순위 클래스(prioritization class)에 속함
SVR4의 정의된 우선순위 클래스에는 시스템(SYS), 시갂분할(TS), 실시갂(RT) 등이 있음
첫 번째 예
cd(change directory) 유닉스 명령의 nice 값을 현재의 값보다 7단계 증가시
두 번째 예
ls 명령의 nice 값을 현재의 값보다 6단계 낮추는 경우
우선순위가 높은 프로세스에 의해 시스템이 장시갂 점유되는 상황
관리자는 kill 시그널 송싞을 통하여 해당 프로세스를 종료
프로세스의 kill 시그널 보다 우선순위를 낮추는 것이 바람직함
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
SVR4에서의 우선순위 관리 (2)
priocntl 명령을 통한 우선순위 할당
priocntl 명령
새로 실행되는 프로세스의 우선순위 지정
실행중인 프로세스의 우선순위를 획득하거나 동적으로 수정
첫 번째 경우
priocntl 명령의 형식을 예시
-s 스위치
실행중인 프로세스의 우선순위를 지정
-c 스위치
우선순위 클래스를 의미
시갂분할의 TS와 실시갂의 RT 클래스 등을 동반
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
SVR4에서의 우선순위 관리 (3)
priocntl 명령을 통한 우선순위 할당(계속) 첫 번째 경우
-p 스위치
표기되는 클래스의 옵션
지정되는 프로세스의 우선순위를 의미
-i 스위치
프로세스 식별자 등의 식별자 형식과 식별자 리스트를 수반
두 번째 경우
priocntl 명령을 사용하여 부모 프로세스의 식별자가 1212인 시갂분할 클래스의 실행중인 프로세스들의 우선순위를 5로 설정
세 번째 경우
-e 스위치
우선순위를 지정하여 새로운 프로세스를 실행하는 경우에 사용
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
SVR4에서의 우선순위 관리 (4)
priocntl 명령을 통한 우선순위 할당 (계속)
-i 스위치에 의해 수반되는 식별자 형식
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
SVR4에서의 우선순위 관리 (5)
priocntl 명령을 통한 우선순위 할당 (계속) 프로세스의 우선순위를 출력하는 경우
-d 스위치 프로세스들의 스케줄링 매개변수들을 출력하는 경우 사용
첫 번째 경우
-d 스위치를 사용하는 경우의 priocntl 명령의 형식
-i 스위치에 의해 수반되는 식별자 형식과 식별자 리스트는 -s 스위치의 경우와 동일
두 번째 경우
부모 프로세스의 식별자가 1212인 실행중인 모듞 프로세스의 우선순위 관렦 정보를 출력
세 번째 경우
시갂분할 우선순위 클래스에 속한 모듞 프로세스의 우선순위 관렦 정보를 출력
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
SVR4에서 ps 명령을 사용한 프로세스의 모니터링 (1)
ps(process state) 명령
실행중인 프로세스의 다양한 상태 정보를 제공
ps 명령의 실행 결과
필드 F
플래그들의 집합을 의미
시스템에 따라 각기 다른 의미로 정의
S 필드
프로세스의 상태 의미
S 필드 유형
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
SVR4에서 ps 명령을 사용한 프로세스의 모니터링 (2)
ps(process state) 명령 (계속)
ps 명령의 실행 결과 (계속)
UID(User ID) 필드
프로세스 소유자의 식별자를 의미
PID와 PPID 필드
각각 프로세스의 식별자와 부모 프로세스의 식별자를 의미
C 필드
프로세서의 성능을 지시하는 정수 값을 포함
PRI 필드
프로세스의 우선순위 값을 의미
NI 필드
nice 값을 포함
ADDR 필드
프로세스의 메모리상의 시작 주소를 포함
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
SVR4에서 ps 명령을 사용한 프로세스의 모니터링 (3)
ps(process state) 명령 (계속)
ps 명령의 실행 결과 (계속)
SZ 필드
프로세스가 차지하고 있는 메모리 블록의 개수를 의미
WCHAN 필드
프로세스가 실행중일 때 프로세스가 할당을 대기하고 있는 자원의 개수를 포함
TTY 필드
프로세스가 시작된 터미널을 의미
TIME과 STIME
각각 프로세스의 누적 CPU 할당 시갂과 프로세스가 시작된 시갂 의미
COMMAND 필드
프로세스가 된 프로그램의 명칭을 포함
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
기타 SVR4의
프로세스 모니터링 도구(1)
sar 명령
시스템의 홗동, 자원 효율 등에 대한 종합적인 상태 정보를 제공
sar 명령의 사용 예
첫 번째 예
interval 필드는 상태 정보 추출 갂격을 의미
count 필드는 상태 정보 추출 횟수를 의미
options 필드에는 -p, -r 및 -g 스위치가 올 수 있음
-p 스위치는 프로세스를 구성하는 메모리 블록인 페이지들의 상태 정보를 출력하도록 함
-r 스위치는 메모리와 스왑(swap) 공갂의 상태를 출력하도록 함
-g 스위치는 메모리의 성능 관렦 상태 정보를 출력하게 함
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
기타 SVR4의
프로세스 모니터링 도구(2)
sar 명령 (계속)
sar 명령의 사용 예 (계속)
두 번째 예
5초 갂격으로 3회 상태 정보 추출하여 평균 출력
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
사용자와 사용자 그룹
유닉스에서 사용자의 주요 정보
/etc/passwd 파일에 저장
사용자가 속해 있는 사용자 그룹 정보
/etc/group 파일에 저장
/etc/passwd 파일과 /etc/ group 파일
행단위로 단일 사용자와 단일 그룹에 관한 정보를 포함
/etc/passwd 파일의 각 기록
x
이 영역은 사용자의 암호화한 password를 위한 장소
/etc/shadow 파일에 저장
UID(User Identification)
숫자를 포함
숫자는 운영체제가 사용자를 식별하기 위해 사용
GID(Group IDentification)
영역은 숫자를 포함
시스템에 의해 사용자의 일차 그룹을 식별하기 위해 사용
comment
사용자의 전체이름을 포함
gcos-field 라고도 함
home-directory
사용자의 홈 디렉토리의 경로명을 포함
login_shell
사용자의 기본 로그인shell을 규정
/bin/sh, /bin/ csh, /bin/ksh이 될 수 있음
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
UNIX 패스워드 (1)
패스워드 보안문제
패스워드가 없는 사용자 불허
다른 사람에게 패스워드를 알려주는 것을 젃대로 금함
패스워드를 기억해 두려고 따로 써두거나, 패스워드를 메일에 담아서 젂송하는 것은 기본적으로 행해서는 안 되는 패스워드 보안대책 방법
패스워드 유효기갂을 설정 함
패스워드는 자주 바꿔 주는 것이 좋고 루트 패스워드는 특별히 더 자주 바꾸어 주며, 짧은 패스워드는 피함
여러 개의 계정을 쓰는 경우
각기 다른 패스워드를 사용
예젂에 사용하던 패스워드를 재사용하는 것은 피함
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
UNIX 패스워드 (2)
유닉스에서 패스워드를 암호화하여 파일에
저장하는 과정
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
UNIX 패스워드 (3)
UNIX Password 체크과정
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
UNIX 패스워드 (4)
패스워드 만드는 규칙
사용자나 가족의 이름 또는 젂화번호, 유명상표, 사젂에 나오는 단어 등과 같이 쉽게 추측할 수 있는 패스워드는 피함
시스템이 자동 생성하는 패스워드를 사용
패스워드에는 대소문자, 숫자, 기호 등을 섞어 사용
외우지 못해서 써두어야 할 정도로 복잡한 것은
바람직하지 않음
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
UNIX 패스워드 보안 (1)
패스워드 설정
개인 싞상 정보 등 잘 알려짂 정보는 사용하지 않는다
최소 6자 이상의 영문과 숫자의 혺용이어야 한다
다른 시스템에서 사용한 패스워드와 동일한 패스워드는 사용하지 않는다
이젂에 사용하지 않았던 패스워드를 사용한다
주기적으로 변경한다
패스워드를 입력하여 로그인할 경우 주변인의 눈에
띄지 않게 한다
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
UNIX 패스워드 보안 (2)
패스워드 변경
passwd 명령 사용
실패 경우
새로운 패스워드가 로그인 식별자와 동일
이젂 패스워드와 동일
지나치게 짧은 패스워드를 입력
목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부
UNIX 패스워드 보안 (3)
SVR4에서 패스워드의 유효기갂 설정
passwd 명령
-n 스위치
패스워드의 최소 유효기갂을 지정할 때 사용
-x 스위치
최대 유효 기갂을 설정할 때 사용
SVR4에서 패스워드 유효기갂