본문으로 바로가기

대상 서버 : AIX 7.1, Sun 5.10, HP-UX B.11.31, CentOS 7

주요정보통신기반시설 U-24(상)

3. 서비스 관리 > 3.6 NFS 서비스 비활성화

  • 점검내용 : 불필요한 NFS 서비스 사용여부 점검
  • 판단기준 : 불필요한 NFS 서비스 관련 데몬이 비활성화 되어 있는 경우
  • 조치 방법 : 사용하지 않는다면 NFS 서비스 중지, 아래의 방법으로 NFS 서비스를 제거한 후 시스템 부팅 시, 스크립트 실행 방지 가능
    1. /etc/dfs/dfstab의 모든 공유 제거
    2. NFS 데몬(nfsd, statd, mountd) 중지
    3. 시동 스크립트 삭제 또는, 스크립트 이름 변경

해당 항목의 경우 불필요한 NFS 서비스 관련 데몬이 활성화 되어있는 경우에 대해 진단하며, 불필요하게 구동시 서비스를 중지하도록 가이드하고 있다. 그러나 실제 진단시 ① rpc.mountd 프로세스만 구동중이라거나, ② rpc.statd 프로세스만 구동중이라거나 하는 경우들이 비일비재하다. 일단 가이드 내용은 다음과 같다.


※ 가이드 내용

OS별 점검 파일 위치 및 점검 방법(
NFS 서비스 데몬 확인)
■ LINUX, AIX, HP-UX, SOLARIS 5.9 이하 버전
#ps -ef | egrep "nfs|statd|lockd"
■ SOLARIS 5.10 이상 버전

#inetadm | egrep "nfs|statd|lockd"

▶ OS별 점검 파일 위치 및 점검 방법
■ LINUX, AIX, SOLARIS 5.9 이하 버전
1. NFS 서비스 데몬 중지
#kill –9 [PID]
2. 시동 스크립트 삭제 또는, 스크립트 이름 변경
1) 위치 확인
#ls –al /etc/rc.d/rc*.d/* | grep nfs
2) 이름 변경
#mv /etc/rc.d/rc2.d/s60nfs /etc/rc.d/rc2.d/_s60nfs
■ HP-UX
1. NFS 서비스 데몬 중지
#kill –9 [PID]
2. /etc/rc.config.d/nfsconf 파일 설정 수정
#vi /etc/rc.config.d/nfsconf
(수정 전) NFS_SERVER=1
(수정 후) NFS_SERVER=0
■ SOLARIS 5.10 이상 버전 설정 방법
1. NFS 서비스 데몬 확인
svc:/network/nfs/server:default
2. inetadm – “중지하고자 하는 데몬“ 명령으로 서비스 데몬 중지
#inetadm –d svc:/network/nfs/server:default


가이드 내용을 보면 nfsd, statd, lockd 구동여부(상단 조치방법에는 mountd까지)로 nfs 구동여부를 점검하고, kill 명령어를 통해 조치하도록 가이드하고 있다. 

※ 테스트 결과

NFS 서비스를 구동하면, nfsd, rpc.mountd, rpc.statd가 모두 구동되며, NFS 서버 - 클라이언트간 연결 후, nfsd를 제외한 rpc.mountd, rpc.statd의 경우 프로세스를 종료하여도 NFS를 통한 파일공유가 가능함을 확인하였다. nfsd 프로세스를 강제종료하는 경우 rpc.mountd, rpc.statd와 관계 없이 NFS서비스를 이용할 수 없었다.

nfsd rpc.mountd에 의해 마운트된 디렉토리에 대해 읽고, 쓰는 작업을 처리
rpc.mountd 클라이언트가 mount 요청 시 /etc/exports 파일 설정에 따라 mount 요청을 처리
rpc.statd lockd와 함께 사용되며 파일 잠금의 해제와 복구를 수행하는 역할
rpc.lockd 파일 lock을 통해 여러 사용자가 한 파일을 수정하는 것을 방지

