목차

Citrix XenServer 보안가이드라인

1. 계정관리

1.1. Default 계정(중요도 : 중)

개요

  • 시스템에서 이용하지 않는 Default 계정 및 의심스러운 특이한 계정의 존재 유무를 검사하여 삭제합니다.
  • 대부분의 시스템에서 사용하지 않는 것이 확실한 아래의 계정들과 의심스러운 계정을 삭제하도록 하며 일반적으로 로그인이 필요치 않은 시스템 계정들은 로그인을 금지 시킵니다.
  • OS나 Package 설치 시 Default로 생성되는 계정은 대부분 Default 패스워드를 사용하는 경우가 많으며 패스워드 추측공격에 악용될 수 있습니다.

확인방법

  • lp, uucp, nuucp, 의심스러운 특이한 계정(예. guest, test) 및 미사용 계정의 존재 유무 검사.

■ 명령어

# cat /etc/passwd | egrep "lp:|uucp:|nuucp:" | grep -v "lpd" 

설정방법

  • 퇴직, 전배, 휴직, 계약해지자 계정 존재 시 삭제.
  • lp, uucp, nuucp, 의심스러운 특이한 계정(예. guest, test) 및 미사용 계정 삭제.
  • 로그인 쉘을 /bin/false로 수정하는 것은 보안상 문제가 발생할 수 있으므로 삭제를 권고함.

■ 명령어

# userdel lp
# userdel uucp
# userdel nuucp

1.2. 일반계정 root권한 관리(중요도 : 상)

개요

  • 시스템 관리자는 root계정을 포함하여 모든 계정의 의심가는 디렉터리 및 파일을 정기적으로 조사하여 삭제하며, 주기적으로 불필요한 사용자 계정을 조사하여 제거하는 것이 보안상 필요합니다.

확인방법

  • root 권한을 가진 다른 일반 계정이 있는지 점검함.
  • root와 UID가 중복이 되어있으면 관리자 권한을 다른 사용자가 사용할 수 있으며, 사용자 간 UID 중복 시에 사용자 감사 추적이 어렵고, 사용자 권한이 중복됨.
  • root를 제외한 일반 계정의 UID가 '0'이면 삭제 또는 적절한 UID 를 부여(100이상의 번호로 변경)하고 root그룹에 속한 일반 계정은 적절한 권한의 그룹에 등록하도록 함.
  • 시스템 계정(daemon, bin, adm, uucp, nuucp, lp, hpdb 등)은 제외.

< 일반계정 및 일반계정의 디렉터리 구분 * “/etc/passwd “파일내용에서 구분 >

아래의 내용은 /etc/passwd 파일의 샘플이며, 필드구분이”:“이며, 세번째 필드가 “0” 이면 슈퍼유저 권한이며, “0”이외의 계정은 일반계정으로 보면 됨. 그리고 여섯번째 필드가 해당 계정의 홈 디렉터리 임

① : 사용자 계정을 나타낸다. 
② : 패스워드가 암호화되어 shadow 파일에 저장되어 있음을 나타낸다. 
③ : 사용자 번호로 관리자이므로 0번이다. 일반 사용자의 경우에는 500번부터 시작된다. 
④ : 그룹 ID다. 관리자 그룹이므로 0번이다. 
⑤ : 실제 이름이다. 시스템 설정에 별다른 영향이 없는 설정이다. 자신의 이름을 입력해주어도 된다. 
⑥ : 사용자의 홈 디렉터리를 설정한다. 관리자이므로 홈 디렉터리가 /root다. 
⑦ : 사용자의 쉘을 정의한다. 

<passwd 파일 필드> loginID:x:UID:GID:comment:home_directory:login_shell

설정방법

  • /etc/passwd 파일에서 UID 가 0인 일반계정의 UID 를 100 이상으로 수정.

■ 명령어

예) wiki 계정의 UID 를 2002로 바꿀 경우
# usermod –u 2002 wiki 

1.3. passwd 파일 권한 설정(중요도 : 상)

개요

  • ”/etc/passwd” 파일의 접근권한을 제한하고 있는지 점검합니다.
  • 파일의 설정 상의 문제점이나 파일 permission 등을 진단하여 관리자의 관리상의 실수나 오류로 발생할 수 있는 침해사고(일반 사용자 권한 /root 권한 획득)의 위험성을 진단합니다.

확인방법

  • “/etc/passwd” 파일의 접근권한을 확인하여 파일의 권한이 root 소유의 “644(rw-r–r–)” 이면 양호.

■ 명령어

# ls –al /etc/passwd 

설정방법

  • /etc/passwd 파일의 권한을 root소유의 “644” 로 설정.

■ 명령어

# chmod 644 /etc/passwd
# chown root /etc/passwd

1.4. group 파일 권한 설정(중요도 : 상)

개요

Group파일을 일반사용자가 접근하여 변조하게 되면 인가되지 않은 사용자가 root그룹으로 등록되어 인가되지 않은 사용자의 root권한 획득 가능, Group 파일을 일반 사용자들이 수정할 수 없도록 제한하고 있는지 점검하여 타사용자의 쓰기권한을 제한하여야 합니다.

확인방법

  • “/etc/group” 파일의 접근권한을 확인하여 파일의 권한이 root 소유의 “644(rw-r–r–)” 이면 양호.

■ 명령어

# ls –al /etc/group 

설정방법

  • /etc/group 파일의 권한을 root(또는 bin) 소유의 “644”로 설정.

■ 명령어

# chmod 644 /etc/group
# chown root /etc/group

1.5. 패스워드 사용규칙 적용(중요도 : 중)

개요

  • 패스워드 추측공격을 피하기 위하여 패스워드 최소길이가 설정되어 있는지 점검합니다.
  • 패스워드 최소길이가 설정되어 있지 않거나 짧게 설정되어 있을 경우 취약한 패스워드를 사용함으로 인해 악의적인 사용자가 패스워드를 쉽게 유추할 수 있습니다.
  1. 패스워드 최소길이
    • 패스워드 추측공격을 피하기 위하여 패스워드 최소길이가 설정되어 있는지 점검합니다.
    • 패스워드 최소길이가 설정되어 있지 않거나 짧게 설정되어 있을 경우 취약한 패스워드를 사용함으로 인해 악의적인 사용자가 패스워드를 쉽게 유추할 수 있습니다.
  2. 패스워드 최대 사용기간
    • 패스워드가 임의의 경로를 통해 유출되었을 때, 임의로 접속한 사용자가 언제든 다시 접속할 수 있는 환경을 방지하기 위해 패스워드 날짜 제한을 점검합니다.
  3. 패스워드 최소 사용기간
    • 패스워드를 변경하고 난 이후에 최소 사용기간 안에 패스워드를 변경할 수 없도록 설정합니다.

확인방법

가. 패스워드 사용규칙

패스워드 길이는 8자 이상 이고, 최대 사용 기간을 70일(10주) 이하이며, 최소 사용 기간을 7일(1주) 이상으로 설정되어 있으면 양호 (업체에 따라 규칙이 다를 수 있음.)

■ 명령어

# cat /etc/login.defs | grep -i "PASS_MAX_DAYS"
# cat /etc/login.defs | grep -i "PASS_MIN_DAYS"
# cat /etc/login.defs | grep -i "PASS_MIN_LEN"

나. 패스워드 설정

문자/숫자/특수문자 2 종류 이상의 조합으로 8자 이상

설정방법

1. 패스워드 사용규칙 적용 방법

  • 패스워드 길이는 8자 이상 설정하는 것을 권고.
  • 패스워드 최대 사용 기간을 70일(10주) 이하로 설정할 것을 권고.
  • 패스워드 최소 사용 기간을 7일(1주) 이상으로 설정할 것을 권고.

■ 명령어

