Security/리눅스

정보보안 스터디 - 7주차 6일 - FTP/NFS/Samba 서버

wonder12 2022. 11. 29. 22:25

 

포트번호

telnet 23

ssh 22

ftp 21: 연결

20 : ls등 파일 조회 및 전송

 

 

 

☞ FTP 서버

파일공유를 하며 프로그램으로는 filezila가 있죠.

ftp는 파일을 주는 서버에서는

vsftpd를 설치해야하고

클라이언트는 ftp를 설치해야합니다. 

 

 

참고로 파일을 설치하면 경로부터 확인해줍니다.

rpm -qa vsftpd

rpm -ql vsftpd | egrep -v "/lib|/doc|/man"

 

 

접속방법

ftp

>open

>192.168.2.200 또는

보통 ftp 192.168.2.200 로 많이 접속합니다.

 

ftp에 접속을 하면

명령어를 넣어 ls, cd처럼 이동과 get,put처럼 파일교환이 가능하지만 

!를 붙혀넣으면 본래 터미널에서 명령어를 쓸 수 있습니다.

lcd만 조금 명령어가 다릅니다.

 

 

ftp에서 설정은 vi /etc/vsftpd/vsftpd.conf에서 파일에 대한 접근 등을 세부적으로 설정할 수 있습니다.

보통 처음 설정하기 전에 cp -p vsftpd.conf vsftpd.conf.bak 또는 old로 백업해둡니다.

 

 

세부 설정

- banner
배너를 설정하는 이유는 초기세팅의 배너가 ftp 버전이 노출되기 때문입니다. 버전이 노출되면 취약성을 이용해 악의적인 접근을 할 수 있습니다. text banner처럼 길이가 길다면 txt파일을 만들어 연결을 시키고
짧다면 vi에 추가해넣습니다. 
- 루트계정에 대한 접속 on/off
기본은 off입니다.
- 익명 접속 on/off
기본적으로 차단이 되지만 on을 한다면 읽기도 제한을 해야합니다.
그래서 홈디렉토리가 실제로는 /var/ftp > pub 로 설정됩니다.
다운만 가능하지만 익명 업로드를 가능하게 하려고 한다면?
예를 들어 100개의 PC에서 보고서를 받으려고 할 때 익명업로드는 허용해야하지만 읽기나 수정, 삭제는 차단해야합니다. 그래서 기본적으로 삭제는 안되게 되어있어서 다행이고 w는 줘서 업로드 가능하되 디렉토리에 대한 읽기권한을 안주면 디렉토리의 파일들이 안보이게 됩니다.
- chroot 정해진 파일 빼고는 상위디렉토리로 올라가지 못합니다. 아무나 상위디렉토리로 올라가서 파일을 읽을 수 있게되면 보안에 취약하기 때문입니다.
- 특정유저로의 접속 차단
vi user_list, vi ftpusers 에 등록을 해두면
user_list > ftpusers 순으로 차단이 됩니다.
잘모르겠다면 둘다 등록하면 됩니다.
- 포트 설정
기본설정은 21이지만 기본설정으로 하면 예상가능하고 앞에 있는 번호라서 포트스캐너가 쉽게 찾을 수 있습니다. 그러므로 임의로 10024로 변경 합니다.
>> ftp 192.168.2.200 10024 접속
- max_client
클라이언트 연결 수 제한
- max_per_ip
중복접속 제한으로 공격 방어
- xferlog
업/다운로드한 내역확인이며 기본설정되어있습니다.

systemctl restart vsftpd

 

 

연결확인

netstat -ntp

ftp연결 등 네트워크로 연결된 프로세스를 포트와 함께 확인

로그인 실패되어도 tcp:21로 연결되어 있습니다.

 

ps -ef | grep 

서버1 내에서 모든 유저의 프로세스 확인

 

220 로그인 연결메세지
330 패스워드 요구
530 로그인 실패
230 로그인 성공
221 로그아웃

 

 

 

 

NFS 서버

 

