- 基本 MariaDB 安裝與設定,請參考這一篇文章!
設定目標:
- 利用 MariaDB 來管理 Vsftpd 的使用者!
快速安裝流程:
-
安裝 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
-
利用 git 下載 pam_mysql 模組:
#mkdir /root/pam_mysql #cd /root/pam_mysql #git clone https://github.com/NigelCunningham/pam-MySQL
-
編譯 pam_mysql 模組:
#cd pam-MySQL/ #yum install make gcc-c++ autoconf automake libtool rpm-build pam-devel mariadb-devel #./configure --with-pam-mods-dir=/usr/lib64/security --with-mysql=/bin/mysql --with-pam=/lib64/security
- https://www.howtoforge.com/tutorial/virtual-hosting-with-vsftpd-and-mysql-on-ubuntu-15.10/
- https://wiki.centos.org/zh-tw/HowTos/VirtualVsFtpd
- https://access.redhat.com/solutions/3436