#vi /etc/login.defs 를 실행하여 아래와 같은 설정으로 변경 (단위: 주)
#vi /etc/login.defs
  PASS_MIN_LEN 8
  PASS_MAX_DAYS 70
  PASS_MIN_DAYS 7

2. 패스워드 설정 기준
1) 패스워드는 아래의 4가지 문자 종류 중 2종류 이상을 조합하여 최소 10자리 이상 또는 3종류 이상을 조합하여 최소 8자리 이상의 길이로 구성
(1) 영문 대문자 (26개), 영문 소문자 (26개), 숫자 (10개), 특수문자 (32개)

2) 패스워드는 비 인가자에 의한 추측이 어렵도록 다음의 사항을 반영하여 설계
(1) Null 패스워드 사용 금지
(2) 문자 또는 숫자만으로 구성 금지
(3) 사용자 ID와 동일하거나 유사하지 않은 패스워드 금지
(4) 연속적인 문자/숫자(예. 1111, 1234, abcd) 사용 금지
(5) 주기성 패스워드 재사용 금지
(6) 전화번호, 생일같이 추측하기 쉬운 개인정보 패스워드로 사용 금지

3) SAM 파일에 암호를 저장하기 위해 사용되는 LANMan 알고리즘은 8자 단위로 글자를 나누어 암호화하기 때문에 8의 배수가 되는 암호사용을 권장 (8자의 암호사용 권장)

4) 아래와 같은 암호는 설정 지양
Null, 계정과 동일하거나 유사한 스트링, 지역명, 부서명, 담당자성명, 대표업무명
“root”, “rootroot”, “root123”, “123root”, “admin”, “admin123”, “123admin”, “osadmin”, “adminos”

■ 명령어

# passwd [계정명]

1.6. 로그인이 불필요한 계정 shell제한(중요도 : 중)

개요

  • 접근이 거의 필요하지 않은 사용자들에게는 쉘을 제한 함으로써 비 인가적인 시스템 사용을 방지하여 침해의 가능성을 줄일 수 있습니다.

확인방법

  • 시스템 계정 중 로그인이 불필요한 계정에 대해 ‘/bin/sh’ 등의 실행 쉘을 제한해야 하며, ‘nologin’ (/bin/false) Shell을 부여하여 로그인을 금지시킴

< 실행 쉘이 불필요한 계정 대상 * 로그인이 필요하지 않는 계정에 “nologin”>
[daemon, bin, sys, adm, listen, nobody, nobody4, noaccess, diag, listen, operator, games, gopher 등 일반적으로 uid 100 이하 60000 이상의 시스템 계정들]

아래의 내용은 /etc/passwd 파일의 샘플이며, 필드구분이 “:“이며, 마지막 필드가 “nologin”(또는 /bin/false) 이면 계정에 대해 기능이 없는 쉘이 적용된 상태임.

① : 사용자 계정을 나타낸다. 
② : 패스워드가 암호화되어 shadow 파일에 저장되어 있음을 나타낸다. 
③ : 사용자 번호로 관리자이므로 0번이다. 일반 사용자의 경우에는 500번부터 시작된다. 
④ : 그룹 ID다. 관리자 그룹이므로 0번이다. 
⑤ : 실제 이름이다. 시스템 설정에 별다른 영향이 없는 설정이다. 자신의 이름을 입력해주어도 된다. 
⑥ : 사용자의 홈 디렉터리를 설정한다. 관리자이므로 홈 디렉터리가 /root다. 
⑦ : 사용자의 쉘을 정의한다. 

< 쉘 로긴이 필요없는 경우 계정설정 >
■ 명령어

#vi /etc/login.defs 를 실행하여 아래와 같은 설정으로 변경 (단위: 주)
# useradd 계정 -c "계정finger정보" -d /home/{계정} -m -s /bin/false

설정방법

■ 명령어

#vi /etc/passwd를 실행하여 아래와 같은 설정으로 변경 (단위: 주)
  예) daemon 계정이 로그인 하지 못하도록 설정
# vi /etc/passwd 
  daemon:x:1:1::/:/sbin/ksh (수정 전)
  daemon:x:1:1::/:/bin/false (수정 후)

1.7. SU(Select User) 사용 제한(중요도 : 중)

개요

  • 권한이 없는 일반 사용자가 su 명령을 사용한 Password Guessing을 통해 root 권한을 획득할 수 있습니다.

