본문 바로가기
Hacking/infra 진단

[Linux] U-23 (상) DoS 공격에 취약한 서비스 비활성화

by 알거음슴 2021. 9. 1.
취약점 개요
점검 내용 사용하지 않는 Dos 공격에 취약한 서비스의 실행 여부 점검
점검 목적 시스템 보안성을 높이기 위해 취약점이 많이 발표된 echo, discard, daytime, chargen, ntp, snmp 등 서비스를 중지함
보안 위협 해당 서비스가 활성화되어 있는 경우 시스템 정보 유출 및 DoS(서비스 거부 공격)의 대상이 될 수 있음
참고 DoS(Denial of Service attack): 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격. 특정 서버에게 수많은 접속시도를 만들어 다른 이용자가 정상적으로 서비스 이용을 하지 못하게 하거나, 서버의 TCP 연결을 바닥내는 등의 공격이 이 범위에 포함됨
점검대상 및 판단 기준
대상 LINUX
판단기준 양호 : 사용하지 않는 DoS 공격에 취약한 서비스가 비활성화 된 경우
취약 : 사용하지 않는 DoS 공격에 취약한 서비스가 활성화 된 경우
조치 방법 echo, discard, daytime, charge, ntp, dns, snmp 등 서비스 비활성화 설정

 

점검 및 조치
점검 “/etc/shadow” 파일의 소유자 및 권한 확인
#ls -l /etc/shadow
r-------- root <shadow 파일>
위에 제시된 파일 및 디렉터리의 소유자가 root가 아니거나 파일의 권한이 400이 아닌
경우 아래의 보안설정방법에 따라 설정을 변경함
조치 Step 1) vi 편집기를 이용하여 “/etc/xinetd.d/” 디렉터리 내 echo, discard, daytime, hargen 파일 열기
Step 2) 아래와 같이 설정 (Disable = yes 설정)

/etc/xinetd.d/echo 파일(echo-dgram, echo-stream)
/etc/xinetd.d/discard 파일(discard-dgram, discard-stream)
/etc/xinetd.d/daytime 파일(daytime-dgram, daytime-stream)
/etc/xinetd.d/chargen 파일(chargen-dgram, chargen-stream)
service echo
{
     disable = yes
     id = echo-stream
     type = internal
     wait = no
     socket_type = stream
 
}

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

 

점검 스크립트

#!/bin/bash

. function.sh

BAR
CODE [U-23] DoS 공격에 취약한 서비스 비활성화
cat << EOF >> $RESULT
[양호]:  사용하지 않는 DoS 공격에 취약한 서비스가 비활성화 된 경우
[취약]:  사용하지 않는 DoS 공격에 취약한 서비스가 활성화 된 경우
EOF
BAR

ls /etc/xinetd.d/echo* >/dev/null 2>&1
if [ $? != 0 ] ; then
	OK /etc/xinetd.d/echo 파일이 존재하지 않습니다.
else
	for i in `ls /etc/xinetd.d/echo*`
	do
		VULN $i 파일이 존재합니다.
		if [ `cat $i | grep disable | awk '{print $3}'` = yes ] ; then
			OK $i 파일에 대한 서비스가 비활성화 되어 있습니다.
		else
			WARN $i 파일에 대한 서비스가 활성화 되어 있습니다.
		fi 
	done
fi
LINE

ls /etc/xinetd.d/discard* >/dev/null 2>&1
if [ $? != 0 ] ; then
	OK /etc/xinetd.d/discard 파일이 존재하지 않습니다.
else
	for i in `ls /etc/xinetd.d/discard*`
	do
		VULN $i 파일이 존재합니다.
		if [ `cat $i | grep disable | awk '{print $3}'` = yes ] ; then
			OK $i 파일에 대한 서비스가 비활성화 되어 있습니다.
		else
			WARN $i 파일에 대한 서비스가 활성화 되어 있습니다.
		fi 
	done
fi
LINE

ls /etc/xinetd.d/daytime* >/dev/null 2>&1
if [ $? != 0 ] ; then
	OK /etc/xinetd.d/daytime 파일이 존재하지 않습니다.
else
	for i in `ls /etc/xinetd.d/daytime*`
	do
		VULN $i 파일이 존재합니다.
		if [ `cat $i | grep disable | awk '{print $3}'` = yes ] ; then
			OK $i 파일에 대한 서비스가 비활성화 되어 있습니다.
		else
			WARN $i 파일에 대한 서비스가 활성화 되어 있습니다.
		fi 
	done
fi
LINE

ls /etc/xinetd.d/chargen* >/dev/null 2>&1
if [ $? != 0 ] ; then
	OK /etc/xinetd.d/chargen 파일이 존재하지 않습니다.
else
	for i in `ls /etc/xinetd.d/chargen*`
	do
		VULN $i 파일이 존재합니다.
		if [ `cat $i | grep disable | awk '{print $3}'` = yes ] ; then
			OK $i 파일에 대한 서비스가 비활성화 되어 있습니다.
		else
			WARN $i 파일에 대한 서비스가 활성화 되어 있습니다.
		fi 
	done
fi

cat $RESULT