본문 바로가기
Hacking/infra 진단

[Linux] U-21 (상) r 계열 서비스 비활성화

by 알거음슴 2021. 9. 1.
취약점 개요
점검 내용 r-command 서비스 비활성화 여부 점검
점검 목적 r-command 사용을 통한 원격 접속은 NET Backup 또는 클러스터링 등 용도로 사용되기도 하나, 인증 없이 관리자 원격접속이 가능하여 이에 대한 보안위협을 방지하고자 함
보안 위협 rsh, rlogin, rexec 등의 r command를 이용하여 원격에서 인증절차 없이 터미널 접속, 쉘 명령어를 실행이 가능함
참고 r-command: 인증 없이 관리자의 원격접속을 가능하게 하는 명령어들로 rsh(remsh), rlogin, rexec, rsync 등이 있음
점검대상 및 판단 기준
대상 LINUX
판단기준 양호 : 불필요한 r 계열 서비스가 비활성화 되어 있는 경우
취약 : 불필요한 r 계열 서비스가 활성화 되어 있는 경우
조치 방법 NET Backup등 특별한 용도로 사용하지 않는다면 아래의 서비스 중지
Shell (514)
Login (513)
Exec (512)

 

점검 및 조치
점검 rsh, rlogin, rexec (shell, login, exec) 서비스 구동 확인
#ls -alL /etc/xinetd.d/* | egrep "rsh|rlogin|rexec" | egrep -v "grep|klogin|kshell|kexec"
위에 제시된 파일 내 "r-command계열서비스가 활성화 된 경우 아래의 보안설정 방법에 따라 서비스 중지
조치 Step 1) vi 편집기를 이용하여 “/etc/xinetd.d/” 디렉터리 내 rlogin, rsh, rexec 파일 열기
Step 2) 아래와 같이 설정 (Disable = yse 설정)

Ÿ   /etc/xinetd.d/rlogin 파일
Ÿ   /etc/xinetd.d/rsh 파일
Ÿ   /etc/xinetd.d/rexec 파일
 
Service                 rlogin
{
             socket_type                         = stream
             wait                                   = no
             user                                   = nobody
             log_on_success                    += USERID
             log_on_failure                      += USERID
             server                                = /usr/sdin/in.fingerd
             disable                               = yes
}

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

 

점검 스크립트

#!/bin/bash

. function.sh

BAR
CODE [U-21] r 계열 서비스 비활성화
cat << EOF >> $RESULT
[양호]: 불필요한 r 계열 서비스가 비활성화 되어 있는 경우
[취약]: 불필요한 r 계열 서비스가 활성화 되어 있는 경우
EOF
BAR

CHECK1=$(ls -alL /etc/xinetd.d/* | egrep 'rsh|rlogin|rexec' | egrep -v 'grep|klogin|kshell|kexec' | wc -l)
CHECK2=$(ls -alL /etc/xinetd.d/* | egrep 'rsh|rlogin|rexec' | egrep -v 'grep|klogin|kshell|kexec' |awk '{print $NF}' >> /root/linuxs/U-21.txt)

FILE1=$(cat U-21.txt | sed -n '1p')
FILE2=$(cat U-21.txt | sed -n '2p')
FILE3=$(cat U-21.txt | sed -n '3p')

FILECHECK1=$(cat $FILE1 | grep disable | awk '{print $3}')
FILECHECK2=$(cat $FILE2 | grep disable | awk '{print $3}')
FILECHECK3=$(cat $FILE3 | grep disable | awk '{print $3}')

if [ $CHECK1 != 0 ] ; then
	if [ $FILECHECK1 == 'yes' ] && [ $FILECHECK2 == 'yes' ] && [ $FILECHECK3 == 'yes' ] ; then
		OK "불필요한 r 계열 서비스가 비활성화 되어 있는 경우"
	else
		VULN "불필요한 r 계열 서비스가 활성화 되어 있는 경우"
	fi
else
	OK "불필요한 r 계열 서비스가 비활성화 되어 있는 경우"
fi

cat $RESULT