확인방법

  • /etc/pam.d/su 파일에 auth required pam_wheel.so use_uid 라인에 주석(#)이 없고 /etc/group 파일의 wheel그룹에 계정이 제한되어 있으면 양호
  • 취약한 /etc/pam.d/su 설정 예) : 주석(#)

■ 명령어

# cat /etc/pam.d/su | grep -v 'trust' | grep 'pam_wheel.so' | grep 'use_uid'

설정방법

  • 일반 사용자의 su 명령 사용을 제한함. (wheel 그룹만 su 명령 사용을 가능하게 할 경우)

1. /etc/pam.d/su 파일을 아래와 같이 설정.
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_wheel.so debug group=wheel

2. wheel group 생성
# groupadd wheel
3. /etc/group 파일에서 wheel 그룹에 su 명령어를 사용할 사용자를 추가.
# usermod –G wheel username
■ 명령어

# vi /etc/pam.d/su (주석 제거)
  auth       sufficient   /lib/security/pam_rootok.so
  auth       required   /lib/security/pam_wheel.so debug group=wheel
# groupadd wheel 
# usermod –G wheel username

2. 파일 시스템

2.1. 사용자 UMASK(User mask) 설정(중요도 : 하)

개요

  • 시스템 내에서 유저가 새로이 생성하는 파일의 접근 권한은 UMASK에 따라 달라집니다.
  • 현재의 유저에게 설정된 UMASK를 조회하려면, 명령 프롬프트에서 “umask”를 수행하면 됩니다. 그리고 UMASK 값이 “022”이기를 권장합니다.
  • UMASK값 “022”는 “rw-r–r–” 접근권한으로 파일이 생성됩니다.

확인방법

  • 현재 시스템의 UMASK 를 확인하여 “022” 또는 “027”이며, 계정의 Start Profile에 UMASK가 설정되어 있으면 양호

■ 명령어

# umask
# cat /etc/profile | grep -i "umask"

설정방법

  • UMASK 값을 “022”로 변경하여야 함.
  • 계정의 Start Profile(/etc/profile, /etc/default/login, .cshrc .kshrc .bashrc .login .profile등)에 명령을 추가하면, 유저가 로그인 후에도 변경된 UMASK 값을 적용 받음.

■ 명령어

# umask 022
# vi /etc/profile
  umask 022 행 추가

2.2. SUID(Set User-Id),(Set Group-Id) 설정(중요도 : 하)

개요

  • SUID(Set User-ID)와 SGID(Set Group-ID)가 설정된 파일의 경우, 특히 root 소유의 파일인 경우, BufferOverflow 공격과 Local 공격에 많이 사용되는 매우 보안상 관리가 필요한 파일들로 이들 파일들의 주기적인 관리가 필요합니다.
  • 보안에 취약한 root 소유의 setuid 파일들의 경우에는 꼭 필요한 파일을 제외하고는 그 외 setuid, setgid 파일에 대하여 setuid, setgid 속성을 제거해주고, 잘못 설정되어 보안 위협이 되고 있는지 주기적인 진단 및 관리 요구됩니다.
    1. 설정 제거해야 할 Setuid, Setgid 파일 목록을 참고하여 제거해야 합니다. (하단 표 참조)
      아래의 목록 이외에 Application에서 생성한 파일이나, 사용자가 임의로 생성한 파일 등 특이한 파일의 발견 시에도 Setuid를 제거 해야 합니다.
      Setuid 제거 시는 OS 및 응용 프로그램등 서비스의 정상유무를 파악하면서 신중하게 진행해야 합니다.
    2. 반드시 사용이 필요한 Setuid 파일의 경우에는 특정 그룹에서만 사용하도록 제한하도록 합니다.

[표1. 불필요한 Setuid. Setgid 목록]

XenServer
/sbin/dump /usr/bin/lpq-lpd /usr/bin/newgrp
/sbin/restore /usr/bin/lpr /usr/sbin/lpc
/sbin/unix_chkpwd /usr/bin/lpr-lpd /usr/sbin/lpc-lpd
/usr/bin/at /usr/bin/lprm /usr/sbin/traceroute
/usr/bin/lpq /usr/bin/lprm-lpd

[표2. Citrix XenServer 5.6.0 Default Setuid, Setgid 목록]

Application 경로 구분
userhelper /usr/sbin/userhelper Setuid
usernetctl /usr/sbin/ usernetctl Setuid
Ping6 /bin/ping6 Setuid
su /bin/su Setuid
umount /bin/ umount Setuid
Pam_timestamp_check /sbin/ Pam_timestamp_check Setuid
mount.ecryptfs_private /sbin/ mount.ecryptfs_private Setuid
mount.nfs /sbin/ mount.nfs Setuid
mount.nfs4 /sbin/ mount.nfs4 Setuid
unix_chkpwd /sbin/ unix_chkpwd Setuid
Citrix Directory /opt/*

확인방법

  • Setuid, Setgid를 주기적으로 감사해야 함.

■ 명령어

# find / -user root -type f \( -perm -4000 -o -perm -2000 \) -exec ls -lg {} \;

설정방법

1. [표1. 불필요한 Setuid. Setgid 목록]을 참고하여, Setuid, Setgid를 제거
■ 명령어

# chmod –s [파일명] 

2. 특정그룹에 사용을 제한 해야 함.:
예) 일반 사용자의 Setuid 사용을 제한함 (임의의 그룹만 가능함)
■ 명령어

# /usr/bin/chgrp <Group_Name> <Setuid_File_Name>
# /usr/bin/chmod 4750 <Setuid_File_Name>
  • 만약 Setuid 사용을 허락하고 싶은 계정인 wiki를 임의의 그룹에 넣고 싶다면 아래와 같이 함.

■ 명령어

# usermod –G100 wiki
G : a list of Supplementary group 설정 변경
100 : the numerical value of the <Group>’s ID

2.3. xsconsole 파일 권한 설정(중요도 : 상)

개요

  • xsconsole 파일에 대한 접근권한을 제한하고 있는지 점검합니다.
  • xsconsole은 XenServcer Configuration 프로그램을 실행시켜주는 역할을 합니다.
  • xsconsole의 접근권한 설정이 잘못 설정되어 있을 경우 비 인가된 공격자가 설정을 변경할 수 있습니다.

확인방법

  • ”/usr/bin/xsconsole” 파일이 root 소유이며, 타 사용자 쓰기권한이 없으면 양호.

■ 명령어

# ls –alL /usr/bin/xsconsole

설정방법

  • xsconsole 파일에서 root 소유의 타 사용자 쓰기 권한 제거 설정.

※ 해당 파일이 링크되어 있다면 링크된 원본 파일 소유권을 변경함

■ 명령어

# chown root /usr/bin/xsconsole
# chmod o-w /usr/bi
/xsconsole

2.4. Crontab 파일 권한 설정 및 관리(중요도 : 하)

개요

  • 일반 사용자가 cron관련 파일에 악의적으로 접근 권한을 제한하고 있는지 점검합니다.
  • Cron은 작업 스케줄링 기능을 제공하는 프로그램이며, 특정시간에 특정작업을 자동으로 수행하도록 하는 프로그램을 말합니다.
  • Cron 관련 파일의 접근권한 설정이 잘못되어 있을 경우 비 인가자가 다양한 방법으로 사용자 환경을 변경하여 침해사고를 일으킬 수 있습니다.

확인방법

가. Crontab 설정 파일 권한
/etc/crontab, /etc/cron.daily/*, /etc/cron.hourly/*, /etc/cron.monthly/*, /etc/cron.weekly/*,
/var/spool/cron/* 에서 타 사용자 쓰기 권한이 없으면 양호.

나. Crontab 예약 실행 파일 권한
root 권한으로 Crontab에서 실행토록 설정되어 있는 실행 파일들의 권한은 744, 소유자는 root로 설정되어 있는지 확인해야 함

설정방법

1. Crontab 설정 파일 조치 방법

  • /etc/crontab, /etc/cron.daily/*, /etc/cron.hourly/*, /etc/cron.monthly/*, /etc/cron.weekly/*,

/var/spool/cron/* 에서 타 사용자 쓰기 권한이 부여되어 있을 경우 제거
■ 명령어

# chmod o-w /etc/crontab 
# chmod o-w /etc/cron.daily/*
# chmod o-w /etc/cron.hourly/*
# chmod o-w /etc/cron.monthly/*
# chmod o-w /etc/cron.weekly/*
# chmod o-w /var/spool/cron/*

2. Crontab 예약 실행 파일 조치 방법

  • 각 file의 권한 확인 후 변경

■ 명령어

# crontab –ㅣ
  1 15 * * /backup/OS_backup.sh
  30    *    *    *    *    /opt/sfm/vacuum
  
# ls –al [file]
# chmod 744 [file]
# ls -al /backup/OS_backup.sh
  -rwxr--r-  *   1 root       sys             84 Aug 10 05:01 /backup/OS_backup.sh
# ls -al /opt/sfm/vacuum
  -rwxr--r-  *   1 root       sys             67 Dec 18 14:47 /opt/sfm/vacuum

2.5. /etc/profile 파일 권한 설정(중요도 : 중)

개요

  • 사용자 설정파일인 /etc/profile 파일에 대한 접근 권한을 제한하고 있는지 점검합니다.
  • /etc/profile 파일은 로그인하는 모든 사용자들의 기본 사용환경 설정을 위한 로그인 스크립트입니다.
  • /etc/profile 의 접근권한 설정이 잘못되어 있을 경우 비 인가자가 다양한 방법으로 사용자 환경을 변경하여 침해사고를 일으킬 수 있습니다.

확인방법

  • /etc/profile 파일의 권한을 root(또는 bin) 소유의 타사용자의 쓰기권한이 없으면 양호.

■ 명령어

# ls –al /etc/profile

설정방법

  • /etc/profile 파일의 권한을 root(또는 bin) 소유의 타사용자의 쓰기권한 제거 설정

■ 명령어

# chown root /etc/profile 
# chmod o-w/tcprofle

2.6. /etc/hosts 파일 권한 설정(중요도 : 중)

개요

  • 호스트네임 등록파일인 /etc/hosts 파일에 대한 접근 권한을 제한하고 있는지 점검합니다.
  • /etc/hosts 파일은 IP address 와 Host name 을 매핑하는데 사용되는 파일이며 이 파일의 접근권한 설정이 잘못 설정되어 있을 경우 악의적인 시스템을 신뢰하게 됩니다.

확인방법

  • /etc/hosts 파일의 권한을 root (또는 bin) 소유의 타사용자의 쓰기권한이 없으면 양호.

■ 명령어

# ls –al /etc/hosts

설정방법

  • /etc/hosts 파일의 권한을 root (또는 bin) 소유의 타사용자의 쓰기권한 제거 설정

■ 명령어
※ 해당 파일이 링크되어 있다면 링크된 원본 파일 소유권을 변경함

# chown root /etc/hosts 
  hmd o- /etc/hosts

2.7. /etc/issue 파일 권한 설정(중요도 : 중)

개요

터미널 설정과 관련된 /etc/issue 파일에 대한 접근 권한을 제한하고 있는지 점검합니다.

확인방법

  • /etc/issue 파일의 권한을 root (또는 bin) 소유의 타사용자의 쓰기권한이 없으면 양호.

■ 명령어

# ls –al /etc/issue

설정방법

  • /etc/issue 파일의 권한을 root (또는 bin) 소유의 타사용자의 쓰기권한 제거 설정

■ 명령어
※ 해당 파일이 링크되어 있다면 링크된 원본 파일 소유권을 변경함

# chown root /etc/issue 
# chmod o-w /etc/issue

2.8. 사용자 홈 디렉터리 및 파일 관리(중요도 : 하)

개요

각각의 사용자의 홈 디렉터리내의 파일을 인가되지 않은 사용자가 접근하여 설정파일 및 파일을 변조하게 되면 정상적인 사용자의 서비스가 제한됨, 해당 홈 디렉터리의 계정 외의 일반 사용자들이 해당 홈 디렉터리를 수정할 수 없도록 제한하고 있는지 점검합니다.

확인방법

가. User별 홈 디렉터리의 타 사용자의 쓰기권한이 없으면 양호.

■ 명령어

# ls -dal /etc/issue

나. “.profile”, “.kshrc”, “.cshrc”, “.bashrc”, “.bash_profile”, “.login”, “.exrc”, “.netrc”, “.dtprofile”, “.Xdefaults” 등 환경변수 파일의 타 사용자의 쓰기권한이 없으면 양호.

■ 명령어

# ls –al [파일명] 
# ls –ldb [파일명] 
Ex) ls –ldb /root/.cshrc  ro/.bsh profile  /root/.bash_profie

설정방법

  • User별 홈 디렉터리의 타 사용자 쓰기권한을 제거

■ 명령어

# chmod o-w [홈 디렉터리]
  • “.profile”, “.kshrc”, “.cshrc”, “.bashrc”, “.bash_profile”, “.login”, “.exrc”, “.netrc”, “.dtprofile”, “.Xdefaults” 등 환경변수 파일의 타사용자 쓰기 권한을 제거

■ 명령어

# chmod o-w [파일명]
# chmod o-w [홈 디렉터리 경로] [파일명]  (홈 디렉터리 설정파일에서 권한 제거할 경우)

2.9. 주요 디렉터리 파일 권한 설정(중요도 : 중)

개요

  • 주요 디렉터리의 파일 권한이 적절히 설정되어 있는지 점검합니다.
  • 주요 디렉터리 접근권한 설정이 잘못되어 있을 경우 비 인가자가 다양한 방법으로 사용자 환경을 변경하여 침해사고를 일으킬 수 있습니다.

확인방법

  • “/usr/bin/xsconsole, /usr/lib/xsconsole, /opt, /sbin, /etc, /bin, /usr/bin, /usr/sbin 디렉터리의 권한을 root(또는 bin) 소유의 타 사용자의 쓰기권한이 없으면 양호.

■ 명령어

#ls -ldb /usr/bin/xsconsole /usr/lib/xsconsole /opt /sbin /etc/ /bin /usr/bin /usr/sbin 

설정방법

/usr/bin/xsconsole, /usr/lib/xsconsole, /opt, /sbin, /etc/, /bin, /usr/bin, /usr/sbin 디렉터리의 권한을 root(또는 bin) 소유의 타사용자 쓰기권한제거 설정.

■ 명령어

# chown root [디렉터리명]
# chmod o-w [디렉터리명]

2.10. PATH 환경변수 설정(중요도 : 중)

개요

  • root 계정의 PATH 환경변수에 ”.“ (현재 디렉터리 지칭)가 포함되어 있으면, root계정의 인가자로 인해 비의도적으로 현재 디렉터리에 위치하고 있는 명령어가 실행될 수 있습니다. 즉 ”.“이 /usr/bin이나 /bin, /sbin등 명령어들이 위치하고 있는 디렉터리보다 우선하여 위치하고 있을 경우, root 계정의 인가자가 어떠한 명령을 실행했을 때, 비 인가자가 불법적으로 위치시킨 파일을 비의도적으로 실행하여, 예기치 않은 결과를 가져올 수 있습니다.

또한 ”.“ 뿐만 아니라 비 인가자가 불법적으로 생성한 디렉터리를 우선적으로 가리키게 하여 예기치 않은 결과를 가져올 수 있습니다.

확인방법

  • echo $PATH로 확인(root 계정만 해당됨) 하여 현재 디렉터리를 나타내는 ”.“ 맨 앞이나 중간에 위치하면 취약.

■ 명령어

# echo $PATH 

설정방법

  • root 계정의 환경변수 설정파일(.profile, .cshrc등)과 ”/etc/profile“ 등에서 PATH 환경변수에 포함되어 있는 현재 디렉터리를 나타내는 ”.“을 제거하기 바람.
    (현재 디렉터리를 의미하는 ”.“이 PATH 맨 앞이나 중간에 위치하면 안됨 → 맨 뒤로 옮기거나 제거)

애플리케이션 구성상 ”.“ 을 사용해야 하는 경우에는 ”.“을 PATH 환경변수의 마지막으로 이동하도록 함.

2.11. /etc/service 파일 권한 설정(중요도 : 중)

개요

Service파일을 관리자가 아닌 일반사용자들이 접근 및 변경 가능하면 이를 통해 정상적인 서비스를 제한하거나 허용되지 않은 서비스를 실행시켜 침해사고의 위험이 있습니다.

확인방법

  • 서비스 파일의 권한을 root(또는 bin) 소유의 타 사용자의 쓰기권한이 없으면 양호.

■ 명령어

# ls -alL  /etc/services

설정방법

  • 서비스 파일의 권한을 root(또는 bin) 소유의 타사용자 쓰기권한 제거 설정

■ 명령어

# chown root w /etc/services
# chmod o-w /etc/services

2.12. 부팅스크립트 파일 권한 설정(중요도 : 상)

개요

  • OS상에서 사용하는 기타 중요파일에 대하여 접근 권한을 제한하고 있는지 점검합니다.
  • 시스템 운영상 중요한 파일들의 접근권한은 반드시 필요한 사용자만 접근 할 수 있도록 해야합니다.
  • 기타 다음과 같은 중요파일의 권한 중 타 사용자 쓰기 권한이 부여되어 있을 경우 제거합니다.

[표1. 기타 중요파일]

/opt/*/* /etc/rc*.d/* /etc/inittab /etc/syslog.conf
/etc/snmp/snmpd.conf /etc/crontab /etc/cron.daily/* /etc/cron.hourly/*
/etc/cron.monthly/* /etc/cron.weekly/* /var/spool/cron/*

확인방법

  • [표1. 기타 중요파일]을 참고하여, 파일 중에서 root(또는 bin) 소유의 타 사용자의 쓰기권한이 없으면 양호.

■ 명령어

# ls -alL /opt/*/*

설정방법

  • [표1. 기타 중요파일]을 참고하여, 파일 중에서 취약하게 나온 파일명을 아래의 명령어를 사용하여 조치함.

■ 명령어

# chmod o-w [파일명 또는 디렉터리명] 

3. 네트워크 서비스 및 주요 응용 설정

3.1. 서비스 Banner 관리(중요도 : 중)

개요

  • 시스템에 일반적인 서비스(SSH, SFTP 등)의 접근 시 출력되는 Banner를 관리하여 서비스 버전 유출을 막습니다.
  • 서버 사용자 범위를 명시하고, 모든 활동이 모니터링 되고 있음을 표시합니다.
  • 해당 프로세스의 버전과 시스템의 호스트 명이 노출되지 않도록 배너를 설정합니다.

※ sshd_config 설정에 따라 Banner 파일 위치가 다를 수 있습니다.

확인방법

  • ”/etc/ssh/sshd_config“ 파일에 Banner가 설정되어 있으면 양호

■ 명령어

# cat  /etc/ssh/sshd_config  |  grep  "Banner" 
  • SSH로 접속하여 설정된 Banner가 보이면 양호

  • SFTP로 접속하여 설정된 Banner가 보이면 양호

설정방법

  • SSH나 SFTP를 이용하여 접근 시 Banner를 출력하여 해당 프로세스의 버전과 시스템의 호스트명이 노출되지 않도록 배너 설정

Step 1. ”/etc/ssh/sshd_config“ 파일에 Banner 파일을 설정 ■ 명령어

# vi /etc/sshd/sshd_config
  Banner  /etc/issue.net

Step 2. ”/etc/issue.net 파일을 생성하고 경고 메시지 삽입 (예)

#####################################################################################
#       This system is for the use of authorized users only.                        #
#       Individuals using this computer system without authority, or in             #
#       excess of their authority, are subject to having all of their               #
#       activities on this system monitored and recorded by system                  #
#       personnel.                                                                  #
#                                                                                   #
#       In the course of monitoring individuals improperly using this               #
#       system, or in the course of system maintenance, the activities              #
#       of authorized users may also be monitored.                                  #
#                                                                                   #
#       Anyone using this system expressly consents to such monitoring              #
#       and is advised that if such monitoring reveals possible                     #
#       evidence of criminal activity, system personnel may provide the             #
#       evidence of such monitoring to law enforcement officials.                   #
#####################################################################################

3.2. session timeout 설정(중요도 : 하)

개요

  • 지정된 시간 동안 사용하지 않을 경우 접속된 session을 해당 서버에서 끊도록 설정하였는지 점검합니다.
  • 사용하지 않는 session 에 대한 time out 을 설정하지 않을 경우 기밀성 뿐만 아니라 가용성 측면에서도 문제점을 발생 시킬 수 있습니다.
  • 지정된 시간 동안 사용하지 않을 경우 접속된 session을 해당 서버에서 끊도록 설정하는 것이 필요합니다.(300초 경과 시 timeout)

확인방법

  • “/etc/profile”과 “xsconsole”에 Time out이 모두 설정되어 있으면 “양호”

1. “/etc/profile” 파일에 Session timoeout이 설정되어 있는지 확인함.

■ 명령어

# cat  /etc/profile  |  grep  "TMOUT" 

2. xsconsole 의 Auto–Logout Time이 설정되어 있는지 확인함.

■ 명령어

# xsconsole

설정방법

1. “/etc/profile” 파일 수정하여 아래 내용을 추가(주석 제거 또는 신규 삽입)

■ 명령어

# vi /etc/profile 
  TMOUT=300
  export TMOUT

2. xsconsole에서 설정 할 경우
Step1. [Authentication] 메뉴에서 “Change Auto-Logout Time” 메뉴를 선택한 후 Login

■ 명령어

# xsconsole

Step2. Login 후 나타나는 [Change Auto-Logout Timeout] 화면에서 “Timeout”을 설정함.

3.3. root 계정의 ssh 및 sftp 접근 제한(중요도 : 상)

개요

  • root로 직접적인 원격 접근은 보안상 위험하므로, 일반 사용자를 통해 su명령어를 이용하여, root로 접근할 수 있도록 하는 것이 보안상 필요합니다.

어느 계정을 통해 root (슈퍼 user)로 접근했는지 알기 위해 보안상 필요합니다.

확인방법

  • “/etc/pam.d/login” 파일과 “/etc/ssh/sshd_config” 파일에 다음과 같이 설정되어 있으면 양호

1) /etc/pam.d/login
auth required pam_securetty.so
또는, auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
또는, auth required /lib/security/pam_securetty.so
2) /etc/ssh/sshd_config
PermitRootLogin no

