And Brain said,

NFS(Network File System)의 개념과 보안문제 본문

IT/보안

NFS(Network File System)의 개념과 보안문제

The Man 2025. 2. 11. 10:22
반응형

1. NFS(Network File System) ?

1.1 NFS 개요

NFS(Network File System)는 원격 파일 시스템을 로컬 파일 시스템처럼 사용할 수 있도록 해주는 프로토콜로, 이를 통해 클라이언트 시스템이 네트워크를 통해 서버의 파일 시스템을 마운트하고, 로컬 디스크처럼 접근할 수 있게 됩니다.

1.2 NFS의 작동 원리

  1. 서버: 특정 디렉토리를 공유(export)하여 클라이언트가 접근할 수 있도록 설정.
  2. 클라이언트: mount 명령어를 사용하여 원격 파일 시스템을 마운트.
  3. 통신 프로토콜: NFS v2/v3는 UDP, TCP를 사용하며, NFS v4부터 암호화된 TCP만 지원.

📌 주요 파일 및 설정 경로

 

OS NFS 설정 파일
Linux /etc/exports, /etc/fstab, /etc/nfs.conf
Solaris /etc/dfs/dfstab, /etc/dfs/sharetab
AIX /etc/exports
HP-UX /etc/exports, /etc/rc.config.d/nfsconf

 

2. NFS의 보안 문제점

2.1 NFS 보안이 중요한 이유

NFS는 강력한 파일 공유 기능을 제공하지만, 잘못된 설정으로 인해 아래와 같은 보안 취약점이 발생할 수 있습니다.

  1. 익명 접근(Anonymous Access) - 비인가 사용자가 민감한 데이터를 열람할 수 있음.
  2. Everyone 공유 허용 - 모든 사용자가 NFS를 마운트 가능하면 시스템 침해 위험 증가.
  3. root 권한 유지(rw 권한) - 클라이언트에서 root 사용자가 서버에서도 root 권한을 유지할 경우 보안상 위험.
  4. UID/GID 매칭 문제 - 클라이언트와 서버 간 UID/GID가 일치하지 않을 경우 권한 문제가 발생할 수 있음.
  5. NFS v2/v3는 평문 데이터 전송 - 네트워크 스니핑 공격에 취약.

 

3. 주요 NFS 공격 기법

3.1 NFS 마운트 공격 (Unauthorized Mounting)

공격자가 NFS 서버를 스캔하고, 익명 공유 또는 잘못된 권한 설정이 있는 디렉토리를 마운트합니다.

🛡 방어 방법:

# 특정 클라이언트만 NFS 공유 허용 (예: 192.168.1.10만 허용)
echo "/export/shared 192.168.1.10(rw,no_root_squash)" >> /etc/exports
exportfs -a
systemctl restart nfs-server

3.2 UID/GID 권한 상승 공격

NFS 클라이언트의 사용자 UID/GID가 서버와 일치하면, 공격자가 root 계정으로 악용할 수 있습니다.

🛡 방어 방법:

# root 계정의 UID/GID를 squash하여 비권한 사용자로 변경
echo "/export/shared *(rw,root_squash)" >> /etc/exports
exportfs -a
systemctl restart nfs-server

3.3 NFS 스니핑 공격 (Packet Sniffing)

NFS v2/v3는 데이터를 암호화하지 않기 때문에 공격자가 네트워크에서 트래픽을 감청할 수 있습니다.

🛡 방어 방법:

  • NFS v4를 사용하여 TCP 암호화 적용
# NFS v4 활성화
echo "[nfsd]
vers4=y" >> /etc/nfs.conf
systemctl restart nfs-server

 

4. NFS 보안 점검 방법

4.1 NFS 서비스 실행 여부 확인

# NFS 서비스 상태 확인
systemctl status nfs-server

4.2 마운트된 NFS 공유 확인

showmount -e <NFS 서버 IP>

4.3 불필요한 NFS 서비스 비활성화

systemctl stop nfs-server
systemctl disable nfs-server

4.4 NFS 접근 제어 설정 확인

cat /etc/exports

 

5. NFS 보안 강화 방법

5.1 NFS v4 + Kerberos 인증 사용

NFS v4는 **Kerberos 인증(KRB5)**을 지원하여 보안성을 강화할 수 있습니다.

🛡 설정 방법:

# NFS 서버에서 Kerberos 활성화
echo "SECURE_NFS=yes" >> /etc/sysconfig/nfs
systemctl restart nfs-server

5.2 방화벽 설정으로 NFS 포트 차단

iptables -A INPUT -p tcp --dport 2049 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 2049 -j DROP

5.3 SELinux 활성화

setsebool -P nfs_export_all_ro off
setsebool -P nfs_export_all_rw off

5.4 접근 가능 클라이언트 제한

echo "/export/shared 192.168.1.10(rw,root_squash,no_subtree_check)" >> /etc/exports
exportfs -a
systemctl restart nfs-server

적절한 보안 설정 없이 방치된 NFS 서버는 데이터 유출, 권한 탈취, 원격 공격 등 보안 위협에 노출될 수 있으므로 정기적으로 보안 점검을 해보시기 바랍니다.

반응형
Comments