Infra & Security Eng/Project Implementation
NFSv4 환경에서의 8가지 Squash 시나리오 권한 매핑 분석하기
엔지니어 E
2026. 2. 5. 20:34
반응형

| /home/a1 192.168.10.192(rw,sync,no_root_squash,insecure) /home/a2 192.168.10.192(rw,sync,all_squash,insecure) /home/a3 192.168.10.192(rw,sync,no_all_squash,insecure) /home/a4 192.168.10.192(rw,sync,all_squash,root_squash,insecure) /home/a5 192.168.10.192(rw,sync,all_squash,no_root_squash,insecure) /home/a6 192.168.10.192(rw,sync,no_all_squash,root_squash,insecure) /home/a7 192.168.10.192(rw,sync,no_all_squash,no_root_squash,insecure) /home/a8 192.168.10.192(rw,sync,all_squash,anonuid=2003,anongid=2002,insecure) |
| 본 보고서의 목적: NFSv4 환경에서 다양한 Squash 옵션(all_squash, no_root_squash 등)이 클라이언트 사용자 권한 매핑에 미치는 영향을 분석하고 보안 정책 수립 능력을 배양함 |
| 각 폴더별로 신분이 어떻게 변하는지 보기 위해 파일을 직접 생성하고 숫자를 확인 해야 한다 # touch /mnt/a1/r1 /mnt/a2/r2 /mnt/a3/r3 /mnt/a4/r4 /mnt/a5/r5 /mnt/a6/r6 /mnt/a7/r7 /mnt/a8/r8 루트 계정으로 접속시 어떻게 변하는가? (루트 매핑여부 확인) 1. /home/a1 192.168.10.192(rw,sync,no_root_squash,insecure) - # ls -ln /mnt/a1/r1 -rw-r--r--. 1 0 0 0 2월 5 03:30 /mnt/a1/r1 루트로 인식, 매핑 안됨 * 0 0 에서 0은 소유자, 0은 그룹소유자 2. /home/a2 192.168.10.192(rw,sync,all_squash,insecure) # ls -ln /mnt/a2/r2 -rw-r--r--. 1 65534 65534 0 2월 5 03:30 /mnt/a2/r2 익명 사용자로 인식, 매핑 됨 3. /home/a3 192.168.10.192(rw,sync,no_all_squash,insecure) # ls -ln /mnt/a3/r3 -rw-r--r--. 1 65534 65534 0 2월 5 03:30 /mnt/a3/r3 익명 사용자로 인식, 매핑 됨 * no_all_squash 명령어를 썼는데 65534가 나오는 이유: 3번에 기재는 안했지만 root_squash 가 default 값으로 설정 되어 있어서 루트를 유령(65534) 취급하게 된다 4. /home/a4 192.168.10.192(rw,sync,all_squash,root_squash,insecure) # ls -ln /mnt/a4/r4 -rw-r--r--. 1 65534 65534 0 2월 5 03:30 /mnt/a4/r4 익명 사용자로 인식, 매핑 됨 5. /home/a5 192.168.10.192(rw,sync,all_squash,no_root_squash,insecure) # ls -ln /mnt/a5/r5 # -rw-r--r--. 1 65534 65534 0 2월 5 03:30 /mnt/a5/r5 익명 사용자로 인식, 매핑 됨 6. /home/a6 192.168.10.192(rw,sync,no_all_squash,root_squash,insecure) # ls -ln /mnt/a6/r6 # -rw-r--r--. 1 65534 65534 02월 5 03:30 /mnt/a6/r6 * no_all_squash 명령어를 썼는데 65534가 나오는 이유: root_squash 가 default 값으로 설정 되어 있어서 루트를 유령(65534) 취급하게 된다 익명 사용자로 인식, 매핑 됨 7. /home/a7 192.168.10.192(rw,sync,no_all_squash,no_root_squash,insecure) # ls -ln /mnt/a7/r7 # -rw-r--r--. 1 0 0 0 2월 5 03:30 /mnt/a7/r7 루트로 인식, 매핑 안됨 8./home/a8 192.168.10.192(rw,sync,all_squash,anonuid=2003,anongid=2002,insecure) # ls -ln /mnt/a8/r8 # -rw-r--r--. 1 2003 2002 0 2월 5 03:30 /mnt/a8/r8 특정 사용자(UID 2003)로 인식, 매핑 됨 |
| 특정 사용자(UID 2003)으로 접속시 어떻게 변하는가? (nfsusr 매핑 여부 확인) # su - nfsuser * 특정 사용자로 접속: 리눅스에서 # su - 계정 * 새로운 계정으로 로그인 한거라 파일을 만들어야 한다 # touch /mnt/a1/u1 /mnt/a2/u2 /mnt/a3/u3 /mnt/a4/u4 /mnt/a5/u5 /mnt/a7/u7 /mnt/a8/u8 1. /home/a1 192.168.10.192(rw,sync,no_root_squash,insecure) # ls -ln /mnt/a1/u1 # -rw-r--r--. 1 2003 2002 0 2월 5 04:30 /mnt/a1/u1 특정 사용자(UID 2003)로 인식, 매핑 안됨 * no_root_squash 는 "클라이언트에서 root 권한으로 접속하면 서버에서도 root 권한을 그대로 인정해 주겠다"는 설정인데 현재 root 권한이 아니므로 영향력이 없음 2. /home/a2 192.168.10.192(rw,sync,all_squash,insecure) # ls -ln /mnt/a2/u2 # -rw-r--r--. 1 65534 65534 0 2월 5 04:30 /mnt/a2/u2 익명 사용자로 인식, 매핑 됨 3. /home/a3 192.168.10.192(rw,sync,no_all_squash,insecure) # ls -ln /mnt/a3/u3 # -rw-r--r--. 1 2003 2002 0 2월 5 04:30 /mnt/a3/u3 특정 사용자(UID 2003)로 인식, 매핑 안됨 4. /home/a4 192.168.10.192(rw,sync,all_squash,root_squash,insecure) # ls -ln /mnt/a4/u4 # -rw-r--r--. 1 65534 65534 0 2월 5 04:30 /mnt/a4/u4 익명 사용자로 인식, 매핑 됨 5. /home/a5 192.168.10.192(rw,sync,all_squash,no_root_squash,insecure) # ls -ln /mnt/a5/u5 # -rw-r--r--. 1 65534 65534 0 2월 5 04:30 /mnt/a5/u5 익명 사용자로 인식, 매핑 됨 * all_squash는 **"root를 포함한 모든 유저"**를 으깨버리는 옵션임 6. /home/a6 192.168.10.192(rw,sync,no_all_squash,root_squash,insecure) # ls -ln /mnt/a6/u6 # -rw-r--r--. 1 2003 2002 0 2월 5 04:54 /mnt/a6/u6 특정 사용자(UID 2003)로 인식, 매핑 안됨 * no_all_squash는 기본 상태를 유지하는 옵션이므로, NFS의 기본 보안 정책인 root_squash가 활성화되어 root가 익명화됨 7. /home/a7 192.168.10.192(rw,sync,no_all_squash,no_root_squash,insecure) # ls -ln /mnt/a7/u7 # -rw-r--r--. 1 2003 2002 0 2월 5 04:30 /mnt/a7/u7 특정 사용자(UID 2003)로 인식, 매핑 안됨 8. /home/a8 192.168.10.192(rw,sync,all_squash,anonuid=2003,anongid=2002,insecure) # ls -ln /mnt/a8/u8 # -rw-r--r--. 1 2003 2002 0 2월 5 04:30 /mnt/a8/u8 특정 사용자(UID 2003)로 인식, 매핑 안됨 * 원래 신분을 all_squash 로 무시하지만 anonuid=2003,anongid=2002 설정을 해줌으로써 강제적으로 신분을 전환 시킨다 |
| 결과 분석 실험 결과, all_squash는 모든 신분을 익명화하지만 no_root_squash는 오직 root 계정에만 영향을 미친다는 것을 확인하였음 보안이 중요한 환경에서는 all_squash를, 관리 편의성이 중요한 환경에서는 no_root_squash를 선택적으로 적용해야 함 |
참고사항
| 옵션명 | 대상 | 동작 원리 (매핑 여부) | 결과 UID (서버 저장 번호) |
| root_squash | root(0) | 매핑 O: root의 권한을 박탈하여 익명화함 | 65534 (nfsnobody) |
| no_root_squash | root(0) | 매핑 X: root의 신분과 권한을 그대로 유지함 | 0 (root) |
| all_squash | 모든 유저 | 매핑 O: 접속자 모두를 무조건 익명화함 | 65534 (nfsnobody) |
| no_all_squash | 일반 유저 | 매핑 X: 일반 유저의 UID를 그대로 인정함 | 2003 (원래 UID) |
| anonuid=2003 | 매핑 대상 | 매핑 O: 익명화될 때 특정 UID로 강제 지정함 | 2003 (nfsuser) |
| - 매핑 O: 원래 번호(0 또는 2003)가 서버 설정에 의해 다른 번호로 바뀜 - 매핑 X: 원래 번호가 그대로 유지됨 - Squash:원래 신분을 무시 한다, 익명(유령) 으로 생각하면 편하다 - No Squash: 원래 신분을 인정 한다 |