nuga@nugawiki: $ cat ./docs/$1
서버 보안 설정 체크리스트
1. 로그인 설정
- 비밀번호가 존재하지 않는 계정의 로그인을 허용하지 않을 경우 양호
- /etc/ssh/sshd_config 일부 캡처
vim /etc/ssh/sshd_config
2. root 이외의 UID가 0인 계정 존재여부
- root 이외에 UID가 0인 계정이 존재하지 않을 경우 양호
- cat /etc/passwd 로 uid 확인하여 0인 경우 500 이상으로 조정 (세번째 필드)
usermod -u 505 test- https://skynarciss.tistory.com/87 참고
cat /etc/passwd | awk -F: '$3 == 0 {print $1, $3}'
3. 불필요 계정 존재 여부(Default 계정)
- lp, uucp, nuucp 계정이 존재하지 않을 경우 양호
cat /etc/passwd | grep lp
cat /etc/passwd | grep uucp
cat /etc/passwd | grep nuucp
4. Shell 제한
- 로그인이 필요하지 않은 계정에 /bin/false 또는 /sbin/nologin 쉘이 부여되어 있을 경우 양호
- /etc/passwd 로 맨 마지막 필드 확인
vim /etc/passwd
5. passwd 파일 권한 설정
- /etc/passwd 파일의 권한이 644(rw-r--r--) 이하인 경우 양호
ls -al /etc/passwd
6. group 파일 권한 설정
- /etc/group 파일의 권한이 644(rw-r--r--) 이하인 경우 양호
ls -al /etc/group
7. shadow 파일 권한 설정
- /etc/shadow 파일이 root에게만 읽기, 쓰기 접근권한이 설정 된 경우 양호
ls -al /etc/shadow
chmod 600 /etc/shadow
8. 비밀번호의 최소 길이 제한 설정
- 비밀번호 최소 길이가 8자 이상으로 설정되어 있는 경우 양호
- 비밀번호 정책 설정
vim /etc/login.defs
PASS_MIN_LEN 9 # 최소 길이 제한
PASS_MAX_DAYS 90 # 최대 사용 기간 제한
cat /etc/shadow
# 마지막 Maxday가 90 이상인 계정들 : chage -M 90 계정명
cat /etc/login.defs | grep PASS_MIN_LEN
9. 비밀번호의 최대 사용기간 설정
- 비밀번호 최대 사용기간이 90일(12주) 이하로 설정되어 있을 경우 양호
cat /etc/login.defs | grep PASS_MAX_DAYS
10. 취약한 비밀번호 존재 여부
- 관리자 비밀번호가 숫자, 문자, 특수문자를 포함하여 9자리 이상일 경우 양호
- 스크립트 캡쳐
11. 계정잠금 임계값 설정
- 설정파일(/etc/pad.d/system-auth) 내 아래 두개가 다 설정되어 있을경우 양호
- https://webinformation.tistory.com/98
vim /etc/pam.d/system-auth
# 로그인 시 5번 실패 할 경우 60초 동안 로그인이 제한 된다.
auth required pam_tally2.so deny=5 unlock_time=60
account required pam_tally2.so
cat /etc/pam.d/system-auth | grep pam_tally
12. 일반 사용자의 su 명령 제한
- su 명령어를 특정 그룹에 속한 사용자만 사용하도록 제한이 되어 있을 경우 양호
# wheel 그룹만 su 사용
vim /etc/pam.d/su
auth required pam_wheel.so use_uid # 주석해제
vim /etc/group
wheel:x:10:root,comin # su 사용할 계정명들 쭉 붙임
# su 위치 파악
which su
# 권한/소유자 파악
ll /bin/su
chgrp wheel /bin/su
chmod 4750 /bin/su
ll /bin/su
ls -al /bin/su
cat /etc/pam.d/su | grep pam_wheel
cat /etc/group | grep wheel
13. root 계정 Telnet 제한
- Telnet을 사용하지 않거나 사용 시 root로 바로 접속 불가능 하도록 설정되어 있을 경우 양호
cat /etc/securetty | grep pts
cat /etc/pam.d/login | grep pam_securetty
14. root 계정 FTP 접속 제한
- ftp를 사용하지 않거나 ftp 사용 시 root로 접속 불가능 하도록 설정되어 있을 경우 양호
- /etc/vsftpd/ftpusers 에 root 있어야 함
cat /etc/vsftpd/ftpusers
15. 익명 FTP(Anonymous FTP)를 제한
- ftp를 사용하지 않거나 ftp 계정이 존재하지 않는 경우 양호
- ftp 계정이 존재할 경우, Anonymous FTP(익명 ftp)를 비활성화한 경우 양호
# vsftp 존재시
vim /etc/vsftp/vsftpd.conf
anonymous_enable=NO
cat /etc/vsftpd/vsftpd.conf | grep anonymous_enable
16. 세션 타임아웃을 설정
- 세션 타임아웃이 10분(600초) 이하로 설정된 경우 양호
vim /etc/profile
TMOUT=599; export TMOUT;
source /etc/profile
cat /etc/profile | grep TMOUT
17. r-commands 제한
- rlogin, rsh, rcp(shell, login, exec) 서비스를 사용하지 않는 경우 양호
ps -ef | grep -e rlogin -e rsh -e rexec | grep -v grep
18. NFS 공유관련 취약점을 제거 여부
- NFS 서비스를 비활성화 하였거나, 사용할 경우 특정 사용자의 시스템만이 공유되도록 설정한 경우 양호
ps -ef | grep nfsd | grep -v grep
19. Crontab 관련 파일에 대한 접근 제한
- 해당 파일의 권한 중 other에 쓰기 권한이 부여되어 있지 않은 경우 양호
ls -al /etc | grep cron
ls -al /var/spool/cron
20. PATH 환경 변수 설정
- PATH 환경변수에 . 이나 ::(공백) 항목이 맨 앞 또는 중간에 포함되어 있지 않은 경우 양호
echo $PATH
21. UMASK 설정
- UMASK 값이 022 or 0022(Group : 2, Other : 2) 이상인 경우 양호
umask
cat /etc/profile | grep umask
cat /etc/bashrc | grep umask
22. hosts 파일의 권한 설정
- 해당 파일의 권한 중 other에 쓰기권한이 부여되어 있지 않은 경우 양호
ls -al /etc | grep hosts
23. inetd.conf 파일의 권한 설정
- /etc/(x)inetd.conf 파일의 권한 중 'other'에 쓰기권한이 부여되어 있지 않은 경우 양호
chown root /etc/xinetd.conf
chmod 600 /etc/xinetd.conf
ls -l /etc/xinetd.conf
ls -al /etc/xinetd.d
24. hosts.equiv 파일의 권한 설정
- /etc/hosts.equiv 파일의 권한이 600 (rw-------) 이하이거나 존재하지 않은 경우 양호
ls -al /etc/hosts.equiv
25. 서비스 파일권한 설정
- /etc/services 파일의 권한 중 other에 쓰기권한이 부여되어 있지 않은 경우 양호
ls -al /etc/services
26. 기타 서비스 설정
- 사용하지 않는 서비스가 활성화 되어있지 않은 경우 양호
ps -ef | grep inetd | grep -v grep
ps -ef | grep ntpd | grep -v grep
ps -ef | grep smb | grep -v grep
ps -ef | grep lpad | grep -v grep
27. 서비스 Banner 관리
- Telnet, SMTP, FTP가 구동중이지 않거나 배너에 O/S 및 버전 정보가 없는 경우 양호
cat /etc/xinetd.d/telnet | grep -i 'disable'
cat /etc/issue.net
cat /etc/issue
cat /etc/vsftpd/vsftpd.conf | grep -i 'ftpd_banner'
cat /etc/mail/sendmail.cf | grep -i 'SmtpGreetingMessage'
28. SNMP 서비스 설정(community String)
- SNMP 서비스를 사용하지 않거나 Community String이 public, private가 아닌 경우 양호
ps -ef | grep -i snmp | grep -v grep
cat /etc/snmp/snmpd.conf
29. syslog 기록 설정
- 사용 중인 서비스에 대해 (warning, information, notice)을 포함하는 레벨의 로깅 설정이 되어 있고, 로그를 저장 하는 경우 양호
- 스크립트 캡쳐
30. su 로그를 기록 설정
- su 명령어의 사용 기록을 파일에 남기도록 설정되어 있는 경우 양호
cat /etc/rsyslog.conf | grep authpriv
31. 보안패치
- 서버의 서비스 용도에 따른 필수 보안 패치 항목이 패치 된 경우 양호
cat /proc/version
./comments