IT/linux

nfs server with selinux

울티마 2023. 6. 22. 13:59

- Server : /nfsshare

- Client : /nfs/public

 

- file system : xfs 보다 ext4의 안정성이 다소 높음

  >> file system의 memory cache에서 실제 디스크에 write 하는 주기가 xfs보다 ext4가 더 짧아

       nfs 비정상 종료 시 손실되는 데이터량이 적음

       (예: ext4는 5초 주기, xfs는 1분 주기 - nfs 서버의 성능이 제한적일 경우 xfs 선택이 유리)

- nfs 마운트 옵션

  noatime, nodiratime : 접근 빈도가 높은 nfs 설정 시 설정. file/dir의 수정 시간과는 다른 항목으로

      audit이나 최종 접근 시간이 필요하지 않을 경우 성능 향상을 꾀할 수 있음

      >> noatime     : file access 시 inode table의 atime을 update하지 않도록 설정

      >> nodiratime : dir access 시 inode table의 atime을 update하지 않도록 설정

      >> audit이나 증분백업 설정 등의 atime 확인이 필요할 경우에는 설정하면 안됨

  nosuid 옵션 : 보안을 위해 클라이언트에서 접속해서 suid 동작하지 않게 설정

 

1. 패키지 설치

# yum -y install nfs nfs-utils rpc-bind

 

2. 기본 NFS share 정책 설정

# setsebool -P nfs_export_all_rw 1

>> NFS share 디렉토리에 read/write 권한 부여

# setsebool -P nfs_export_all_ro 1

>> NFS share 디렉토리에 read only 권한 부여

# setsetbool -P use_nfs_home_dirs 1

>> 사용자 home 디렉토리의 NFS share 허용

 

3. 공유 디렉토리 설정

(1) 디렉토리 생성 및 속성 설정

# mkdir -p /nfsshare/wasShare

# chmod 756 /nfsshare

 

(2) 공유 디렉토리  설정

# ls -l -Z /nfsshare/

drwxr-xr-x. nfsnobody nobody unconfined_u:object_r:default_t:s0 wasShare

 

# semanage fcontext -a -t public_content_rw_t  "/nfsshare/wasShare(/.*)?"

>> read/write 권한 부여

# semanage fcontext -a -t public_content_t  "/nfsshare/readonly(/.*)?"

>> read only 권한 부여

 

# restorecon -Rv /nfsshare

 

# ls -l -Z /nfsshare/
drwxr-xr-x. nfsnobody  nobody    unconfined_u:object_r:public_content_rw_t:s0 wasShare

 

4. exportfs 설정 : /etc/exportfs

# vi /etc/exports

/nfsshare/wasShare 192.168.10.10/255.255.255.255(rw,no_root_squash)

>> 192.168.10.10 서버에 read/write 권한 부여, root 권한으로 접속

 

/nfsshare 10.100.169.0/255.255.255.0(rw,sync,no_root_squash,no_all_squash)

>> rw : write 허용

>> sync : Synchronize shared directory

>> no_root_squash : enable root privilege

>> no_all_squash : enable user's authority

 

5. 방화벽 설정

- server name 기준

# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --permanent --add-service=rpc-bind
# firewall-cmd --reload

 

- port 기준

  • TCP : 111, 892, 2049, 32803

# firewall-cmd --add-port=111/tcp --permanent

# firewall-cmd --add-port=892/tcp --permanent

# firewall-cmd --add-port=2049/tcp --permanent

# firewall-cmd --add-port=32803/tcp --permanent

  • UDP : 111, 892, 2049, 32803 (32769?)

# firewall-cmd --add-port=111/udp --permanent

# firewall-cmd --add-port=892/udp --permanent

# firewall-cmd --add-port=2049/udp --permanent

# firewall-cmd --add-port=32803/udp --permanent

 

# firewall-cmd --reload

 

5. 서비스 가동 및 확인

# systemctl enable nfs

# systemctl enable rpcbind

 

# systemctl start nfs

# systemctl start rpcbind

# exportfs -v   >> share 디렉토리 표시

# rpcinfo -p     >> rpcbind 사용하는 포트 표시

 

'IT > linux' 카테고리의 다른 글

X11 forwarding over SSH  (0) 2023.06.22
Ansible Controller 설치 (bundle) - Trial License  (0) 2023.06.20
openviswitch port mirror  (0) 2022.06.15
tip : disk full  (0) 2022.06.10
extending xfs filesystem (xfs 확장)  (0) 2022.06.10