■ 명령어

# cat  /etc/pam.d/login | grep  "pam_securetty.so"
# cat  /etc/ssh/sshd_config | grep  "PermitRootLogin"

설정방법

  • “/etc/pam.d/login” 파일과 “/etc/ssh/sshd_config” 파일 설정으로 root로 직접적인 접근을 제한

■ 명령어 1) “/etc/pam.d/login” 파일 수정 (주석 제거 또는 신규 삽입)

# vi /etc/pam.d/login
  auth  required  /lib/security/pam_securetty.so

2) “/etc/ssh/sshd_config” 파일도 수정(주석 제거 또는 신규 삽입)

# vi /etc/ssh/sshd_config
  PermitRootLogin  no

3.4. SSH(Secure shell) 버전 취약점(중요도 : 중)

개요

  • OpenSSH는 SSH(Secure Shell) 프로토콜을 구현한 오픈 소스 프로그램으로 telnet, ftp, rlogin, rsh 등을 대체하고 있습니다.
  • OpenSSH는 네트워크 트래픽을 암호화하여 패킷 스니핑과 같은 공격으로부터 중요한 데이터를 보호할 수 있습니다. 그러나, OpenSSH의 낮은 버전에서는 다수의 취약점이 발견되고 있으며, 이러한 취약점으로 인해 root권한 획득, DoS공격등 다양한 공격의 대상이 될 수 있습니다.
  • Citrix에서는 Xenserver 서버에 접근하기 위한 프로토콜로서 SSH를 사용하고 있습니다.

