본문 바로가기
인프라 진단/전자금융기반시설(서버) - Linux

SRV-016 불필요한 RPC 서비스 활성화

by 49 BLOCK 2024. 1. 1.

notice

SRV-016 불필요한 RPC 서비스 활성화

【 상세설명 】
RPC(Remote Procedure Call) 서비스는 손쉬운 분산 처리 환경을 제공하지만, 오래된 버전의 특정 서비스들은 알려진 취약점이 존재하거나 잠재적인 취약점 발견 가능성이 있으므로 해당 서비스가 업무와 관계없이 불필요하게 활성화 되어있는지 점검

【 판단기준 】
- 양호 :  rpc.cmsd, rpc.ttdbserverd, sadmind, rusersd, walld, sprayd, rstatd, rpc.nisd, rexd, rpc.pcnfsd, rpc.statd, rpc.ypupdated, rpc.rquotad, kcms_server, cachefsd 서비스가 비활성화 되어 있는 경우 (업무상 사용시 예외)
- 취약 :  rpc.cmsd, rpc.ttdbserverd, sadmind, rusersd, walld, sprayd, rstatd, rpc.nisd, rexd, rpc.pcnfsd, rpc.statd, rpc.ypupdated, rpc.rquotad, kcms_server, cachefsd 서비스가 불필요하게 활성화 되어 있는 경우

【 판단방법 】
1. RPC 서비스 프로세스 구동 확인
2. RPC 서비스 활성화 설정 확인
      - inetd : 각 RPC 서비스 설정 주석 처리 확인
      - xinetd : 각 RPC 서비스 설정 파일에서 "disable = yes" 설정 확인

  ■ Linux : RPC 서비스 프로세스 구동 확인 및 RPC 서비스 설정 주석 처리 또는 "disable = yes" 설정 확인
    # ps -ef  | egrep "rpc|cms|ttdbserver|sadmin|rusers|wall|spray|rstat|nis|rex|pcnfs|stat|ypupdate|rquota|kcms_server|cachefs"
        rpcuser    52061       1  0 14:43 ?        00:00:00 /usr/sbin/rpc.statd
        ...
    # cat /etc/inetd.conf | egrep "rpc|cms|ttdbserver|sadmin|rusers|wall|spray|rstat|nis|rex|pcnfs|stat|ypupdate|rquota|kcms_server|cachefs"
        rpc.cmsd/2-4 dgram rpc/udp wait root /usr/dt/bin/rpc.cmsd rpc.cmsd
        ...
또는
    # cat /etc/xinetd.d/<rpc_service_file>
        service rstatd
        {
          disable = no
          ...
        }

  ■  AIX : RPC 서비스 프로세스 구동 확인 및 RPC 서비스 설정 주석 처리 확인
    # ps -ef  | egrep "rpc|cms|ttdbserver|sadmin|rusers|wall|spray|rstat|nis|rex|pcnfs|stat|ypupdate|rquota|kcms_server|cachefs"
        rpcuser    52061       1  0 14:43 ?        00:00:00 /usr/sbin/rpc.statd
        ...
    # cat /etc/inetd.conf | egrep "rpc.|cms|ttdbserver|sadmin|rusers|wall|spray|rstat|nis|rex|pcnfs|stat|ypupdate|rquota|kcms_server|cachefs"
        cmsd sunrpc_udp udp wait root /usr/dt/bin/rpc.cms cmsd
        ttdbserver sunrpc_tcp tcp wait root /usr/dt/bin/
        rusersd sunrpc_udp udp wait root /usr/lib/netsvc/
        rwalld sunrpc_udp udp wait root /usr/lib/netsvc/
        sprayd sunrpc_udp udp wait root /usr/lib/netsvc/
        rstatd sunrpc_udp udp wait root /usr/sbin/rpc.rstatd rstatd
        rexd sunrpc_tcp tcp wait root /usr/sbin/tpc.rexd.rexd rexd
        pcnfsd sunrpc_udp udp wait root /usr/sbin/rpc.pcnfsd pcnfsd
        rquotad sunrpc_udp udp wait root /usr/sbin/rpc.rquotad
        ...

  ■ HP-UX : RPC 서비스 프로세스 구동 확인 및 RPC 서비스 설정 주석 처리 확인
    # ps -ef  | egrep "rpc|cms|ttdbserver|sadmin|rusers|wall|spray|rstat|nis|rex|pcnfs|stat|ypupdate|rquota|kcms_server|cachefs"
        rpcuser    52061       1  0 14:43 ?        00:00:00 /usr/sbin/rpc.statd
        ...
    # cat /etc/inetd.conf | egrep "rpc.|rpc.cms|rpc.ttdbserver|sadmin|rusers|wall|spray|rstat|rpc.nis|rex|rpc.pcnfs|rpc.stat|rpc.ypupdate|rpc.rquota|kcms_server|cachefs" 
        rpc  stream tcp  nowait  root  /usr/sbin/rpc.rexd     100017  1    rpc.rexd
        rpc  dgram  udp  wait    root  /usr/lib/netsvc/rstat/rpc.rstatd   100001  2-4  rpc.rstatd
        rpc  dgram  udp  wait    root  /usr/lib/netsvc/rusers/rpc.rusersd  100002  1-2  rpc.rusersd
        rpc  dgram  udp  wait    root  /usr/lib/netsvc/rwall/rpc.rwalld   100008  1    rpc.rwalld
        rpc  dgram  udp  wait    root  /usr/sbin/rpc.rquotad  100011  1    rpc.rquotad
        rpc  dgram  udp  wait    root  /usr/lib/netsvc/spray/rpc.sprayd   100012  1    rpc.sprayd
        rpc xti tcp swait root /usr/dt/bin/rpc.ttdbserver 100083 1 /usr/dt/bin/rpc.ttdbserver
        rpc dgram udp wait root /usr/dt/bin/rpc.cmsd 100068 2-5 rpc.cmsd
        ...

  ■ SOLARIS 9 이하 : RPC 서비스 프로세스 구동 확인 및 RPC 서비스 설정 주석 처리 확인
    # ps -ef  | egrep "rpc|cms|ttdbserver|sadmin|rusers|wall|spray|rstat|nis|rex|pcnfs|stat|ypupdate|rquota|kcms_server|cachefs"
        rpcuser    52061       1  0 14:43 ?        00:00:00 /usr/sbin/rpc.statd
        ...
    # cat /etc/inetd.conf | egrep "rpc.|cms|ttdbserver|sadmin|rusers|wall|spray|rstat|nis|rex|pcnfs|stat|ypupdate|rquota|kcms_server|cachefs"
        100232/10       tli     rpc/udp wait root /usr/sbin/sadmind     sadmind
        100083/1        tli     rpc/tcp wait root /usr/dt/bin/rpc.ttdbserverd rpc.ttdbserverd
        100221/1        tli     rpc/tcp wait root /usr/openwin/bin/kcms_server  kcms_server
        100235/1 tli rpc/ticotsord wait root /usr/lib/fs/cachefs/cachefsd cachefsd
        100068/2-5 dgram rpc/udp wait root /usr/dt/bin/rpc.cmsd rpc.cmsd
        rexd/1 tli     rpc/tcp wait    root    /usr/sbin/rpc.rexd rpc.rexd
        rstatd/2-4      tli     rpc/datagram_v  wait    root    /usr/lib/netsvc/rstat/rpc.rstatd        rpc.rstatd
        rusersd/2-3     tli     rpc/datagram_v,circuit_v        wait    root    /usr/lib/netsvc/rusers/rpc.rusersd      rpc.rusersd
        walld/1 tli     rpc/datagram_v  wait    root    /usr/lib/netsvc/rwall/rpc.rwalld        rpc.rwalld
        sprayd/1        tli     rpc/datagram_v  wait    root    /usr/lib/netsvc/spray/rpc.sprayd        rpc.sprayd
        ...

  ■ SOLARIS 10, 11 : RPC 서비스 프로세스 구동 확인
    # svcs -a  | egrep "rpc.|cms|ttdbserver|sadmin|rusers|wall|spray|rstat|nis|rex|pcnfs|stat|ypupdate|rquota|kcms_server|cachefs"
        svc:/network/rpc/cde-ttdbserver:tcp
        svc:/network/rpc/rusers:default
        svc:/network/rpc/wall:default
        svc:/network/rpc/spray:default
        svc:/network/rpc/rstat:default
        svc:/network/rpc/rex:default
        svc:/network/fs/rquota:default
        ...

  ■ RHEL 6, 7, 8, 9 : RPC 서비스 프로세스 구동 확인
    # ps -ef  | egrep "rpc|cms|ttdbserver|sadmin|rusers|wall|spray|rstat|nis|rex|pcnfs|stat|ypupdate|rquota|kcms_server|cachefs"
        rpcuser    52061       1  0 14:43 ?        00:00:00 /usr/sbin/rpc.statd
        ...

