1. vsftpd 패키지 설치:
터미널을 열고 다음 명령어를 실행하여 vsftpd 패키지를 설치합니다.
sudo apt update
sudo apt install vsftpd
2. vsftpd 서비스 시작 및 상태 확인:
sudo systemctl status vsftpd
"active (running)"이라고 표시되면 정상적으로 실행 중인 것입니다.
3. vsftpd 설정 파일 편집:
vsftpd의 주요 설정 파일은 /etc/vsftpd.conf 입니다. 텍스트 편집기 (예: nano)를 사용하여 이 파일을 편집합니다.
sudo nano /etc/vsftpd.conf
다음 항목들을 점검하세요:
listen=YES
listen_ipv6=NO
anonymous_enable=NO # 익명 로그인 비활성화
local_enable=YES # 로컬 사용자 로그인 허용
write_enable=YES # 파일 업로드/수정 허용
chroot_local_user=YES # 사용자를 홈 디렉토리로 제한
user_sub_token=$USER
local_root=/home/$USER/ftp # 사용자의 FTP 디렉토리 지정
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
$USER는 리터럴 문자열이 아니라, 접속하는 실제 사용자 계정 이름으로 자동 치환됩니다.
즉, 설정 파일에 그대로 $USER라고 작성해야 합니다.
예를 들어:
FTP로 devpc라는 사용자가 접속하면, local_root=/home/devpc/ftp로 인식됩니다.
user1이라는 계정이 접속하면, local_root=/home/user1/ftp로 자동 인식됩니다.
userlist_enable=YES인 경우, 아래 경로의 파일도 확인:
cat /etc/vsftpd.user_list
이 파일에 "사용자계정"이 없거나, 허용된 사용자 목록으로 등록되어 있는지 확인하세요.
userlist_deny=NO인 경우에만 이 목록에 있어야 합니다.
4. 계정의 쉘 및 홈 디렉토리 확인 :
계정이 FTP 접속을 위한 최소한의 권한과 쉘을 가지고 있어야 합니다.
cat /etc/passwd | grep 사용자계정
출력 예시:
사용자계정:x:1001:1001::/home/사용자계정:/bin/bash
/bin/false나 /usr/sbin/nologin 등으로 되어 있다면 FTP 접속이 제한됩니다.
사용자 디렉토리 준비
mkdir -p /home/사용자명/ftp/files
chmod 550 /home/사용자명/ftp
chmod 750 /home/사용자명/ftp/files
chown -R 사용자명:사용자명 /home/사용자명/ftp
5. 방화벽 허용
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw reload
5. FTP 재시작 및 로그 확인 :
설정을 수정한 뒤에는 반드시 FTP 서버를 재시작하세요.
sudo systemctl restart vsftpd
로그 확인:
sudo tail -f /var/log/vsftpd.log
vsftpd.log 파일이 없는 이유와 대처 방법
vsftpd.conf 파일을 열어 다음 항목을 확인하세요:
sudo nano /etc/vsftpd.conf
아래 항목들이 포함되어 있어야 합니다:
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
- xferlog_enable=YES → 전송 로그 기록
- log_ftp_protocol=YES → 명령 로그도 자세히 기록
- xferlog_file → 로그 파일 경로 지정
vsftpd를 재시작하세요
sudo systemctl restart vsftpd
ftp localhost 명령으로 접속 시 다음 오류 발생:
530 Login incorrect.
ftp: Login failed
오류 메시지 530 Login incorrect는 FTP 서버에서 인증(로그인)에 실패했을 때 발생합니다. 주로 다음 이유 때문입니다.
1. 아이디 또는 비밀번호 오류
- 입력한 사용자 계정명이 틀렸거나, 비밀번호 오타일 수 있습니다.
- 비밀번호 입력 시 화면에 아무것도 표시되지 않으므로 주의해서 입력하세요!
ftp localhost
Name (localhost:yourname): [정확한 계정명]
Password: [정확한 비밀번호]
2. 계정이 vsftpd에서 허용되지 않음
vsftpd.conf 파일을 확인해서 다음 설정들이 제대로 되어 있는지 보세요:
local_enable=YES # 로컬 사용자 로그인 허용
userlist_enable=YES # 사용자 제한 설정 사용 (있는 경우 주의)
userlist_deny=NO # 목록에 있는 사용자만 허용 (YES일 경우: 차단 목록이 됨)
userlist_file=/etc/vsftpd.user_list
- userlist_enable=YES라면, /etc/vsftpd.user_list 파일에 해당 계정이 있어야 합니다 (deny=NO일 경우).
- 반대로 userlist_deny=YES일 경우, 리스트에 있으면 차단되는 구조입니다.
점검 체크리스트
사용자명, 비밀번호 정확한지 |
로그인 시 입력 재확인 |
vsftpd 설정 확인 |
sudo nano /etc/vsftpd.conf |
쉘 권한 확인 |
cat /etc/passwd |
홈 디렉토리 존재 여부 |
ls -ld /home/사용자명 |
로그 확인 |
sudo journalctl -u vsftpd 또는 /var/log/vsftpd.log |
pam_service_name 확인
vsftpd는 PAM(인증 모듈)을 통해 로그인 처리를 합니다.
/etc/vsftpd.conf에 아래 줄이 있다면 주의:
pam_service_name=vsftpd
그리고 /etc/pam.d/vsftpd 파일이 존재해야 하고, 아래 줄이 있어야 합니다:
auth required pam_unix.so
account required pam_unix.so