확인방법

  • SSH의 버전을 확인하여 Xenserver 5.6.0 서버에서 권장하는 OpenSSH 4.3p2 버전 이하이면 취약

■ 명령어

# ssh -V

설정방법

1. 서비스 필요시
Xenserver 5.6.0서버에는 SSH버전 OpenSSH 4.3p2 버전 이상 사용할 것을 권장한다.

2. 서비스 불필요시
Step 1. 실행중인 서비스를 중지
■ 명령어

# ps  -ef  |  grep  sshd
  root    414  0.0  0.7  2672 1692  /usr/sbin/sshd
# kill   * 9  414

Step 2. SSH가 시작되지 않도록 시작스크립트의 파일명 변경(OS 마다 시작스크립트 위치 다름)
■ 명령어

# ls  -al  /etc/rc*.d/*  |  grep sshdz   (시작스크립트 파일 위치 확인)
# mv  /etc/rc2.d/S55sshd  /etc/rc2.d/_S55sshd 
※ SSH 설정에 따라 /etc/ssh/sshd_config 파일 위치가 다를 수 있음

3.5. 불필요한 서비스 제거(중요도 : 하)

개요

1. 서버에 [표1. 불필요한 서비스]의 Port들이 열려 있는 경우 주요 시스템 정보 노출 및 서비스 거부(DOS)를 야기시킬 수 있습니다. [표 1. 불필요한 서비스]

