본문으로 바로가기

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

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

3. 서비스 관리 > 3.7 NFS 접근 통제

  • 점검내용 : NFS 사용 시 허가된 사용자만 접속할 수 있도록 접근제한 설정 적용 여부 점검
  • 판단기준 : 불필요한 NFS 서비스를 사용하지 않거나, 불가피하게 사용 시 everyone 공유를 제한한 경우
  • 조치 방법 : 사용하지 않는다면 NFS 서비스 중지, 사용할 경우 NFS 설정파일에 everyone 공유 설정 제거

해당 항목의 경우 불필요한 NFS 서비스 데몬이 활성화 되어있는 경우에 대해 진단하며, 불필요하게 구동시 서비스를 중지하거나, 공유에 대한 접근을 제한하여 사용하도록 가이드하고 있다. LINUX의 경우 /etc/exports 파일내에 필요한 IP, IP대역등을 설정하여 간단하게 접근제어를 사용할 수 있으나, AIX의 경우 권한 설정에 ro, rw, access, root 항목이 존재하여 각 항목에 대해 테스트하였다.

ex) /etc/exports
LINUX : /test 192.168.0.0/24(ro,all_squash)
AIX : /test -sec=sys:krb5p:krb5i:krb5:dh,rw=192.168.1.1,access=192.168.1.2,root=192.168.1.3

ex) /etc/dfs/dfstab
HP-UX : share -F nfs -o rw=192.168.1.1 /test
Solaris : share -F nfs -o rw=192.168.1.1 /test

※ LINUX를 제외한 HP-UX, Solaris의 경우도 AIX와 마찬가지로 access, root 설정이 가능하다.


※ 테스트 내용

<smit nfs 명령어를 통한 nfs 기본 세팅>

smit nfs 명령어를 통한 위와 같은 설정이 기본 값이며, 위와 같은 경우 모든 IP에서 Read-Write가 가능하다.

위 설정 시 /etc/exports 파일 내 설정되는 옵션은 다음과 같다.
/home -sec=sys:krb5p:krb5i:krb5:dh,rw

대부분의 접근제어 설정을 하지 않은 서버의 설정파일에서 보이는 값이다. 해당 설정의 경우 접근제어가 되지 않으므로 진단시 취약으로 판단된다.

위 사진에서 빨간 네모 안의 설정을 각각 read-only, A, B, C로 설정하는 경우 /etc/exports 파일 내 설정되는 옵션은 다음과 같다.
/home -sec=sys:krb5p:krb5i:krb5:dh,ro=A,access=B,root=C

빨간 네모 위에서부터 각각
① Read-Write, Read-Only, Read-Mostly 설정
② ①설정에 따라 RW,RO=설정된 IP
③ aceess=설정된 IP
④ root=설정된 IP
를 설정한다.
(sys:krb5p:krb5i:krb5:dh 옵션의 경우 인증 방식 설정이며, 기본값이다)

각 항목 별 설명은 다음 공식 문서 링크에 자세하게 나와있으며, 간략한 설명은 다음과 같다.

https://www.ibm.com/support/knowledgecenter/ko/ssw_aix_71/filesreference/exports.html

① Read-Write, Read-Only, Read-Mostly 설정
 - Read-Write 설정의 경우 ②에 설정한 IP만 Read-Write 권한을 얻게되며, 나머지 모든 IP에 대하여 Read-Only 권한을 부여한다. 설정하지 않으면 기본값은 Read-Write로 적용된다.
 - Read-only 설정의 경우 ②에 설정한 IP만 Read-Only 권한을 얻게되며, 나머지 모든 IP에 대하여 Read-Write 권한을 부여한다.
 - Read-mostly 설정의 경우 무슨 역할을 하는지 별도로 찾지 못하였다.

② ①설정에 따라 RW,RO=설정된 IP 설정
 - ① 설정에 따라 각 옵션에 대해 IP를 지정하며, ②에 지정되지 않은 IP들의 경우 설정과 반대 설정으로 접근 가능하다. ①이 RW인 경우, ②에 설정된 IP를 제외하고 RO로 적용되고, ①이 RO인 경우, ②에 설정된 IP를 제외하고 RW로 된다.

③ aceess=설정된 IP 설정
 - 실질적으로 접근 제어 IP를 설정하며, 해당 값을 지정하지 않는 경우 모든 클라이언트가 마운트를 할 수 있다.
 - 다만, ②항목과 같이 설정되는 경우, ②항목에서 설정된 값과 반대 설정(RO,RW)의 IP 제한이 되며, ②,③에 지정된 IP를 제외하고는 마운트를 할 수 없다.

예시 1 /home –sec=sys:krb5p:krb5i:krb5:dh,rw,access=A A 클라이언트에서만 rw
이외 접근 불가
예시 2 /home –sec=sys:krb5p:krb5i:krb5:dh,rw=A,access=B A 클라이언트에서는 rw
B 클라이언트는 ro
이외 접근 불가
예시 3 /home –sec=sys:krb5p:krb5i:krb5:dh,ro=A,access=B A 클라이언트에서는 ro
B 클라이언트는 rw
이외 접근 불가

<각 설정별 접근 가능여부>

④ root=설정된 IP 설정
 - 해당 설정된 IP의 경우 접속시 서버의 root 권한으로 권한을 부여한다. access에 설정되었으나, root에 설정되지 않은 계정들의 경우 상단 설정 중 Anonymous UID(기본값 : -2(nobody))로 권한이 부여된다. 따라서 Anonymous UID의 경우 root IP를 제외하고 접근을 차단하려면 '-1' 값으로 설정하면 되고, '0'으로 설정하는 경우 모든 계정이 root권한(UID=0)이 부여되므로 보안상 '0'으로는 설정하지 않는 것이 좋다. 
 - 해당 항목의 경우 access보다 우선하지 않으므로, 접근제어는 무조건 access에 설정해주어야 한다.  

예시 4 /home –sec=sys:krb5p:krb5i:krb5:dh,rw=A,access=A,root=B A 클라이언트에서만 rw
B 클라이언트에서 접근 불가
이외 접근 불가
예시 5 /home –sec=sys:krb5p:krb5i:krb5:dh,rw=A,access=A,root=A A 클라이언트에서 root 액세스 허용
이외 접근 불가

<root 접근 설정 차이>


설정값을 변경하는 경우(AIX 테스트)
 - 마운트가 되어있는 상태로 access IP를 변경하는 경우, 기존 마운트는 유지되고 접근제어는 적용되지 않았다.
 - 'exportfs -a' 명령어를 통해 변경된 설정값을 적용하는 경우, 접근 제어 IP 와 상관없이 기존 마운트는 유지 되었으나, rw나 root에 권한이 없는 경우 Read-only로 권한이 자동 변경되었고, 마운트 해제 후 다시 마운트를 시도하는 경우에는 차단되었다. 


 전체 테스트 총평

 - 진단 기준은 해당 공유 디렉토리에 대하여 LINUX의 경우 nfs 설정 파일에 IP 설정이 되어있는지를 확인하고, 나머지 장비는 nfs 설정 파일에 access 값이 설정되어 있는지 여부로 진단
 - 설정의 경우 [1순위] access 값 -> [2순위] root 값 -> [3순위] rw, ro 설정으로 적용되며, 1차적으로 access에 있는 IP만 접근통제가 되며, 그 뒤 root 여부 확인하고, 해당 없는 경우 rw, ro 설정에 따라 접근 권한이 설정되는 것으로 확인된다. 
 - 접근 제어 변경 설정시 데몬을 재시작하거나, 설정 값 적용 명령어를 통해 적용해주어야 한다.