작업 환경
- 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개의 항목으로 구성되어 있다.
- 장치명 : 사용자가 보유한 볼륨 이름
- 마운트 포인트 : 볼륨을 마운트하려는 위치(절대경로)
- 파일시스템 : ext4, swap, xfs 등등
- 마운트 옵션 : defaults(auto, rw, nouser, exec, suid 옵션을 모두 포함)
- dump 설정 : 0 (dump 되지 않는 파일 시스템), 1 (백업 등의 목적으로 dump 가능한 파일 시스템)
- 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로 접근하면 파일 공유 가능해진다.
'Linux' 카테고리의 다른 글
[LINUX] Fail2Ban, msmtp 이용하여 로그 기록을 Gmail로 보내기 (0) | 2025.04.14 |
---|