- 주요정보통신기반시설 파일을 참고하여 서버 점검 스크립트 제작
|
1.1 root 계정 원격 접속 제한 ■ 점검 분류 항목: 계정 관리 ■ 세부 점검 항목: root 계정 원격 접속 제한 ■ 대상: 리눅스 ■ 위험도: 상 ■ 관련 코드: U-01 (1) 취약점 개요 ● root는 시스템을 관리하는 매우 중요한 계정임 계정으로 직접 로그인하도록 . root 허용하면 불법적인 침입자의 목표가 될 수 있으므로 계정 접속에 대한 관리가 root 필요함 계정의 원격 접속 허용은 공격자에게 더 좋은 기회를 제공할 수 있으므로 의 원격 접속은 금지하여야 함. ● root : 계정 여러 사용자가 사용하는 컴퓨터에서 전체적으로 관리할 수 있는 총괄 권한을 가진 유일한 특별 계정 유닉스 시스템의 루트는 시스템 관리자인 운용 관리자로서 . (root) (Super User) 윈도우의 관리자 에 해당하며 사용자 계정을 생성하거나 소프트웨어를 설치하고 (Administrator) , ,환경 및 설정을 변경하거나 시스템의 동작을 감시 및 제어할 수 있음. (2) 판단기준 ● 양호: 원격 서비스를 사용하지 않거나 사용 시 직접 접속을 차단한 경우 ● 취약: root 직접 접속을 허용하고 원격 서비스를 사용하는 경우 (3) 조치방법 ● 원격 접속 시 계정으로 바로 접속 할 수 없도록 설정파일 수정 (4) 보안 설정 방법 ■ 점검 방법 # cat /etc/securetty "pts/#" 들어 있는지 확인 후 삭제(or 주석처리) ■ 설정 방법 ① "/etc/securetty" 파일의 pts/0 ~ pts/x , 파일에서 설정 제거 또는 주석 처리 ② "/etc/pam.d/login" 파일 수정 (수정전) #auth required /lib/security/pam_securetty.so 수정 전 (수정후) auth required /lib/security/pam_securetty.so 수정 후 (5) 조치시 영향 일반적으로 영향 없음. |
|
(고객에게 설명)
root 사용자의 이름은 정해져 있으며, 암호만 맞추면 되기 때문에 원격에서 무작위 대입을 통해 root 사용자의 암호가 크랙당하는 위험성이 존재한다. 따라서 일반 사용자로 로그인하여 root 사용자로 전환하여 사용하도록 권장하여야 한다. => Brute Force Attack, Dictionary Attack
- 쉘 스크립트 작성
root 사용자로 원격에서 로그인하면 안된다.-> /etc/securetty 파일은 기본값을 사용한다.
일반사용자로 로그인하여 su 명령어를 통해 스위칭하여 사용한다.-> 로그에 남겨지기 때문에, root 사용자의 telnet 로그인이 패킷 스니핑에 약하기 때문이다.
su 명령어를 통해 스위칭할수 있는 사용자 그룹(wheel)을 설정한다.-> /etc/pam.d/su-> usermod -G wheel user01
sudo 명령어를 사용할 수 있는 사용자/그룹 지정, 명령어의 집합의 지정이 필요하다.-> /etc/sudoers
[참고] 실습환경
linux ( CentOS )
# function.sh
|
LOG=check.log RESULT=result.log > $LOG > $RESULT BAR() { echo "========================================================================" >> $RESULT } NOTICE() { [ OK ] : 정상 [WARN] : 비정상 [INFO] : Information 파일을 보고, 고객과 상의 } OK() { echo -e '\033[32m'"[ 양호 ] : $*"'\033[0m' } >> $RESULT WARN() { echo -e '\033[31m'"[ 경고 ] : $*"'\033[0m' } >> $RESULT INFO() { echo -e '\033[35m'"[ 정보 ] : $*"'\033[0m' } >> $RESULT CODE(){ echo -e '\033[36m'$*'\033[0m' } >> $RESULT |
|
자주 사용하는 구문은 따로 만들어 사용한다.
check.log와 result.log를 초기화함
BAR와 NOTICE는 간단한 출력문
OK/WARN/INFO/CODE 는 색상을 바꿔 출력함
# U-01.sh
|
#!/bin/bash . function.sh BAR CODE [U-01] root 계정 원격 접속 제한 cat << EOF >> $RESULT [양호]: 원격 서비스를 사용하지 않거나 사용 시 직접 접속을 차단한 경우. [취약]: root 직접 접속을 허용하고 원격 서비스를 사용하는 경우. EOF BAR for i in `ls /etc/xinetd.d/*telnet` do BOOLEAN=`cat $i | grep disable | awk '{print $3}'` if [ $BOOLEAN = 'yes' ] ; then OK $i : 원격서비스가 사용되고 있지 않습니다. else WARN $i : 원격서비스가 사용되고 있습니다. if [ -f /etc/securetty -a grep pts /etc/securetty >/dev/null 2>&1 ] ; then WARN $i : root 사용자 접속이 가능합니다. else OK $i : root 사용자 접속이 가능하지 않습니다. fi fi done cat $RESULT echo ; echo |
|
ls /etc/xinetd.d/*telnet 의 출력결과를 가지고 서비스를 판단한다.
-> chkconfig는 redhat 계열에서만 사용가능하기 때문에 디렉토리에서 찾는다.
BOOLEAN 은 /etc/xinetd.d/*telnet의 출력결과 속의 disable을 검색하여 3번째 필드로 서비스 on/off 확인
서비스가 사용중이면
/etc/securetty 파일이 존재하고 grep으로 pts 라는 단어가 들어있다면 출력은 생성하고 WARN 출력, 없다면 OK 출력
'Security > Linux Server' 카테고리의 다른 글
리눅스 서버 점검 (계정 잠금 임계값 설정 ) 쉘 스크립트 (0) | 2017.12.15 |
---|---|
리눅스 서버 점검 ( 패스워드 복잡성 설정 ) 쉘 스크립트 (0) | 2017.12.15 |
주요 PAM 모듈 ( cracklib.so , wheel.so , tally.so , tally2.so ) (0) | 2017.12.15 |
PAM (Pluggable Authentication Modules) (0) | 2017.12.15 |
시스템 보안에 대한 6가지 보안 주제 (0) | 2017.12.14 |