작업 환경

  • VMware Workstation Pro (17.6.2 ver)
  • Server : 
    • Rocky_Linux(8.10 ver) : 10.10.10.10/24 (VMnet1)
  • Client:
    • Kali_Linux(2024.04 ver) : 20.20.20.20/24 (VMnet2)
  • GNS 구성도

 

구성 흐름

1. HDD(3G) 추가 및 mount

2. 유저를 생성하기 전, 홈 디렉터리 및 스켈파일 생성

3. ftp 서비스 관련 설정

4. 방화벽 설정

 


1. HDD(3G) 추가 및 mount 

 

① HDD 스캔하기

find / -name scan

 

② 새로 추가한 HDD를 PC에 인식시키기

echo "- - -" > /sys/devices/pci0000:00/0000:00:10.0/host2/scsi_host/host2/scan

 

③ 확인

/dev/sdb 생성 확인

 

④ ext4 타입으로 포맷

mkfs.ext4 /dev/sdb

 

⑤ /export/sdb 디렉터리에 mount

mount /dev/sdb /export/sdb

 

⑥ 자동 마운트 설정

  • 첫 번째, 해당 디스크의 UUID를 알아야함(복사)
blkid

  • 두 번째, 자동 마운트 설정 파일로 접근
vi /etc/fstab

 

  • 세 번째, UUID 정보를 파일 맨 아래에 추가

 ""

더보기

※참고 /etc/fstab 파일의 각 행은 모두 6개의 항목으로 구성되어 있다.

  1. 장치명 : 사용자가 보유한 볼륨 이름 
  2. 마운트 포인트 : 볼륨을 마운트하려는 위치(절대경로)
  3. 파일시스템 : ext4, swap, xfs 등등
  4. 마운트 옵션 : defaults(auto, rw, nouser, exec, suid 옵션을 모두 포함)
  5. dump 설정 : 0 (dump 되지 않는 파일 시스템), 1 (백업 등의 목적으로 dump 가능한 파일 시스템)
  6. fsck 설정 : 부팅시 fsck를 통해 파일 시스템을 체크할지 여부 설정
    • 0 : 부팅 시 fsck 미실행, 1 : 부팅 시 root 파일 시스템 체크, 2 : 부팅 시 root 이외의 파일 시스템 체크

 

2. 유저 생성

- 홈 경로 : /export/sdb/home/유저명

- 스켈경로 : /skel3/유저명

mkdir -p /export/sdb/home/user5/pub # 홈경로 생성

mkdir /skel3
cp -a /etc/skel/ /skel3/user5   # 스켈경로 생성

useradd -d /export/sdb/home/user5 -mk /skel3/user5 user5  # user5 생성
passwd 	# 패스워드 설정

chown user5:user5 /export/sdb/home/user5  # root로 생성 -> 소유자를 admin5로 변경
chmod 740 /export/sdb/home/user5   # 소유자=모든 권한, 그룹=읽기만가능

useradd test5
passwd test5
usermod -G admin5 test5   # admin5 그룹에 test5를 추가
usermod -d ~admin5/pub    # test5 홈디렉터리 변경
tail -n 2 /etc/passwd  # 확인
id test5  # 확인

 

 

3. ftp 서비스 관련 설정

- FTP에 대한 설정은 /etc/vsftpd/vsftpd.conf 파일에서 진행

vi /etc/vsftp/vsftpd.conf
# /etc/vsftpd/vsftpd.conf 모든 설정 정리

anonymous_enable=NO    # 익명 사용자 FTP 접근 차단

local_enable=YES       # 로컬 사용자의 FTP 접근 허용

write_enable=YES       # 로컬 사용자의 파일 업로드/수정 허용

local_umask=022        # 로컬 사용자가 파일 업로드시의 기본 파일 권한 설정

#anon_upload_enable=YES   # 익명 사용자의 파일 업로드 설정. (주석=비활성화)

