• 검색 결과가 없습니다.

유닉스시스템보안유닉스시스템개요

N/A
N/A
Protected

Academic year: 2022

Share "유닉스시스템보안유닉스시스템개요"

Copied!
36
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

유닉스시스템 보안

유닉스 시스템 개요 1.

가 유닉스 시스템 역사.

유닉스 시스템은 1960년대 후반에 AT&T사의 Bell 연구소에서 개발한 Multics라는 이름을 가진 운영체제에 서 그 뿌리를 찾을 수 있다 그 후 본격적으로 유닉스 시스템의 개발에 착수한 사람은. Ken Thompson으로

사의 용 를 로 개발하여 초기 유닉스 시스템 발전의 기초를 만들었으며 년

DEC PDP-7 OS Assembly , 1973

가 이식성이 뛰어난 언어로 유닉스 시스템을 재작성함으로써 본격적인 유닉스 시대의 장을 Dennis Ritchie C

만들게 되었다.

나 유닉스 시스템 핵심 구조.

유닉스 시스템은 크게 커널 쉘 파일시스템, , 3가지 핵심 구조로 구성되며 다음 [표 4-1]은 유닉스 시스템의 핵심 구조에 대한 간단한 설명이다.

커널

(1) (Kernel)

사용자 프로그램들은 경우에 따라 시스템의 하드웨어나 소프트웨어의 자원을 액세스하게 되는데 커널은 이러 한 사용자 프로그램을 관리하는 부분을 말한다 커널은 크게 프로세스 메모리 입출력. , , (I/O) 그리고 파일 관리 의 네 부분으로 나누어 생각할 수 있으며 이러한 서브시스템은 각기 독립적으로 사용자 프로그램에 의해서 의 도되는 서비스를 올바르게 제공하기 위해서 상호 협동적으로 작동하게 된다 또한 커널은 쉘과 상호 연관되어. 있어서 쉘에서 지시한 작업을 수행하고 결과물을 돌려보낸다.

쉘 (2) (Shell)

쉘은 유닉스 시스템과 사용자 사이의 인터페이스를 제공하는 것을 말한다 즉 사용자가 문자열들을 입력하면. , 그것을 해석하여 그에 따르는 명령어를 찾아서 커널에 알맞은 작업을 요청하게 된다 쉘은 종류에 따라 전통. 적으로 Bourne 쉘, C 쉘, Korn 쉘 등으로 구분된다.

쉘 의 유닉스 환경을 위해 개발되었으며 대부분의 유닉스에서 제공하는 기본 o Bourne (/bin/sh, $): AT&T ,

쉘이다 빠른 수행과 최소한의 자원만을 요구하는 것이 특징이다. .

쉘 사용법이 언어와 유사하며 쉘 쉘과 기본적으로 유사한 특성을 가지고

o C (/bin/csh, %): C , Korn , Bourne

있으나 대형 시스템을 목표로 설계되었기 때문에 명령어의 용어와 문법적 구조는 다르다.

쉘 벨 연구소의 에 의해 제작되었으며 쉘을 포함하며

o Korn (/bin/ksh, $) : David Korn , Bourne , aliasing, 같은 특성이 추가되었다

history, command line editing . 파일 시스템

(3) (File System)

(2)

유닉스의 최상위 레벨의 디렉터리인 root는 “/”로 시작하여 하위에 다음과 같은 디렉터리 계층구조를 이룬다. 디바이스 파일을 주로 포함하는 디렉터리

o /dev:

시스템 관리를 위한 파일을 포함하는 디렉터리 등의 파일 포함

o /etc: (passwd, hosts, rc )

파일을 포함하는 디렉터리 시스템의 시작에 필요한 등 o /sbin: Standalone binary ( init, mount, sh )

임시 디렉터리 o /tmp:

시스템 바이너리 파일을 포함하는 디렉터리 o /bin:

시스템 라이브러리 파일을 포함하는 디렉터리 유틸리티 패키지 등 포함

o /lib: ( , )

계정 정보와 계정 관리 및 시스템 통계 등에 관한 디렉터리 o /var:

각종 실행 프로그램이나 온라인 매뉴얼 등을 포함하는 디렉터리 o /usr:

다 유닉스 시스템 부팅 절차와 실행 단계. 유닉스 시스템 부팅 절차

(1)

시스템 초기화 에 있는 첫 블록을 옮겨 그 코드 를 실행

o o Bootstrap disk (code)

는 유닉스 파일을 찾아서 메모리에 옮겨 처리하여 수행

o Bootstrap loader ,

유닉스 파일은 몇몇 하드웨어 인터페이스를 초기화 o

초기화 작업이 끝난 후에 프로세스 을 수행 프로세스 을 만들어 초기화한 후 시스템은 프로세스 을 복

o 0 o 0 0

제함으로써 프로세스 1을 생성o 앞 단계까지 성공적으로 수행한 경우 정상적인 스케줄링 수행,

프로세스인 프로세스 이 수행이 되면 을 하게 되는데 이 시스템 콜은 프로세스 의

o init 1 exec system call 1

명령에 파일 를 읽어 들임 code /etc/init

프로세스는 다음과 같이 처리됨

o getty - communication line connection, exec login 프로세스 사용자 패스워드 검증 쉘 실행

o login - ID/ ,

유닉스 시스템 실행 단계 (2)

계열의 유닉스 시스템은 실행 단계 별로 다음 표 와 같은 단계를 포함하며

System V (Run Level) [ 4-2] , init

명령어를 통하여 사용자가 통제할 수 있다.

유닉스 시스템 관리 2.

가 유닉스 시스템 로그 관리.

(3)

다음 표[ 4-3]은 유닉스 시스템에서의 중요 로그 파일을 설명한 것이다.

로깅 주체

(1) syslog (facility)

로깅 주체 는 로그 정보를 요청한 프로그램 종류로 구분되며 로깅 주체별 로그 대상

syslog (facility) , syslog

사건은 다음 표[ 4-4]와 같다.

레벨 (2)syslog

