And Brain said,
전자금융기반시설 보안 취약점 평가 가이드 - Linux 서버(SRV-001~070) - [1] 본문
* 본 문서는 금융보안원이 발간한 『전자금융기반시설 보안 취약점 평가기준 안내서(제2022-1호)』를 준거로 하여 재작성되었으며, Linux 서버 보안 평가 방법에 국한하여 기술합니다.
1. 평가 개요
(1) 개요
보안 취약점 분석ㆍ평가란, 전자금융기반시설의 사이버 위협을 사전에 식별하고 개선하기 위한 예방 활동입니다. 금융회사 및 전자금융업자는 전자금융거래법에 따라 전자금융기반시설의 보안 취약점을 분석하고 평가해야 합니다.
(2) 평가 대상 및 주기
1. 금융회사 및 전자금융업자가 운영하는 전자금융기반시설
2. 인터넷뱅킹, 기업뱅킹, 대외구간 서버, 웹 서버 등 금융거래 시스템
3. 주요 전산 장비 및 보안 시스템
* 점검 주기
공개용 홈페이지: 연 2회 이상 점검
전자금융기반시설: 연 1회 이상 평가
2. Linux 서버(SRV) 평가 기준
2-1. SRV-001. SNMP Community 스트링 설정 미흡 (위험도 : ★★★☆☆)
SNMP(Simple Network Management Protocol)는 네트워크 장비를 원격에서 관리하는 프로토콜입니다. SNMP Community String이 public 또는 private과 같이 기본값으로 설정되어 있으면 보안에 취약.
악의적인 사용자가 이를 통해 네트워크 설정을 조회하거나 조작할 위험 존재함.
점검 방법
grep -Eiq '^(com2sec|rocommunity|rwcommunity|read-community|write-community).* (public|private)' /etc/snmp/snmpd.conf /etc/snmpd.conf /etc/snmp/conf/snmpd.conf /SI/CM/config/snmp/snmpd.conf 2>/dev/null || echo 'CLEAN'
결과 기댓값 : CLEAN
2-2. SRV-004. 불필요한 SMTP 서비스 실행 (위험도 : ★★★☆☆)
SMTP(Simple Mail Transfer Protocol)는 메일 전송을 위한 프로토콜로, 불필요하게 활성화되어 있으면 서버 정보 노출 및 스팸 메일 릴레이 공격에 악용될 수 있음.
메일 서버를 운영하지 않는 시스템에서는 SMTP 서비스를 비활성화하는 것이 보안상 안전함.
점검 방법
if ! systemctl list-units --type=service | grep -E '(sendmail|exim)'; then echo 'CLEAN'; else echo 'SMTP service is running'; fi
결과 기댓값 : CLEAN
2-3. SRV-005. SMTP 서비스의 expn/vrfy 명령어 실행 제한 미비 (위험도 : ★★★☆☆)
expn 및 vrfy 명령어는 SMTP 서비스에서 사용자 계정 정보를 수집하는 데 사용될 수 있으며, 이를 악용하면 공격자가 시스템 계정을 추측하여 인증 우회 및 피싱 공격 등에 활용할 수 있음. 따라서 해당 명령어를 차단하는 것이 보안상 중요함.
점검 방법
grep -E '^[[:space:]]*O PrivacyOptions=.*(noexpn|novrfy|goaway)' /etc/mail/sendmail.cf 2>/dev/null || ps -ef | grep -v grep | grep -q sendmail || echo 'CLEAN'
결과 기댓값 : CLEAN
2-4. SRV-006. SMTP 서비스 로그 수준 설정 미흡 (위험도 : ★★☆☆☆)
SMTP(Simple Mail Transfer Protocol) 서비스는 메일 전송을 위한 프로토콜로, 서버에서 발생하는 이벤트를 로그로 남길 수 있음.
로그 설정이 너무 낮거나 미설정된 경우, 장애 원인 분석이나 보안 침해 사고 대응이 어려워짐.
점검 방법
systemctl is-active --quiet sendmail || echo 'CLEAN'; grep -qE '^[[:space:]]*O LogLevel=[9-]' /etc/mail/sendmail.cf 2>/dev/null && echo 'CLEAN'
결과 기댓값 : CLEAN
2-5. SRV-007. 취약한 버전의 SMTP 서비스 사용 (위험도 : ★★★★★)
SMTP(Simple Mail Transfer Protocol) 서비스가 취약한 버전을 사용할 경우, 공격자는 해당 취약점을 악용하여 원격 코드 실행, 서비스 거부 공격(DoS), 계정 정보 유출 등의 공격을 수행할 가능성이 높습니다.
따라서 최신 보안 패치가 적용된 SMTP 서비스를 사용해야 합니다.
점검 방법
systemctl is-active --quiet sendmail || echo 'CLEAN'; sendmail -d0.1 -bv root 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' || echo 'CLEAN'
결과 기댓값 : CLEAN
2-6. SRV-008. SMTP 서비스의 DoS 방지 기능 미설정 (위험도 : ★☆☆☆☆)
SMTP(Simple Mail Transfer Protocol) 서비스가 DoS(Denial of Service) 공격에 노출되지 않도록 방어 기능을 설정해야 함.
DoS 공격 방지를 위한 주요 설정은 동시 연결 제한, 최대 메일 크기 제한, 시간 초과 값 설정 등이 포함됨.
점검 방법
systemctl is-active --quiet sendmail || echo 'CLEAN'; grep -qE '^[[:space:]]*O (MaxDaemonChildren|ConnectionRateThrottle|MinFreeBlocks|MaxHeadersLength|MaxMessageSize)=[1-9][0-9]*' /etc/mail/sendmail.cf 2>/dev/null && echo 'CLEAN'
결과 기댓값 : CLEAN
2-7. SRV-009. SMTP 서비스 스팸 메일 릴레이 제한 미설정 (위험도 : ★★★★☆)
SMTP(Simple Mail Transfer Protocol) 서비스에서 스팸 메일 릴레이 제한이 미설정되면, 공격자가 해당 서버를 이용하여 무단으로 스팸 메일을 전송할 가능성이 있습니다. 이는 기업의 신뢰도 저하 및 메일 서버 IP가 블랙리스트(Blacklist)에 등록될 위험을 초래할 수 있습니다.
점검 방법
systemctl is-active --quiet sendmail && (grep -qE '^R\$\\*.*Relaying denied' /etc/mail/sendmail.cf 2>/dev/null && echo 'RESTRICTED' || echo 'UNRESTRICTED') || echo 'CLEAN'
결과 기댓값 : CLEAN 또는 RESTRICTED
2-8. SRV-010. SMTP 서비스의 메일 queue 처리 권한 설정 미흡 (위험도 : ★★★★☆)
SMTP 서비스에서 메일 Queue 처리 권한이 미흡하게 설정되면, 일반 사용자가 메일 큐에 저장된 메일을 임의로 조회, 조작, 삭제할 수 있습니다.
이를 방지하기 위해 Sendmail의 RestrictQRun 설정이 활성화되어 있어야 합니다.
점검 방법
systemctl is-active --quiet sendmail && (grep -qE '^[[:space:]]*O PrivacyOptions=.*restrictqrun' /etc/mail/sendmail.cf 2>/dev/null && echo 'CLEAN' || echo 'FAILED') || echo 'CLEAN'
결과 기댓값 : CLEAN
2-9. SRV-011. 시스템 관리자 계정의 FTP 사용 제한 미비 (위험도 : ★★★☆☆)
FTP(File Transfer Protocol) 서비스는 기본적으로 암호화되지 않은 형태로 계정 및 비밀번호를 전송함.
따라서 중요한 시스템 관리자 계정(root 등)이 FTP를 통해 로그인하는 것을 차단해야 함.
일반적으로 ftpusers, user_list 등의 파일을 이용해 특정 계정의 FTP 접속을 제한할 수 있음.
점검 방법
if [ -f /etc/ftpusers ] || [ -f /etc/ftpd/ftpusers ] || [ -f /etc/vsftpd/ftpusers ] || [ -f /etc/vsftpd/user_list ]; then grep -E '^root$' /etc/ftpusers /etc/ftpd/ftpusers /etc/vsftpd/ftpusers /etc/vsftpd/user_list 2>/dev/null | grep -v '^#' || echo 'FAILED'; else echo 'CLEAN'; fi
결과 기댓값 : CLEAN
2-10. SRV-012. .netrc 파일 내 중요 정보 노출 (위험도 : ★★★★☆)
.netrc 파일은 FTP, rexec 등의 자동 로그인을 위해 사용자 계정과 비밀번호를 평문(plain text)으로 저장하는 설정 파일.
이 파일이 존재할 경우, 공격자가 이를 악용해 계정 정보를 탈취할 위험이 있기 때문에 존재해선 안 됨.
점검 방법
find / -name '.netrc' -type f 2>/dev/null | grep -qE '.' && echo 'FAILED' || echo 'CLEAN'
결과 기댓값 : CLEAN
2-11. SRV-013. FTP 서비스의 Anonymous 인증 허용 (위험도 : ★★★★★)
FTP(파일 전송 프로토콜)는 네트워크를 통해 파일을 주고받는 데 사용되는 서비스로, 보안이 미흡할 경우 공격자가 무단으로 파일을 업로드하거나 다운로드 가능.
특히 Anonymous(익명) FTP 기능이 활성화되면, 사용자 인증 없이 FTP 서버에 접근할 수 있어 악의적인 사용자가 민감한 정보에 접근하거나 악성 파일을 업로드하는 위험이 존재함.
점검 방법
grep -qE '^anonymous:' /etc/passwd 2>/dev/null && echo 'FAILED' ||
(grep -qE '^[[:space:]]*<Anonymous[[:space:]]*ftp>' /etc/proftpd.conf 2>/dev/null && echo 'FAILED' ||
grep -qE '^[[:space:]]*#?[[:space:]]*anonymous_enable[[:space:]]*=[[:space:]]*YES' /etc/vsftpd.conf 2>/dev/null && echo 'FAILED' || echo 'CLEAN')
결과 기댓값 : CLEAN
2-12. SRV-014. NFS 접근 통제 미비 (위험도 : ★★★★★)
NFS(Network File System)는 네트워크를 통해 원격 시스템과 파일을 공유할 수 있는 서비스로, 설정이 잘못되면 불특정 다수가 접근할 수 있어, 중요한 파일이 유출될 가능성이 존재함.
이를 방지하기 위해 NFS 서비스의 실행 여부, 자동 실행 설정, 접근 제어 설정, 설정 파일 권한 등을 점검해야함.
점검 방법
(grep -E ".*\s(\*|everyone).*" /etc/exports | grep -vq "^#" && echo "NFS 접근제어 설정: FAIL" || echo "NFS 접근제어 설정: PASS") && \
(stat -c '%a %U' /etc/exports | grep -Eq "^[0-6][04]* root$" && echo "NFS 설정파일 접근권한: PASS" || echo "NFS 설정파일 접근권한: FAIL")
결과 기댓값 :
NFS 접근제어 설정: PASS
NFS 설정파일 접근권한: PASS
2-13. SRV-015. 불필요한 NFS 서비스 실행 (위험도 : ★★★★☆)
NFS(Network File System)는 네트워크를 통해 원격 시스템과 파일을 공유할 수 있는 서비스로, 설정이 잘못되면 불특정 다수가 접근할 수 있어, 중요한 파일이 유출될 가능성이 존재함.
이를 방지하기 위해 NFS 서비스의 실행 여부, 자동 실행 설정, 접근 제어 설정, 설정 파일 권한 등을 점검해야함.
점검 방법
systemctl is-active nfs-server | grep -q "^inactive$" && echo 'PASS' || echo 'FAIL'
결과 기댓값 : PASS
2-14. SRV-016. 불필요한 RPC서비스 활성화 (위험도 : ★★★★☆)
RPC(Remote Procedure Call) 서비스는 원격 시스템에서 프로세스를 실행할 수 있도록 하는 기능으로, NFS나 NIS 같은 네트워크 서비스에서 사용됨. 하지만 RPC가 활성화된 상태에서 필요 없는 서비스까지 열려 있으면 공격자가 이를 악용해 시스템에 침투할 가능성이 존재함.
점검 방법
rpcinfo -p | egrep 'rpc.cmsd|rpc.ttdbserverd|sadmind|rusersd|walld|sprayd|rstatd|rpc.nisd|rexd|rpc.pcnfsd|rpc.statd|rpc.ypupdated|rpc.rquotad|kcms_server|cachefsd' | awk '{print; found=1} END {if (!found) print "CLEAN"}'
결과 기댓값 : CLEAN
2-15. SRV-022. 계정의 비밀번호 미설정, 빈 암호 사용 관리 미흡 (위험도 : ★★★☆☆)
시스템 계정에 비밀번호가 설정되지 않거나 빈 비밀번호("", null 등)가 허용되면, 누구나 해당 계정으로 로그인할 수 있어 보안 위협이 발생. 공격자가 무단으로 계정을 사용해 파일을 조작하거나 서비스에 접근할 수 있기 때문에, 모든 계정에는 반드시 강력한 비밀번호가 설정되어 있어야 함.
점검 방법
nologin=$(grep -E '/sbin/nologin|/bin/false' /etc/passwd | cut -d: -f1 | tr '\n' '|'); awk -F: '($2=="") {print $1}' /etc/shadow | grep -Ev "^(${nologin%|})$" || echo 'CLEAN'
결과 기댓값 : CLEAN
2-16. SRV-025. 취약한 hosts.equiv 또는 .rhosts 설정 존재 (위험도 : ★★★★★)
hosts.equiv와 .rhosts 파일은 원격 인증 없이 rlogin, rexec 등의 명령어를 실행할 수 있도록 허용하는 설정을 포함. 특히, 이 파일에 + +가 존재하면 모든 사용자가 인증 없이 시스템에 접근할 수 있어 심각한 보안 위험이 발생.
점검 방법
(stat -c '%a %U' /etc/hosts.equiv $HOME/.rhosts 2>/dev/null | awk '$1 <= 600 && ($2 == "root" || $2 == ENVIRON["USER"])' && ! grep -qE '^\s*\+' /etc/hosts.equiv $HOME/.rhosts 2>/dev/null) && echo "CLEAN" || echo "FAILED"
결과 기댓값 : CLEAN
2-17. SRV-026. root 계정 원격 접속 제한 미비 (위험도 : ★★★★★)
root 계정의 원격 접속이 허용되면 공격자가 무차별 대입 공격(Brute Force)으로 관리자 권한을 탈취할 가능성이 높아짐.
Telnet이 활성화되었거나 SSH에서 PermitRootLogin yes로 설정되었다면 보안에 취약함.
보안성을 강화하기 위해 root의 직접적인 원격 로그인은 차단하는 것이 원칙.
점검 방법
(ss -tulnp | grep -qE ":(awk -F'[/ ]+' '/^telnet/ {print $2}' /etc/services)\s+.*LISTEN" && echo 'FAILED Telnet Active') || (grep -qE '^\s*PermitRootLogin\s+yes' /etc/ssh/sshd_config && echo 'FAILED SSH Root Login Allowed') || echo 'CLEAN'
결과 기댓값 : CLEAN
2-18. SRV-027. 서비스 접근 IP 및 포트 제한 미비 (위험도 : ★★★★☆)
외부에서 무차별 대입(Brute-force) 공격이 가능하므로, SSH(22번 포트) 등의 서비스 접근을 허용된 IP로만 제한해야 함.
iptables 또는 TCP Wrapper(/etc/hosts.allow, /etc/hosts.deny)를 사용해 접근을 제어해야 함.
설정이 미흡하면 누구나 서버에 접속을 시도할 수 있어 보안 취약점이 발생함
점검 방법
(iptables -L INPUT -n | grep -qE 'dpt:22' && echo "FAILED: SSH unrestricted") || \
(! grep -qE '^ALL:ALL' /etc/hosts.deny && echo "FAILED: TCP Wrapper hosts.deny not set") || \
(! grep -qE '^(sshd|ALL):\s+[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' /etc/hosts.allow && echo "FAILED: hosts.allow not restricted") || \
echo "CLEAN"
결과 기댓값 : CLEAN
2-19. SRV-028. 원격 터미널 접속 타임아웃 미설정 (위험도 : ★★☆☆☆)
사용자가 일정 시간 동안 조작하지 않으면 터미널 세션을 자동 종료해야 보안이 유지됨.
TMOUT이 설정되지 않았거나 너무 짧으면 보안 위험이 발생함. 최소 600초(10분) 이상으로 설정.
점검 방법
grep -qE '^\s*TMOUT\s*=\s*[6-9][0-9]{2,}' /etc/profile /etc/bashrc 2>/dev/null && echo "PASSED" || echo "FAILED"
결과 기댓값 : PASSED
2-20. SRV-034. 불필요한 서비스 활성화 (위험도 : ★★★☆☆)
불필요한 서비스가 활성화되면 성능 저하 및 보안 취약점 발생 가능
취약한 서비스(automountd, NetBIOS, DMI, WebDAV, RDS 등)가 실행 중이면 해킹 공격에 악용될 위험
업무와 관계없는 서비스는 비활성화하여 보안성을 강화해야 함
점검 방법
systemctl list-units --type=service --state=running | grep -E 'autofs|smb|nmb|dmidecode|davfs|rds' && echo "FAILED" || echo "CLEAN"
결과 기댓값 : CLEAN
2-21. SRV-035. 취약한 서비스 활성화 (위험도 : ★★★★★)
tftp, talk, ntalk, finger, r 계열 서비스(rsh, rlogin, rexec), echo, discard, daytime, chargen, NIS, NIS+ 등은 보안이 취약한 서비스로 알려져 있음.
이러한 서비스가 실행 중이면 공격자가 이를 악용해 시스템에 침입할 가능성이 높아짐.
불필요한 서비스는 즉시 비활성화해야 함.
점검 방법
systemctl list-units --type=service --state=running | grep -E 'tftp|talk|ntalk|finger|rsh|rlogin|rexec|echo|discard|daytime|chargen|ypserv|yppasswdd|ypbind' && echo 'FAILED' || echo 'CLEAN'
결과 기댓값 : CLEAN
2-22. SRV-037. 취약한 FTP 서비스 실행 (위험도 : ★★★☆☆)
FTP(File Transfer Protocol)는 파일을 전송하는 프로토콜이지만, 기본 FTP 서비스(vsftpd, proftpd 등)는 보안이 취약함.
특히, FTP는 기본적으로 데이터를 암호화하지 않기 때문에 사용자 계정과 비밀번호가 평문(plaintext)으로 전송될 위험이 있음.
또한, 익명(anonymous) 로그인 허용 시 공격자가 무단으로 파일을 업로드하거나 다운로드할 가능성이 있음.
점검 방법
systemctl is-active vsftpd proftpd 2>/dev/null | grep -q '^active' || echo 'inactive'
결과 기댓값: inactive
2-23. SRV-040. 웹 서비스 디렉터리 리스팅 방지 설정 미흡 (위험도 : ★★★★★)
디렉터리 리스팅(Directory Listing)이 활성화되면, 해당 디렉터리에 기본 문서(index.html 등)가 없을 경우 모든 파일 목록이 노출될 수 있음.
이로 인해 백업 파일, 설정 파일, 소스 코드 등이 공격자에게 노출될 위험이 있음.
웹 서버(Apache, Nginx 등) 설정을 통해 디렉터리 리스팅을 비활성화해야 함.
점검 방법
grep -E '^[^#]*Options\s+Indexes' /etc/httpd/conf/httpd.conf 2>/dev/null && echo 'FAILED' || echo 'CLEAN'
결과 기댓값 : CLEAN
2-24. SRV-042. 웹 서비스 상위 디렉터리 접근 제한 설정 미흡 (위험도 : ★★★★★)
웹 서버에서 상위 디렉터리 접근(..)이 허용되면, 사용자가 웹 루트 바깥의 시스템 파일까지 접근할 수 있는 위험이 있음.
잘못된 설정이 있으면 공격자가 /etc/passwd, config 파일 등 중요한 시스템 정보를 열람할 가능성이 있음.
웹 서버(Apache, Nginx 등) 설정에서 상위 디렉터리 접근을 차단해야 함.
점검 방법
if ! pgrep -x httpd >/dev/null; then echo 'CLEAN'; elif [ -f /etc/httpd/conf/httpd.conf ]; then grep -E '^[^#]*AllowOverride' /etc/httpd/conf/httpd.conf 2>/dev/null || echo 'MISSING'; elif [ -f /usr/local/apache2/conf/httpd.conf ]; then grep -E '^[^#]*AllowOverride' /usr/local/apache2/conf/httpd.conf 2>/dev/null || echo 'MISSING'; else echo 'MISSING'; fi
결과 기댓값 : CLEAN
2-25. SRV-043. 웹 서비스 경로 내 불필요한 파일 존재 (위험도 : ★★★★☆)
웹 서비스 설치 시 기본적으로 생성되는 설명 파일, 샘플 페이지, 테스트 페이지 등이 남아 있으면 공격자가 이를 악용할 수 있음.
버전 정보, 설정 정보, 기본 페이지 등을 통해 공격자가 취약점을 파악하는 데 도움을 줄 수 있음.
기본적으로 생성된 불필요한 파일을 삭제해야 보안성이 강화됨.
점검 방법
if ! pgrep -x httpd >/dev/null; then echo 'CLEAN'; elif [ -d /etc/httpd/htdocs/manual ] || [ -d /usr/local/apache2/manual ]; then echo 'EXISTS'; else echo 'CLEAN'; fi
결과 기댓값 : CLEAN
2-26. SRV-044. 웹 서비스 파일 업로드 및 다운로드 제한 여부 확인 (위험도 : ★★★★☆)
웹 서버에 파일 업로드 및 다운로드 용량 제한이 없으면, 대량의 파일 업로드로 인해 디스크 공간이 가득 차거나 서비스 거부(DoS) 공격이 발생할 수 있음.
공격자가 대형 파일을 지속적으로 업로드하거나 다운로드하여 서버의 성능을 저하시킬 가능성이 있음.
client_max_body_size(Nginx) 또는 LimitRequestBody(Apache)를 설정하여 용량 제한을 적용해야 함.
점검 방법
if ! pgrep -x httpd >/dev/null; then echo 'CLEAN'; elif grep -E '^[^#]*LimitRequestBody' /etc/httpd/conf/httpd.conf /usr/local/apache2/conf/httpd.conf 2>/dev/null; then echo 'EXISTS'; else echo 'MISSING'; fi
결과 기댓값 : CLEAN 또는 EXISTS
2-27. SRV-045. 웹 서비스 프로세스 권한 제한 미비 (위험도 : ★★★★★)
웹 서버(Apache, Nginx 등)가 root 권한으로 실행되면, 보안 취약점이 발생할 경우 공격자가 시스템 전체를 장악할 수 있음.
웹 서버는 일반적으로 웹 요청을 처리하기 위해 동작하는데, root 권한으로 실행되면 해커가 공격 시 높은 권한을 그대로 탈취 가능함.
따라서 웹 프로세스(httpd, apache2, nginx)는 root 권한이 아닌 일반 사용자(apache, www-data 등) 계정으로 실행되어야 함.
점검 방법
(ps -eo user,comm | grep -E 'httpd|apache2' | awk '$1=='root'{exit 1}') && \
(grep -E '^[^#]*User|^[^#]*Group' /etc/httpd/conf/httpd.conf 2>/dev/null | awk '$2=='root'{exit 1}') && \
echo 'CLEAN' || echo 'FAILED'
결과 기댓값 : CLEAN
2-28. SRV-046. 웹 서비스 경로 설정 미흡 (위험도 : ★★★★☆)
웹 서버의 DocumentRoot(문서 루트 경로)가 적절하게 설정되지 않으면, 보안 취약점이 발생할 가능성이 있음.
DocumentRoot가 시스템의 중요 경로와 분리되지 않은 경우, 웹 서버가 의도치 않게 민감한 파일(예: 설정 파일, 소스 코드, 백업 파일 등)을 노출할 수 있음.
기본 경로(/var/www/html, /usr/local/apache2/htdocs 등)를 사용하면, 예상 가능한 디렉터리 구조를 통해 공격자가 경로를 추측하고 침투할 가능성이 있음.
점검 방법
if ! pgrep -x httpd >/dev/null; then echo 'CLEAN'; elif grep -E '^[^#]*DocumentRoot' /etc/httpd/conf/httpd.conf /usr/local/apache2/conf/httpd.conf 2>/dev/null | grep -E '(/usr/local/apache/htdocs|/usr/local/apache2/htdocs|/var/www/html)'; then echo 'DEFAULT'; else echo 'CUSTOM'; fi
결과 기댓값 : CLEAN 또는 CUSTOM
2-29. SRV-047. 웹 서비스 경로 내 불필요한 링크 파일 존재 (위험도 : ★★★★☆)
웹 서비스가 존재하는 경로 내에 불필요한 심볼릭 링크(Symbolic Link, Symlink) 파일이 있을 경우 보안 취약점이 발생할 수 있음.
공격자가 심볼릭 링크를 이용해 웹 서비스가 접근할 수 없는 민감한 시스템 파일을 노출할 가능성이 있음.
특히, FollowSymLinks 옵션이 활성화된 경우 심볼릭 링크를 따라가며, 웹 서버를 통한 우회 공격 가능성이 존재함.
점검 방법
if ! pgrep -x httpd >/dev/null; then echo 'CLEAN'; elif grep -E '^[^#]*Options.*FollowSymLinks' /etc/httpd/conf/httpd.conf /usr/local/apache2/conf/httpd.conf 2>/dev/null; then echo 'EXISTS'; else echo 'CLEAN'; fi
결과 기댓값 : CLEAN
2-30. SRV-048. 불필요한 웹 서비스 실행 (위험도 : ★★★☆☆)
웹 서버(Apache, WebtoB 등)가 필요하지 않은 시스템에서 실행되고 있다면, 보안 취약점이 발생할 가능성이 높아짐.
공격자가 불필요한 웹 서비스를 통해 원격 접속, 파일 노출, 서비스 거부(DoS) 등의 공격을 시도할 수 있음.
업무와 무관하게 실행되는 웹 서버는 비활성화하여 보안성을 높여야 함.
점검 방법
pgrep -x httpd >/dev/null || pgrep -x apache2 >/dev/null || pgrep -x webtob >/dev/null && echo 'FAILED' || echo 'CLEAN'
결과 기댓값 : CLEAN
2-31. SRV-060. 웹 서비스 기본 계정(아이디 또는 비밀번호) 미변경 (위험도 : ★★★★★)
웹 서비스(Apache, Tomcat 등) 설치 시 기본적으로 제공되는 계정(ID, 패스워드)이 변경되지 않았을 경우, 공격자가 이를 이용해 시스템에 접근할 가능성이 높아짐.
공격자는 기본 계정을 사용하여 웹 서버 설정을 변경하거나, 중요 정보에 접근하는 등의 공격을 수행할 수 있음.
기본 계정은 반드시 비활성화하거나 안전한 사용자 계정으로 변경해야 함.
점검 방법
if pgrep -f tomcat >/dev/null; then CONF=$(find / -type f -name "tomcat-users.xml" 2>/dev/null | head -n 1); [ -f "$CONF" ] && grep -qE '<user\s+username="(admin|tomcat)"' "$CONF" 2>/dev/null && echo "FAILED" || echo "CLEAN"; else echo "CLEAN"; fi
결과 기댓값 : CLEAN
2-32. SRV-062. DNS 서비스 정보 노출 (위험도 : ★☆☆☆☆)
DNS 서비스(BIND)가 운영 중일 경우, 설정 파일에 버전 정보(version 옵션)가 포함되어 있으면 공격자가 이를 활용하여 취약점을 탐색할 가능성이 높음.
점검 방법
systemctl is-active named >/dev/null 2>&1 && { [ -f /etc/named.conf ] && grep -qEi '^\s*version' /etc/named.conf && echo 'FAILED' || echo 'CLEAN'; } || echo 'CLEAN'
결과 기댓값 : CLEAN
2-33. SRV-063. DNS Recursive Query 설정 미흡 (위험도 : ★★★☆☆)
DNS 서버가 불필요하게 Recursive Query(재귀 쿼리)를 허용하고 있으면, DNS Cache Poisoning(캐시 변조 공격) 및 DDoS 증폭 공격의 대상이 될 수 있음.
점검 방법
systemctl is-active named >/dev/null 2>&1 && { [ -f /etc/named.conf ] && grep -qE '^\s*recursion\s+yes' /etc/named.conf && echo 'FAILED' || echo 'CLEAN'; } || echo 'CLEAN'
결과 기댓값 : CLEAN
2-34. SRV-064. 취약한 버전의 DNS 서비스 사용 (위험도 : ★★★★★)
DNS 서비스의 경우 대부분의 버전에서 취약점이 보고되고 있기 때문에 O/S 관리자, 서비스 개발자가 패치 적용에 따른 서비스 영향 정도를 정확히 파악하여 주기적인 패치 적용 정책 수립 후 적용 필요함.
점검 방법
pgrep -x named >/dev/null && named -v 2>/dev/null | grep -oE '[0-9]+\\.[0-9]+\\.[0-9]+' || echo 'CLEAN'
결과 기댓값 : CLEAN 또는 9.10 이상 버전 (2025.2.20 기준)
2-35. SRV-066. DNS Zone Transfer 설정 미흡 (위험도 : ★★★★☆)
DNS Zone Transfer(AXFR) 기능이 적절히 제한되지 않으면 공격자가 내부 네트워크 정보를 쉽게 수집할 수 있으며, 이를 통해 추가적인 공격이 가능.
점검 방법
if ! pgrep -x named >/dev/null; then echo 'CLEAN'; else grep -qE 'allow-transfer|xfrnets' /etc/named.conf /etc/named.boot 2>/dev/null && echo 'CLEAN' || echo 'MISSING'; fi
결과 기댓값: CLEAN
2-36. SRV-069. 비밀번호 관리정책 설정 미비 (위험도 : ★★★★★)
적절한 비밀번호 관리 정책이 없을 경우, 공격자가 추측하기 쉬운 패스워드를 이용한 계정 탈취 또는 Brute-force(무차별 대입) 공격을 시도할 가능성이 높음.
점검 방법
if ! grep -Eq '^[[:space:]]*minlen[[:space:]]*=[[:space:]]*([8-9]|[1-9][0-9]+)' /etc/security/pwquality.conf || \
! grep -Eq '^[[:space:]]*ucredit[[:space:]]*=[[:space:]]*-1' /etc/security/pwquality.conf || \
! grep -Eq '^[[:space:]]*lcredit[[:space:]]*=[[:space:]]*-1' /etc/security/pwquality.conf || \
! grep -Eq '^[[:space:]]*dcredit[[:space:]]*=[[:space:]]*-1' /etc/security/pwquality.conf || \
! grep -Eq '^[[:space:]]*ocredit[[:space:]]*=[[:space:]]*-1' /etc/security/pwquality.conf || \
! grep -Eq '^[[:space:]]*difok[[:space:]]*=[[:space:]]*[1-9][0-9]*' /etc/security/pwquality.conf || \
! grep -Eq '^PASS_MAX_DAYS[[:space:]]+[0-9]{1,2}$' /etc/login.defs; then
echo "FAILED";
else
echo "CLEAN";
fi
결과 기댓값 : CLEAN
2-37. SRV-070. 취약한 패스워드 저장 방식 사용 (위험도 : ★★★★★)
운영체제에서 비밀번호를 안전하게 저장하지 않을 경우, 공격자가 해시를 크랙하여 계정을 탈취할 수 있음.
특히 약한 암호화 알고리즘(MD5, DES)을 사용할 경우, Brute-force(무차별 대입) 및 레인보우 테이블 공격에 쉽게 노출.
점검 방법
[ -f /etc/shadow ] && grep -Eq '^[^:]+:x:' /etc/passwd && echo "CLEAN" || echo "FAILED"
결과 기댓값 : CLEAN
SRV-073 ~ 174 ->
'IT > 보안' 카테고리의 다른 글
랜섬웨어(Ransomware) 공격, 원리와 그 방어 (1) | 2025.02.24 |
---|---|
패킷 스니핑(Packet Sniffing) 공격, 원리와 그 방어 (0) | 2025.02.24 |
Nessus, 사이버 보안 탐정의 수사 노트 (1) | 2025.02.18 |
AWS로 배우는 IAM, 넌 지나갈 수 없다. (+Spring boot 연동 예제) (1) | 2025.02.12 |
버퍼 오버플로우(Buffer Overflow) 공격, 원리와 그 방어 (1) | 2025.02.11 |