#anon_mkdir_write_enable=YES   # 익명 사용자가 디렉토리를 생성 권한 설정 (주석=비활성화)

dirmessage_enable=YES     # 디렉토리에 접근할 때, 디렉토리 메시지 표시(ex = README파일)

xferlog_enable=YES     # 파일 전송 로그를 활성화

connect_from_port_20=YES    # FTP 데이터 전송을 위해 포트 20을 사용하도록 설정

#chown_uploads=YES     # 업로드된 파일의 소유권을 변경하도록 설정 (주석=비활성화)
#chown_username=whoever   # 파일 소유자가 될 사용자를 지정 (whoever=파일 소유자)

#xferlog_file=/var/log/xferlog   # 로그 파일의 전송 위치를 지정(주석=기본 위치로 설정)

xferlog_std_format=YES    # 표준 형식으로 전송 로그를 기록(쉽게 분석가능)

#idle_session_timeout=600   # 세션이 비활성 상태로 유지되는 시간(초)을 설정

#data_connection_timeout=120  # 데이터 연결 타임아웃 시간을 설정(데이터 미 전송시 연결 해제)

#nopriv_user=ftpsecure  # 

#async_abor_enable=YES  # ABOR 명령을 허용하는 설정(ABOR : FTP에서 전송을 중단하는 명령)

#ascii_upload_enable=YES  # 텍스트 파일을 업로드할 때 ASCII 모드를 사용하도록 설정
#ascii_download_enable=YES # 텍스트 파일을 다운로드할 때 ASCII 모드를 사용하도록 설정

banner_file=/sun/sun  # FTP 서버에 접속할 때 표시할 배너 메시지 파일을 설정

#deny_email_enable=YES  # 이메일 도메인 차단 기능을 활성화

#banned_email_file=/etc/vsftpd/banned_emails  # 차단된 이메일 주소 목록을 저장하는 파일을 지정

#chroot_local_user=YES  # 로컬 사용자를 자신들의 홈 디렉토리로 제한(홈 디렉토리 외 접근 불가)
#chroot_list_enable=YES  # 위의 설정 활성화 시 예외시킬 유저는 아래의 list에 정보가 있어야 함

#chroot_list_file=/etc/vsftpd/chroot_list # 위의 설정 활성화 시, 예외 시킬 파일 경로 설정

#ls_recurse_enable=YES  # 디렉토리 목록을 재귀적으로 표시

listen=YES               # FTP 서버가 들어오는 연결을 수락하도록 설정(YES=서버 수신 대기 상태)
listen_ipv6=NO           # IPv6 주소에서의 연결을 비활성화(NO=IPv4 주소만 사용)
pam_service_name=vsftpd  # PAM을 사용하여 인증을 처리하는 서비스 <- vsftpd 사용
userlist_enable=YES      # FTP 접속을 허용할 사용자 목록을 관리하는 기능을 활성화
anon_root=/anon          # 익명 사용자가 접속할 기본 디렉토리를 /anon으로 설정
pasv_enable=yes          # 패시브 모드를 활성화
pasv_min_port=50000      # 패시브 모드에서 사용할 최소 포트 번호를 50000으로 설정
pasv_max_port=50010      # 패시브 모드에서 사용할 최대 포트 번호를 50010으로 설정
		 	 # 위의 포트 범위를 방화벽에서 열어야 함

 

  • 설정마치면 항상 서비스 재시작
systemctl restart vsftpd

 

4. 방화벽 설정

  • 방화벽(데몬) 재시작
systemctl restart firewalld
  • 방화벽(데몬) 상태 확인
systemctl status firewalld

 

  • 방화벽에 ftp 서비스 추가
firewall-cmd --permanent --add-service ftp

  • 방화벽 재시작
firewalld-cmd --reload

  • 방화벽 리스트 확인
firewall-cmd --list-all

 

 

 


알FTP로 접근하면 파일 공유 가능해진다.