nfs은 네트워크 파일 시스템으로

원래는 내부PC에서 하드디스크끼리 마운트를 해서 사용을 했다면 서로 다른 네트워크간의 마운트를 할 수 있습니다.

1. 예를 들어 PC 각각 용량을 크게 하는 것이 아니라 용량이 큰 서버를 하나 놓고 PC를 마운트로 연결시켜 쓰는 방식이 가장 많습니다.

2. 그리고 한 시스템의 용량이 부족해서 물리적으로 디스크를 추가하려면 서비스를 재부팅해야하는데 그렇게 된다면 서비스의 연속성이 떨어져 손실이 발생하기 때문에 용량이 큰 서버를 두고 마운트 하는방법입니다.

기본포트는 111번/2049번이며

netstat -ntl을 확인해보면 기본적으로 listen으로 켜져있습니다.

 

 

설정과정

 

클라이언트1은  서버1에 읽기,쓰기 모두로

클라이언트2는 서버2와 읽기전용으로 마운트합니다.

 

서버에서 폴더, 파일을 만들어주고 

chmod 777 share1 share2 로 모든권한을 줍니다.

어짜피 아래 설정에서 권한제한이 적용됩니다.

 

vi /etc/exports에서

192.168.2.201 클라이언트에게 /test/share1 을 공유하겠다고 설정해주고

/test/share1   192.168.2.201 (rw)

/test/share2   192.168.2.201 (rw)

 

exportfs -a

exportfs

로 확인

 

 

클라이언트에서

폴더, 파일을 만들어주고

 

마운트해줍니다.

mount -t nfs 192.168.2.200:/test/share1 /mnt/nfs1

mount -t nfs 192.168.2.200:/test/share2 /mnt/nfs2

 

df -h

로 마운트된 리스크를 봅니다.

 

재부팅해도 설정을 유지하려면

vi /etc/fstab 에서

마운트 사항들을 추가해줍니다.

그러면

umount -a

mount -a

를 해도 유지가 됩니다.

 

실제로 클라이언트 /mnt/nfs1에 보면 잘연결되어서

share1에 대한 파일이 있는 것을 확인할 수 있습니다.

쓰기가 가능하다면 파일도 만들어 공유할 수 있습니다.

읽기전용이라면 불가능합니다.

 

삭제

테스트가 끝났다면 마운트를 해제하고

설정도 원래대로 돌리고

파일을 삭제해줍니다.

 

클라

vi /etc/fstab < 삭제

umount -a

df -h

rm -rf /mnt/nfs*

 

서버

rm -rf /test/share*

vi /etc/exports < 삭제

systemctl restart nfs-server

exportfs -a

exportfs

 

 

 

 

 

Samba 서버

samba는 윈도우와 리눅스 운영체제끼리 정보 교환을 하기 위해서 사용합니다.

 

smbd: 파일 공유, 권한 부여 (tcp 139, 윈도우 445)

nmbd ; Netbios Nameserver 지원, 서비스 알림 (udp 137, 138)

 

설치

yum -y install samba samba-client cifs-utils

 

 

systemctl enable --now smb nmb

systemctl status smb nmb

 

 

포트번호 확인

netstat -ntpl

 

ps -ef | egrep "smbd|nmbd" 으로

프로세스 확인하면 연결없지만 잡혀있습니다.

standalone 방식 입니다.

 

 

설정

vi /etc/samba/smb.conf

workgroup을 workgroup으로변경

허용가능한 ip주소대 추가

readonly/writable 수정

 

 

윈도우 실행창에서 \\192.168.2.200 실행하여

아이디와 비밀번호를 입력하면 따로 프로그램이 없어도 공유가 가능합니다. 

디렉토리는 public으로 실제 디렉토리와 다르게 나옵니다.

readonly/writable 수정한다면 업로드 가능여부 설정할 수 있습니다.

 

 

netstat -ntp 또는 

smbstatus로 연결도 확인해줍니다.

 

 

history

최근 사용했던 명령어가 1000개까지 노출됩니다.