본문 바로가기
모의해킹 침해대응 과정/Liunx 관리

NFS server / day 20

by 알거음슴 2021. 4. 22.

NFS(Network File System) (Linux/Unix <-> Linux/Unix)

분산 파일 시스템, 사용자가 원격지 컴퓨터에 있는 파일을 마치 자신의 컴퓨터에 있는 것처럼 검색, 저장, 수정 해주는 클라이언트/서버형 응용프로그램이다. 여러 서버가 하나의 데이터를 보여줄때(부하분산) 일일이 동기화 하는 작업으로 여러 서버를 유지하는것이 아닌, 뒷단에 NFS(NAS) 를 스토리지로 활용하여 각 서버에 마운트 하여 다른서버임에도 불구하고 같은 데이터를 보여주고 있는 방식이다, 즉 네트워크 상에서 공유폴더처럼 사용된다고 볼 수 있다 

 * CIFS (Windows <-> Windows) 

 

NFSv4

 패키지: nfs-utils

 데몬 & 포트 & 프로토콜: nfsd / 2049 / TCP

 주 설정 파일: /etc/exports

 서브 설정 파일 : /etc/exports.d/*.exports

 서비스: nfs-server.service

 * 단 NFSv3 은 UDP , 및 포트번호가 다름.

 

NFSv4 Daemon

 rpc.nfsd : NFS server process ( main server 데몬 )

 rpc.rquotad : remote quota server ( 사용자 제한 데몬 )

 rpc.idmapd : ID mapping ( 로컬 내 UID,GID 및 domain 맵핑 )

 

NFSv4 configuration File

 NFS server file

/etc/exprots : 부팅시 공유하는 정보를 담는 파일 (man exports)

 * 기본적으로 파일 내 내용이 없는 상태.

# sample /etc/exports file

#/              master(rw) trusty(rw,no_root_squash)

#/projects    proj*.local.domain(rw)

#/usr          *.local.domain(ro) @trusted(rw)

#/home/joe  pc001(rw,all_squash,anonuid=150,anongid=100)

#/pub         (ro,insecure,all_squash)

/backup       backupserver(rw,no_root_squash)  # 공유폴더 설정

/share         *(rw)

 공유 폴더 설정 *구분자는 공백* ( /backup backupserver(rw,no_root_squash )\

/backup :  공유 디렉토리 ( ex : /share, /home )

backupserver : 접근가능 서버/네트워크 ( 호스트이름, IP주소, 도메인이름 등으로 정의 )

(rw,no_root_squash) : 공유 옵션, 지정이 없을경우 default 옵션으로 동작한다.

 * default 옵션

ro (ro <-> rw)  읽기전용 <-> 읽고 쓰기 전용
sync (sync <-> async)   클라이언트와 서버의 동기 및 비동기 관련옵션
wdelay (wdelay <-> no_wdelay)   딜레이 적용 여부
root_squash (root_squash <-> no_root_squash)  root권한을 허용 할것인가 안할것인가.

(주의사항) 설정 시 구분자는 공백임으로 공백의 위치에 따라 다른뜻으로 적용될 수 있음

ex)
/home test.example.com(rw)
/home test.example.com (rw)   (=  /home test.example.com(ro))

-> 첫번째 예제는 /home에 대해서 test.example.com에서 rw 형태로 마운트 가능하다는 뜻이고,
-> 두번째 예제는 /home에 대해서 test.example.com에 대해서 read only(default)로 마운트가 가능하고
모든 호스트(world)에서 rw 형태로 마운트가 가능하다는 뜻이다.

 

 NFS clinet file

/etc/fstab : 부팅시에 마운트하는 정보를 담는 파일

vi /etc/fstab

#
# (1) NFS Test
#
192.168.10.20:/share  /mnt/share    nfs     defaults     0  0  #서버측에서 fsck 를 진행함으로 0 0 옵션
-> mount -t nfs -o defaults 192.168.10.20:/share /mnt/shate 와 같은뜻. 

/etc/fstab 파일 내 사용가능한 마운트 옵션

nfsvers=version NFS 버전정보 결정
noexec (exec <-> noexec) 실행가능여부 결정
nosuid (suid <-> nosuid) SET-UID 허용여부 결정
rsize=num
wsize=num
사이즈값 결정 ( 이기종간 통신을 위함 )
sec=flavors sec=sys, krb5, krb5i, krb5p kerberos 서버를 통해 암호화 관련 통신 및 사용자 제한가능.
sec=sys 가 기본값, kerberos 서버를 이용하지않음.

 

 

NFS 관련 CMD

 NFS server CMD

exportfs CMD : 공유자원을 확인할 때 사용하는 CMD

 exportfs : 공유된 자원정보를 간략하게 보여준다

 exportfs -v : 공유된 자원정보를 자세하게 보여준다

 exportfs -ar : 공유된 자원목록을 다시 읽어들인다 ( a: 자원목록 / r: reload )

 

 NFS client CMD

showmount : 공유할 자원 확인할 때 사용하는 CMD (nfsv3 에서 사용됨)

 showmount -e : 로컬 서버에 공유된 자원 확인.

 showmount -e [IP] : 원격 서버에 공유된 자원 확인.

mount : 공유된 자원을 마운트 할 때 사용하는 CMD

 주요 형식 : # mount [-t nfs] [-o defaults] 172.16.6.2XX:/share /mnt/share

 

[참고] NFSv3 와 NFSv4의 경우 마운트 방법이다름

   NFSv3 : 공유 디렉토리 이름을 알아야함 (ex mount 192.168.10.20:/share /mnt/share)

   NFSv4 : 공유 디렉토리 이름을 몰라도 됨. (ex mount 192.168.10.20:/ /mnt/share)

 

[실습] NFS 서버 구축

[실습] 방화벽 키고 NFSv4 마운트

 * firewall-cmd --permanent --add-service=nfs

[실습] 방화벽 키고 NFSv3 마운트 (NFSv3,4 모두 가능하게 설정)

 * firewall-cmd --permanent --add-service=mountd / rpc-bind  --add-service=nfs

 * firewall-cmd --permanent --add-port=20048/tcp --add-port=20048/tcp

[실습] NFS server 접근가능 클라이언트 지정 및 마운트

[실습] 공유디렉토리 생성(chmod 777) 및 client 파일 생성 가능 여부

 * 권한 적용 순서 : firewall --> SELinux --> 공유옵션 --> 마운트옵션 --> owner/group(rwx)

[실습] 공유 자원을 root 사용자가 마운트해서 사용하는 경우 실습

 * 공유 디렉토리 내 server와 client 의 UID 가 같다면 server,client 모두 소유자가 된다. 단 root 의 UID 인 0 의 경우에는 server=root / client=anonymous 로 인식되어 소유자가 될 수 없다. 

[실습] no_root_squash 옵션 실습.

[실습] MAN Page Server 구축 (Diskless Client 를 위함)

[실습] home directory server 구축

[실습] CD/ROM server 구축

[실습] 원격 서버에 백업하는 방법

[실습] NFSv4 server 구축 (only nfsv4)

'모의해킹 침해대응 과정 > Liunx 관리' 카테고리의 다른 글

Log server / day 21  (0) 2021.04.23
SAMBA server / day 21  (0) 2021.04.23
Mail / day 19  (0) 2021.04.21
FTP server / day18  (0) 2021.04.20
Apache web server / day 17  (0) 2021.04.20