<각 데몬별 역할>

추가적으로, kill을 통한 nfsd 데몬 중지 시, nfs 서비스가 사용중이면 클라이언트가 멈추는 현상이 발생하므로 조치 전에 주의하여야 하며, kill을 통한 nfsd 데몬 중지 시 rpc.mountd, rpc.statd의 경우 계속 구동 중이다. 진단시 nfsd은 구동중이지 않은 상태로 mountd나 statd 만 구동중인 경우가 이런 경우인 것으로 추측되며, 가이드를 보고 kill 명령어를 통해 nfsd만 중지시킨 것이 아닐까 싶다. nfsd가 중지될 시 mountd또는 statd와 관계없이 NFS 서비스를 이용할 수 없으므로 해당 항목에서는 nfsd 프로세스 구동 유무를 통해서 진단하는 것이 가장 적절해 보인다.

 조치 방법

결과적으로 해당 항목에 대한 적절한 조치 방법은 kill을 통해 데몬을 중지하는 것이 아니고, 서비스 중지 명령어를 통해 데몬을 중지하는 것으로 판단되며, 서비스를 중지하는 경우 rpc.mountd, nfsd 데몬의 경우 중지되나 rpc.statd의 경우 계속 구동중인데, 이는 rpc.statd의 역할이 nfs서버가 비정상적으로 종료되거나 리부팅했을 경우 복구시키는 역할이기 때문인 것으로 추측해 볼 수 있다. (AIX의 경우 rpc.statd는 구동되지 않으므로 확인하지 않아도 됨) rpc.statd의 경우 필요시 별도의 kill 명령어(kill -9 [PID])를 통해 중지해주어야 한다.

LINUX service nfs stop
HP-UX /sbin/init.d/nfs.core stop (필수)
/sbin/init.d/nfs.server stop (서버쪽)
/sbin/init.d/nfs.client stop (진단 대상은 아니나, 클라이언트쪽)
AIX stopsrc -g nfs
SunOS svcadm disable network/nfs/server

<OS별 서비스 중지 명령어>

가이드 내 조치 시 영향을 보면 showmount, share, exportfs 등의 명령어를 사용하여 로컬 서버에 마운트 되어 있는 디렉터리 확인 및 NFS 설정파일에 공유디렉터리 설정 여부 확인 후 해당 디렉터리가 존재하지 않을 경우 서비스 중지 가능으로 표기되어 있으므로, 공유디렉터리 설정을 다 제거한 후 서비스를 중지하는 것을 권장한다.


 전체 테스트 총평

- 진단 기준은 서버에 nfsd 데몬이 불필요하게 구동중인지 여부로 진단(필요시 양호)
  (판단기준에는 NFS 서비스 관련 데몬으로 명시되어 있고, rpc.statd 등의 알려진 취약점이 있으나, SunOS 5.5, AIX 4.1 이전 버전 등인 것으로 파악되므로, 해당 내용 확인 후 참고하여 진단이 필요할 듯 싶다.)
참고 자료 : www.linux.co.kr/security/certcc/tr1999008.htm

 

RPC 관련 공격 보고서

#include #include #include #include ... /* up to ~ 150 characters, there must be three strings */ /* 실행시킬 명령어 스크립트 */ char *cmd[3]={"/bin/sh", "-c", "touch /tmp/blahblah"}; /* 버퍼오버플로우 일으켜 임의의 번지로 점프

www.linux.co.kr

- rpc.mountd, rpc.statd만 구동중인 경우는 kill을 통한 nfsd 종료 상태이며, nfsd가 구동중이지 않으면 서비스를 이용할 수 없음
- 조치 방법은 kill 명령어로 nfsd 데몬만 중지하지 말고, os별 서비스 중지 명령어를 통해 서비스를 중지
- nfs 서비스를 통한 공유중에 프로세스 중지가 되는 경우 기존 공유중인 클라이언트가 멈추는 현상이 발생할 수 있으므로 주의