- U-01 : root 계정 원격 접속 제한
양호 : 원격 터미널 서비스를 사용하지 않거나 , 사용 시 root 직접 접속을 차단한 경우
취약 : 원격 터미널 서비스 사용 시 root 직접 접속을 허용한 경우
[SSH 서비스 사용시]
Step 1) vi 편집기를 이용하여 “/etc/ssh/sshd_config” 파일 열기
Step 2) 아래와 같이 주석 제거 또는, 신규 삽입
(수정 전) #PermitRootLogin Yes
(수정 후) PermitRootLogin No
- U-02 : 패스워드 복잡성 설정
양호 : 패스워드 최소길이 8자리 이상, 영문·숫자·특수문자 최소 입력 기능이 설정된 경우
취약 : 패스워드 최소길이 8자리 이상, 영문·숫자·특수문자 최소 입력 기능이 설정된 경우
#vi /etc/pam.d/system-auth
password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 lcredit=1 ucredit=1 dcredit=1 ocredit=1
*주의: 없는 경로를 지정 시 sudo 명령어가 안 먹힘
- U-03 : 계정 잠금 임계값 설정
양호 : 계정 잠금 임계값이 10회 이하의 값으로 설정되어 있는 경우
취약 : 계정 잠금 임계값이 설정되어 있지 않거나, 10회 이하의 값으로 설정되 지 않은 경우
#cat /etc/pam.d/system-auth auth
required /lib/security/pam_tally.so deny=5 unlock_time=120 no_magic_root
account required /lib/security/pam_tally.so no_magic_root reset
*주의: 없는 경로를 지정 시 sudo 명령어가 안 먹힘
- U-04 : 패스워드 파일 보호
양호 : 쉐도우 패스워드를 사용하거나, 패스워드를 암호화하여 저장하는 경우
취약 : 쉐도우 패스워드를 사용하지 않고, 패스워드를 암호화하여 저장하지 않 는 경우
Step 1) /shadow 파일의 패스워드 암호화 존재 확인
(일반적으로 /etc 디렉터리 내 존재)
#ls /etc
Step 2) /etc/passwd 파일 내 두 번째 필드가 “x” 표시되는지 확인
#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
- U-05 : root홈, 패스 디랙터리 권한 및 패스 설정
양호 : PATH 환경변수에 “.” 이 맨 앞이나 중간에 포함되지 않은 경우
취약 : PATH 환경변수에 “.” 이 맨 앞이나 중간에 포함되어 있는 경우
#echo $PATH
/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin/X11: /usr/local/bin:/usr/bin:/usr/X11R6/bin:/root/bin
1.위와 같이 출력되는 PATH 변수 내에 “.” 또는, “::” 포함 여부 확인
2. PATH 변수 내에 “.”, “::” 이 맨 앞에 존재하는 경우
Step 1) vi 편집기를 이용하여 root 계정의 설정파일(~/.profile 과 /etc/profile) 열기
#vi /etc/profile
Step 2) 아래와 같이 수정
(수정 전) PATH=.:$PATH:$HOME/bin
(수정 후) PATH=$PATH:$HOME/bin:.
- U-06 : 파일 및 디렉토리 소유자 설정
양호 : 소유자가 존재하지 않는 파일 및 디렉터리가 존재하지 않는 경우
취약 : 소유자가 존재하지 않는 파일 및 디렉터리가 존재하는 경우
#find / -nouser –print
#find / -nogroup -print
Step 1) 소유자가 존재하지 않는 파일이나 디렉터리가 불필요한 경우 rm 명령으로 삭제
#rm <file_name>
#rm <directory_name>
※ 삭제할 파일명 또는, 디렉터리명 입력
Step 2) 필요한 경우 chown 명령으로 소유자 및 그룹 변경
#chown <user_name> <file_name>
- U-07 : /etc/passwd 파일 소유자 및 권한 설정
양호 : /etc/passwd 파일의 소유자가 root이고, 권한이 644 이하인 경우
취약 : /etc/passwd 파일의 소유자가 root가 아니거나, 권한이 644 이하가 아닌 경우
“/etc/passwd” 파일의 소유자 및 권한 변경 (소유자 root, 권한 644)
#chown root /etc/passwd
#chmod 644 /etc/passwd
- U-08 : /etc/shadow 파일 소유자 및 권한 설정
양호 : /etc/shadow 파일의 소유자가 root이고, 권한이 400 이하인 경우
취약 : /etc/shadow 파일의 소유자가 root가 아니거나, 권한이 400 이하가 아닌 경우
Step 1) “/etc/shadow” 파일의 소유자 및 권한 확인
#ls -l /etc/shadow
Step 2) “/etc/shadow” 파일의 소유자 및 권한 변경 (소유자 root, 권한 400)
#chown root /etc/shadow
#chmod 400 /etc/shadow
- U-09 : /etc/hosts 파일 소유자 및 권한 설정
양호 : /etc/hosts 파일의 소유자가 root이고, 권한이 600인 이하경우
취약 : /etc/hosts 파일의 소유자가 root가 아니거나, 권한이 600 이상인 경우
“/etc/hosts" 파일의 소유자 및 권한 변경 (소유자 root, 권한 600)
#chown root /etc/hosts
#chmod 600 /etc/hosts
- U-10 : /etc/(x)inetd.conf 파일 소유자 및 권한 설정
양호 : /etc/inetd.conf 파일의 소유자가 root이고, 권한이 600인 경우
취약 : /etc/inetd.conf 파일의 소유자가 root가 아니거나, 권한이 600이 아닌 경우
“/etc/inetd.conf” 파일의 소유자 및 권한 변경 (소유자 root, 권한 600)
#chown root /etc/xinetd.conf
#chmod 600 /etc/xinetd.conf
- U-11 : /etc/syslog.conf 파일 소유자 및 권한 설정
양호 : /etc/syslog.conf 파일의 소유자가 root(또는 bin, sys)이고, 권한이 640 이 하인 경우
취약 : /etc/syslog.conf 파일의 소유자가 root(또는 bin, sys)가 아니거나, 권한이 640 이하가 아닌 경우
■ LINUX (CentOS 6 이상일 경우)
#chown root /etc/rsyslog.conf
#chmod 640 /etc/rsyslog.conf
- U-12 : /etc/services 파일 소유자 및 권한 설정
양호 : etc/services 파일의 소유자가 root(또는 bin, sys)이고, 권한이 644 이하 인 경우
취약 : etc/services 파일의 소유자가 root(또는 bin, sys)가 아니거나, 권한이 644 이하가 아닌 경우
“/etc/services” 파일의 소유자 및 권한 변경 (소유자 root, 권한 644)
#chown root /etc/services
#chmod 644 /etc/services
- U-13 : SUID, SGID, 설정 파일점검
양호 : 주요 실행파일의 권한에 SUID와 SGID에 대한 설정이 부여되어 있지 않은 경우
취약 : 주요 실행파일의 권한에 SUID와 SGID에 대한 설정이 부여되어 있는 경우
■ OS별 주요 실행파일에 대한 SUID/SGID 설정 여부 확인
#ls –alL [check_file] | awk ‘{ print $1}’ | grep –i ‘s’
Step 1) 제거 방법
#chmod -s
Step 2) 주기적인 감사 방법
#find / -user root -type f \( -perm -04000 -o -perm -02000 \) -xdev -exec ls –al {} \;
Step 3) 반드시 사용이 필요한 경우 특정 그룹에서만 사용하도록 제한하는 방법
일반 사용자의 Setuid 사용을 제한함 (임의의 그룹만 가능)
#/usr/bin/chgrp <group_name> <setuid_file_name>
#/usr/bin/chmod 4750 <setuid_file_name>
*주의 : SUID 제거 시 OS 및 응용프로그램 등 서비스 정상작동 유무 확인 필요
- U-14 : 사용자,시스템 시작파일 및 환경파일 소유자 및 권한 설정
양호 : 홈 디렉터리 환경변수 파일 소유자가 root 또는, 해당 계정으로 지정되 어 있고, 홈 디렉터리 환경변수 파일에 root와 소유자만 쓰기 권한이 부여 된 경우
취약 : 홈 디렉터리 환경변수 파일 소유자가 root 또는, 해당 계정으로 지정되 지 않고, 홈 디렉터리 환경변수 파일에 root와 소유자 외에 쓰기 권한이 부여된 경우
Step 1) 소유자 변경 방법
#chown <user_name> <file_name>
Step 2) 일반 사용자 쓰기 권한 제거 방법
#chmod o-w <file_name>
- U-15 : world writable 파일 점검
양호 : 시스템 중요 파일에 world writable 파일이 존재하지 않거나, 존재 시 설 정 이유를 확인하고 있는 경우
취약 : 시스템 중요 파일에 world writable 파일이 존재하나 해당 설정 이유를 확인하고 있지 않는 경우
■ world writable 파일 존재 여부 확인
#find / -type f -perm –2 –exec ls –l {} \;
Step 1) 일반 사용자 쓰기 권한 제거 방법
#chmod o-w <file_name>
Step 2) 파일 삭제 방법
#rm -rf <word-writable 파일명>
- U-16 : /dev에 존재하지 않는 device 파일 점검
양호 : dev에 대한 파일 점검 후 존재하지 않은 device 파일을 제거한 경우
취약 : dev에 대한 파일 미점검 또는, 존재하지 않은 device 파일을 방치한 경우
■ dev에 존재하지 않는 device 파일 점검
#find /dev –type f –exec ls –l {} \;
Step 1) /dev 디렉터리 파일 점검
#find /dev -type f -exec ls -l {} \;
Step 2) major, minor number를 가지지 않는 device일 경우 삭제
- U-17 : $HOME/.rhosts, hosts.equiv 사용 금지
양호 : login, shell, exec 서비스를 사용하지 않거나, 사용 시 아래와 같은 설정 이 적용된 경우
1. /etc/hosts.equiv 및 $HOME/.rhosts 파일 소유자가 root 또는, 해당 계 정인 경우
2. /etc/hosts.equiv 및 $HOME/.rhosts 파일 권한이 600 이하인 경우
3. /etc/hosts.equiv 및 $HOME/.rhosts 파일 설정에 ‘+’ 설정이 없는 경우
취약 : login, shell, exec 서비스를 사용하고, 위와 같은 설정이 적용되지 않은 경우
■ 확인
Step 1) 파일 소유자 및 권한 확인
#ls –al /etc/hosts.equiv
#ls –al $HOME/.rhosts
rw------- root <hosts.equiv 파일>
rw------- root <$HOME/.rhosts 파일>
Step 2) 계정 별 ‘+’ 부여 적절성 확인
#cat /etc/hosts.equiv
#cat $HOME/.rhosts
• /etc/hosts.equiv : 서버 설정 파일
• $HOME/.rhosts : 개별 사용자의 설정 파일
■ 조치
Step 1) “/etc/hosts.equiv” 및 “$HOME/.rhosts” 파일의 소유자를 root 또는, 해당 계정으로 변경
#chown root /etc/hosts.equiv
#chown $HOME/.rhosts
Step 2) “/etc/hosts.equiv” 및 “$HOME/.rhosts” 파일의 권한을 600 이하로 변경
#chmod 600 /etc/hosts.equiv
#chmod 600 $HOME/.rhosts
Step 3) “/etc/hosts.equiv” 및 “$HOME/.rhosts” 파일에서 “+”를 제거하고 허용 호스트 및 계정 등록
#cat /etc/hosts.equiv (or $HOME/.rhosts)
- U-20 : Anonymous FTP 비활성화
양호 : Anonymous FTP (익명 ftp) 접속을 차단한 경우
취약 : Anonymous FTP (익명 ftp) 접속을 차단하지 않은 경우
■/etc/passwd 파일에 ftp 계정 존재 여부 확인
#cat /etc/passwd | grep "ftp"
Case 1) 일반 FTP - Anonymous FTP 접속 제한 설정 방법
“/etc/passwd” 파일에서 ftp 또는, anonymous 계정 삭제
#userdel ftp
Case 2) ProFTP - Anonymous FTP 접속 제한 설정 방법
conf/proftpd.conf 파일의 anonymous 관련 설정 중 User, Useralias 항목 주석처리
(proftpd.conf 파일의 위치는 운영체제 종류별로 상이함)
Case 3) vsFTP - Anonymous FTP 접속 제한 설정 방법
vsFTP 설정파일(“/etc/vsftpd/vsftpd.conf” 또는, “/etc/vsftpd.conf”)에서
anonymous_enable=NO 설정
U-24 : NFS 서비스 비활성화
양호 : 불필요한 NFS 서비스 관련 데몬이 비활성화 되어 있는 경우
취약 : 불필요한 NFS 서비스 관련 데몬이 활성화 되어 있는 경우
■NFS 서비스 데몬 확인 (NFS 동작 SID 확인)
#ps -ef | egrep "nfs|statd|lockd"
#netstat -tlpan | grep ftp
■조치
Step 1) NFS 서비스 데몬 중지
#kill -9 [PID]
Step 2) 시동 스크립트 삭제 또는, 스크립트 이름 변경
1.. 위치 확인
#ls -al /etc/rc.d/rc*.d/* | grep nfs
2. 이름 변경 #mv /etc/rc.d/rc2.d/S60nfs /etc/rc.d/rc2.d/_S60nfs
- U -45 : root 계정 su 제한
양호 : su 명령어를 특정 그룹에 속한 사용자만 사용하도록 제한되어 있는 경우
※ 일반사용자 계정 없이 root 계정만 사용하는 경우 su 명령어 사용제한 불필요
취약 : su 명령어를 모든 사용자가 사용하도록 설정되어 있는 경우
■확인
Step 1) “wheel” 그룹 (su 명령어 사용 그룹) 및 그룹 내 구성원 존재 여부 확인
#cat /etc/group (※ “group” 파일 구조: 부록 참조)
wheel:x:10:root,admin
Step 2) wheel 그룹이 su 명령어를 사용할 수 있는지 설정 여부 확인
Step 3) 파일 권한 확인
#ls –l /usr/bin/su
-rwsr-x--- /usr/bin/su
(파일 권한이 4750인 경우 양호)
■조치
Step 1) wheel group 생성 (wheel 그룹이 존재하지 않는 경우)
#groupadd wheel
Step 2) su 명령어 그룹 변경
#chgrp wheel /usr/bin/su
Step 3) su 명령어 사용권한 변경
#chmod 4750 /usr/bin/su
Step 4) wheel 그룹에 su 명령 허용 계정 등록
#usermod –G wheel
또는, 직접 /etc/group 파일을 수정하여 필요한 계정 등록
wheel:x:10: -> wheel:x:10:root,admin
- U-46 : 패스워드 최소 길이 설정
양호 : 패스워드 최소 길이가 8자 이상으로 설정되어 있는 경우
취약 : 패스워드 최소 길이가 8자 미만으로 설정되어 있는 경우
■ 확인
#cat /etc/login.defs
PASS_MIN_LEN 8
■ 조치
Step 1) vi 편집기를 이용하여 “/etc/login.defs” 파일 열기
Step 2) 아래와 같이 수정 또는, 신규 삽입
(수정 전) PASS_MIN_LEN 6
(수정 후) PASS_MIN_LEN 8( 8 이상권장)
- U-47 : 패스워드 최대 사용기간 설정
양호 : 패스워드 최대 사용기간이 90일(12주) 이하로 설정되어 있는 경우
취약 : 패스워드 최대 사용기간이 90일(12주) 이하로 설정되어 있지 않는 경우
■ 확인
#cat /etc/login.defs
PASS_MAX_DAYS 90
■ 조치
Step 1) vi 편집기를 이용하여 “/etc/login.defs” 파일 열기
Step 2) 아래와 같이 수정 또는, 신규 삽입
(수정 전) PASS_MAX_DAYS 99999
(수정 후) PASS_MAX_DAYS 90 (단위: 일)
- U-48 : 패스워드 최소 사용기간 설정
양호 : 패스워드 최소 사용기간이 1일 이상 설정되어 있는 경우
취약 : 패스워드 최소 사용기간이 설정되어 있지 않는 경우
■ 확인
#cat /etc/login.defs
PASS_MIN_DAYS 1
■ 조치
Step 1) vi 편집기를 이용하여 “/etc/login.defs” 파일 열기
Step 2) 아래와 같이 수정 또는, 신규 삽입
(수정 전) PASS_MIN_DAYS
(수정 후) PASS_MIN_DAYS 1 (단위: 일)
- U-49 : 불필요한 계정 제거
양호 : 불필요한 계정이 존재하지 않는 경우
취약 : 불필요한 계정이 존재하는 경우
■ 확인
Step 1) 미사용 계정 및 의심스러운 계정 존재 여부 확인
(※ “passwd” 파일 구조: 부록 참조)
#cat /etc/passwd
Step 2) 사용하지 않는 Default 계정 점검
(lp, uucp, nuucp 계정 존재 확인 예시)
#cat /etc/passwd | egrep “lp|uucp|nuucp”
■ 조치
Step 1) 서버에 등록된 불필요한 사용자 계정 확인
Step 2) userdel 명령으로 불필요한 사용자 계정 삭제
#userdel <user_name>
- U-51 : 계정이 존재하지 않는 GID 금지
양호 : 시스템 관리나 운용에 불필요한 그룹이 삭제 되어있는 경우
취약 : 시스템 관리나 운용에 불필요한 그룹이 존재할 경우
#cat /etc/group (※ “group” 파일 구조: 부록 참조)
#cat /etc/passwd
#cat /etc/gshadow *gshadow 파일: “shadow” 파일에 사용자 계정의 암호가 저장되어 있는 것처럼 시스템 내 존재하는 그룹의 암호 정보 저장 파일로 그룹 관리자 및 구성원 설정 가능
- U-57 : 홈디렉토리 소유자 및 권한 설정
양호 : 홈 디렉터리 소유자가 해당 계정이고, 타 사용자 쓰기 권한이 제거된 경우
취약 : 홈 디렉터리 소유자가 해당 계정이 아니고, 타 사용자 쓰기 권한이 부여된 경우
■ 확인
/etc/passwd" 파일에서 사용자별 홈 디렉터리 확인 후 소유자 및 권한 확인
#cat /etc/passwd
#ls -ald
■ 조치
“/etc/passwd” 파일의 소유자 및 권한 변경
#chown <user_name> <user_home_directory>
#chmod o-w <user_home_directory>
- U-59 : 숨겨진 파일 및 디렉토리 검색 및 제거
양호 : 불필요하거나 의심스러운 숨겨진 파일 및 디렉터리를 삭제한 경우
취약 : 불필요하거나 의심스러운 숨겨진 파일 및 디렉터리를 방치한 경우
■ 확인
특정 디렉터리 내 불필요한 파일 점검
#ls -al [디렉터리명]
전체 숨김 디렉터리 및 숨김 파일 점검
#find / -type f –name ".*" (파일 점검)
#find / -type d -name ".*" (디렉터리 점검)
■ 조치
Step 1) 숨겨진 파일 목록에서 불필요한 파일 삭제
Step 2) 마지막으로 변경된 시간에 따라, 최근 작업한 파일 확인 시 [-t] 플래그 사용
- U-61 : ftp 서비스 확인
양호 : FTP 서비스가 비활성화 되어 있는 경우
취약 : FTP 서비스가 활성화 되어 있는 경우
■ 확인
일반 ftp 서비스 비활성화 여부 확인
#ps -ef | grep ftp
vsftpd 또는 ProFTP 서비스 데몬 확인(vsftpd, proftpd 동작 SID 확인)
#ps -ef | egrep "vsftpd|proftp"
root 3809 3721 0 08:44:40 ? 0:00 /usr/sbin/vsftpd
■ 조치
< vsFTP, ProFTP 서비스 중지 방법 >
Step 1) 서비스 확인
# ps –ef | egrep "vsftpd|proftpd"
Step 2) vsftpd 또는 ProFTP 서비스 데몬 중지
# service vsftpd(proftp) stop 또는 /etc/rc.d/init.d/vsftpd(proftp) stop 또는 kill -9 [PID]
*참고
'OS > Linux' 카테고리의 다른 글
[Linux] 라우팅 테이블 추가하기 (0) | 2022.09.21 |
---|---|
[Linux] SFTP 연결 안되는 경우(/etc/ssh/sshd_config 수정) (0) | 2022.07.26 |
[Linux] 사용 중인 Port 확인하기(netstat 명령어) (0) | 2022.06.22 |
[Linux] LVM 구성하기 / LVM이란? (0) | 2021.11.22 |
[Linux] 사용자 ,그룹 확인/추가/삭제 (0) | 2021.11.22 |