nugawiki # archive of experience and knowledge

nuga@nugawiki: $ cat ./docs/$1

서버 보안 설정 체크리스트

업데이트 2026-07-22 조회수

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. 계정잠금 임계값 설정

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