본문 바로가기
Linux

centos에서 vsftpd + mysql 사용

by 씨엔아이소프트 2018. 1. 18.
반응형

centos에서 vsftpd + mysql 사용

Vsftpd 용 계정 추가 및 가상 사용자 디렉토리 생성

Vsftpd 가 사용할 계정은 vsftpd 로 가정하고 추가합니다.

> useradd vsftpd
> passwd vsftpd

가상 사용자가 사용할 디렉토리는 vsftpd 에 users 디렉토리를 사용한다고 가정합니다. 
가상 사용자를 user1 이라고 가정하고 가상 사용자의 홈 디렉토리까지 만들어 줍니다.

> mkdir /home/vsftpd/users
> mkdir /home/vsftpd/users/user1

Mysql Server 설치

가상 유저 정보를 저장하기 위한 mysql 서버를 설치하고 데몬을 띄운후에 mysql root 유저 설정을 해줍니다.

> yum install mysql-server mysql-devel
> chkconfig mysqld on
> service mysqld start
> mysqladmin -uroot password rootpassword

mysql 클라이언트로 mysql 서버에 접속하여 vsftpd 에서 사용할 가상 유저의 DB 를 생성해줍니다.

> mysql -u root -p
mysql> CREATE DATABASE vsftpd;
mysql> GRANT SELECT ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY 'vsftpdpassword';
mysql> FLUSH PRIVILEGES;
mysql> USE vsftpd;
mysql> CREATE TABLE `accounts` (
    -> `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    -> `username` VARCHAR( 30 ) NOT NULL ,
    -> `pass` VARCHAR( 50 ) NOT NULL ,
    -> UNIQUE ( `username` )
    -> ) ENGINE = MYISAM ;

이제 가상 유저로 사용할 사용자의 계정을 추가해 줍니다.

mysql> INSERT INTO accounts (username, pass) VALUES ('user1', md5('user1password'));

PAM mysql library 설치

vsftpd 에서는 사용자 인증을 위해서 pam 을 사용합니다. 이 pam 인증을 mysql 로 받기 위해서는 pam_mysql.so 라이브러리가 필요합니다. 
centos 에서는 mysql 용 pam library 파일을 제공해주지 않아서 EPEL 저장소에서 받아서 설치해야 합니다. 아래와 같이 설치하고 확인합니다.

> rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
> yum install pam_mysql
> ls -al /lib64/security/pam_mysql.so
-rwxr-xr-x 1 root root 42424 Aug 14  2011 /lib64/security/pam_mysql.so 

pam을 통해 mysql DB 를 통한 인증이 가능하도록 pam 설정을 /etc/pam.d/vsftpd 파일을 아래와 같이 편집 해줍니다.

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_mysql.so  user=vsftpd passwd=vsftpdpassword host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=3
account    required     pam_mysql.so  user=vsftpd passwd=vsftpdpassword host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=3

Vsftpd 설치

> yum install vsftpd

설치 후, 아래와 같이 vi 편집기로 /etc/vsftpd/vsftpd.conf 파일을 열어 가상 유저사용에 관한 설정을 해줍니다. 각 기본 설정은 vsftpd 설정 문서를 참고합니다.

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
chroot_local_user=YES
listen=YES

이 부분 부터가 가상 사용자 사용에 관한 설정입니다.

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

guest_enable=YES
guest_username=vsftpd
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/users

pam 을 통한 mysql DB 를 통한 인증 및 가상 사용자 디렉토리 설정을 끝마쳤습니다. 
각 사용자에 대한 개별 설정은 user_config_dir 에서 지정한 디렉토리에 가상 사용자 계정과 같은 이름(/etc/vsftpd/users/user1) 으로 아래와 같이 생성합니다.

dirlist_enable=YES
download_enable=YES
local_root=/home/vsftpd/users/user1
write_enable=YES

이제 vsftpd 를 서비스에 등록하고 실행하면 가상 유저로 접속이 가능해집니다.

> chkconfig vsftpd on
> service vsftpd start
> ftp localhost
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root): user1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

이제 다른 가상 사용자를 동적으로 추가 하려면, 아래 과정을 거치면 됩니다. 
1. 가상 사용자 계정 디렉토리(/home/vsftpd/users/user2) 를 만듬 
2. 가상 사용자 계정 설정 파일(/etc/vsftpd/users/user2)을 만듬 
3. mysql DB 에 가상 사용자 계정(user2) 및 암호(user2password) 를 넣어줌

출처 : https://reachlabkr.wordpress.com/2015/01/21/vsftpd-virtual-user-with-mysql-on-centos-6-5-2/

반응형

댓글