5.4. NFS 보안 강화

Network File System의 줄임말인 NFS는 클라이언트가 액세스 가능한 네트워크 파일 시스템을 제공하는 RPC 서비스입니다. NFS 작동 방법에 대한 자세한 정보는 Red Hat Enterprise Linux 참조 가이드네트워크 파일 시스템 (NFS) 장을 참조하시기 바랍니다. NFS 설정 방법에 대한 자세한 정보는 Red Hat Enterprise Linux 시스템 관리 가이드를 참조하시기 바랍니다. 다음 부분에서는 여러분이 NFS에 대하여 기본적인 이해를 하신다고 가정하고 설명할 것입니다:

중요중요
 

5.2 절에서 설명되었듯이 Red Hat Enterprise Linux에 포함된 NFS 버전인 NFSv4는 portmap을 필요로하지 않습니다. NFS 트래픽은 이제 모든 버전에서 UDP 대신 TCP를 사용하며 NFSv4를 사용할때 TCP를 사용합니다. NFSv4는 이제 RPCSEC_GSS 커널 모듈의 일부로 커베로스 사용자 및 그룹 인증 방식을 사용합니다. Red Hat Enterprise Linux는 여전히 portmap을 사용하는 NFSv2와 NFSv3을 지원하므로, portmap과 관련된 정보를 이곳에 포함하였습니다.

5.4.1. 네트워크를 신중하게 설정하기

NFSv4는 네트워크 상에서 모든 정보를 커베로스를 사용하여 암호화하여 전달할 수 있으므로, 방화벽이나 분활된 네트워크 상에서 올바르게 서비스를 설정하셔야 합니다. NFSv2와 NFSv3는 여전히 정보를 암호화되지 않은 상태로 전달하기 때문에 정보가 전달될 때마다 누군가 정보를 가로챌 위험이 있습니다. 이러한 의미에서 네트워크를 신중히 설정함으로서 심각한 보안 침입 위협을 방지할 수 있습니다

5.4.2. 구문 오류에 주의하십시오.

NFS 서버는 /etc/exports 파일을 통해 어느 파일 시스템은 익스포트할 것이고 이 디렉토리를 익스포트할 호스트는 무엇인지 결정합니다. 따라서 이 파일을 수정하실때 불필요한 공간을 추가하지 않도록 주의하셔야 합니다.

예를 들어 /etc/exports 파일에서 다음과 같은 줄은 bob.example.com 호스트에서 /tmp/nfs/ 디렉토리를 읽고 쓸 수 있도록 공유합니다.

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

반면 /etc/exports 파일에 이 줄을 삽입하시면 호스트명 다음에 삽입된 빈 공간 때문에 동일한 디렉토리를 bob.example.com에 읽기 전용 허가를 가지고 공유하고 그 외 다른 전체 호스트에 읽기 쓰기 허가를 가지고 이 디렉토리를 공유합니다.

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

따라서 showmount 명령을 사용하여 어떠한 디렉토리가 어떻게 공유되고 있는지 NFS 공유 설정을 확인해보시기 바랍니다.

showmount -e <hostname>

5.4.3. no_root_squash 옵션을 사용하지 마십시오

NFS 공유는 루트 사용자를 특별한 권한이 없는 사용자 계정인 nfsnobody로 변경하도록 기본 설정되어 있습니다. 따라서 루트 사용자가 생성한 파일은 모두 nfsnobody가 소유하게 되어 사용자 아이디 비트를 재설정하여 프로그램을 업로드하지 못하게 됩니다.

만일 no_root_squash 옵션을 사용하시면 원격 루트 사용자가 공유 파일 시스템에서 모든 파일을 변경할 수 있으며 트로이 목마 프로그램을 설치하여 다른 사용자가 의도하지 않게 실행하게 됩니다.