echo(7) 클라이언트에서 보내는 메시지를 단순히 재전송
chargen(19) 임의 길이의 문자열을 반환하는 서비스
finger(79) 사용자 정보를 보여 줌.
nntp(119) NNTP(Network News Transfer Protocol) 인터넷 상에 토론 그룹을 생성할 수 있는 표준 서비스
netbios_dgm(138) NetBIOS Datagram 서비스, 호스트, 그룹, 또는 전체로 브로드캐스팅 하는데 사용.
ldap(389) 디렉터리 서비스 엑세스를 위한 서비스
ntalk(518) 서로 다른 시스템간에 채팅을 가능하게 하는 서비스
ldaps(636) LDAP over SSL
nfsd(2049)-NFS미사용시 NFS 서버 데몬 서비스
discard(9) 수신되는 임의 사용자의 데이터를 폐기하는 서비스
time(37) rdate 데몬에 의해 사용되는 RFC 868 시간 서버의 TCP 버전
sftp(115) ftp over SSH
ntp(123) ntp(Network Time Protocol) 는 클라이언트와 서버의 시간을 동기화 시킴.
netbios_ssn(139) NetBIOS session 서비스, 네트워크 공유 등을 이용한 실제 데이터를 송수신 하는데 사용 됨.
printer(515) 원격 프린터에서 스풀링 하는데 사용.
uucp(540) 다른 유닉스 시스템들 간에 파일을 복사하고, 다른 시스템 상에서 실행될 명령어들을 보냄
ingreslock(1524) Ingre 데이터 베이스 Lock 서비스
dtspcd(6112) 데스크탑 하위 프로세스 제어 데몬 서비스
daytime(13) daytime은 클라이언트의 질의에 응답하여 아스키 형태로 현재 시간과 날짜를 출력하는 데몬.
tftp(69) 파일 전송을 위한 프로토콜. tftp프로토콜은 OS에서는 부팅 디스켓이 없는 워크스테이션이나 네트워크 인식 프린터를 위한 설정 파일의 다운로드, 설치 프로세스의 시작을 위해 사용 됨.
uucp-path(117) Uucp path 서비스
netbios_ns(137) NetBIOS name 서비스, 네트워크 상에 자원을 식별하기 위해 사용.
bftp(152) binary File Transfer Protocol
talk(517) 사용자가 시스템에 원격으로 연결하여 다른 시스템에 로그인하고 있는 사용자와 대화 세션을 시작 할 수 있음.
pcserver(600) ECD Integrated PC board srvr, RPC 관련공격에 사용됨.
www-ldap-gw(1760) HTTP to LDAP gateway, LDAP 이 웹서버로 데이터베이스의 정보를 전송할 때 사용

2. Xenserver 이용한 클라우드 컴퓨팅 서비스를 위해 서버관리용으로 SSH와 VNC를 제공하고 있습니다.

  • 클라우드 컴퓨팅 서비스에 불필요한 telnet, ftp, rlogin, rsh 등을 사용 할 경우 각각의 프로토콜에 대한 취약점으로 인해 root권한 획득, DoS공격등 다양한 공격의 대상이 될 수 있습니다.
  • [표2. 클라우드 컴퓨팅 서비스에 불필요한 서비스]를 참고하여 해당 서비스 삭제를 권고합니다.

[표2. 클라우드 컴퓨팅 서비스에 불필요한 서비스]

서비스 명 서비스 명 서비스 명 서비스 명
FTP NFS RPC SNMP
Sendmail SWAT Samba NIS, NIS+
telnet RLOGIN RSH 기타

확인방법

1. “/etc/xinetd.d” 디렉터리 내의 서비스 중 사용하지 않는 [표1. 불필요한 서비스]를 확인.

2. [표2. 클라우드 컴퓨팅 서비스에 불필요한 서비스]를 참조하여 서비스를 사용하고 있지 않으면 양호.
■ 명령어

# ps –ef  | grep [서비스 명]

설정방법

가. 서비스 필요시

  • 서비스 사용 시 보안담당자 및 담당 매니저와의 협의 필요
  • 최신버전의 서비스를 설치하여 운영하는 것을 권고

나. 서비스 불필요시
1. 사용하지 않는 [표1. 불필요한 서비스]는 제거하기 바람
■ 명령어
Step 1. “/etc/xinetd.d” 디렉터리 내의 서비스 화일 수정

# vi  /etc/xinetd.d/ [서비스 파일명]

Step2. “xinetd.d” 디렉터리 내에서 필요없는 서비스들을 Disable 을 yes 로 설정

/etc/xinetd.d/chargen 파일
service chargen
{
      Disable         = yes
      type            = INTERNAL
      id              = chargen-stream
      socket_type     = stream
      protocol        = tcp
      user            = root
      wait            = no
}

Step3. service 재 시작

#service xinetd restart

2. 클라우드 컴퓨팅 서비스에 불필요한 [표2. 클라우드 컴퓨팅 서비스에 불필요한 서비스] 제거하기 바람
■ 명령어

# ps  -ef  |  grep  [서비스 명]
# kill   * 9  [프로세스 ID]

4. 하이퍼바이저 정책 설정

4.1. 관리용 원격 접근 제어(중요도 : 상)

개요

  • 관리용으로 SSH나 XenCenter를 이용하여 원격에서 XenServer에 접근이 가능합니다.

관리자가 XenServer에 원격으로 접근이 불필요한 경우에는 관리자 원격 접근을 제한함으로써 비 인가적인 시스템 사용을 방지하여 침해의 가능성을 줄일 수 있습니다.

확인방법

  • xsconsole의 [Network and Management Interface] 메뉴에서 “Interface”가 설정되어 있으면 “취약”

※ 관리용 원격 접근 제한은 보안담당자 및 담당 매니저와의 협의 필요

■ 명령어

# xsconsole

설정방법

  • 관리용으로 원격 접근이 불필요한 경우 접근제한 설정을 권고함.

Step 1. xsconsole의 [Network and Management Interface] 메뉴에서 [Configure Management Interface] 메뉴를 선택한 후 Login

■ 명령어

# xsconsole

Step 2. Login 후 나타나는 [Management Interface Configuration] 화면에서 “Disable Management Interface”를 선택하여 관리용도로 원격에서의 접근을 차단함.

4.2. Remote Shell 접근 제어(중요도 : 상)

개요

  • XenServer에 Remote Shell을 이용하여 원격에서 접근이 가능합니다.
  • XenServer에 오직 XenCenter만을 이용하여 접근을 허용하고, Remote Shell을 이용하여 접근이 불필요한 경우에는 관리자 원격 접근을 제한함으로써 비 인가적인 시스템 사용을 방지하여 침해의 가능성을 줄일 수 있습니다.

확인방법

  • Xsconsole의 [Remote Service Configuration] 메뉴에서 [Enable/Disable Remote Shell]이 “Enable”로 설정되어 있으면 “취약”

※ 관리용 원격 접근 제한은 보안담당자 및 담당 매니저와의 협의 필요

■ 명령어

# xsconsole 

설정방법

  • XenServer에 오직 XenCenter만을 이용하여 접근을 허용할 경우 Remote Shell 접근 제한 설정을 권고함.

Step 1. xsconsole의 [Remote Service Configuration] 메뉴에서 [Enable/Disable Remote Shell]을 선택한 후 Login

■ 명령어

# xsconsole

Step 2. Login 후 나타나는 [Configure Remote Shell] 화면에서 “Disable”를 선택하여 원격에서의 Shell 접근 차단을 설정함.

4.3. Guest VM 네트워크 분리(중요도 : 상)

개요

  • Guest 네트워크는 VLAN을 이용하여 트래픽 분리가 가능합니다.
  • Guest OS (Virtual Machine) Group 간 네트워크가 연동될 경우 민감한 트래픽에 접근할 가능성이 있습니다.
  • 반드시 분리되어야 하는 Guest OS (Virtual Machine) Group은 VLAN을 이용하여 트래픽을 분리하여 사용해야 합니다.

확인방법

1. XenCenter를 사용할 경우
Step 1. 현재 사용중인 전체 네트워크를 확인하여 VLAN으로 설정되어 있는 네트워크를 확인함.

Step 2. 확인된 VLAN이 네트워크 분리가 필요한 Guest OS에 설정되어 있으면 “양호”

설정방법

1. XenCenter를 사용할 경우
Step 1. XenCenter에서 [XenServer]를 선택 한 후 [Network] 메뉴에서 “Network”의 [Add Network]를 선택함.

Step 2. 네트워크 생성 화면에서 “External Network”를 선택한 후 [Next]를 선택함.

Step 3. 생성하려는 VLAN의 이름, 설명을 입력 한 후 [Next]를 선택함.

Step 4. VLAN을 설정하는 물리적인 NIC 장치를 선택하고, VLAN의 태그를 선택한 후, [Finish]를 선택하여 VLAN을 생성함. ※ 이미 사용중인 태그는 설정이 불가능함.

