시스템 보안

12. NFS (1)

JNU 2021. 12. 27. 13:42
반응형

오늘 배워볼 내용은 바로 NFS야

NFS는 Network File System의 약자인데 파일을 서로 공유할 때 사용하는 시스템이지

이를 통해서 서로 다른 OS를 가진 host끼리도 파일을 같이 공유할 수 있어

그러나 보안에서는 항상 편리한 만큼 취약점도 존재하게 되는데,

서로 같은 파일을 공유하다보니 공유하는 파일들 사이에서 취약점들이 발생하게 돼

그래서 이번에는 NFS를 알아보면서 어떻게 구성되어 있고 어떤 부분이 취약한지 알아보자

 

 

 

1. NFS 사용 및 설정파일

 

먼저 NFS를 사용하기 위해서는 두 가지 프로그램이 선행되어야 해

첫 번째는 portmapper, 두 번째는 NFS 야

portmapper는 왜 사용하는 거야???

NFS를 실행하는 데몬이 port까지 연결할 수 있는 기능이 없어 그 기능을 대신해주는 일을 수행하기 때문이야

그래서 항상 NFS와 관련된 파일을 수정하거나 실행할 때는 두 가지 명령을 꼭 실행해줘야 해

 

1. service portmap restart

2. service nfs restart

 

환경설정 파일: /etc/exports

NFS를 실행시키기 위한 일종의 환경설정 파일인데 여기서 접근권한들을 부여해줄 수 있어

접근권한은 밑의 형식처럼 부여하게 돼

 

파일 형태: (공유 디렉터리) (client IP 주소) (권한, sync)

/nfs 192.168.10.xxx (rw, sync) : /nfs 공유 디렉터리에 192.168.10.0/24 대역을 동기화하고 rw 권한을 부여

/nfs 192.168.10.100 (ro, sync) : /nfs 공유 디렉토리에 192.168.10.100을 동기화하고 읽기 권한만 부여

 

 

[권한 종류]

- ro : 읽기 권한 부여

- secure : 1024 이하로 port 연결

- no access : access 차단

- root_squash : root 권한 허용

 

 

 

Linux와 Linux 사이의 NFS 연결

 

그러면 192.168.10.100과 192.168.10.135 주소를 가진 centos와 sulinux 끼리

NFS를 실행할 수 있도록 해보자

 

 

1. 공유 디렉터리인 /nfs를 만들고 /etc/exports에 다음과 같이 명령어를 입력해

/nfs 192.168.10.100 (rw, sync)

그리고 service nfs restart를 실행하도록 하자

 

이제 우리는 /nfs 디렉터리를 공유 디렉터리로 사용할 거야 (별표 친 부분!)

추가적으로 방화벽도 잠시 stop 해두자 추후에 방화벽을 실행한 상태에서 연결해보자

지금 nfs 디렉토리의 권한은 777로 부여했어

 

 

2. centos에서 nfs 관련 파일을 설치하고 nfs와 rpcbind를 실행시키도록 하자

rpcbind는 sulinux의 portmapper와 같은 기능을 한다고 보면 돼

마지막으로 sulinux와 centos의 파일 공유를 위한 mount 명령을 실행하도록 하자

 

 

 

3. mount 명령이 실행되면 각각의 OS에서 df 명령으로 mount를 확인해보도록 하자

현재 sulinux와 centos의 /mnt 디렉토리가 mount된 것을 볼 수 있어

 

 

4. sulinux와 centos에서 각각 파일 하나 디렉터리 하나씩 만들어보도록 하자

그러면 다음과 같이 ls-l 명령의 결과가 나오게 된다.

jnu 디렉터리와 jnu1.txt 파일은 centos에서 생성했고

jnu2 디렉토리와 jnu2.txt 파일은 centos에서 생성했다.

 

 

- centos /mnt 디렉토리

 

 

- sulinux /nfs 디렉토리

 

이렇듯 서로 다른 host가 같은 파일 디렉터리를 공유하여

불필요한 연결과 설정 필요 없이 편리하게 파일들을 사용할 수 있게 되었어

 

 

 

 

Linux와 Windows 사이의 NFS 연결

 

1. windows 10에서 새로운 user인 root를 생성하고 로컬 디스크에 win 10이라는 디렉터리를 만들자

여기서 사용할 root는 nfs에서 사용할 계정이고, win 10은 nfs에서 사용할 디렉터리야

 

 

추가적으로 win 10 디렉터리를 만들면 해당 디렉터리에 권한을 부여해줘야 해

win 10의 고급 공유로 들어가서 

Everyone을 선택 후 해당 사용권한에 check를 해주도록 하자

 

 

2. mount -t cifs //192.168.10.134/win 10 /mnt 명령을 centos에서 실행하면 

windows10에서 생성한 root 계정으로 비밀번호를 입력하라고 나와

여기서 비밀번호인 123456을 입력해주고 df로 디스크 상태를 확인해주면

windows10과 /mnt 디렉터리가 마운트 된 것을 알 수 있어

 

여기서 cifs 라는 option이 보일텐데 서로 다른 file system을 변환시켜 전달시킬 때 사용하는 option이야

현재 windows와 linux가 다른 file system을 사용하기 때문에 이를 연결시키기 위해 cifs를 사용한거야

cifs= common interest file system의 약자

 



일단 오늘은 여기서 끊어가도록 할게

더 글을 쓰려고 했는데 너무 길어질 것 같아서 ㅜㅜ......

현재 NFS 연결 상태는 방화벽을 중단한 상황에서 연결했기 때문에 큰 의미가 없어

그래서 다음 시간에는 방화벽을 실행한 상태에서 NFS 연결을 어떻게 실행시키는지 확인해보도록 할게

 

 

반응형