레벨 은 심각성 레벨을 의미하는데 다음 표 와 같은 단계로 구분 지을 수 있다

syslog (level) (severity) [ 4-5] .

심각성 레벨은 심각도에 따라 emerg > alert > crit > err > warn > notice > info > debug 순이다.

(4)

설정 구문

(3) syslog (/etc/syslog.conf)

주의할 점은 mark를 제외한 나머지 레벨은 *.alert , *.debug 등과 같이 facility를 와일드카드(wild card, *) 를 사용하여 나타낼 수 있지만, mark의 경우에는 와일드카드를 사용할 수 없다는 것이다 다음. [표 4-6]은

설정 구문에 대한 설명이다 /etc/syslog.conf .

(5)

나 유닉스 시스템 백업 및 복구 보안.

침입자에 의해 시스템의 데이터가 변조되거나 파괴되었을 때 가장 안전하고 정확한 복구 방법은 백업 및 복, 구대책이다.

백업 대책 (1)

백업 대상 분류 전체 중요 파일 로그 파일 등 기준에 의하여 백업 대상을 지정하는 것

o : , ,

백업 주기 현재 수행하고 있는 백업의 주기는 일 주 월 단위 및 수시 백업으로 분류

o : / /

백업 종류 다음 표 과 같다

o : [ 4-7] .

(6)

복구 대책 침해사고 또는 장애 등에 대한 복구 대책

(2) ( )

복구 우선순위 본질적 업무 기능 분 이내 중요 업무 기능 시간 이내 부가 업무 기능 시간 이내

o : (30 ), (24 ), (48 )

등으로 분류

목표 복구 수준 특정 백업 시점 전일 백업 시점의 데이터로 복구 특정 백업시점 전일백업 시점

o : , - (I), (D)o

목표 복구 시간: 30분 이내, 3시간 이내, 24시간 이내, 48시간 이내로 분류 백업과 복구 유닉스 명령어

(3)

백업 에

#ufsdump options : 0-9 : 0: full dump, 1~9: incremental backupu : /etc/dumpdates write,

가능하도록 처리 장치 명시 디폴트는 복구

incremental backup f : device , tapev : view# ufsrestore : 불필요한 서비스의 제거

(1)

시스템 운영에서 불필요한 서비스 제거를 위하여 다음 절차를 수행한다.

을 통하여 현재 사용 준비하고 있는 서비스 포트를 확인한다

o “#netstat -an” , . Active Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 210.205.14.100:80 0.0.0.0:* LISTENtcp 0 0 210.205.14.100:8080 0.0.0.0:* LISTENtcp 0 0 0.0.0.0:25 명령어의 실 0.0.0.0:* LISTENtcp 0 0 0.0.0.0:22 0.0.0.0:* LISTENtcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN

행 결과에서 LISTEN으로 응답하는 포트는 외부사용자가 접속할 수 있는 경로를 제공하는 서비스 포트로서, 현재 사용 중임을 의미한다 따라서 반드시 사용 유무를 확인하여 제거해야 한다. .

의 처리 결과 상태인 서비스 포트의 내용을 파일의 내용과 비교하여 o “#netstat -an” LISTEN /etc/services

