검색

6.3. NFS 서비스 보안

download PDF

Kerberos를 사용하여 모든 파일 시스템 작업을 인증하고 암호화하여 NFSv4(Network File System 버전)를 보호할 수 있습니다. NAT(Network Address Translation) 또는 방화벽으로 NFSv4를 사용하는 경우 /etc/default/nfs 파일을 수정하여 위임을 해제할 수 있습니다. 위임은 서버가 파일 관리를 클라이언트에 위임하는 기술입니다.

반면 NFSv3에서는 파일 잠금 및 마운트에 Kerberos를 사용하지 않습니다.

NFS 서비스는 모든 버전의 NFS에서 TCP를 사용하여 트래픽을 전송합니다. 이 서비스는 RPCSEC_GSS 커널 모듈의 일부로 Kerberos 사용자 및 그룹 인증을 지원합니다.

NFS를 사용하면 원격 호스트가 네트워크를 통해 파일 시스템을 마운트하고 로컬에 마운트된 것처럼 해당 파일 시스템과 상호 작용할 수 있습니다. 중앙 집중식 서버의 리소스를 병합하고 파일 시스템을 공유할 때 /etc/nfsmount.conf 파일에 NFS 마운트 옵션을 추가로 사용자 지정할 수 있습니다.

6.3.1. NFS 서버 보안을 위한 내보내기 옵션

NFS 서버에서는 /etc/exports 파일의 호스트로 내보낼 파일 시스템과 디렉터리의 목록 구조를 결정합니다.

/etc/exports 파일에서 다음 내보내기 옵션을 사용할 수 있습니다.

ro
NFS 볼륨을 읽기 전용으로 내보냅니다.
rw
NFS 볼륨에서 읽기 및 쓰기 요청을 허용합니다. 쓰기 액세스를 허용하므로 이 옵션을 신중하게 사용하면 공격 위험이 높아집니다. 시나리오에 rw 옵션을 사용하여 디렉터리를 마운트해야 하는 경우 가능한 위험을 줄이기 위해 모든 사용자가 쓸 수 없는지 확인합니다.
root_squash
uid/gid 0의 요청을 anonymous uid/gid 에 매핑합니다. 이는 bin 사용자 또는 직원 그룹과 같이 동일하게 민감한 다른 uid 또는 gid에는 적용되지 않습니다.
no_root_squash
루트 스쿼시를 끕니다. 기본적으로 NFS 공유에서는 root 사용자를 권한이 없는 사용자 계정인 nobody 사용자로 변경합니다. 이렇게 하면 생성된 모든 루트 파일의 소유자가 nobody 로 변경되어 setuid 비트가 설정된 프로그램 업로드가 방지됩니다. no_root_squash 옵션을 사용하는 경우 원격 루트 사용자는 공유 파일 시스템의 파일을 변경하고 다른 사용자를 위해 trojans의 애플리케이션을 유지할 수 있습니다.
보안
내보내기를 예약된 포트로 제한합니다. 기본적으로 서버는 예약된 포트를 통해서만 클라이언트 통신을 허용합니다. 그러나 모든 사용자가 여러 네트워크의 클라이언트에서 루트 사용자가 되기 때문에 예약된 포트를 통한 통신이 권한이 있다고 가정하는 것은 거의 안전하지 않습니다. 따라서 예약된 포트에 대한 제한은 제한된 값입니다. Kerberos, 방화벽 및 특정 클라이언트에 대한 내보내기 제한에 의존하는 것이 좋습니다.
주의

/etc/exports 파일의 구문에 있는 추가 공백으로 인해 구성이 크게 변경될 수 있습니다.

다음 예에서 /tmp/nfs/ 디렉터리는 bob.example.com 호스트와 공유되며 읽기 및 쓰기 권한이 있습니다.

/tmp/nfs/     bob.example.com(rw)

다음 예제는 이전 항목과 동일하지만, bob.example.com 호스트와 동일한 디렉터리를 읽기 전용 권한으로 공유하고 호스트 이름 뒤의 단일 공백 문자로 인해 읽기 및 쓰기 권한으로 세계와 공유합니다.

/tmp/nfs/     bob.example.com (rw)

showmount -e < hostname > 명령을 입력하여 시스템의 공유 디렉토리를 확인할 수 있습니다.

또한 NFS 서버를 내보낼 때 다음과 같은 모범 사례를 고려하십시오.

  • 일부 애플리케이션은 일반 텍스트 또는 약한 암호화 형식으로 암호를 저장하기 때문에 홈 디렉터리를 내보내는 것은 위험합니다. 애플리케이션 코드를 검토 및 개선하여 위험을 줄일 수 있습니다.
  • 일부 사용자는 SSH 키에 암호를 설정하지 않아 홈 디렉터리의 위험이 다시 발생합니다. 암호를 강제 사용하거나 Kerberos를 사용하여 이러한 위험을 줄일 수 있습니다.
  • NFS 내보내기를 필수 클라이언트로만 제한합니다. NFS 서버에서 showmount -e 명령을 사용하여 서버가 내보내는 내용을 검토합니다. 특히 필요하지 않은 항목을 내보내지 마십시오.
  • 불필요한 사용자가 서버에 로그인하여 공격 위험을 줄이도록 허용하지 마십시오. 정기적으로 서버에 액세스할 수 있는 사용자 및 항목을 확인할 수 있습니다.
