본문 바로가기
Linux

[Linux] 보안 취약점 점검 가이드 - 서비스 관리

by 오송나라 2024. 4. 17.
728x90
SMALL
안녕하세요. 오송입니다.

 

오늘은 간단하게 Linux 보안 취약점 중 서비스 관리 부분의 조치사항 조치방법에 대해 알아보겠습니다.

 

천천히 따라오시면서 모르는 부분이 있으시면, 댓글 달아주시면 됩니다.


1. 서비스 관리

1.1 Finger 서비스 비활성화

  • 비인가자에게 사용자 정보가 조회되어 패스워드 공격을 통한 시스템 권한 탈취 가능성이 있으므로 사용하지 않는다면 해당 서비스를 중지하여야 한다.
진단 기준
양호 finger 서비스가 비활성화 되어 있는 경우
취약 finger 서비스가 활성화 되어 있는 경우

1.1.1 진단방법

# xinetd인 경우 /etc/xinetd.d/finger 파일에서 서비스 비활성화 여부 확인
cat /etc/xinetd.d/finger | grep disable

# inetd인 경우 /etc/inetd.conf 파일에서 finger 서비스 라인 #처리(주석) 또는 삭제되어 있는지 확인
cat /etc/inetd.conf | grep finger

1.1.2 조치방법

# /etc/xinetd.d/finger 파일에서 서비스 비활성화 설정
vi /etc/xinetd.d/finger

disable		= no

1.2 Anonymous FTP 비활성화

  • Anonymous FTP(익명 FTP)를 사용 시 anonymous 계정으로 로그인 후 디렉터리에 쓰기 권한이 설정되어 있다면 악의적인 사용자가 local exploit을 사용하여 시스템에 대한 공격을 가능하게 한다.
진단 기준
양호 Anonymous FTP 접속을 차단한 경우
취약 Anonymous FTP 접속을 차단하지 않은 경우

1.2.1 진단방법

# Default FTP를 사용하는 경우 /etc/passwd 파일에 ftp 계정 존재 여부 확인
cat /etc/passwd | grep ftp

# ProFTP를 사용하는 경우 proftpd.conf 파일에서 <Anonymous ~ ftp> 부분 확인
# UserAlias 항목이 주석처리 되어있거나, 없으면 양호

cat /etc/proftpd/proftpd.conf
UserAlias		anonymous ftp

# vsFTP 사용하는 경우 vsftpd.conf 파일에서 anonymous_enable 값이 No로 설정되어 있는지 확인
cat /etc/vsftpd/vsftpd.conf
anonymous_enable = Yes

1.2.2 조치방법

# 일반 FTP - Anonymous FTP 접속 제한 설정 방법 /etc/passwd 파일에서 ftp 또는 anonymous 계정 삭제
userdel ftp

# ProFTP - Anonymous FTP 접속 제한 설정 방법
# /etc/passwd 파일에서 ftp 계정 삭제
userdel ftp

# vsFTP - Anonymous FTP 접속 제한 설정 방법
# vsFTP 설정파일("/etc/vsftpd/vsftpd.conf" 또는 "etc/vsftpd.conf") 에서
anonymous...  enalbe=NO 설정
Anonymous FTP를 사용하지 않을 경우 영향 없음

1.3 r 계열 서비스 비활성화

  • 서비스 포트가 열려있을 경우, 비인가지에 의한 중요 정보 유출 및 시스템 장애 발생 등 침해사고의 원인이 될 수 있다.
진단 기준
양호 r 계열 서비스(rlogin, rsh, rexec)가 비활성화 되어 있는 경우
취약 r 계열 서비스(rlogin, rsh, rexec)가 활성화 되어 있는 경우

1.3.1 진단방법

# xinetd인 경우 rsh, rlogin, rexec (shell, login, exec) 서비스 비활성화 여부 확인
cat /etc/xinetd.d/rsh | grep disable
cat /etc/xinetd.d/rlogin | grep disable
cat /etc/xinetd.d/rexec | grep disable

# inetd인 경우 rsh, rlogin, rexec (shell, login, exec) 서비스 비활성화 여부 확인
cat /etc/inetd.conf | rgrep "rsh|rlogin|rexec" (주석 처리 되어 있으면 비활성화)

1.3.2 조치방법

# vi 편집기를 사용해서 /etc/xinetd.d/ 디렉터리 내 rlogin, rsh, rexec 파일 오픈 후 아래와 같이 설정
- /etc/xinetd.d/rlogin 파일
- /etc/xinetd.d/rsh 파일
- /etc/xinetd.d/rexec 파일

