-
安裝 EPEL 套件:
#rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
-
安裝 vsftpd 相關套件:
#yum install -y vsftpd-*
-
在 mariadb 裡,建立給 vsftpd 專用的資料庫與資料表:
#mysql -u root -p
MariaDB [(none)]> CREATE DATABASE vsftpd;
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'a123456';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> USE vsftpd;
MariaDB [vsftpd]> CREATE TABLE `accounts` )
-> `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> `username` VARCHAR(100) NOT NULL,
-> `pass` VARCHAR(200) NOT NULL,
-> UNIQUE (`username`)
-> )ENGINE=InnoDB, CHARSET=utf8;
MariaDB [vsftpd]> quit;
-
新增一個實機使用者,用來配合 vsftpd 運作:
#groupadd nogroup
#useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
-
編輯 vsftpd 設定檔:
#vim /etc/vsftpd/vsftpd.conf
(修改或是新增下列設定參數:)
anonymous_enable=NO
nopriv_user=vsftpd
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
-
建立各別使用者的設定檔目錄:
#mkdir /etc/vsftpd/vsftpd_user_conf
#mkdir /var/run/vsftpd
-
設定 vsftpd 的 PAM 模組,使 vsftpd 在建立連線時,讀取資料庫內容:
#cd /etc/pam.d
#cp vsftpd /root/vsftpd.pam
#cat /dev/null > vsftpd
#vim vsftp
(輸入下列兩行內容)
auth required pam_mysql.so user=vsftpd passwd=a123456 host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=vsftpd passwd=a123456 host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
-
開啟防火牆:
#firewall-cmd --permanent --add-service=ftp
#firewall-cmd --reload
-
設定 SELinux:
#setsebool -P ftp_home_dir on
#setsebool -P ftpd_connect_db on
#setsebool -P ftpd_full_access on
#setsebool -P ftpd_use_passive_mode on
-
啟動 vsftpd 服務:
#systemctl enable vsftpd.service
#systemctl start vsftpd.service
-
使用 TLS 通訊用的密鑰對:
#mkdir -p /etc/ssl/private
#chmod 700 /etc/ssl/private
#openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
-
重新編寫 vsftpd 設定檔:
#vim /etc/vsftpd/vsftpd.conf
(增加下列設定:)
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
rsa_cert_file=/etc/ssl/private/vsftpd.pem
-
重新啟動 vsftpd 服務:
#systemctl restart vsftpd.service
-
建立 vsftpd 虚擬使用者:
#mysql -u vsftpd -p
MariaDB [(none)]> use vsftpd;
MariaDB [vsftpd]> INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));
MariaDB [vsftpd]> quit;
-
建立虚擬使用者家目錄:
#mkdir /home/vsftpd/testuser
#chown vsftpd:nogroup /home/vsftpd/testuser
#chmod a-w /home/vsftpd/testuser
#restorecon -R /home