환경

 - Ubuntu 18.04.6 LTS

 

#file_own.sh 변경

 - 이전 코드인 `ls -l ${1} 2>/dev/null | awk '{print $3}'` 이 파일의 소유자만 불러오고 디렉토리의 소유자는 불러오지 못하는 상황이 발생하여 수정하게 되었습니다.

 

U-14(상)

2.10 사용자, 시스템 시작파일 및 환경파일 소유자 및 권한 설정

 

#판단기준

1. 해당 유저의 환경변수 파일의 소유자가 본인 혹은 관리자가 맞는가?

2. 해당 유저의 환경변수 파일의 소유자 이외의 권한에 쓰기권한이 적용되었는가?

 

#알고리즘 계획도

1. /home 디렉토리에서 존재하는 모든 유저 받아옴

2. /home/user 디렉토리에서 '.'으로 시작하는 환경변수 파일 목록 확보

3. 소유자와 권한을 받아와서 검사.

 

 

#script 작성

 

 

#실행결과

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

환경

 - Ubuntu 18.04.6 LTS

U-13(상) 

2.9 SUID, SGID, 설정 파일 점검

 

#점검대상 파일.

/sbin/dump

/sbin/restore

/sbin/unix_chkpwd

/usr/bin/at

/usr/bin/lpq

/usr/bin/lpq-lpd

/usr/bin/lpr

/usr/bin/lpr-lpd

/usr/bin/lprm

/usr/bin/lprm-lpd

/usr/bin/newgrp

/usr/sbin/lpc

/usr/sbin/lpc-lpd

/usr/sbin/traceroute

 

#판단기준

1.  대상 파일에 Sticky Bit가 부여되어 있는가?(SET UID, SET GID)

 

#script 작성

 

 

#실행결과

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

환경

 - Ubuntu 18.04.6 LTS

 

U07~U12에 공용으로 적용되는 스크립트.

1. 파일 권한 출력 스크립트.(file_Pri.sh)

 

#실행 결과

 

 

2. 파일 소유자 (root인지)검사 스크립트(file_own.sh)

#실행 결과

 

U-07(상) 

 

2.3 /etc/passwd 파일 소유자 및 권한 설정

 

#판단기준

 1. /etc/passwd 파일의 소유자가 root가 아닌 경우.

 2. /etc/passwd 파일의 권한이 644 이하가 아닌 경우.

 

 

U-08(상) 

2.4 /etc/shadow 파일 소유자 및 권한 설정

 

#판단기준

1. /etc/shadow 파일의 소유자가 root가 아닌 경우.

2. /etc/shadow 파일의 권한이 400 이하인 경우

 

 

U-09(상) 

2.5 /etc/hosts 파일 소유자 및 권한 설정

 

#판단기준

1. /etc/hosts 의 소유자가 root인가?

2. /etc/hosts 의 권한이 600 이하인가?

 

 

U-10(상) 

2.6 /etc/xinetd.conf 파일 소유자 및 권한 설정

 

#판단기준

1. /etc/xinetd.conf 파일의 소유자가 root인가?

2. /etc/xinetd.conf 파일의 권한이 600 이하인가?

 

 

U-11(상) 

2.7 /etc/syslog.conf 파일 소유자 및 권한 설정

 

#판단기준

1. /etc/syslog.conf 파일의 소유자가 root인가?

2. /etc/syslog.conf 파일의 권한이 640 이하인가?

 

 

U-12(상) 

2.8 /etc/services 파일 소유자 및 권한 설정

 

#판단기준

1. /etc/services 파일의 소유자가 root인가?

2. /etc/services 파일의 권한이 644이하인가?

 

 

#스크립트 10번에 해당하는 예외처리 문제로 코드가 잘못되어서 재업로드 하였습니다.

 

#script 작성

 

 

#실행결과

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

환경

 - Ubuntu 18.04.6 LTS

 

U-06(상) 

 

2.2 파일 및 디렉터리 소유자 설정

 

#판단기준

 1. 소유자가 없는 파일이 존재하는가?

 2. 그룹이 없는 파일이 존재하는가?

 

#script 작성

 

 

#실행결과

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

환경

 - Ubuntu 18.04.6 LTS

 