service			rlogin
{
...
disable				= yes
}
rlogin, rshell, rexec 서비스는 backup 등의 용도로 종종 사용되며 /etc/hosts.equiv 또는 각 홈 디렉터리 밑에 있는 rhosts 파일에 설정 유무를 확인하여 해당 파일이 존재하지 않거나 해당 파일 내에 설정이 없다면 사용하지 않는 것으로 파악

1.4 DoS 공격에 취약한 서비스 비활성화

  • 해당 서비스가 활성화되어 있는 경우 시스템 정보 유출 및 DoS(서비스 거부 공격)의 대상이 될 수 있다.
진단 기준
양호 Dos 공격에 취약한 echo, discard, daytime, chargen 서비스가 비활성화된 경우
취약 Dos 공격에 취약한 echo, discard, daytime, chargen 서비스가 활성화된 경우

1.4.1 진단방법

# xinetd인 경우 /etc/xinetd.d/ 디렉터리 내 echo, discard, daytime, chargen 서비스 비활성화 여부 확인
cat /etc/xinetd.d/echo | grep disable
cat /etc/xinetd.d/discard | grep disable
cat /etc/xinetd.d/daytime | grep disable
cat /etc/xinetd.d/chargen | grep disable

# inetd인 경우 /etc/inetd.conf 파일에서 echo, discard, daytime, chargen 서비스 비활성화 여부 확인
cat /etc/inetd.conf | grep "echo|discard|daytime|chargen" (주석 처리 되어 있으면 비활성화)

1.4.2 조치방법

# vi 편집기로 /etc/xinetd.d/ 디렉터리 내 echo, discard, daytime, chargen 파일 오픈
# 아래와 같이 설정
/etc/xinetd.d/echo 파일(echo-dgramm, echo-stream)
/etc/xinetd.d/discard 파일(discard-dgramm, discard-stream)
/etc/xinetd.d/daytime 파일(daytime-dgramm, daytime-stream)
/etc/xinetd.d/chargen 파일(chargen-dgramm, chargen-stream)
service echo

**************************************************
{
disable		= yes
id			= echo-stream
type		= internal
wait		= no
socket-type	= stream
}
**************************************************

# xinetd 서비스 재시작
service xinetd restart
728x90

1.5 NFS 서비스 비활성화

  • 비인가자가 NFS 서비스로 인가되지 않은 시스템이 NFS 시스템 마운트하여 비인가된 시스템 접근 및 파일변조 등의 침해 행위 가능성이 존재한다.
진단 기준
양호 NFS 서비스 관련 데몬이 비활성화 되어 있는 경우
취약 NFS 서비스 관련 데몬이 활성화 되어 있는 경우

1.5.1 진단방법

# NFS 데몬 구동 여부 확인
ps -ef | grep nfsd

1.5.2 조치방법

# NFS 데몬(nfsd)을 중지
kill -9 [PID]
showmount, share, exportfs 동의 명령어를 사용하여 로컬 서버에 마운트 되어 있는 디렉터리 확인 및 NFS 설정파일에 공유디렉터리 설정 여부 확인 후 해당 디렉터리가 존재하지 않을 경우 서비스 중지 가능

1.6 NFS 접근통제

  • 접근제한 설정이 적절하지 않을 경우 인증절차 없이 비인가자의 디렉터리나 파일의 접근이 가능하며, 해당 공유 시스템에 원격으로 마운트하여 중요 파일을 변조하거나 유출할 위험이 있다.
진단 기준
양호 NFS 서비스 사용 시 everyone 공유를 제한한 경우
취약 NFS 서비스 사용 시 everyone 공유를 제한하지 않은 경우

1.6.1 진단방법

# everyone으로 시스템이 마운트 되어 있는지 확인
showmount -e hostname

# /etc/exports 파일에서 접근 통제 설정 여부 확인
cat /etc/exports

- 취약한 설정 예 : /var/www/img		*(ro,all_squash)
- 양호한 설정 예 : /data				172.27.0.0/16(rw,no_root_squash)

1.6.2 조치방법

# everyone 마운트 제거
umount "파일시스템 이름"

# /etc/exports 파일에서 접근 통제 설정
vi /etc/exports
(예) /data		172.27.0.0/16(rw,no_root_squash)
showmount, share, exportfs 등의 명령어를 사용하여 로컬 서버에 마운트 되어 있는 디렉터리 확인 및 NFS 설정파일에 공유디렉터리 설정 여부 확인 후 해당 디렉터리가 존재하지 않을 경우 서비스 중지 가능

1.7 automountd 제거

  • 파일 시스템의 마운트 옵션을 변경하여 root 권한을 획득할 수 있으며, 로컬 공격자가 automountd 프로세스 권한으로 임의의 명령을 실행할 수 있다.
진단 기준
양호 automount 서비스가 비활성화 되어 있는 경우
취약 automount 서비스가 활성화 되어 있지 않은 경우