Step 5. Server Networks에서 생성한 VLAN을 확인할 수 있음.

Step 6. 네트워크 분리가 필요한 Guest OS를 선택하고, [Network]를 선택 한 후 [Add Interface]를 선택함.
※ Guest OS를 종료 되어야 설정이 가능함.

Step 7. “Network”에서 생성한 VLAN을 선택하고, [Add]를 선택하여, Guest OS의 Network를 VLAN으로 설정함.

Step 8. Virtual Network Interfaces에서 Guest OS에 설정된 네트워크를 확인 할 수 있고, 현재 VLAN으로 설정된 것을 확인 할 수 있음.

5. 로그관리

5.1. su 로그설정(중요도 : 상)

개요

  • 기본적으로 일반 사용자에서 Super User로 사용되는 기록을 남기기 위해서 Su 사용로그를 남기도록 하는 보안 설정이 필요합니다. 시스템의 가용성 및 무결성 등을 침해하는 사건이 발생할 경우, 일반적으로 Super User 권한으로 사건이 진행되기 때문에 Su 의 로깅이 필요합니다.
  • Su 한 로그를 기록하도록 syslog 설정 파일을 수정합니다. Auth.notice 에 관련된 로그를 파일로 남기지 않고 있다면 아래와 같이 설정합니다.

확인방법

  • /var/log/sulog 확인이나 /var/log/secure 파일을 확인하여 su 기록이 남고 있으면 양호

■ 명령어

# cat /etc/login.defs | grep SULOG_FILE
# cat /etc/syslog.conf | grep authpriv.*

설정방법

  • /var/log/sulog 확인이나 /var/log/secure 파일을 확인하여 su 기록이 남도록 설정

■ 명령어

# vi /etc/login.defs 를 실행하여 아래와 같은 설정으로 변경
  SULOG_FILE   /var/log/sulog     
또는 
# vi /etc/syslog.conf 파일에서 아래와 같은 설정으로 변경
  authpriv.* /var/log/secure
  • 위 설정 적용 후 syslog 재기동

# /etc/rc.d/init.d/syslog restart

5.2. syslog 설정(중요도 : 상)

개요

  • 기본적으로 시스템 운영 중 발생하는 Info 및 alert등에 대한 기록을 남기기 위한 “syslog.co” 파일의 보안 설정이 되었는지 점검합니다.
  • Syslog데몬은 시스템의 로그를 기록하는 전용 데몬으로 원격 또는 로컬 시스템의 커널메시지 및 시스템로그를 감시하는 역할을 합니다.
  • 이 설정이 제대로 되어 있지 않을 경우 적절한 로그가 시스템 로그파일에 남지 않아 침입자의 흔적이나 시스템 오류사항에 대해 분석을 할 수 없습니다.

[표. XenServer/XenCenter 시스템 로그 파일]

XenServer 로그 위치
/val/log/ xensource.log
/var/log/ xenstored-access.log
Windwos7 로그 위치
%userprofile%\AppData\Roaming\Citrix\XenCenter\logs\ XenCenter Audit Trail.log
%userprofile%\AppData\Roaming\Citrix\XenCenter\logs\ XenCenter.log
Windows XP / 2003 로그 위치
%userprofile%\AppData\Citrix\XenCenter\logs\ XenCenter Audit Trail.log
%userprofile%\AppData\Citrix\XenCenter\logs\ XenCenter.log
Windows Vista 로그 위치
%userprofile%\AppData\Citrix\Roaming\XenCenter\logs\ XenCenter Audit Trail.log
%userprofile%\AppData\Citrix\Roaming\XenCenter\logs \ XenCenter.log

확인방법

1. XenServer 로그 파일 확인 방법

(1) “etc/syslog.conf” 파일을 점검하여, info, alert 등에 대한 로그파일 설정을 확인

■ 명령어

# cat /etc/syslog.conf | egrep "info|alert|notice|debug" | egrep "var|log"

(2) “/etc/xensource/log.conf” 파일을 점검하여, info, alert 등에 대한 로그파일 설정을 확인

■ 명령어

# cat /etc/xensource/log.conf | egrep "info|warn|error"

2. XenCenter 로그 파일 확인 방법
Step1. XenCenter에서 [XenServer]를 선택 한 후 [Logs] 메뉴에서 로그를 확인 가능함.

Step1. XenCenter의 메뉴에서 [Help]를 선택한 후 [View Application Log files] 메뉴에서 로그를 확인 가능함.

설정방법

1. XenServer 로그 파일 설정 방법

(1) “etc/syslog.conf” 파일을 점검하여, info, alert 등에 대한 로그파일을 설정
■ 명령어

# vi /etc/syslog.conf 
  *.notice     /var/log/messages
  *.emerg      *
  *.alert      /dev/console

(2) “/etc/xensource/log.conf” 파일을 점검하여, info, warn, error 등에 대한 로그파일을 설정
■ 명령어

# vi /etc/xensorce/log.conf 
# Set info,warn,error to log to syslog by default
  info;audit;syslog:local6
  warn;;syslog:xapi
  error;;syslog:xapi

# Also print everything (debug<->error) into xensource.log for easier debugging
  debug;;file:/var/log/xensource.log
  info;;file:/var/log/xensource.log
  warn;;file:/var/log/xensource.log
  error;;file:/var/log/xensource.log

(3) “syslog.conf”와 “log.conf” 파일을 수정한 후에는 이것이 적용되도록 다음의 명령을 사용하여 syslogd 를 restart 시켜줌.

■ 명령어

# ps  -ef  | grep  syslogd
# kill  -HUP  7524(PS ID)

5.3. syslog 전송 포트 차단(중요도 : 상)

개요

  • UDP 514 Port는 Remote로 Syslog를 전송하는 Port롤 사용되며, 사용 시 보안상 취약하며, 서비스 포트가 열려있으면 침해사고의 위험성이 있습니다.
  • Remote Log서버를 사용하지 않을 경우 Syslog 전송 Port 차단을 권고함.

확인방법

  • Remote Log 서버를 사용하지 않고 UDP 514 Port를 사용중이면 취약

■ 명령어

# netstat –an | grep "udp" 
또는
# netstat –an | grep "udp" | egrep "514"

설정방법

  • Remote Log 서버를 사용하지 않을 경우, UDP 514 Port를 차단함.

1. Remote Log 서버 필요시
Remote Log 사용 시 보안담당자 및 담당 매니저와의 협의 필요

2. Remote Log 서버 불필요시
Step 1. Syslog.conf 파일 수정
“/etc/sysconfig/syslog” 파일에 “SYSLOGD_OPTIONS”의 “-r” 옵션 삭제

■ 명령어

# vi /etc/sysconfig/syslog
  SYSLOGD_OPTIONS="-m 0"

5.4. 로깅 수준 설정(중요도 : 하)

개요

  • 기본적으로 시스템 운영 중 발생하는 Information 등에 대한 기록을 남기기 위한 로그 설정이 되었는지 점검합니다.
  • 시스템에 적절한 로그파일이 없을 경우, 침입자의 흔적이나 시스템 오류사항에 대해 분석 할 수 없습니다.

확인방법

1. XenServer 에서 확인 할 경우

  • “/etc/xensource/log.conf” 파일에 “info” 설정이 되어 있으면 “양호”

■ 명령어

# cat /etc/xensource/log.conf | grep "info"

2. XenCenter 에서 확인 할 경우

  • XenCenter에서 [XenServer]를 선택 한 후 [Logs] 메뉴에서 “Information” 로그가 설정되어 있으면 “양호”

설정방법

1. XenServer 에서 확인 할 경우

  • “/etc/xensource/log.conf” 파일에 “info” 로그를 남기도록 설정함.

■ 명령어

# vi /etc/xensource/log.conf 
  info;;file:/var/log/xensource.log

