[리눅스/서비스 관리] r 계열 서비스 비활성화 (U-21)

r 계열 서비스 비활성화


취약점 개요

■ 위험도
- 상

■ 점검 목적
- 'r' command 사용을 통한 원격 접속은 NET Backup이나 다른 용도로 사용되기도 하나, 인증 없이 관리자 원격접속이 가능하여 이에 대한 보안위협을 방지하고자 함

■ 보안 위협
- 서비스 포트가 열려있을 경우, 비인가자에 의한 중요 정보 유출 및 시스템 장애 발생 등 침해사고의 원인이 될 수 있음

점검 및 조치 방법

■ 판단 기준
- 양호 : 불필요한 r 계열 서비스가 비활성화 되어 있는 경우
- 취약 : 불필요한 r 계열 서비스가 활성화 되어 있는 경우

■ 조치 방법

■ SOLARIS 5.9 이하, HP-UX
Step 1) r 계열 서비스 활성화 여부 확인
# vi /etc/inetd.conf
Step 2) r로 시작하는 필드 주석처리 후 재가동


AIX
Step 1) r 계열 서비스 활성화 여부 확인
# cat /etc/inetd.conf |grep rlogin (# 처리 되어 있으면 비활성화)
# cat /etc/inetd.conf |grep rsh (# 처리 되어 있으면 비활성화)
# cat /etc/inetd.conf |grep exec (# 처리 되어 있으면 비활성화)

Step 2) /etc/hosts.equiv 파일은 TRUSTED 시스템을 등록

Step 3) .rhosts 파일을 사용자 별로 'r' command를 통해 접근이 가능하도록 설정할 수 있음 ($HOME/.rhosts)

SOLARIS 5.10 이상 버전
Step 1) 'r' command 관련 데몬 확인

Step 2) inetadm -d "중지하고자 하는 데몬" 명령으로 데몬 중지
# inetadm -d svc:/network/login:rlogin
# inetadm -d svc:/network/rexec:default
# inetadm -d svc:/network/shell:kshell

LINUX (xinetd일 경우)
Step 1) vi 편집기를 이용하여 "/etc/xinetd.d/" 디렉토리 내 rlogin, rsh, rexec 파일 열기

Step 2) 아래와 같이 설정 (Disable = yes 설정)

Step 3) xinetd 서비스 재시작
# service xinetd restart


■ 스크립트

echo "U-38 START"
echo " "																							>>	$COMPUTERNAME 2>&1
echo "[ U-38 r 계열 서비스 비활성화 ]"																	>>	$COMPUTERNAME 2>&1
echo "[ xinetd 설정 점검 ]"																			>>	$COMPUTERNAME 2>&1
if [ `ls -alL /etc/xinetd.d/* | egrep $R_COMMAND |egrep -v "grep|klogin|kshell|kexec" | wc -l` -gt 0 ]
   then
 ls -alL /etc/xinetd.d/* | egrep $R_COMMAND  														>>	$COMPUTERNAME 2>&1
else
 echo "r 서비스가 존재하지 않음" 																			>>	$COMPUTERNAME 2>&1
fi

echo " " 																							>>	$COMPUTERNAME 2>&1
echo "/etc/xinetd.d 내용 " 																			>>	$COMPUTERNAME 2>&1
echo "------------------ " 																			>>	$COMPUTERNAME 2>&1
if [ `ls -alL /etc/xinetd.d | egrep $R_COMMAND | egrep -v "grep|klogin|kshell|kexec" | wc -l` -gt 0 ]
  then
     for VVV in `ls -alL /etc/xinetd.d | egrep $R_COMMAND | egrep -v "grep|klogin|kshell|kexec" | awk '{print $8}'`
        do
         echo " $VVV 파일" 																			>>	$COMPUTERNAME 2>&1
         cat /etc/xinetd.d/$VVV | grep -i "disable" 												>>	$COMPUTERNAME 2>&1
         echo "   " 																				>>	$COMPUTERNAME 2>&1
        done
  else
      echo "xinetd.d에 파일이 없습니다" 																	>>	$COMPUTERNAME 2>&1
fi

echo " " 																							>>	$COMPUTERNAME 2>&1

SERVICE_INETD="shell|login|exec"
echo "[ inetd 설정 점검 ]"																				>>	$COMPUTERNAME 2>&1
if [ -f $INETD_DIR ]									
then									
	if [ `ls -alL /etc/inetd.d/* | egrep $R_COMMAND2 |egrep -v "grep|klogin|kshell|kexec" | wc -l` -gt 0 ]
	then
	ls -alL /etc/inetd.d/* | egrep $R_COMMAND2  													>>	$COMPUTERNAME 2>&1
	else
	echo "r 서비스가 존재하지 않음" 																		>>	$COMPUTERNAME 2>&1
	fi
	
	if [ `ls -alL /etc/xinetd.d/* | egrep $R_COMMAND |egrep -v "grep|klogin|kshell|kexec" | wc -l` -gt 0 ]
	then
	ls -alL /etc/xinetd.d/* | egrep $R_COMMAND  													>>	$COMPUTERNAME 2>&1
	else
	echo "r 서비스가 존재하지 않음" 																		>>	$COMPUTERNAME 2>&1
	fi
else										
	echo "/etc/inetd.d 디렉터리가 없습니다."                                                             >>	$COMPUTERNAME 2>&1
fi										

echo " " 																							>>	$COMPUTERNAME 2>&1
echo "/etc/inetd.d 내용 " 																			>>	$COMPUTERNAME 2>&1
echo "------------------ " 																			>>	$COMPUTERNAME 2>&1
if [ -f $INETD_DIR ]									
then									
	if [ `ls -alL /etc/inetd.d | egrep $R_COMMAND2 | egrep -v "grep|klogin|kshell|kexec" | wc -l` -gt 0 ]
	then
		for VVV in `ls -alL /etc/inetd.d | egrep $R_COMMAND2 | egrep -v "grep|klogin|kshell|kexec" | awk '{print $8}'`
			do
			echo " $VVV 파일"																		>>	$COMPUTERNAME 2>&1
			cat /etc/inetd.d/$VVV | grep -i "disable" 												>>	$COMPUTERNAME 2>&1
			echo "   " 																				>>	$COMPUTERNAME 2>&1
			done
	else
	echo "/etc/inetd.d 디렉터리가 없습니다."                                                             >>	$COMPUTERNAME 2>&1
	fi
else										
	echo "/etc/inetd.d 디렉터리가 없습니다."                                                             >>	$COMPUTERNAME 2>&1
fi										

echo " " 																							>>	$COMPUTERNAME 2>&1
echo "U-38 END"																						>>	$COMPUTERNAME 2>&1
echo "======================================================================================"		>>	$COMPUTERNAME 2>&1
echo " "																							>>	$COMPUTERNAME 2>&1
echo " "																							>>	$COMPUTERNAME 2>&1

 

 

■ 용어 설명 / 팁
'r' command : 인증 없이 관리자의 원격접속을 가능하게 하는 명령어들로 rsh(remsh), rlogin, rexec 등이 있음

댓글

Designed by JB FACTORY