[목차]

 

 

 

1. 주요정보통신기반시설 취약점 내용

 

2. 루트 계정 원격 접속 제한 (1.1)

점검 스크립트 U-10.sh 제작 실습

 

 

 


 

 

 

[주요정보통신기반시설 취약점 내용]

 

 

 

1. "주요정보통신기반시설 기술적 취약점 분석/평가" 개요

 

주요정보통신기반시설 관리기관은 "정보통신기반 보호법" 제9조에 따라, 주요정보통신 기반시설로 신규 지정된 후 6개월 이내, 그리고 매년 취약점 분석/평가를 실시하여야 한다. 취약점 분석/평가는 453개의 관리적/물리적/기술적 점검항목에 대한 주요정보통신기반시설의 취약여부를 점검하여, 악성코드 유포, 해킹 등 사이버 위협 대응을 위한 종합적 개선 과정이다.

 

한편, 취약점 분석/평가를 수행함에 있어 기술적 점검은 시스템에 대한 실제 보안 값 설정에 관한 것으로, 각 시스템에 대한 명령어 코드, 메뉴 구성과 같은 기술적인 사항을 충분히 숙지하여야 가능하기에 주요정보통신기반시설 담당자들의 어려움이 따르게 된다.

 

이러한 기술적 점검에 대한 어려움을 해소하고, 주요정보통신기반시설 담당자들의 이해를 돕기 위해 과학기술정보통신부와 한국인터넷진흥원에서는 전체 313개 기술적 점검항목에 대한 가이드를 발간하게 되었다.

 

각각의 점검항목이 의미하는 위험내역 설명과 함께, 점검방법 및 조치방법을 실제 시스템 입력화면 등을 활용하여 상세 설명하였으며, 특정 벤더사의 제품으로 한정하지 않고 대표적인 벤더사 제품별로 구분하여 설명을 제시하였다.

 

특히, 이번 개정판에서는 윈도우 10/2012 서버/TIBERO/ALTIBASE 등 영역별 신규 시스템을 추가하여 담당자들의 활용성을 더욱 높였다.

 

 

 

 

2. "주요정보통신기반시설 기술적 취약점 분석/평가 방법" 목적 및 구성

 

 

 

 

 

 

3. "주요정보통신기반시설 기술적 취약점 분석/평가 방법" 문서

 

(문서) 주요정보통신기반시설 기술적 취약점 분석/평가 방법 상세가이드.pdf

 

■ 점검 목차

-----------------------------------

목차

-----------------------------------

■ Unix 서버 보안가이드라인

■ 윈도우즈 서버 보안가이드라인

■ 보안장비 보안가이드라인

■ 네트워크장비 보안가이드라인

■ 제어시스템 보안가이드라인

■ PC 보안가이드라인

■ DBMS 보안가이드라인

■ Web 보안가이드라인

-----------------------------------

 

 

■ 유닉스/리눅스 점검 대상 테스트 세부 버전

AIX 7.1 (별도의 물리적 장비로 되어있음)

HP-UX 11i v3 (별도의 물리적 장비로 되어있음)

SOLARIS 11.2

CentOS 6.6

 

 

 

 

4. "주요정보통신기반시설 기술적 취약점 분석/평가" 점검 항목

 

주요정보통신기반시설 기술적 취약점 분석/평가 상세 가이드(2017)

UNIX 서버 취약점 분석/평가 항목

 

 

 

 

 

 

 

 

 

 

5. 주요정보통신기반시설 기술적 취약점 분석/평가 항목 분석표

 

■ UNIX 서버 취약점 분석/평가 항목 : 총 72개 항목

 

 

 

 

 

 


 

 

 

 

[루트 계정 원격 접속 점검 스크립트 U-10.sh 제작 실습]

 

 

 

1. 계정관리

2. 파일 및 디렉토리 관리

3. 서비스 관리

4. 패치 관리

5. 로그 관리

 

 

목적(Objectives)

취약점을 진단/평가 하는 스크립트를 제작 해 보자.

고객에게 취약점을 어떻게 이해 시킬것인지 생각해 보자.

자신의 실습 문서를 만들어 보자.

 

[참고] 리눅스 서버 취약점 진단 툴에 대해서

