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 |