우분투 리눅스 서버에 FTP 서버를 설치하자. + 가상 계정 설정.

FTP 서버는 종류가 다양하게 있지만 이번에 설치할 녀석은 vsftpd(https://security.appspot.com/vsftpd.html) 라는 녀석이다.

[code]$ sudo apt-get install vsftpd[/code]

역시나 설치는 간단하다. 내가 이래서 우분투를 사랑한다.

설치를 하면서 서비스도 같이 실행 시켜 버리기 때문에 바로 이용할 수 있다.

하지만 최근 특별한 이유가 없다면 FTP 서버를 설치하지 않는 이유는 보안 문제 때문이다.
FTP를 이용한 공격 방법도 많이 알려져 있기 때문에 FTP 서비스를 실행만 하고 있어도 여기 저기에서 접근 시도가 많이 이루어 진다.
서비스를 실행한 상태에서 로그를 살펴 보면 확인 가능하다.

[code]$ sudo tail -f /var/log/auth.log[/code]

SFTP로도 충분한 사람에겐 FTP는 사실 설치할 필요 없는 이유.

그럼에도 FTP 서버를 설치하였다면 좀 더 보안을 강화하여 가상 계정을 설정하는 방법이 있다.

서비스를 종료하고 설정 파일을 편집하자.

[code]$ sudo service vsftpd stop
$ sudo vim /etc/vsftpd.conf[/code]

설정 파일 최하단에 아래 가상 계정 설정을 덧붙여 준다.

[code]
guest_enable=YES
virtual_use_local_privs=YES
write_enable=YES
pam_service_name=vsftpd.virtual
user_sub_token=$USER
local_root=/home/ftp/$USER
chroot_local_user=YES
hide_ids=YES
allow_writeable_chroot=YES
[/code]

vsftpd 설정은 끝났으니 가상 계정을 생성할 준비를 하겠다.

우선 설치하고.

[code]$ sudo apt-get install db-util[/code]

가상 계정 정보와 vsftpd를 연결 시켜줄 설정 파일을 생성, 편집.

[code]$ sudo vi /etc/pam.d/vsftpd.virtual[/code]

아래 두 줄을 넣어 주면 된다.

[code]auth required pam_userdb.so db=/etc/vsftpd/virtual-users
account required pam_userdb.so db=/etc/vsftpd/virtual-users[/code]

이제 준비는 다 된 것 같다.
가상 계정을 생성해 보자.

가상 계정 정보들은 일반 텍스트 파일로 생성해서 vsftpd에서 사용할 db 파일로 변환을 해주어야 하는데 누출되지 않고 잃어 버리지 않게 잘 관리해주어야 할 필요가 있다.

작성 방식은 아이디와 패스워드를 줄 바꿈으로 적어 주면 된다.

<아이디1>
<비밀번호1>
<아이디2>
<비밀번호2>

이런 식.

[code]$ vi virtual-users.txt[/code]

생성 후 db 파일로 변환.

[code]$ sudo db_load -T -t hash -f virtual-users.txt /etc/vsftpd/virtual-users.db[/code]

마지막으로 정말 마지막으로 virtual-users.txt에 추가한 가상 계정이 사용할 폴더를 생성하고 권한을 주면 끝.

[code]$ sudo mkdir /home/ftp/[아이디1]
$ sudo chown ftp:ftp /home/ftp/[아이디1][/code]

서비스 실행하고.

[code]$ sudo service vsftpd start[/code]

FTP Client로 접속해서 테스트.

2 Replies to “우분투 리눅스 서버에 FTP 서버를 설치하자. + 가상 계정 설정.”

  1. sudo ufw allow 20/tcp
    sudo ufw allow 21/tcp
    sudo ufw allow 990/tcp
    sudo ufw allow 40000:50000/tcp
    sudo ufw status

    pasv_min_port=40000
    pasv_max_port=50000

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다