리눅스 서버에 취약점을 진단하는 툴은 다음과 같이 Lynis, linux-exploit-suggester 처럼

만들어진 툴이 있고, 직접 제작된 툴이 있다.

 

 

(1) 기존의 툴

 

■ Lynis

Linux(CentOS, Fedora, Debian, Ubuntu, Mac OS, ...)/UNIX 시스템에 대한 취약점을 점검하는 툴

 

■ linux-exploit-suggester

CVE 취약성(exploit-db.com 사이트 사용)에 대한 부분을 점검하는 툴

 

 

(2) 직접 제작한 툴

아래 실습

 

 

 

 

 

1. 계정관리

1-1 root 계정 원격 접속 제한

 

취약점 분석/평가 방법 상세 가이드

 

1.1 root 계정 원격 접속 제한

 

■ 점검 분류 항목: 계정 관리

■ 세부 점검 항목: root 계정 원격 접속 제한

■ 대상: 리눅스

■ 위험도: 상

■ 관련 코드: U-01

 

(1) 취약점 개요

root는 시스템을 관리하는 매우 중요한 계정임 계정으로 직접 로그인하도록 . root 허용하면 불법적인 침입자의 목표가 될 수 있으므로 계정 접속에 대한 관리가 root 필요함 계정의 원격 접속 허용은 공격자에게 더 좋은 기회를 제공할 수 있으므로 의 원격 접속은 금지하여야 함.

root : 계정 여러 사용자가 사용하는 컴퓨터에서 전체적으로 관리할 수 있는 총괄 권한을 가진 유일한 특별 계정 유닉스 시스템의 루트는 시스템 관리자인 운용 관리자로서 . (root) (Super User) 윈도우의 관리자 에 해당하며 사용자 계정을 생성하거나 소프트웨어를 설치하고 (Administrator) , ,환경 및 설정을 변경하거나 시스템의 동작을 감시 및 제어할 수 있음.

 

(2) 판단기준

양호: 원격 서비스를 사용하지 않거나 사용 시 직접 접속을 차단한 경우

취약: root 직접 접속을 허용하고 원격 서비스를 사용하는 경우

 

(3) 조치방법

원격 접속 시 계정으로 바로 접속 할 수 없도록 설정파일 수정

 

(4) 보안 설정 방법

■ 점검 방법

# cat /etc/securetty

"pts/#" 들어 있는지 확인 후 삭제(or 주석처리)

 

■ 설정 방법

① "/etc/securetty" 파일의 pts/0 ~ pts/x , 파일에서 설정 제거 또는 주석 처리

② "/etc/pam.d/login" 파일 수정

(수정전) #auth required /lib/security/pam_securetty.so 수정 전

(수정후) auth required /lib/security/pam_securetty.so 수정 후

 

(5) 조치시 영향

일반적으로 영향 없음.

 

* 프로그램 동작시

양호 / 취약 여부 판단해 출력.

판단하지 못하는 경우 = 진단 항목 중 불필요 계정을 삭제해야 한다? (판단이 어려움)

이런 경우 현재 설정이 어떻게 되어 있는지 출력하고 고객과 상의 해야 한다는 정보를 출력.

 

 

 

 

고객에게 취약점을 어떻게 이해시킬것인가?

 

(고객에게 설명)

root 사용자의 이름은 정해져 있으며, 암호만 맞추면 되기 때문에 원격에서 무작위 대입을 통해

root 사용자의 암호가 크랙당하는 위험성이 존재한다.

 

따라서 일반 사용자로 로그인하여 root 사용자로 전환하여 사용하도록 권장하여야 한다.

(su와 sudo 의 차이점 이해하기)

=> Brute Force Attack, Dictionary Attack

 

 

 

 

관련문서 제작

(실무 환경에 대한 예)

중소기업 규모 - 단독서버(일반사용자로 로그인해서 root 사용자로 switching 해서 사용)

대기업 규모(IDC) - Gateway 서버를 통해 서버에 접속

※ IDC(Integration Data Center) : 통합 전산 센터(Network + Server(Application) + Storage)

 

 

[실습] /etc/securetty 파일에 대한 실습

/etc/securetty 파일

