And Brain said,
NFS(Network File System)의 개념과 보안문제 본문
반응형
1. NFS(Network File System) ?
1.1 NFS 개요
NFS(Network File System)는 원격 파일 시스템을 로컬 파일 시스템처럼 사용할 수 있도록 해주는 프로토콜로, 이를 통해 클라이언트 시스템이 네트워크를 통해 서버의 파일 시스템을 마운트하고, 로컬 디스크처럼 접근할 수 있게 됩니다.
1.2 NFS의 작동 원리
- 서버: 특정 디렉토리를 공유(export)하여 클라이언트가 접근할 수 있도록 설정.
- 클라이언트: mount 명령어를 사용하여 원격 파일 시스템을 마운트.
- 통신 프로토콜: 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는 강력한 파일 공유 기능을 제공하지만, 잘못된 설정으로 인해 아래와 같은 보안 취약점이 발생할 수 있습니다.
- 익명 접근(Anonymous Access) - 비인가 사용자가 민감한 데이터를 열람할 수 있음.
- Everyone 공유 허용 - 모든 사용자가 NFS를 마운트 가능하면 시스템 침해 위험 증가.
- root 권한 유지(rw 권한) - 클라이언트에서 root 사용자가 서버에서도 root 권한을 유지할 경우 보안상 위험.
- UID/GID 매칭 문제 - 클라이언트와 서버 간 UID/GID가 일치하지 않을 경우 권한 문제가 발생할 수 있음.
- 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 서버는 데이터 유출, 권한 탈취, 원격 공격 등 보안 위협에 노출될 수 있으므로 정기적으로 보안 점검을 해보시기 바랍니다.
반응형
'IT > 보안' 카테고리의 다른 글
AWS로 배우는 IAM, 넌 지나갈 수 없다. (+Spring boot 연동 예제) (1) | 2025.02.12 |
---|---|
버퍼 오버플로우(Buffer Overflow) 공격, 원리와 그 방어 (1) | 2025.02.11 |
DoS/DDoS(Denial of Service) 공격, 원리와 그 방어 (0) | 2025.02.10 |
FTP(File Transfer Protocol)의 개념과 보안 문제 (0) | 2025.02.10 |
PAM, 리눅스 인증(Authentication)의 최전선 (0) | 2025.02.05 |
Comments