※ 불필요한 RPC 서비스 목록
    - rpc.statd : 시스템 장애 시 NFS 에서 파일 복구를 위해 제공하는 lockd 프로그램을 지원하는 도구로 클라이언트와 서버의 상태를 모니터링 하는 데몬
    - rpc.ttdbserverd : ToolTalk 애플리케이션간의 통신을 관리하는 데몬
    - sadmind : 원격에서 시스템을 관리하거나 모니터링하기 쉽게 도와주는 데몬
    - rpc.ypupdated : nis process 변경된 정보를 변경해주는 데몬
    - rusersd : 현재 네트워크에 있는 사용자 리스트를 리턴해주는 데몬
    - walld : 메시지를 네트워크의 모든 사용자에게 전송하는 요청을 처리하는 데몬
    - sprayd : 지정된 수의 패킷을 호스트에 전송하고 성능 통계를 보고하는 데몬
    - rstatd : CPU 와 가상메모리 사용통계, 네트워크 가동시간, 하드디스크에 대한 정보를 제공하는 데몬
    - rpc.nisd : NIS+ 의 서비스를 제공하는 데몬
    - rexd : 원격 사용자가 서버에서 명령어를 실행하도록 하는 데몬
    - rpc.pcnfsd : PC-NFS(개인용 컴퓨터 네트워크 파일 시스템) 클라이언트에서의 서비스 요청을 처리하는 데몬
    - rpc.cmsd : 데이터베이스 관리 데몬으로 open Windows 의 Calender Manager 와 CDE 의 Calender 에서  사용
    - rpc.rquotad : 원격 쿼터 데몬으로 NFS 서버의 파일 시스템을 마운트한 로컬 유저의 쿼터를 넘겨줌
    - kcms_server : 데스크탑 컴퓨터 및 관련 주변 기기에 디지털 컬러 이미지의 색상 성능을 제어 할 수 있는 코닥 색상 관리 시스템을 원격에서 접근할 수 있게 해주는 데몬
    - cachefsd : 캐시 파일 시스템 데몬. nfs 나 cdrom 같은 저속의 장치를 디스크로부터 캐싱하여 성능을 증가시킴

【 조치방법 】
1. 불필요한 RPC 서비스 중지 또는 서비스 설정 주석 처리 후 inet, xinetd  서비스 재시작
      - inetd : 각 RPC 서비스 설정 주석 처리
      - xinetd : 각 RPC 서비스 설정 파일에서 "disable = yes" 설정

2024-01-13 : (조치과정 삭제)