1. 계정관리
(1) root 이외의 UID 0 금지
# cat /etc/passwd | grep :0
root:x:0:0:root:/root:/bin/bash
cracker:x:0:0::/home/cracker:/bin/bash
1) root(UID=0)와 동일한 UID를 가진 계정 존재 시 root 권한으로 시스템 접근이 가능하므로 root의 UID를 가진 계정이 존재하지 않도록 해야 한다.
2) cracker 유저로 접속 시 UID, GID 모두 0이므로 root와 동일한 권한을 가지고 있다.
3) root 이외의 계정 UID=0 혹은 GID=0 인 경우 500 이상으로 재설정 한다. (# usermod -u 1234 cracker)
(2) Password 복잡성 설정
1) 영문, 숫자, 특수문자를 조합하여(패스워드 복잡성을 높임) 계정명과 상이한 8자 이상의 패스워드 설정
2) 다음 문자 종류 중 2종류 이상을 조합하여 최소 10자리 이상 또는 3종류 이상을 조합하여 최소 8자리 이상의 길이로 구성
(공공기관의 경우 4종류 모두 포함하며 최소 9자리 이상의 길이로 구성)
- 영문 대문자(26개)
- 영문 소문자(26개)
- 숫자(10개)
- 특수문자(32개)
Linux (RHEL6 / CentOS6 예시)
[root@localhost ~]# cat /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth requried pam_tally2.so per_user
auth sufficient pam_fprintd.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 minlen=9 ucredit=-1 dcredit=-1 ocredit=-1 lcredit=-1
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
Linux (RHEL7 / CentOS7) 예시
[root@localhost ~]# vi /etc/security/pwquality.conf
------------주석으로 달린 설명 생략--------------------
minlen = 9
minclass = 1
maxrepeate = 0
maxclassrepeat = 0
lcredit = -1 ( -1일 경우 영어 소문자를 반드시 포함 )
ucredit = -1 ( -1일 경우 영어 대문자를 반드시 포함 )
dcredit = -1 ( -1일 경우 숫자를 반드시 포함 )
ocredit = -1 ( -1일 경우 특수문자를 반드시 포함 )
2. 파일 및 디렉터리 관리
(1) root 홈, 패스 디렉터리 권한 및 패스 설정
1) root 계정의 PATH 환경변수에 "."(현재 디렉터리 지칭)이 포함되어 있으면 root 계정으로 접속한 관리자가 의도하지 않은 현재 디렉터리에 위치하고 있는 명령어가 실행될 수 있다. 즉 "."이 /usr/bin, /bin, /sbin 등 명령어들이 위치하고 있는 디렉터리보다 우선하여 위치하고 있을 경우, root 계정으로 접속한 관리자가 특정 명령을 실행하면, 불법적으로 현재 디렉터리에 위치시킨 파일을 실행하여 예기치 않은 결과를 가져올 수 있다.
2) PATH 환경변수에 "."이 맨 앞 또는 중간에 위치하고 있으면 root가 의도하지 않은 명령이 실행될 수 있으므로 PATH 환경변수의 마지막으로 이동시키거나 불필요한 경우 삭제한다.
[root@localhost ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
(2) 파일 및 디렉터리 소유자/소유그룹 설정
1) 소유자/소유그룹이 존재하지 않는 파일 및 디렉터리는 현재 없는 사용자/그룹의 소유였거나 관리 소홀로 인해 생긴 파일일 가능성이 있다.
2) 사용하지 않는 디렉터리나 파일일 경우 시스템 자원 낭비가 될 수 있고 중요 파일일 경우 관리 되지 않는 문제점이 있다.
3) 소유자/소유그룹이 존재하지 않는 파일 및 디렉터리는 UID/GID 정보만 남아있을 뿐 소유자/소유그룹이 표시되지 않는다.
예시) user00 유저가 존재 할 경우
[root@localhost user00]# ls -l
합계 0
-rw-r--r--. 1 root root 0 10월 11 17:11 6
-rw-r--r--. 1 root root 0 10월 11 17:11 file
-rw-r--r--. 1 root root 0 10월 11 17:11 file00
-rw-r--r--. 1 root root 0 10월 11 17:11 file05
-rw-rw-r--. 1 user00 user00 0 10월 11 17:11 file1
-rw-rw-r--. 1 user00 user00 0 10월 11 17:11 file2
-rw-rw-r--. 1 user00 user00 0 10월 11 17:11 file3
예시) user00 유저가 없을 경우
[root@localhost user00]# ls -l
합계 0
-rw-r--r--. 1 root root 0 10월 11 17:11 6
-rw-r--r--. 1 root root 0 10월 11 17:11 file
-rw-r--r--. 1 root root 0 10월 11 17:11 file00
-rw-r--r--. 1 root root 0 10월 11 17:11 file05
-rw-rw-r--. 1 1002 1002 0 10월 11 17:11 file1
-rw-rw-r--. 1 1002 1002 0 10월 11 17:11 file2
-rw-rw-r--. 1 1002 1002 0 10월 11 17:11 file3
(3) 주요 파일 소유자 및 권한 설정
1) /etc/passwd : 사용자 정보를 담고 있는 파일로 root 소유의 644 이하의 권한을 설정한다.
2) /etc/shadow : 사용자의 암호화된 패스워드 정보를 담고 있는 파일로 root이외에는 접근을 못하도록 root 소유의 400이하의 권한을 설정한다.
3) /etc/hosts : IP와 호스트 이름을 매핑하는데 사용되는 파일로 외부의 불법적인 적근에 의한 조작 시 악의적인 시스템에 접근할 가능성이 있으므로 root 소유의 600 이하의 권한을 설정한다.
(일부 서비스들이 해당 파일을 참조하는 경우 644 이하로 설정하기도 한다. 취약점 점검시 자주 걸리는 부분이기도 하다.)
4) /etc/(x)inetd.conf : inetd 데몬에 대한 설정파일로 외부의 불법적인 접근에 의해 악의적인 프로그램을 등록하고 root 권한으로 실행할 가능성이 있으므로 root 소유의 600이하의 권한을 설정한다.
5) /etc/syslog.conf : syslogd 데몬에 대한 설정파일로 주요 로그파일에 대한 설정정보를 가지고 있다. 해당 파일의 접근권한이 적절하지 않아 외부의 불법적인 접근에 의해 변경되는 경우 시스템 로그가 정상적으로 기록되지않아 침입자의 흔적 또는 시스템 오류 사항을 정확히 분석할 수 없으므로 root이외의 사용자는 해당 파일을 변경할 수 없도록 root소유의 644 이하의 권한을 설정한다.
6) /etc/services : 서비스 관리 정보를 담고 있는 파일로 접근권한이 적절하지 않아 외부의 불법적인 접근에 의해 변경되는 경우 정상적인 서비스를 제한하거나 허용되지 않은 서비스를 등록하는 등의 위험이 있으므로 root 소유의 644 이하의 권한을 설정한다.