NFS(Network File System)는 Sun Microsystems社에서 개발한 것으로 TCP/IP를 이용하여 원격 호스트의 파일 시스템을 마치 로컬 호스트에 있는 것처럼 마운트하여 사용할 수 있는 서비스로 여러 컴퓨터 간에 파일 및 디렉터리를 공유하기 위한 분산 파일 시스템 프로토콜입니다. NFS는 일종의 클라이언트-서버 시스템으로, 파일 시스템이 NFS 서버에서 관리되고, 클라이언트는 해당 파일 시스템을 마치 자신의 로컬 파일 시스템인 것처럼 사용할 수 있습니다. “원격 파일시스템을 마운팅하기(NFS)” 글에서 NFS 서비스에 대해 좀 더 자세히 확인할 수 있습니다.
점검 내용
- 불필요한 NFS 서비스 사용여부 점검
- NFS 접근제어 설정파일에 대한 비인가자들의 수정 제한 여부 점검
- NFS(Network File System) 사용 시 허가된 사용자만 접속할 수 있도록 접근 제한 설정 적용 여부 점검
점검 목적
- NFS(Network File System) 서비스는 한 서버의 파일을 많은 서비스 서버들이 공유하여 사용할 때 많이 이용되는 서비스이지만 이를 이용한 침해 사고 위험성이 높으므로 사용하지 않는 경우 중지함
- 비인가자에 의한 불법적인 외부 시스템 마운트를 차단하기 위해 NFS 접근 제어 파일의 소유자 및 파일 권한을 설정
- 접근 권한이 없는 비인가자의 접근을 통제함
보안 위협
- NFS 서비스는 서버의 디스크를 클라이언트와 공유하는 서비스로 적정한 보안 설정이 적용되어 있지 않다면 불필요한 파일 공유로 인한 유출 위험이 있음
- NFS 접근제어 설정파일에 대한 권한 관리가 이루어지지 않을 시 인가되지 않은 사용자를 등록하고 파일시스템을 마운트하여 불법적인 변조를 시도할 수 있음
- 접근제한 설정이 적절하지 않을 경우 인증절차 없이 비인가자의 디렉터리나 파일의 접근이 가능하며, 해당 공유 시스템에 원격으로 마운트하여 중요 파일을 변조하거나 유출할 위험이 있음
점검 대상
- Linux : Rocky 9
판단 기준
- 양호 :
– 불필요한 NFS 서비스 관련 데몬이 비활성화 되어 있는 경우
– NFS 접근 제어 설정 파일(/etc/exports)의 소유자가 root 이고, 권한이 644 이하인 경우
– 불가피하게 사용 시 everyone 공유를 제한한 경우 - 취약 :
– 불필요한 NFS 서비스 관련 데몬이 활성화 되어 있는 경우
– NFS 접근제어 설정파일의 소유자가 root 가 아니거나, 권한이 644 이하가 아닌 경우
– everyone 공유를 제한하지 않고 NFS 서비스를 사용하는 경우
조치 방법
- NFS 서비스가 필요없는 경우
- nfs-utils 패키지의 설치 여부 점검하여 설치되어 있지 않으면 “양호”로 판정
[root@rocky9u2 ~]# dnf list installed nfs-utilsError: No matching Packages to list
- nfs-utils 패키지가 설치되어 있으나 nfs-server 데몬이 비활성화 상태면 “양호”로 판정
[root@rocky9u2 ~]# systemctl status nfs-servernfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; preset: disabled) Active: inactive (dead)
- NFS 서비스가 활성화되어 있는 경우에는 nfs-server 데몬을 비활성화시키거나 nfs-server 패키지를 삭제
exportfs -ua echo > /etc/exports systemctl disable --now nfs-server dnf -y remove nfs-utils
- nfs-utils 패키지의 설치 여부 점검하여 설치되어 있지 않으면 “양호”로 판정
- NFS 서비스가 필요한 경우
- nfs 접근 제어 파일(/etc/exports) 소유자(root) 및 권한(644) 확인
[root@rocky9u2 ~]# ls -l /etc/exports-rw-r--r--. 1 root root 0 Jun 23 2020 /etc/exports
- nfs 접근 제어 파일(/etc/exports) 설정 점검
– 모든 호스트 접근(*) 설정 삭제
– root_squash 옵션 설정
– insecure 옵션은 설정하지 않음[root@rocky9u2 ~]# vi /etc/exports#형식: 공유디렉터리 호스트(옵션) #예: /mnt/shared 192.168.56.0/24(rw,root_squash) 192.168.57.100(ro)#호스트: 접근 가능한 호스트 등록
- ip address : 지정된 호스트만 접근 가능
- ip_networks/netmask : 지정된 IP범위의 호스트만 접근 지정
- * : 모든 호스트 접근 가능
#홉션
- rw: 읽기/쓰기 허용
- ro: 읽기만 허용
- sync: 기본값, client가 쓰기 작업을 하면 바로 반영
- async: client가 쓰기 작업을 하면 바로 반영하지 않음
- root_squash: root 사용자만 nobody권한으로 매핑, 일반 사용자 권한은 그대로 인정
- no_root_squash: NFS클라이언트의 root계정이 서버에서도 root 권한 사용
- all_squash: NFS클라이언트에서 접근하는 모든 사용자의 권한을 nobody로 매핑
- no_all_squash: NFS클라이언트에서 일반 사용자가 접근 시 서버측 동일 사용자의 이름으로 접속
- anonuid: anonymous의 uid를 명시적으로 설정
- anongid: anonymous의 gid를 명시적으로 설정
- no_subtree_check: 하위 디렉터리 검사 금지
- secure: 기본값, 포트 번호가 1024 이하의 요청만 허가
- insecure: 암호화되지 않은 클라이언트에 대한 액세스를 허용(보안상 권장되지 않습니다)
- NFS 서비스 재구동 및 확인
exportfs –ua exportfs –ra exportfs –s
- nfs 접근 제어 파일(/etc/exports) 소유자(root) 및 권한(644) 확인
◁ FTP 서비스(vsftpd) 점검 | | | NIS 서비스 점검 ▷ |
---|