로컬 sudo 권한이 있는 사용자가 NFS 파일 서버에서 sudo 권한을 갖지 못하게 하려면 어떻게 해야 합니까?

로컬 sudo 권한이 있는 사용자가 NFS 파일 서버에서 sudo 권한을 갖지 못하게 하려면 어떻게 해야 합니까?

LAN에서 Linux NFS 파일 서버(srv)와 세 개의 Linux 클라이언트(A, B, C) 시나리오를 상상해 보십시오. srv의 파일/디렉토리에는 루트 소유권이 있으며 루트가 아닌 사용자에게는 액세스 권한이 부여되지 않습니다. 이 질문과 관련된 파일입니다. 나는 이것을 "루트 제한 파일"이라고 부릅니다.

로컬 시스템 관리자가 되어야 합니다. 그 또는 그녀는 srv의 루트 제한 파일에 대한 무료 액세스가 필요합니다.

두번째자신의 컴퓨터에 sudo 권한이 있는 로컬 개발자입니다. 그러나 B는 해야 한다.아니요서버에서 루트 제한 파일/디렉터리를 읽거나 쓰거나 탐색하는 기능. 실제로 B에게 sudo 권한이 있더라도 B는 자신이 속한 그룹에 속하지 않은 srv의 파일에 액세스할 수 없어야 합니다.

sudo 권한이 없는 로컬 사용자입니다. C는 srv의 일반 파일에 액세스할 수 있어야 하지만 로컬 또는 서버 루트에 의해 제한된 파일에는 액세스할 수 없습니다.

반면:

srv는 192.168.1.1에 있습니다.
A는 192.168.1.2에 있습니다.
B는 192.168.1.3에 있습니다.
C는 192.168.1.4에 있습니다.

/etc/exports가 목표를 달성합니까?

/srv/nfs        192.168.1.2(rw,no_root_squash)
/srv/nfs        192.168.1.3(rw,root_squash)
/srv/nfs        192.168.1.4(rw,root_squash)

다른 어떤 NFS 옵션이 권장됩니까? 그러나 가장 중요한 것은 IP 주소가 스푸핑될 수 없다고 가정할 경우 root_squash가 이 솔루션을 구현할 수 있습니까?

다음으로, 자신의 컴퓨터에 sudo 권한이 있는 개발자가 no_root_squah 없이 IP 주소를 192.168.1.2처럼 스푸핑할 수 있다고 가정해 보겠습니다. 어떤 솔루션이 필요합니까? LDAP + Kerberos? 다른 건 없나요?

NFS로 우리의 목표를 달성할 수 있습니까? SSHFS 또는 Samba 4와 같은 솔루션이 더 나은 솔루션입니까?

("루트 제한 파일"이 가장 적합한 용어가 아닌 경우 편집 제안을 환영합니다.)

답변1

NFS는 클라이언트가 제공한 UID/GID만 사용합니다. squash_root옵션 사용exports공유의 경우 루트 사용자를 익명 사용자( nobody/nogroup)에 매핑합니다. 이는 악의적이거나 손상된 클라이언트가 다른 파일에 대한 액세스를 허용할 수 있는 다른 UID/GID를 제공하는 것을 방지하지 못합니다.

NFS 서버를 스푸핑 사용자로부터 보호하려면 Kerberos를 사용하여 NFS 사용자를 인증해야 합니다. Kerberos를 사용하는 NFS는 선택적 데이터 무결성 및 암호화도 제공합니다. 관련 내용을 빠르게 이해하려면 다음 빠른 방법을 참조하세요.우분투 위키.

답변2

NFS는 UID 및 GID를 통해 권한을 설정하므로 서버와 클라이언트의 권한이 동일하다면 괜찮습니다. root_squashB는 원하지 않고 sudo 권한도 없는 파일이나 디렉터리를 읽거나 쓰는 것을 방지하지만 C에는 sudo 권한이 없습니다.

IP 스푸핑이 걱정된다면 다른 도구와 방법을 사용할 수 있습니다. 당신은 그것들을 모두 찾아보고 조사를 통해 어느 것이 가장 좋은지 결정할 수 있습니다.

답변3

NFS를 사용하여 공유 문서를 보호하는 가장 좋은 방법은 모든 사람에게 동일한 공유 루트를 제공하지 않는 것입니다. 이 예에서는 다음과 유사한 로컬 디렉터리 구조를 만듭니다.

/srv/nfs admin-machine(rw,no_root_squash)
  /srv/nfs/developer dev-machine(rw,no_root_squash)
  /srv/nfs/shared 192.168.1.0/24(rw,root_squash)
  /srv/nfs/protected acct-machine(rw,root_squash)

NFS 클라이언트의 무단 액세스로부터 폴더를 보호할 때의 문제점은 루트 액세스 권한이 있는 사람은 누구나 사용자를 생성할 수 있다는 것입니다.방금 일어난 일이야

답변4

목표가 "로컬 sudo 권한이 있는 사용자가 NFS 파일 서버에서 sudo 권한을 갖는 것을 방지"하는 것이라면 루트 스쿼시를 비활성화할 수 없습니다.

절대적으로하지.

이것/etc/exports

/srv/nfs        192.168.1.2(rw,no_root_squash)
/srv/nfs        192.168.1.3(rw,root_squash)
/srv/nfs        192.168.1.4(rw,root_squash)

/srv/nfs192.168.1.2에 대한 루트 액세스 권한이 있는 사람은 누구나 NFS 서버 자체에 액세스하는 데 사용할 수 있는 SUID 실행 파일을 생성할 수 있으며 , 192.168.1.3 및 192.168.1.4에 대한 루트가 아닌 모든 사용자는root이는 NFS 서버에 있으며 이는 명시된 목표와 직접적으로 모순됩니다.192.168.1.3 및 192.168.1.4의 모든 사용자가 sudo액세스할 수 있나요? 그렇다면 sudo192.168.1.2에 대한 액세스 권한이 있는 사람은 누구나 해당 서버에 대한 액세스 권한을 활용하고 거의 전체 네트워크에 대한 루트 액세스 권한을 얻을 수 있습니다.

루트 호박은 무엇이든 비활성화합니다.위험한전체 네트워크의 보안을 위해.

이는 @ErikF가 답변에서 언급한 IP 주소 스푸핑 문제도 해결하지 않습니다.

적어도 당신은 와 함께 있지 않습니다 anon=0. 예, 본 적이 있습니다.

관련 정보