[리눅스/서비스 관리] r 계열 서비스 비활성화 (U-21)
- 취약점 점검/리눅스
- 2021. 2. 27.
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 등이 있음