1.7.1 진단방법

# automountd 서비스 데몬 확인
ps -ef | grep auto

1.7.2 조치방법

# automountd 서비스 데몬 실행 중지
kill -p [PID]

# 시스템 재시작 시 automount가 시작되지 않도록 설정
방법 1. 부팅스크립트에서 automountd 제거
chkconfig --level 0123456 autofs off
방법 2. 아래와 같이 파일경로 확인 후 파일명 변경
mv /etc/rc2.d/S28autofs		/etc/rc2.d/S28autofs.orig
NFS 및 삼바(Samba) 서비스에서 사용 시 automountd 사용 여부 확인이 필요하며, 적용 시 CDROM의 자동 마운트는 이뤄지지 않는다 (/etc/auto.*, /etc/auto_* 파일 확인하여 필요 여부 확인)

1.8 RPC 서비스 확인

  • 버퍼 오버플로우(Buffer Overflow), Dos, 원격실행 등의 취약성이 존재하는 RPC 서비스를 통해 비인가자의 root 권한 획득 및 침해사고 발생 위험이 있으므로 서비스를 중지하여야 한다.
진단 기준
양호 불필요한 RPC 서비스가 비활성화 되어 있는 경우
취약 불필요한 RPC 서비스가 활성화 되어 있는 경우

1.8.1 진단방법

# xinetd 인 경우 /etc/xinetd.d/ 디렉터리 내 RPC 서비스 파일에서 비활성화 여부 확인
cat /etc/xinetd.d/rstatd

# inetd인 경우 /etc/inetd.conf 파일에서 불필요한 RPC 서비스 비활성화 여부 확인
cat /etc/inetd.conf | grep rpc.cmsd

1.8.2 조치방법

# vi 편집기로 /etc/xinetd.d/ 디렉터리 내의 불필요한 RPC 서비스 파일을 오픈 후 아래와 같이 설정

************************************
service	rstatd
{
	disable	= yes
    ...이하생략...
}
************************************

1.9 NIS, NIS+ 점검

  • 보안상 취약한 서비스인 NIS를 사용하는 경우 비인가자가 타시스템의 root 권한 획득이 가능하므로 사용하지 않는 것이 가장 바람직하나 만약 NIS를 사용해야 하는 경우 사용자 정보보안에 많은 문제점을 내포하고 있는 NIS보다 NIS+를 사용하는 것을 권장한다.
진단 기준
양호 NIS, NIS+ 서비스가 구동 중이지 않을 경우
취약 NIS, NIS+ 서비스가 구동 중일 경우

1.9.1 진단방법

# NIS, NIS+ 서비스 구동 확인
ps -ef | grep "ypserv|ypbind|ypxfrd|rpc.yppasswdd|rpc.ypupdated" | grep -v "grep"

1.9.2 조치방법

# NFS 서비스 데몬 중지
kill -9 [PID]

1.10 tftp, talk 서비스 비활성화

  • 사용하지 않는 서비스나 취약점이 발표된 서비스 운용 시 공격자의 공격 시도가 가능하다.
진단 기준
양호 tftp, talk 서비스가 비활성화 되어 있는 경우
취약 tftp, talk 서비스가 활성화 되어 있는 경우

1.10.1 진단방법

# xinetd 인 경우 /etc/xinetd.d/ 디렉터리 내 tftp, talk, ntalk 서비스 파일에서 비활성화 여부 확인
cat /etc/xinetd.d/tftp

# inetd 인 경우 /etc/inetd.conf 파일에서 tftp, talk, ntalk 서비스 비활성화 여부 확인
cat /etc/inetd.conf | grep "tftp|talk|"

1.10.2 조치방법

# vi 편집기로 /etc/xinetd.d/ 디렉터리 내 tftp, talk, ntalk 파일 오픈 후 아래와 같이 설정
- /etc/xinetd.d/tftp 파일
- /etc/xinetd.d/talk 파일
- /etc/xinetd.d/ntalk 파일

***********************************
service		tftp
{
		...생략...
        disable = yes
}
***********************************
SMALL

1.11 Sendmail 버전 점검

  • 취약점이 발견된 Sendmail 버전의 경우 버퍼 오버플로우 공격에 의한 시스템 권한 획득 및 주요 정보 유출 가능성이 있다.
진단 기준
양호 Sendmail 버전을 정기적으로 점검하고, 최신 버전 패치를 했을 경우
취약 Sendmail 버전을 정기적으로 점검하지 않거나, 최신 버전 패치가 되어 있지 않은 경우

1.11.1 진단방법

# Sendmail 프로세스 확인
ps -ef | grep sendmail

# Sendmail 버전 확인
cat /etc/mail/sendmail.cf | grep DZ

1.11.2 조치방법