서비스 포트의 내용을 참조한다 그리고. /etc/inetd.conf 파일에서 해당 서비스 항목의 첫 라인에 주석 처리한 다.(#을 해당 라인에 삽입) [stkim@insert stkim]$ more /etc/inetd.conf# Version: @(#)/etc/inetd.conf 3.10 05/27/93# # Echo, discard, daytime, and chargen are used primarily for testing.#echo stream tcp nowait root internal#echo dgram udp wait root internal#discard stream tcp nowait root internal#discard dgram udp wait root internal#daytime stream tcp nowait root internal#daytime dgram udp wait root internal#chargen stream tcp nowait root internal#chargen dgram udp wait root 첫 라인에 이 삽입되면 internal#time stream tcp nowait root internal# These are standard services.# #

(7)

주석으로 인식되어 해당 서비스 포트의 사용을 제거함ftp stream tcp nowait root /usr/sbin/tcpd in.ftpdtelnet stream tcp nowait root /usr/sbin/tcpd in.telnetd# Shell, login, exec, comsat and talk are BSD protocols.#shell stream tcp nowait root /usr/sbin/tcpd in.rshd#login stream tcp nowait root /usr/sbin/tcpd in.rlogind#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd#comsat dgram udp wait 의 명령어를 사용하여 현재 사용 중인 서비스 포트들 root /usr/sbin/tcpd in.comsato “ps –ef | grep inetd”

을 총괄적으로 관리하는 인터넷 슈퍼 데몬의 프로세스 ID를 확인한다.[stkim@insert stkim]$ ps –ef | grep 인터넷 슈퍼 데몬을 재 inetd root 318 1 0 14:01 ? 00:00:00 inetdo “kill –HUP 318(inetd’s Process ID)”

수행하여 /etc/inetd.conf 파일에서 사용을 금지하도록 설정한 서비스 포트의 상태를 재인식하도록 명령한다. 명령어를 사용하여 해당 서비스 포트에 대한 결과값이 나타나지 않았다면 조치가 완료된 것 o “netstat –an”

이다 다음 표. [ 4-8]은 유닉스 시스템에서 일반적으로 정의된 서비스를 정리한 것이다.

(8)

유닉스 시스템 프로세스 관리 (2)

명령은 유닉스 시스템에서 현재 구동 중인 프로세스를 확인하는 명령으로 명령을 통해 강제적으로

'ps' 'kill'

구동 중인 프로세스를 정지할 수 있다.

관련 명령어 프로세스 확인 명령 프로세스 정지 명령

o - ps –ef : - kill PID, killall PID : - kill -15 PID :

제거 프로세스 강제 제거 프로세스 실행 확인 명령

default signal - kill -9 PID : - pgrep –lf sendmail : - 프로세스 정지 명령

pkill sendmail :

(9)

라 유닉스 배치 작업. (at, cron) 설정

(1) at

시 분에 특정한 을 수행하도록 처리한다 파

#at 1045 10 15 job(shell_script_file) .#/var/spool/cron/crontabs 일을 수정하여 주기적으로 job을 수행하도록 한다.※ 명령어는 full path을 지정해야 한다.

설정 (2) cron

파일 구문 은 이다 파일

crontab (syntax) “minute hour day_of_month month weekday command" .o crontab 구문- minute( ) : 0 ~ 59 - hour( ) : 0 ~ 23 - day_of_month( ) : 1 ~ 31 - month( ) : 1 ~ 12 -분 시 일 월

요일 일요일부터 토요일까지를 나타내는 명령 실행 명령예를 들어

weekday( ) : 0 ~ 6 - command( ) : , “0 0 *

은 매월 일요일 시 분에 명령어를 실행하라는 뜻이다

* 0 /bin/myjob.sh” 0 0 /bin/myjob.sh .

마 유닉스 시스템 패키지 패치 관리. / 유닉스 시스템 패키지 관리 (1)

유닉스 시스템에서의 소프트웨어를 패키지라고 말하며 이것을 설치하는 것을, “패키지를 설치한다 라고 한다.” . 다음은 패키지 관련 명령어이다

시스템에 설치된 패키지 정보를 확인한다 옵션을 사용하여 서브 디렉터리의 .o pkginfo -d /cdrom/~ : . -d

패키지 정보를 볼 수 있다.

디렉터리에 존재하는 소프트웨어를 설치한다 o pkgadd -d /cdrom/~ : /cdrom/~ .

옵션은 저장할 곳을 지정하는 옵션이다 o pkgadd -d /cdrom/~ -s /pkg : -s .

패키지를 삭제한다 o pkgrm pkg_name : .

등 o pkgchk pkg_nameo pkginfo

유닉스 시스템 패치 관리 (2)

다음과 같은 절차로 패치를 설치한다.

에서 다운받는다 파일 파일을 다운받는다

o ftp sunsolve.sun.com .- /pub/patches : patch , readme . 압축을 푼다

o /usr/bin/unzip ./xxxx.zip : .

압축을 푼다 결과 명령어를 이용

o zcat/gzcat : .- zcat xxx.tar.Z | tar -xvf - >> : xxx- gzcato patchadd

하여 패치 설치 필요한 경우 삭제( )- patchadd xxxx : 패치 설치o 설치된 패치 삭제 불필요한 경우 삭제( )- 설치된 패치 삭제

patchrm xxxx :

유닉스 시스템 보안 3.

가 유닉스 시스템 계정 보안. 기본 개요

(1)

패스워드는 사용자가 기억하기 용이하게 작성하되 타인이 유추하기 어렵게 작성해야한다, . 작성 규칙

(2)

패스워드는 반드시 숫자와 문자가 조합된 6자리 이상으로 규정하며 일련번호 주민등록번호 계정과 유사 등, , , 유추 가능한 패스워드의 사용을 금지한다.

패스워드 부여 절차 (3)

신규계정 생성 시 보안 관리자가 초기 패스워드를 일괄 부여하며 사용자가 최초 로그인 시 변경하도록 규 o

정한다.

패스워드 분실 변경 재발급은 정의된 절차와 규정에 따라 보안 관리한다

o , , .

패스워드 관리 (4)

정보보호 정책의 패스워드 관리지침 준수 o

계정 및 패스워드 유출로 인한 보안 침해사고의 궁극적인 책임은 개인에게 있음을 인식 o

쉽게 유추할 수 없는 패스워드 설정 o

주기적인 패스워드 변경 규정의 준수다음 표 는 유닉스 시스템 계정 설정과 관련된 파일이다

o [ 4-9] .

(10)

나 쉘 보안.

쉘 종류 및 특징 (1)

쉘은 사용자와 운영체체 커널 사이에 위치하는 명령어 해석기를 말한다.

쉘 유닉스 쉘 파일에 사용자가 필요로 하는 환경 변수를 저장하여 사용자가 로그인 o C (Berkeley C ): .cshrc

할 때 지정한 명령들을 자동으로 수행케 함으로써 사용자의 작업 환경을 편리하게 지정할 수 있다, .

쉘 파일에 환경 변수를 저장함으로써 사용자의 작업 환경을 편리하게 한다 파일

o Bourne : .profile , . .profile

은 C 쉘의 .cshrc 파일과 같은 역할을 한다.

쉘 또는 파일에 환경 변수를 저장하여 사용자의 작업 환경을 편리하게 한다 쉘과

o Korn : .kshrc .profile . C

쉘의 기능을 모두 제공하며 쉘 스크립트 언어는 쉘과 비슷하다

TC , Bourne .

쉘의 환경 파일 (2)

파일명이 ‘.’으로 시작하기 때문에 숨김 파일 도트 파일/ (ls 명령에 나타나지 않음), 초기화 파일 선행 파일 사용/ ( 자 로그인 시 먼저 실행), 환경파일 사용자의 환경설정이 정의되어 있음 로 불린다 다음은 환경파일에 대한 설( ) . 명이다.

특정 쉘에 관계없는 초기 사용자환경을 지정하여 로그인할 때 지정한 명령들을 자동으로 수행 o .login:

시스템 접속을 종료하기 전에 마지막으로 수행될 내용 지정 파일 o .logout:

자신에게 온 전자우편을 다른 곳으로 그대로 전송하기 위한 파일 o .forward:

에서 사용하는 디렉터리 o .gopher: Gopher

쉘을 사용할 때 수행한 명령어의 일부를 저장하는 파일 o .history:

사용할 때 최근에 접속한 곳의 주소 및 위치 저장 파일 o .ncrecent: ncftp

이용 시 그룹 환경 저장 파일 o .newsrc: USENET News Group

용으로 자신의 정보나 계획을 적어 외부에 공개하는 파일 o .plan: finger

을 이용하여 시스템에 접속할 때 암호를 묻지 않고 자동으로 접속할 수 있는 서버 및 사용자 o .rhosts: rlogin

를 지정하는 파일아래 표[ 4-10]은 각 쉘에 따른 환경 파일을 정리한 것이다.

(11)

아래 표[ 4-11]은 환경 파일에서의 변수 설정에 대한 설명이다.

다 유닉스 파일 시스템 보안. 파일 시스템 개요

(1)

유닉스 파일 시스템은 유닉스 커널 프로그램과 프로그램 실행에 필요한 시스템 파일 및 사용자 데이터 파 o

일로 구성됨

개인 저장장소를 제공하고 정보를 여러 사용자가 사용 공유할 수 있는 수단을 제공

o ,

여러 가지 정보를 저장하는 기본적인 구조 o

(12)

디스크 공간에 독립된 공간 구축 가능 o

독립된 파일 시스템은 다른 파일 시스템으로부터 독립적으로 존재 다음 표 는 파일 시스템 종류에

o [ 4-12]

대한 설명이다.

다음 표[ 4-13]은 파일 시스템 구조에 대한 설명이다.

(13)

를 이용한 파일권한 설정 (2) umask

새롭게 생성되는 파일이나 디렉터리는 디폴트 권한으로 생성된다 이러한 디폴트 권한은. umask 값에 의해서 결정되는데 이 권한은 부모 프로세스나 로그인 쉘에 의해 상속받는다 따라서, . umask 값이 안전하지 않은 권 한으로 설정된 경우 허가되지 않은 사용자에게까지 파일이나 프로세스에 접근이 허락되어 보안 상 큰 위협, 요소가 될 수 있다 시스템의 기본값으로. umask는 시스템 환경파일인 /etc/profile 파일에 022로 설정되어 있 다. 보안을 강화하기 위하여 시스템 환경파일(/etc/profile)과 각 사용자별 홈디렉터리 내 환경파일 에 값을 또는 로 변경하는 것을 권장한다 값의 변경에 따라 새롭게 ($HOME/.profile) umask 027 077 . umask

생성되는 파일의 권한은 소유자(owner), 그룹(group), 다른 사용자(others)별로 아래 [표 4-14]와 같이 적용 된다.

(14)

특수 권한 파일의 관리 (3) (setuid, setgid)

은 실행 파일이 슈퍼유저 나 다른 상위 사용자의 권한으로 수행될 수 있 SUID(Set UID), SGID(Set GID) (root)

도록 규정한 특별한 파일권한 설정 비트이다 또한 상위 권한으로 실행되는 특징 때문에 시스템 해킹의 주요. 수단으로 악용되며 프로그램 파일에 버그가 존재할 경우 불법 권한 획득에 이용될 수 있는 심각한 보안 위협, 이 될 수 있다 즉 일반 사용자가. SUID, SGID 설정을 통해 특정 슈퍼 유저의 권한을 위임받아 특정 명령을 실행시킬 수 있다.

실행 파일에 사용됨 예 같은 에 실행 권한을 주기 위해서 사

o setuid: ( , /etc/passwd)o setgid: project setgid 용 예( , sys)

디렉터리에 인가된 사용자만 쓰기 가능하도록 하기 위해서 디렉터리 자체에 설정 예

o sticky bit: (write) ( ,

모든 사용자가 사용 가능하지만 삭제는 파일의 소유자만 가능함 는 예외 다음 표 는

/var/tmp - , (root )) [ 4-15]

특수권한 파일의 설정 및 검색과 관련된 명령이다.

비트가 모두 설정된 파일을 검사 find / -perm 7000 -print : suid, sgid, sticky

가 설정된 파일을 검사 find / -perm 6000 -print : suid, sgid

라 보안 관리에 사용되는 주요 명령어 ( )

다음 표[ 4-16]은 보안 관리와 관련된 주요 명령어에 대해 정리한 것이다.

(15)

마 보안 관리를 위한 중요 유닉스 파일과 명령어 ( )

보안 관리를 위한 중요 대상 파일은 네트워크 설정 관련 신뢰관계 설정 관련 배치작업 관련 감사추적 로깅, , , ( ) 관련 항목으로 구분하여 중요 파일을 기술한다 다음 표. [ 4-17]은 네트워크 설정과 관련된 파일이다.

(16)

다음 표[ 4-18]은 신뢰관계 설정과 관련된 파일이다.

다음 표[ 4-19]는 배치작업 설정과 관련된 파일이다.

다음 표[ 4-20]은 로그 파일에 대해 정리한 것이다.

(17)

바 보안 강화 도구 ( )

보안 강화 도구 중 대부분은 사용 목적에 따라 보안 관리자를 위한 보안강화 도구로 사용되거나 공격자에 의 한 침입 도구로 사용될 수 있다 보안 도구에 대한 자세한 사항은. 8장의 침해사고 대응 에서 소개한 도구의‘ ‘ 설명을 참조하고 여기에서는 정보보호관리에 사용되는 보안 강화 도구의 사용 목적에 따른 분류 기준을 이해 하도록 한다 다음. [표 4-21]은 보안 강화 도구를 사용목적에 따라 분류하여 정리한 것이다.

(1) TCP Wrapper

는 인터넷 슈퍼데몬인 데몬에 의해 구동되는 네트워크 서비스 예를 들어

TCP Wrapper inetd ( ftp, telnet,

등 들에 대한 접근 통제와 사용된 서비스별 로그를 기록할 수 있 rlogin, rsh, exec, tftp, talk, systat, finger )

는 보안강화 도구이다. TCP Wrapper는 시스템에 존재하는 소프트웨어나 설정 파일을 바꿀 필요가 없으며 클 라이언트와 서버 응용 프로그램 사이의 실질적인 통신에 부하를 주지 않는다. TCP Wrapper는 에 정의되고 데몬에 의해 통제되는 네트워크 서비스를 통제하기 위하여 데몬과 네

/etc/inetd.conf inetd inetd

트워크 서비스데몬(in.telnetd, in.ftpd, in.rlogind 등 사이에) tcpd 데몬을 구동하여 네트워크 서비스의 사용에 대한 접근 제어와 로그 기록 기능을 한다.

접근 제어 의 접근제어는 파일과 파일에 의하여 이루어

o - TCP Wrapper /etc/hosts.allow /etc/hosts.deny

(18)

진다 접근 제어에 사용되는 두 파일 중에서. tcpd가 먼저 검색하는 것은 hosts.allow 파일이다 그러므로. 파일에 접근을 허가하는 호스트를 적어두고 파일에는 을 적어두면 허가된 호스

hosts.allow , hosts.deny ALL

트만이 시스템에 원격으로 접근할 수 있다.

로그 기록 는 데몬을 사용하며 등

o - TCP Wrapper(tcpd) syslog telnet, ftp, rexec, rsh, rlogin, tftp, talk 에 대한 접근 로그를 기록하며 기본적으로 /var/log/syslog 파일에 저장된다. 다른 파일로 변경하려면

파일에서 설정을 수정하면 된다

/etc/syslog.conf .

(2) CGI Wrapper

가 유닉스 서버의 네트워크 서비스 예 등 에 대한 접근 통제를 위한 보안도 TCP_Wrapper ( , Telnet, rlogin, ftp )

구라면 CGI Wrapper는 웹서비스의 CGI를 보호하는 웹서버 보안강화 도구이다.CGI Wrapper는 웹서버의 자 식 프로세스들이 모두 nobody 권한으로 실행되었을 때 발생하는 문제점을 보완하기 위하여 만들어진 것이다. 는 프로그램이 위치한 디렉터리의 소유자 권한으로 프로그램을 실행시킨다 따라서 모

CGI Wrapper CGI CGI .

든 CGI가 nobody로 실행되는 것이 아니며 모든, CGI는 CGI 프로그램 자신의 소유로 실행이 되는 것이다 그. 리고 CGI Wrapper는 실행시킬 CGI 프로그램이 위치한 디렉터리 소유자와 CGI 프로그램의 소유자를 비교하 여 같을 때에만 실행시키며 다를 때에는 실행시키지 않도록 동작함으로써, CGI에서 발생되는 취약성을 보완 한다.

사 별 주요 유닉스 명령어 ( ) OS

다음 표[ 4-22]에서 표[ 4-27]은 OS 별로 주요 유닉스 명령어를 비교한 것이다.

(19)
(20)
(21)
(22)
(23)
(24)
(25)

윈도우 시스템 보안

윈도우 시스템 개요 1.

가 윈도우 시스템 구조.

윈도우 시스템은 모듈식 구조를 사용한다 모듈식 구조는 윈도우에 포함되어 있는 각 컴포넌트와 모듈이 설계. 상의 목적인 각 기능에 대해서 단독적으로 책임을 진다는 것이다 또한 하나의 모듈은 다른 모듈이 수행하는. 기능을 결코 반복하지 않는다 이러한 모듈식 구조는 새로운 구성 요소의 추가로 인한 확장성이 쉽다는 장점. 이 있다.

나 윈도우 모드.

윈도우 사용자 모드 (1)

윈도우 사용자 모드는 사용자들의 어플리케이션과 서브시스템들이 실행되는 공간이다 사용자 모드의 어플리. 케이션은 하드웨어 자원으로부터 분리되고 어플리케이션이 접근할 수 있는 메모리 공간을 제한받게 된다 이. 러한 이유로 커널 모드로부터 어플리케이션을 격리시킴으로써 어플리케이션이 시스템을 파괴할 가능성을 줄이 고 권한 없는 사용자들이 접근하지 못하도록 하는 것이다.

사용자 모드의 주요 서브시스템윈도우 서브시스템은 부팅 시 윈도우로부터 만들어지는 사용자의 모든 프로 o

세스이며 이것은 한번 만들어지면 지속적으로 응용프로그램 프로세스와 또 다른 서브시스템에 보내진 메시지 에 의해 실행된다 다음 표. [ 4-28]은 사용자 모두의 주요 서브시스템에 대해 정리한 것이다.

이러한 로그온 프로세스는 데이터를 보호하고 불의의 사고를 막기 위해서 사용자를 제한하기 위해 사용된다.

이러한 보안 서브시스템(Security Subsystem)은 윈도우에 접근하려는 사용자에게 사용 인증을 할 수 있도록 한다.

윈도우 커널 모드

(2) 윈도우 운영체제는 흔히 선점형(Preemptive) 멀티태스킹 운영체제라 하는데 이것은 여러 프로그램을 실행시켜서 작업하고 있지만 실제 프로세서는 한 번에 한 가지 작업을 실행시킨다는 것이다 이렇. 게 하나의 프로세서가 여러 개의 작업을 동시에 수행하기 위해서는 이러한 작업들 간에 스케줄을 처리하기 위 한 것이 존재해야 하고 이러한 역할을 하는 것이 바로 커널(Ntoskrnl.exe)이다 커널은 메모리를 할당하고 입. 출력(I/O) 장치와 통신하기 때문이다 다음. [표 4-29]는 윈도우 커널 모드의 서브시스템에 대한 설명이다.

(26)

다 윈도우 파일 시스템.

다음 표[ 4-30]에서와 같이 윈도우 파일 시스템은 크게 FAT과 NTFS 로 구분할 수 있다.

라 윈도우 시스템 시작 및 복구. 한 시스템에 여러 운영체제를 설치하게 되면 이중 부팅이 가능하게 되는데 항 상 가장 늦게 설치한 운영체제가 기본 운영체제가 된다 운영체제의 변경 방법에는. 'c:₩boot.ini'를 직접 편집 하는 방법과 시작[ ] - [제어판] – [시스템 의 고급 탭 내 시작 및 복구 창에서 변경하는 방법이 있다] [ ] [ ] .

윈도우 시스템 관리

2. 가 윈도우 시스템 계정 그룹 관리. / 내장된 사용자 계정

(1)

내장된(builtin) 계정이란 관리자가 계정을 만들지 않더라도 자동으로 윈도우2000 서버 설치와 함께 만들어진 계정들을 말한다 표( 4-31 참고).

(27)

일반적으로 Administrator, Guest 등과 같은 계정은 모든 시스템에 공통으로 존재하기 때문에 공격자들에

게 노출되어 있다 이 문제는 보안 상 큰 위협이 될 수 있으므로 이러한 계정을 다른 사람이 사용하지 못하게. 이름을 바꾸거나 암호를 복잡하게 사용해야 한다.

윈도우 그룹 (2)

그룹(Group)이란 파일이나 자원의 접근 권한을 동일하게 가지는 사용자들의 모임을 말한다 사용자 계정을 그. 룹의 멤버로 만들면 그 사용자는 그룹에게 부여된 모든 허용 권한을 상속받게 된다 그룹에는 글로벌 그룹과. 로컬 그룹이 있다 글로벌 그룹. (Global Group)은 현 도메인의 사용자 계정을 업무 기능 또는 지리적인 위치 별로 묶어주는 데 사용되며 로컬 그룹(Local Group)은 사용자들에게 네트워크 자원에 접근할 수 있는 권한을 부여하기 위해 쓰인다. 다음 [표 4-32]는 윈도우 그룹을 분류한 표이다.

(28)

내장된 그룹의 속성은 내장된 글로벌 그룹 글로벌 로컬 그룹 로컬 그룹에 따라 다음 표, , [ 4-33]과 같은 내장 된 그룹의 속성을 가진다

내장된 도메인 로컬 그룹은 표[ 4-34]와 같이 구분될 수 있다.

(29)

내장된 로컬 그룹은 [표 4-35]와 같이 구분될 수 있다.

(30)

나 윈도우 로그 관리.

윈도우 서버에서의 로그 관리는 “이벤트 뷰어 라는 관리 도구를 사용하여 관리하며 응용프로그램 로그 보안” , , 로그 시스템 로그의, 3가지 로그를 기본 로그로 한다 그리고 도메인 컨트롤러로 구성된 윈도우 서버는 디렉. ' 터리 서비스 로그 와 파일복제 서비스 로그 가 추가되며' ' ' , DNS 서버로 구성된 윈도우 시스템에서는 'DNS 서 버 로그 가 추가된다 이벤트 뷰어에서 관리하는 이벤트 로그파일' . (.evt)로 저장된 로그는 기록된 각 이벤트의 이진 데이터 형식으로 보관된다 다음. [표 4-36]은 윈도우 기본 로그에 대한 설명이다.

(31)

다 윈도우 시스템 환경 변수 설정.

시스템에서 특정 명령어를 실행할 때 그 실행 명령이 저장된 경로를 지정하지 않더라도 자동으로 그 경로를 찾을 수 있도록 드라이브 경로 또는 파일 이름과 같은 정보를 포함하고 있다 환경변수 설정은 윈도우 화면에. 서 [시작] [– 제어판] [– 시스템 의] [고급 탭 내] [환경 변수 창에서 설정을 변경할 수 있다] . 환경변수는 [표

과 같이 크게 사용자 환경변수와 시스템 환경변수로 나뉠 수 있다

4-37] .

윈도우 시스템 보안 3.

가 윈도우 파일 시스템 보안.

는 의 약자로 에서 사용하는 파일 시스템을 의미한다 만약 로 사용하고

NTFS ‘NT File System’ , NT . FAT32

있다면 보안 상 NTFS로 변환해서 사용하는 것을 권장한다. 를 로 변환하기

(1) FAT32 NTFS

윈도우 파티션의 파일 시스템을 로 사용 중이라면 로 변환하기 위해 우선 윈도우 시스템을 부

o FAT32 NTFS

팅하고 명령어 프롬프트 창을 띄어 다음과 같이 입력한다.- C: 드라이브에는 윈도우2000이 설치되어 있다고 가정 하에 다음 명령을 입력한다. - C:> CONVERT C: /FS:NTFS- 만약 멀티 부팅을 사용하는 경우 FAT32 로 된 D: 드라이브에 Windows OS가 설치되어 있다면 다음 명령을 입력한다. - C:> CONVERT D:

주의 에서 변환은 되지만 에서 로 변환은 되지 않는다

/FS:NTFS※ : FAT32 NTFS NTFS FAT32 .

파일 시스템의 암호화

(2) NTFS 5.0 파일 시스템은 디스크 상의 파일 시스템을 읽고 쓸 때 자동으로 암호화 하고 해독한다. NTFS를 사용하는 경우 접근을 허가해준 사람만이 사용자 계정과 패스워드를 통해 접근이 가

(32)

능하다 윈도우. 98에서는 폴더 공유를 통해 접근 제어를 할 수 있었지만 윈도우2000에서는 폴더뿐만 아니라 파 일 단위로도 암호화가 가능하다 즉 같은 폴더 안의 파일이라도 허가되지 않은 파일은 아무나 열 수 없다 폴. , . 더에 암호화를 하면 그 폴더 안에 들어가는 파일들은 모두 암호화 된다 이렇게 암호화된 폴더나 파일들은 복. 사 이동을 해도 암호화된 속성이 없어지지 않는다 또 파일 단위로 감사가 가능하다 즉 어떤 사람이 어떤, . . , 요일 몇 시 몇 분에 파일을 열어보고 어떤 사람이 파일을 열려다 실패했는지 알 수 있다.

공유 폴더 보안 (3)

공유 폴더 보안은 윈도우 에도 있었다 예를 들어 폴더 이름 뒤에 을 붙여 공유를 해놓았다고 보자 이

o NT . '$' .

름을 O2man$이라 하면 이 폴더는 숨김 속성이 되어 보이지 않게 된다. 이 폴더에 접근하기 위해서는 주소창 란에 와 같이 입력해 주어야 볼 수 있다 반드시 디렉터리 이름 뒤에 를 입력

Windows ₩₩O2man$ . $

해 주어야 볼수 있다 그리고 여기서 알아두어야 할 것은 공유한 폴더를 복사한 경우 복사된 공유 설정이 없. 어지지만 복사 원본 폴더의 공유 설정은 계속 유지된다.

위처럼 한 후 파일을 에 놓고 해당 주소나 도메인 에 접속하면

o %system roo%₩inetpub₩ftproot% , ftp://( ip )

감쪽같이 없어진 것을 확인할 수가 있다.o 자신의 컴퓨터에서 숨김 파일을 보고 싶으면, [도구 내] -[폴더 옵 션 의 보기 탭에서 숨김 파일 및 폴더 표시 를 체크하면 된다] [ ] ' ' .

윈도우에서의 설정

(4) Quota

윈도우에서의 사용자 디스크 할당량 제한은 NTFS 파일 시스템에서만 사용이 가능하며 FAT, FAT32 파일 시스템에서는 지원되지 않으며 디렉터리 단위가 아닌 파티션 단위로 쿼터가 적용된다 사용자는 파티션 전체, . 디스크 사이즈가 보이는 게 아닌 쿼터가 적용된 사이즈만 보이게 된다 디스크 할당량 설정은 관리자 권한을. 가진 사용자만이 설정할 수 있으며 모든 사용자에게 동일한 조건을 줄 수도 있으며 각각의 사용자마다 다르게 지정할 수도 있다 할당량 제한은 설정 후 사용자가 로그인 하는 시점부터 적용된다. .

나 윈도우 시스템 취약성. 를 통한 스푸핑 (1) NetBIOS

이름은 인터페이스를 사용하는 시스템 환경에서 자원을 식별하는데 사용된다

NetBIOS NetBIOS NetBIOS .

예를 들어 ‘₩₩’ 이것이 바로 NetBIOS에서의 표현식이다. MS 윈도우 네트워크의 NetBIOS 이름은 서비스 도중 스푸핑이 가능하다. NetBIOS는 ‘Network Basic Input/Output System’의 약자이며 DOS를 운영체제로 사용하는 IBM PC용 고급 프로그래밍 인터페이스로서, LAN 상에서 서버와 클라이언트 간의 통신에 주로 사 용된다 일반적으로. NetBIOS는 UNC를 사용하여 ‘₩₩computer₩shares‘ 로 표현된다 윈도우. 2000부터는

를 사용하지 않고 프로토콜 하나만 사용한다

NetBEUI TCP/IP .

를 통한 연결 주소 공유이름 이 명령을 사용하면 이름 확인을 구성하지 않

o NetBIOS :- ₩₩IP ₩ : NetBIOS

아도 된다.- ₩₩도메인 공유이름₩ : 이 명령을 사용하면 DNS를 통해 정식 도메인 이름(FQDN)을 사용하여 컴퓨터에 연결할 수 있다. NetBIOS에서 스푸핑(Spoofing)이란 마치 자신이 특정한 컴퓨터인 양 가정하는 것 으로 LAN 환경에서 당연한 것이지만, NetBIOS 인터페이스는 원격에서 스푸핑이 일어날 수 없는 것으로 알 려져 왔었는데 스푸핑이 실제로 원격에서 일어나는 것이 확인되어 문제가 되고 있다 이 취약성을 차단하기 위. 해서는 윈도우 2000에 최신 한글 서비스 팩을 설치 해주면 된다 스푸핑에서 문제가 되는 서버는 윈도우.

모두가 해당되며 가급적 인터넷을 통해 포트를 열어 놓지 않는 것이 최선의 보안 방법이다

NT/2000 137 .

(33)

데이타베이스 보안

데이터베이스 개요 가 데이터베이스.

데이터베이스는 사람들이 관심을 가지고 있는 데이터를 모아둔 것이다 일상생활에서 자주 접할 수 있는 데이. 터베이스의 예로는 은행의 고객 자료의 데이터베이스나 학교에서 학생 자료 데이터베이스 도서관에서의 도서, 데이터베이스 등이 있다 이러한 예에서 보는 것처럼 하나의 데이터베이스에는 서로 관련된 데이터들이 컴퓨. 터가 처리할 수 있는 형태로 저장되어 있으며 이렇게 저장된 데이터는 사용자의 물음에 대해 대답할 수 있어 야만 의미를 가질 수 있다.

도서관 데이터베이스를 예로 든다면 데이터베이스에는 현재 도서관에 있는 책들에 대한 데이터 즉 작가 출, , 판년도 도서명 등등의 데이터들이 저장되어 있으며 사용자는 자신이 찾고자 하는 책에 관한 정보를 데이터베, 이스로부터 추출해낼 수 있다 즉 데이터베이스는 데이터를 보관하고 사용자에 물음에 대답하는 시스템이다. , . 데이터베이스에 저장된 데이터는 끊임없이 변화한다 예를 들어 도서관의 경우 새로운 책이 들어올 때마다 새. 로운 도서에 대한 데이터가 저장되어야 하고 책이 대출되었을 때나 반납되었을 때 대출과 반납에 대한 정보가 저장되어야 한다 데이터베이스는 이러한 외부의 변화에 맞추어 적절히 저장된 데이터를 변경시킬 수 있어야. 하며 즉 데이터베이스는 새로운 데이터를 저장하거나 기존의 데이터를 삭제 변경시키는 작업을 저장된 데이, , 터가 일관성을 유지하도록 관리되어야 한다.

나 데이터베이스 관리시스템.

데이터베이스를 생성하고 관리하며 데이터로부터 사용자의 물음에 대한 대답을 추출하는 프로그램의 집합을, , 데이터베이스 관리시스템(DBMS, Database Management System)이라 한다 데이터베이스 관리 시스템의 첫. 번째 목표는 바로 데이터를 저장하고 이 데이터로부터 유용한 정보를 얻어내기 위한 효율적이면서도 편리한 방법을 사용자에게 주는데 있다 데이터베이스 관리 시스템이 데이터를 관리하기 위해서는 저장할 데이터의. 구조를 정의해야 하며 이렇게 정의된 구조에 따라 효율적으로 데이터를 저장해야 한다 또한 이렇게 저장된, . 데이터로부터 좀 더 빠르게 정보를 추출할 수 있기 위한 방법들을 제공해야 한다.

실제로 데이터를 관리하는 데 있어서는 여러 문제점이 발생하게 된다 예를 들어 학사 관리 데이터베이스에서. 학생의 출생년도가 1800인 데이터가 있다거나 또는 학생의 소속 학과가 실제로 존재하지 않는 학과로 되어있 는 경우 또한 학번이 같은 사람이 둘 이상 있는 것과 같이 잘못된 데이터가 데이터베이스에 저장될 경우 이, 로부터 얻은 정보는 아무런 의미가 없게 된다 이와 같은 잘못된 데이터가 데이터베이스에 저장되는 것을 막. 는 것 또한 데이터베이스가 해야 할 일들 중 하나이다.

보통의 경우에 데이터베이스는 동시에 여러 사람들이 사용하게 되며 이렇게 하나에 데이터베이스가 동시에, 여러 장소에서 사용될 경우 한명의 사용자가 사용할 때와는 다른 문제점을 발생시킬 수도 있다 데이터베이, . 스를 효율적으로 사용하기 위해서는 이처럼 동시에 데이터베이스에 접근하는 것을 가능하도록 해야 하며 이, 때에 발생할 수 있는 문제를 데이터베이스 관리 시스템이 해결해야 한다.

다 개체 관계 모델. -

데이터베이스를 설계하는 과정에서 가장 먼저 해야 할 일은 사용자가 관심이 있는 데이터는 무엇이며 그 데이 터로부터 얻고자 하는 정보는 무엇인지에 관해 조사하는 것이다 이러한 과정을 사용자의 요구분석이라고 하. 는데 이 단계에서는 사용자가 요구하는 실세계의 데이터를 분명하고 이해하기 쉽게 나타내어 다음 단계에서 사용자의 요구에 맞는 데이터베이스를 만들 수 있도록 해야 한다.

이렇게 현실세계의 수많은 데이터 중에서 관심의 대상이 되는 데이터만을 추려내어 추상적 형태로 나타내는 것을 데이터 모델링이라고 한다 언어가 가지고 있는 모호성 때문에 보통의 언어보다 좀 더 형식화되고 다이. 어그램 등을 사용하여 표현하게 되는데 이를 개체 관계 모델이라 한다- .

라 관계형 데이터베이스.

관계형 데이터베이스는 모든 데이터들을 테이블과 같은 형태로 나타내어 저장하는 데이터베이스이다 일상생. 활에서 데이터를 정리하여 표현할 때 흔히 표와 같은 방법을 사용하게 되는데 관계형 데이터베이스는 이 표, ' '

(34)

의 개념을 사용해서 데이터를 구성하는 방법을 사용하고 있다 예를 들어 고객들의 주소와 전화번호를 정리할. 때 표 즉 테이블을 사용한다면 첫 번째 열은 이름 두 번째 열은 주소 세 번째 열은 전화번호를 써서 나타, , , , 낼 수 있다.

개체 관계 모델에서 정의한 데이터들을 실제로 관계형 데이터베이스를 사용하여 저장하기 위해서는 개체 관- - 계 모델을 테이블로 변환시키는 과정이 필요하다 즉 개체 관계 모델은 실제 데이터베이스와는 상관없이 저장. - 하고자 하는 데이터를 정의한 것이며 테이블은 데이터를 관계형 데이터베이스에서 실제로 표현하는 방법이, 다 관계형 데이터베이스에서는 단순히 데이터를 테이블의 형태로 나타낼 뿐만 아니라 저장된 데이터로부터. 원하는 정보를 추출할 수 있는 방법을 정의하고 있다.

데이터베이스 보안 5.

가 데이터베이스 보안 정의.

데이터베이스 보안은 데이터베이스에 저장되어 있는 데이터에 대하여 인가되지 않은 접근 의도적인 데이터의, 변경이나 파괴 및 데이터의 일관성을 저해하는 우발적인 사고 등으로부터 데이터 혹은 데이터베이스를 보호하 는 것이다.

나 데이터베이스 보안 위협 요소.

아래 표[ 4-38]은 데이터베이스 보안의 위협 요소에 대한 설명이다.

다 데이터베이스 보안 요구 사항.

아래 표[ 4-39]는 데이터베이스의 안전한 보안을 위해 필요한 보안 요구 사항이다.

(35)

라 데이터베이스 보안 구현. 데이터베이스 보안은 접근 통제(Access Control)를 통해서 이루어진다 데이터베. 이스에 대한 접근 통제란 정당한 권한을 부여 받은 사용자에게만 데이터를 이용할 수 있게 하는 것으로 아래

표 과 같이 크게 사용자 인증 과 권한 부여 과정으로 구성되며 데이터

[ 4-40] (Authentication) (Authorization) 기밀성을 위해 암호화(Encryption)과정이 같이 수행된다.

(36)

참조

관련 문서

소비자가 가장 선호하는 상품의 가격 기능 디자인 등이 현실적이지 못하거나 고객의 요구에 부 합되지 않는 경우 컨조인트 분석을 통하여 차선의 상품을

*본 내용은 코로나 19의 영향으로 방역 지침에 따라 변동될 수 있습니다....

• Deep brands are ones that may appeal only to a much narrower set of people, but they create a lot of value to those people. These brands have lower revenue but

editing c:₩Perl/site/lib/ppm-conf/Archive-Tar.pkg editing c:₩Perl/site/lib/ppm-conf/Compress-Zlib.pkg editing c:₩Perl/site/lib/ppm-conf/Data-Dump.pkg

4차 산업혁명, 통일한국, 새만금 시대를

매년 손해사정사 다수 합격, 높은 취업률, 고액연봉.

공기업, 금융자격증을 준비하는 학술 동아리 공부 잘하는 학생과 잘 노는 학생들이 많아요~. 혁신도시

포지셔닝 맵의 차원설정.