U-05(상)

 

 - 판단기준 : /etc/profile 파일과 $HOME/.profile 파일의 PATH 환경변수 맨 앞이나 중간에 '.' 기호 포함여부

 

1. /etc/profile, $HOME/.profile 출력

2. egrep으로 '.' 기호가 앞, 중간에 올 수 있는 경우의 수 검사

 

 

#script 작성

 

 

#실행결과

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

환경

 - Ubuntu 18.04.6 LTS

 

U-04(상) 

 

1.4 패스워드 파일 보호

 - 판단기준 : /etc/passwd, /etc/shadow 2번째 필드 비교.

 

1. /etc/passwd에서 2번째 필드가 'x'인 경우 암호화 되어있음.

2. /etc/shadow에서 2번째 필드가 암호화되어있는 것을 알 수 있음.

3. /etc/passwd와 /etc/shadow의 필드 개수를 비교하여 맞는지 검사.

 

 

#script 작성

 

 

#실행결과

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

환경

 - Ubuntu 18.04.6 LTS

U-03(상)

1.3 계정 잠금 임계값 설정

 - 판단기준

 1. auth가 맨 앞인 행에서는 deny, unlock_time, no_magic_root를 검사하고

 2. account가 맨 앞인 행에서는 no_magic_root, reset을 검사한다.

 3. 앞에 '#'이 붙어 주석처리될 수 있으므로 '#' 기호가 나오면 인식하지 말아야 한다.

 

 

#script 작성

 

 

#실행결과

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

환경

 - Ubuntu 18.04.6 LTS

 

U-02(상)

 

1.2 패스워드 복잡성 설정

위 권장값이 모두 설정되어 있는지 /etc/pam.d/common-password 파일에서

확인한다.(ubuntu는 이 경로에 설정할 수 있다.)

 

 -> $count 변수의 값이 6이 아닌 경우, 취약한 이유는 설정값이 한줄, 6개가 있기 때문이다.

 

#script 작성

 

#실행결과

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

환경

 - Ubuntu 18.04.6 LTS

 

U-01(상) 

 

1.1 root 계정 원격접속 제한

 - Xined(Extended Internet Daemon) : 인터넷 기반 연결을 담당하는 유닉스계열 슈퍼 데몬

 

#판단기준(telnet)

1. 원격접속 서비스 실행 확인

2. telnet 파일 생성여부 및 접속 설정 여부 확인

3. 보안규칙을 확인하는 모듈 설정 여부 확인

4. 모듈 설정과 관계없이 root 계정 접속 허용 여부 설정 확인

 

#판단기준(ssh)

5. ssh 데몬 실행 확인

6. ssh 관리자 원격 접속 설정 확인

 

1. Xinetd가 실행되고 있는가?

  : ps -ef | grep xinetd | grep -v grep | wc -l --> 0이 나오면 실행되지 않고 있으므로 양호.

 

2. Xinetd가 실행된다면, /etc/xinetd.d/telnet 파일이 존재하며, disable = no 설정이 되어있는가?

  : cat /etc/xinetd.d/telnet | grep disable | grep no | wc -l --> 0이 나오면 파일이 없거나, disable = yes이므로 양호.

 

3. 파일이 존재하고, telnet 사용이 설정되어 있을 때, /etc/pam.d/login에서 pam_securetty.so 모듈과 required 설정이 되어있는가? (모듈이 지정해 놓은 보안규칙을 만족해야 로그인 허용)

  : cat /etc/pam.d/login | grep pam_securetty.so | grep requied | wc -l --> 0이 나오면 취약.

 

4. 3번의 설정이 되어있지 않았을 때, /etc/securetty 파일에 pts/x 설정이 존재하는가?

  : cat /etc/securetty | grep "pts/" | wc -l --> 0이 나오면 취약.

 

5. ssh 데몬이 구동되고 있는가?

  : ps -ef | grep ssh | grep -v grep | wc -l --> 0이 아닐 시 실행되고 있음

 

6. ssh 설정에서 PermitRootLogin No 설정이 되어있는가? (Yes는 관리자가 원격에서 시스템에 접근 가능.)

  : cat /etc/ssh/sshd_config | grep -x "PermitRootLogin No" | wc -l --> 0이 아닐 시 양호

 

 

#script 작성

 

#실행 결과

 

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

+ Recent posts