본문 바로가기
Hacking/infra 진단

[Linux] U-22 (상) crond 파일 소유자 및 권한 설정

by 알거음슴 2021. 9. 1.
취약점 개요
점검 내용 Cron 관련 파일의 권한 적절성 점검
점검 목적 관리자외 cron 서비스를 사용할 수 없도록 설정하고 있는지 점검하는 것을 목적으로 함
보안 위협 root 외 일반사용자에게도 crontab 명령어를 사용할 수 있도록 할 경우, 고의 또는 실수로 불법적인 예약 파일 실행으로 시스템 피해를 일으킬 수 있음
참고 Cron 시스템: 특정 작업을 정해진 시간에 주기적이고 반복적으로 실행하기 위한 데몬 및 설정
cron.allow: 사용자 ID를 등록하면 등록된 사용자는 crontab 명령어 사용이 가능함
cron.deny: 사용자 ID를 등록하면 등록된 사용자는 crontab 명령어 사용이 불가능함
점검대상 및 판단 기준
대상 LINUX
판단기준 양호 : crontab 명령어 일반사용자 금지 및 cron 관련 파일 640 이하인 경우
취약 : crontab 명령어 일반사용자 사용가능하거나, crond 관련 파일 640 이상인 경우
조치 방법 crontab 명령어 750 이하, cron 관련 파일 소유자 및 권한 변경(소유자 root, 권한640 이하)

 

점검 및 조치
점검 Cron 관련 파일 권한 확인
#ls -al /usr/bin/crontab
rw-r----- root <cron 접근제어 파일>
cron" 접근제어 설정이 적절하지 않은 경우 아래의 보안설정방법에 따라 설정을 변경함
 
조치 Step 1) crontab 명령어 일반사용자 권한 삭제 (crontab 명령어 위치는 OS별 다를수 있음)
※ crontab 명령어는 SUID가 설정되어 있으므로 SUID 설정 제거
# ls -l /usr/bin/crontab
# chmod 750 /usr/bin/crontab
Step 2) cron 관련 설정파일 소유자 및 권한 설정
# chown root </cron 관련>
# chmod 640 관련 파일>

 

점검 스크립트

#!/bin/bash

. function.sh

BAR
CODE '[U-10] : crond 파일 소유자 및 권한 설정'
cat << EOF >> $RESULT
[양호]: crontab 명령어 일반사용자 금지 및 cron 관련 파일 640 이하인 경우
[취약]: crontab 명령어 일반사용자 사용가능하거나, crond 관련 파일 640 이상인 경우
EOF
BAR

FILENAME=/usr/bin/crontab

find $FILENAME -type f -perm -640 >/dev/null 2>&1
if [ $? = 1 ] ; then
	OK "crontab 명령어 일반사용자 금지 및 cron 관련 파일 640 이하인 경우"
else
	find /etc/cron.* -type d -perm -640 >/dev/null 2>&1 
	if [ $? = 1 ] ; then
		OK "crontab 명령어 일반사용자 금지 및 cron 관련 파일 640 이하인 경우"
	else
		VULN "crontab 명령어 일반사용자 사용가능하거나, crond 관련 파일 640 이상인 경우"
		INFO "이하 파일의 권한 및 사용자를 확인하세요"
		ls -ld /etc/cron.* >> $RESULT
	fi
fi

cat $RESULT