9.3. NFS 서비스 보안


Kerberos를 사용하여 모든 파일 시스템 작업을 인증하고 암호화하여 네트워크 파일 시스템 버전 4(NFSv4)를 보호할 수 있습니다. NAT(Network Address Translation) 또는 방화벽으로 NFSv4를 사용하는 경우 /etc/default/nfs 파일을 수정하여 위임을 해제할 수 있습니다. 위임은 서버에서 파일 관리를 클라이언트에 위임하는 기술입니다. 반면 NFSv2 및 NFSv3에서는 파일을 잠금 및 마운트하는 데 Kerberos를 사용하지 않습니다.

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

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

9.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) 도움말 페이지

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

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

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

jenkinsfile 5-libs 패키지에서 제공하는 MIT Kerberos 라이브러리는 새 배포에서 데이터 암호화 표준(DES) 알고리즘을 지원하지 않습니다. 보안 및 호환성으로 인해 DES는 Kerberos 라이브러리에서 기본적으로 더 이상 사용되지 않으며 비활성화되어 있습니다. 호환성을 이유로 환경에 DES가 필요한 경우가 아니면 DES 대신 최신의 보안 알고리즘을 사용하십시오.

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

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

사전 요구 사항

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

절차

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

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

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

      1. [lockd] 섹션에서 nlockmgr (#189.statd)의 TCP 포트를 port=value 형식으로 설정합니다. 또는 /etc/modprobe.d/lockd.conf 파일에서 nlm_tcpport 옵션을 사용할 수 있습니다.
      2. [lockd] 섹션에서 udp-port=value 형식의 nlockmgr (tekton.statd)에 대해 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.