취약점 개요 | |
점검 내용 | 시스템 정책에 root 계정의 원격터미널 접속차단 설정이 적용되어 있는지 점검 |
점검 목적 | 소유 관리자계정 탈취로 인한 시스템 장악을 방지하기 위해 외부 비인가자의 root 계정 접근 시도를 원천적으로 차단하기 위함 |
보안 위협 | root 계정은 운영체제의 모든기능을 설정 및 변경이 가능하여(프로세스, 커널변경 등) root 계정을 탈취하여 외부에서 원격을 이용한 시스템 장악 및 각종 공격으로(무작위 대입 공격) 인한 root 계정 사용 불가 위협 |
참고 | ※ root 계정: 여러 사용자가 사용하는 컴퓨터에서 모든 기능을 관리할 수 있는 총괄권한을 가진 유일한 특별 계정. 유닉스 시스템의 루트(root)는 시스템 관리자인 운용 관리자(Super User)로서 윈도우의 Administrator 보다 높은 System 계정에 해당하며, 사용자 계정을 생성하거나 소프트웨어를 설치하고, 환경 및 설정을 변경하거나 시스템의 동작을 감시 및 제어할 수 있음 ※ 무작위 대입 공격(Brute Force Attack): 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 공격 방법 ※ 사전 대입 공격(Dictionary Attack): 사전에 있는 단어를 입력하여 암호를 알아내거나 암호를 해독하는 데 사용되는 컴퓨터 공격 방법 |
점검대상 및 판단 기준 | |
대상 | LINUX |
판단기준 | 양호 : 원격 터미널 서비스를 사용하지 않거나, 사용 시 root 직접 접속을 차단한 경우 |
취약 : 원격 터미널 서비스 사용 시 root 직접 접속을 허용한 경우 | |
조치 방법 | 원격 접속 시 root 계정으로 바로 접속 할 수 없도록 설정파일 수정 |
점검 및 조치 | |
점검 | [Telnet] #cat /etc/pam.d/login auth required /lib/security/pam_securetty.so #cat /etc/securetty pts/0 ~ pts/x 관련 설정이 존재하지 않음 [SSH] #cat /etc/sshd_config PermitRootLogin no |
위에 제시한 내용으로 설정되어 있을 경우 root 원격 접속이 차단됨 / 내용 설정에 대해서는 아래의 보안설정방법을 참고함 |
|
조치 | [Telnet 서비스 사용시] Step 1) “/etc/securetty” 파일에서 pts/0 ~ pts/x 설정 제거 또는, 주석 처리 Step 2) “/etc/pam.d/login” 파일 수정 또는, 신규 삽입 (수정 전) #auth required /lib/security/pam_securetty.so (수정 후) auth required /lib/security/pam_securetty.so ※ /etc/securetty : Telnet 접속 시 root 접근 제한 설정 파일 “/etc/securetty” 파일 내 *pts/x 관련 설정이 존재하는 경우 PAM 모듈 설정과 관계없이 root 계정 접속을 허용하므로 반드시 "securetty" 파일에서 pts/x 관련 설정 제거 필요 *pts/0 ~ pts/x 설정 : tty(terminal-teletype) : 서버와 연결된 모니터, 키보드 등을 통해 사용자가 콘솔로 직접 로그인함 pts(pseudo-terminal, 가상터미널) : Telnet, SSH, 터미널 등을 이용하여 접속함 [SSH 서비스 사용시] Step 1) vi 편집기를 이용하여 “/etc/ssh/sshd_config” 파일 열기 Step 2) 아래와 같이 주석 제거 또는, 신규 삽입 (수정 전) #PermitRootLogin Yes (수정 후) PermitRootLogin No |
점검 스크립트
#!/bin/bash
. function.sh
BAR
CODE [U-01] root 계정 원격 접속 제한
cat << EOF >> $RESULT
[양호]: 원격 서비스를 사용하지 않거나 사용 시 직접 접속을 차단한 경우.
[취약]: root 직접 접속을 허용하고 원격 서비스를 사용하는 경우.
EOF
BAR
SERVICE1=telnet.socket
systemctl is-active $SERVICE1 >/dev/null 2>&1
if [ $? = 0 ]; then
INFO "텔넷 서비스가 활성화 되어있습니다."
VALUE1=$(cat /etc/securetty | grep "^pts" | wc -l)
if [ $VALUE1 != 0 ] ; then
VULN "root 직접 접속을 허용하고 원격 서비스를 사용하는 경우."
else
OK "원격 서비스를 사용하지 않거나 사용 시 직접 접속을 차단한 경우."
fi
else
OK "텔넷 서비스가 비활성화 되어있습니다."
fi
SERVICE2=sshd.service
systemctl is-active $SERVICE2 >/dev/null 2>&1
if [ $? = 0 ]; then
INFO "SSH 서비스가 활성화 되어있습니다."
VALUE2=$(cat /etc/ssh/sshd_config | grep 'PermitRootLogin yes' | awk {'print $2'} | sed '/the/d')
if [ $VALUE2 == "yes" ] ; then
VULN "root 직접 접속을 허용하고 원격 서비스를 사용하는 경우."
else
OK "원격 서비스를 사용하지 않거나 사용 시 직접 접속을 차단한 경우."
fi
else
OK "SSH 서비스가 비활성화 되어있습니다."
fi
cat $RESULT
'Hacking > infra 진단' 카테고리의 다른 글
[Linux] U-05 (상) root홈, 패스 디렉터리 권한 및 패스 설정 (0) | 2021.08.17 |
---|---|
[Linux] U-04 (상) 패스워드 파일 보호 (0) | 2021.08.17 |
[Linux] U-03 (상) 계정 잠금 임계값 설정 (0) | 2021.08.17 |
[Linux] U-02 (상) 패스워드 복잡성 설정 (0) | 2021.08.17 |
Linux infra 진단 스크립트 개발 (0) | 2021.08.17 |