# Sendmail 서비스 실행 여부 및 버전 점검 후, http://www.sendmail.org/ 또는 각 OS 벤더사의 보안 패치 설치

1.12 스팸 메일 릴레이 제한

  • SMTP 서버의 릴레이 기능을 제한하지 않는 경우, 악의적인 사용목적을 가진 사용자들이 스팸메일 서버로 사용하거나 Dos 공격의 대상이 될 수 있다.
진단 기준
양호 SMTP 서비스를 사용하지 않거나 릴레이 제한이 설정되어 있는 경우
취약 SMTP 서비스를 사용하며 릴레이 제한이 설정되어 있지 않은 경우

1.12.1 진단방법

# SMTP 서비스 사용 여부 및 릴레이 제한 옵션 확인
ps -ef | grep sendmail | grep -v "grep"
cat /etc/mail/sendmail.cf | grep "R$ \*" | grep "Relaying denied"

1.12.2 조치방법

# vi 편집기로 sendmail.cf 설정파일 오픈 후 아래와 같이 주석 제거
(수정 전) #R$* $#error $@ 5.7.1 $: "550 Relaying denied"
(수정 후) R$* $#error $@ 5.7.1 $: "550 Relaying denied"

# 특정 IP, domain, Email Address 및 네트워크에 대한 sendmail 접근 제한 확인
vi /etc/mail/access

1.13 일반사용자의 Sendmail 실행 방지

  • 일반 사용자가 q 옵션을 이용해서 메일큐, sendmail 설정을 보거나 메일큐를 강제적으로 drop 시킬 수 있어 악의적으로 SMTP 서버의 오류를 발생시킬 수 있다.
진단 기준
양호 SMTP 서비스 미사용 또는 일반 사용자의 Sendmail 실행 방지가 설정된 경우
취약 SMTP 서비스 사용 또는 일반 사용자의 Sendmail 실행 방지가 설정되지 않은 경우

1.13.1 진단방법

# sendmail.cf 파일에서 restrictqrun 옵션 설정 여부 확인
cat /etc/mail/sendmail.cf | grep PrivacyOptions
O PrivacyOptions=authwarnings, novrfy, noexpn

1.13.2 조치방법

# vi 편집기를 이용하여 sendmail.cf 파일 오픈
vi /etc/mail/sendmail.cf

# O PrivacyOptions= 설정 부분에 restrictqrun 옵션 추가
(수정 전) O PrivacyOptions=authwarnings, novrfy, noexpn
(수정 후) O PrivacyOptions=authwarnings, novrfy, noexpn, restrictqrun

1.14 DNS 보안 버전 패치

  • 최신버전 이하의 버전에서는 서비스거부 공격, 버퍼 오버플로우 및 DNS 서버 원격 침입 등의 취약성이 존재한다.
진단 기준
양호 DNS 서비스를 사용하지 않거나 주기적으로 패치를 관리하고 있는 경우
취약 DNS 서비스를 사용하며 주기적으로 패치를 관리하고 있지 않은 경우

1.14.1 진단방법

# DNS 서비스 사용 및 BIND 버전 확인
ps -ef | grep named
named -v

1.14.2 조치방법

# DNS 서비스를 사용할 경우
1. DNS 서비스 사용 시 BIND 버전 확인 후 최신 버전으로 업데이트

# DNS 서비스를 사용하지 않는 경우
1. 서비스 중지
kill -9 [PID]

1.15 DNS ZoneTransfer 설정

  • 비인가자 Zone Transfer를 이용해 Zone 정보를 전송받아 호스트 정보, 시스템 정보, 네트워크 구성 형태 등의 많은 정보를 파악할 수 있다.
진단 기준
양호 DNS 서비스 미사용 또는, Zone Transfer를 허가된 사용자에게만 허용한 경우
취약 DNS 서비스를 사용하며 Zone Transfer를 모든 사용자에게 허용한 경우

1.15.1 진단방법

# 설정 파일에서 zone transfer 설정 확인
cat /etc/named.conf

*******************************************
Options {
	allow-transfer(10.10.10.10;};
};
*******************************************

1.15.2 조치방법

# 특정 서버의 Zone Transfer 지정
vi /etc/named.conf
*******************************************
Options {
	allow-transfer(10.10.10.111; 10.10.10.112;};
};
*******************************************

# 특정 도메인의 Zone에 대해서 제한할 경우에는 다음과 같이 설정
vi /etc/named.conf
*******************************************
zone "xxx.co.kr"	{
	Type master ;
    File "db.xxx.co.kr";
    allow-transfer(10.10.10.111; 10.10.10.112;};
}
*******************************************

 

 

 

 

 

 

 

※ 참고문서

https://ssv.skill.or.kr/cloud-security/linux-security-vulnerability

728x90
LIST