2. XenCenter 에서 확인 할 경우

  • XenCenter에서 [XenServer]를 선택 한 후 [Logs] 메뉴에서 “Information” 로그를 남기도록 설정함.

5.5. 로그 파일 권한 설정(중요도 : 하)

개요

1. 시스템의 기본 로깅 기록은 관리자 이외에 다른 일반 사용자에게 열람할 수 있는 권한을 부여할 필요가 없기 때문에 로깅 기록을 저장하는 파일의 소유자 및 읽기권한을 제한함으로써 보안을 강화하는 것이 필요합니다.

2. 아래의 로그 파일 권한은 시스템 사용자(root, adm, bin 등) 소유자의 타사용자 쓰기권한 제거를 설정합니다.

[표1. 보안강화 적용 로그파일 대상]

로그파일 XenServer 로그파일 XenServer
xensource /var/xensource.log btmp /var/log/btmp
xenstored /var/xenstored-access.log secure /var/log/secure
wtmp /var/log/wtmp messages /var/log/messages
lastlog /var/log/lastlog audit /var/log/audit.log

확인방법

  • [표1. 보안강화 적용 로그파일 대상]을 참고하여 로그파일이 root 소유이며, 타 사용자 쓰기권한이 없으면 양호

■ 명령어

# ls –alL [로그파일명] 

설정방법

  • [표1. 보안강화 적용 로그파일 대상]을 참고하여 로그파일의 권한을 root 소유의 타사용자 쓰기권한 제거 설정

■ 명령어

# chown  root  [로그파일명]
# chmod  o-w  [로그파일명]  
  • /var/adm/message 파일이 생기는 권한을 변경하기 위해서는 /usr/lib/newsyslog의 파일 수정

■ 명령어

#vi /usr/lib/newsyslog
  chmod  644    $LOG (수정전)
  chmod  640    $LOG (수정 후)

6. 보안 패치

6.1. 보안패치 적용(중요도 : 상)

개요

  • XenServer 및 XenCenter Patch는 Xen 시스템을 Citrix에서 출시하고 난 뒤 Xen과 관련된 응용프로그램, 서비스, 실행파일 등의 오류나 보안취약점 등을 수정하여 적용한 Update 파일입니다.
  • Update Patch 발표 후 취약성을 이용한 공격도구가 먼저 출현 할 수 있으므로, Update Patch는 발표 후 가능한 빨리 설치 할 것을 권장합니다.

확인방법

  • Citrix에서 발표한 보안패치를 확인하여, 현재 사용중인 XenServer 및 XenCenter의 Update를 확인함

<최신 보안 Patch 적용 기준>

  • 양호 : 최신 Update Patch(Version:Citrix XenCenter 5.6 fp1)가 설치되어 있는 경우
  • 취약 : 최신 Update Patch(Version:Citrix XenCenter 5.6 fp1)가 설치 되어 있지 않은 경우
  • XenCenter의 메뉴에서 [Help]를 선택 한 후 [Check for Updates] 를 선택하여 Updates 를 확인함.

적용방법

  • 현재 사용중인 XenServer 및 XenCenter에 최신 Update 패치를 설치한다.

Step 1. XenCenter의 업데이트 관리자를 이용하여 최신 Updates를 확인한다.

Step 2. 발표된 Update 중 현재 사용중인 보안 관련 Update 찾음

Step 3. 해당 Update 를 Download

Step 4. Update 설치

6.2. Guest OS 보안패치 적용(중요도 : 상)

개요

  • Guest OS(VM)에 설치되는 OS및 소프트웨어에 대하여 보안 패치 및 Update 패치가 적용되어 배포되도록 권고합니다.
  • Update 패치 발표 후 취약성을 이용한 공격도구가 먼저 출현 할 수 있으므로, Update 패치는 발표 후 가능한 빨리 OS 이미지(*.iso)파일을 생성하여, XenServer에 적용할 것을 권장합니다.
  • 가능한 경우 OS 및 패치 관리 툴(VMware Update Manager, Hyper-V SCVMM등)을 통하여 OS 및 소프트웨어 구성을 관리하여 Guest OS(VM) 내에 포함된 소프트웨어 구성 관리를 체크하여 자동으로 업데이트 될 수 있도록 구성을 권장합니다.

[표 1. XenServer 에서 지원되는 OS 및 소프트웨어]

Update 지원 운영체제 Update 지원 Application
Microsoft Windows 계열 • Internet Information Server (IIS)
• Windows XP Professional, 32 bit, SP2 Required • Windows Media Player, version 7.0 or later
• Windows XP Professional 64 bit • Microsoft SQL Server versions 7.0/2000/2005
• Windows 2003 Datacenter • Microsoft SQL Server Desktop Edition (MSDE) version 1.0 or later
• Windows 2000 Server, SP4 with Update Rollup 1 • Exchange 2000 Server and Exchange Server 5.0
• Windows 2000 Professional, SP4 Required • Internet Explorer version 4.0 or later
• Windows Server 2003, SP1 Required • Outlook Express version 4.01 or later
• Windows Server 2003 R2 • Microsoft Site Server 3.0
• Windows Server 2003 x64 • ISA Server 2000
• Windows Server 2003 Standard/Web, 32-bit and 64-bit • Microsoft .NET Framework, version 1.0 or later
• Windows Server 2008 • Microsoft Data Access Components (MDAC) 2.5 or later
• Windows Vista Business • BizTalk Server 2000 or later
• Windows Vista Enterprise • SNA Server 4.0
• Windows Vista Business (x64) • Host Integration Server 2000
• Windows Vista Enterprise (x64) • WinZip 8.1 or later
Red Hat Linux 계열 • Apache 1.3 and 2.0
• Red Hat Enterprise Linux AS 3.0 (Update 5 Required) • Firefox 1.0 or later
• Red Hat Enterprise Linux ES 3.0 (Update 5 Required) • RealPlayer 10 or later
• Red Hat Enterprise Linux AS 4.0 (Update 2 Required) • Adobe Acrobat Reader
• Red Hat Enterprise Linux ES 4.0 (Update 2 Required)

확인방법

  • OS 및 소프트웨어 Vendor에서 발표한 보안패치를 확인하여, 현재 사용중인 OS 및 소프트웨어의 보안관련 Update를 확인함

<최신 보안 Patch 적용 기준>
양호 – 최신 Update Patch가 설치되어 있는 경우
취약 – 최신 Update Patch가 설치 되어 있지 않은 경우

설정방법

1. Guest OS에 OS 및 소프트웨어 배포 전

  • “/opt/xensource/packages/iso/” 경로에 최신 보안패치가 적용된 OS Image를 업로드 (확장자 *.iso)하여, Guest OS 생성 시 최신 보안패치가 적용된 OS 및 소프트웨어 설치를 권고함.

2. Guest OS에 OS 및 소프트웨어 배포 후

  • 현재 사용중인 Guest OS에 최신 OS 및 소프트웨어의 보안관련 Update를 적용함.

Step 1. 다음의 사이트에서 해당 버전을 찾음

<Windows 계열 일 경우>
http://www.microsoft.com/korea/technet/security/current.asp
http://windowsupdate.microsoft.com/?IE

<Red Hat 계열 일 경우>
http://www.redhat.com/security/updates/
http://www.redhat.com/security/updates/eol/ (Red Hat Linux 9 이하 버전)

<Application 일 경우>
각 Vendor의 사이트에서 최신 패치 정보를 확인함.

Step 2. 발표된 Update 중 현재 사용중인 보안 관련 Update 찾음

Step 3. 해당 Update 를 Download

Step 4. Update 설치

OS 및 패치 관리 툴(VMware Update Manager, Hyper-V SCVMM등)을 사용할 경우 버전 체크를 통해 자동으로 Update가 가능함.