주의

파일 시스템의 하위 디렉터리 내보내기는 안전하지 않으므로 전체 파일 시스템을 내보냅니다. 공격자는 부분적으로 내보낸 파일 시스템의 내보내기되지 않은 부분에 액세스할 수 있습니다.

추가 리소스

  • RHEL Identity Management 사용 시 IdM에서 pod 사용
  • exports(5)nfs(5) 도움말 페이지

6.3.2. NFS 클라이언트 보안을 위한 마운트 옵션

다음 옵션을 mount 명령에 전달하여 NFS 기반 클라이언트의 보안을 강화할 수 있습니다.

nosuid
nosuid 옵션을 사용하여 set-user-identifier 또는 set-group-identifier 비트를 비활성화합니다. 이렇게 하면 원격 사용자가 setuid 프로그램을 실행하여 더 높은 권한을 얻지 못하며 setuid 옵션 대신 이 옵션을 사용할 수 있습니다.
noexec
noexec 옵션을 사용하여 클라이언트의 실행 파일을 모두 비활성화합니다. 이를 사용하여 사용자가 공유 파일 시스템에 저장된 파일을 실수로 실행하지 못하도록 합니다.
nodev
nodev 옵션을 사용하여 클라이언트의 장치 파일을 하드웨어 장치로 처리하지 않도록 합니다.
resvport
resvport 옵션을 사용하여 예약된 포트로의 통신을 제한하고 권한 있는 소스 포트를 사용하여 서버와 통신할 수 있습니다. 예약된 포트는 권한 있는 사용자 및 root 사용자와 같은 프로세스를 위해 예약됩니다.
sec
NFS 서버에서 sec 옵션을 사용하여 마운트 지점의 파일에 액세스하기 위해 RPCGSS 보안 플레이버를 선택합니다. 유효한 보안 플레이버는 없음,sys,krb5,krb5i, krb5p 입니다.
중요

krb5-libs 패키지에서 제공하는 MIT Kerberos 라이브러리는 새 배포에서 DES(Data Encryption Standard) 알고리즘을 지원하지 않습니다. 보안 및 호환성 때문에 DES는 더 이상 사용되지 않으며 Kerberos 라이브러리에서 기본적으로 비활성화되어 있습니다. 호환성 이유로 환경에서 DES가 필요하지 않은 최신 보안 알고리즘을 사용하십시오.

6.3.3. 방화벽을 사용하여 NFS 보안

NFS 서버에서 방화벽을 보호하려면 필요한 포트만 열어 둡니다. 다른 서비스에 NFS 연결 포트 번호를 사용하지 마십시오.

사전 요구 사항

  • nfs-utils 패키지가 설치됩니다.
  • firewalld 패키지가 설치되어 실행 중입니다.

절차

  • NFSv4에서 방화벽이 TCP 포트 2049 를 열어야 합니다.
  • NFSv3에서 2049 로 4개의 추가 포트를 엽니다.

    1. rpcbind 서비스는 NFS 포트를 동적으로 할당하므로 방화벽 규칙을 생성할 때 문제가 발생할 수 있습니다. 이 프로세스를 단순화하려면 /etc/nfs.conf 파일을 사용하여 사용할 포트를 지정합니다.

      1. port = <value> 형식의 [ mountd ] 섹션에 mountd 의 TCP 및 UDP 포트를 설정합니다.
      2. port = <value> 형식의 [ statd ] 섹션에서 statd(framework.statd )에 대한 TCP 및 UDP 포트를 설정합니다.
    2. /etc/nfs.conf 파일에서 NFS 잠금 관리자(nlockmgr)의 TCP 및 UDP 포트를 설정합니다.

      1. port=value 형식의 [lockd]섹션에서 nlockmgr (authorization.stat d )의 TCP 포트를 설정합니다. 또는 /etc/modprobe.d/lockd.conf 파일에서 nlm_tcpport 옵션을 사용할 수 있습니다.
      2. udp-port=value 형식의 [lockd]섹션에서 nlockmgr (authorization.stat d )에 대해 UDP 포트를 설정합니다. 또는 /etc/modprobe.d/lockd.conf 파일에서 nlm_udpport 옵션을 사용할 수 있습니다.

검증

  • NFS 서버의 활성 포트 및 RPC 프로그램을 나열합니다.

    $ rpcinfo -p
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.