/var/log/secure 로그 파일

/etc/sudoers 파일

 

 

 

 

컨설팅

 

(정리) 보안 정책

root 사용자로 원격에서 로그인하면 안된다.

-> /etc/securetty 파일은 기본값을 사용한다.(pts/#이 들어있지 않기 때문에 원격 접속 x)

일반사용자로 로그인하여 su 명령어를 통해 스위칭하여 사용한다.

-> 로그에 남겨지기 때문에, root 사용자의 telnet 로그인이 패킷 스니핑에 약하기 때문이다.

su 명령어를 통해 스위칭할수 있는 사용자 그룹(wheel)을 설정한다.

-> /etc/pam.d/su(예: auth required pam_wheel.so use_uid)

-> usermod -G wheel user01

sudo 명령어를 사용할 수 있는 사용자/그룹 지정, 명령어의 집합의 지정이 필요하다.

-> /etc/sudoers(예: backupuser ALL = /sbin/backup.sh, /sbin/dump, /sbin/restore)

 

 

 

취약점 진단 스크립트 제작

 

(스크립트 작성시 참고 사항)

원격 서비스(EX: telnet)가 동작하지 않으면 양호

원격 서비스(EX: telnet)가 동작하는 경우라면,

/etc/securetty 파일이 존재하면서 pts/# 설정이 없으면 양호

 

 

(스크립트안에 들어가는 내용)

■ 스크립트 디렉토리

/root/scripts/{function.sh,U-01.sh}

# mkdir -p /root/scripts

# PATH=$PATH:/root/scripts(~/.bash_profile)

# alias s='chmod 700 /root/scripts/*.sh'(~/.bashrc)

# . ~/.bash_profile

# . ~/.bashrc

 

 

(스크립트에서 참조하는 function.sh)

■ function.sh

LOG=check.log

RESULT=result.log

> $LOG

> $RESULT

 

BAR() {

echo "========================================================================" >> $RESULT

}

 

NOTICE() {

echo '[ OK ] : 정상'

echo '[WARN] : 비정상'

echo '[INFO] : Information 파일을 보고, 고객과 상의'

}

 

OK() {

echo -e '\033[32m'"[ 양호 ] : $*"'\033[0m'

} >> $RESULT

 

WARN() {

echo -e '\033[31m'"[ 취약 ] : $*"'\033[0m'

} >> $RESULT

 

INFO() {

echo -e '\033[35m'"[ 정보 ] : $*"'\033[0m'

} >> $RESULT

 

CODE(){

echo -e '\033[36m'$*'\033[0m'

} >> $RESULT

 

터미널 컬러에 대한 참고 사이트

- http://norux.me/29

- http://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux

 

 

 

 

(취약점 진단 스크립트 제작)

 

■ U-01.sh (CentOS 7.x)

#!/bin/bash

. function.sh

BAR

CODE [U-01] root 계정 원격 접속 제한
cat << EOF >> $RESULT
[양호]: 원격 서비스를 사용하지 않거나 사용시 직접 접속을 차단한 경우
[취약]: root 직접 접속을 허용하고 원격 서비스를 사용하는 경우
EOF
BAR

TELNET_SERVICE=telnet.socket
SECURETTY=/etc/securetty
STATUS1=$(systemctl is-active $TELNET_SERVICE)

if [ $STATUS1 = 'active' ] ; then
	WARN 'Service is activated. You must Turn off the Service!'
	if [ -f $SECURETTY ] ; then
		INFO '/etc/securetty 파일이 존재합니다!'
		grep -q 'pts/' $SECURETYY # -q no output. only 0 or 1
		if [ $? -eq 0 ] ; then
			WARN '/etc/securetty 파일안에 pts/# 존재합니다'
		else
			OK '/etc/securetty 파일안에 pts/# 존재하지 않습니다'
		fi
	else
		WARN '/etc/securetty 파일이 존재하지 않습니다'
	fi
else
	OK Remote Service is deactivated.
fi


cat $RESULT

 

# systemctl list-unit-files | grep telnet

# systemctl is-active telnet.socket

# systemctl is-enabled telnet.socket

 

 

 

 

 

 

728x90

+ Recent posts