周軍宏
摘要:介紹了在Ceontos7.0系統(tǒng)環(huán)境下,支持虛擬用戶vsftpd服務(wù)的配置方法和步驟,包括Vsftpd、MySQL、Pam_mysql、FireWalld、SeLinux等的安裝及參數(shù)配置。
關(guān)鍵詞:centos;vsftpd;虛擬用戶;pam_mysql
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)30-0041-02
vsftp是Linux系統(tǒng)首推的FTP服務(wù)器軟件,在安全、穩(wěn)定、速度上有一定優(yōu)勢(shì)。本文結(jié)合單位實(shí)際介紹了FTP服務(wù)配置,最終實(shí)現(xiàn)這樣一個(gè)功能,匿名用戶僅能登錄下載文件,虛擬用戶能登錄并能在自己的文件夾內(nèi)上傳文件,這些文件夾對(duì)匿名用戶可見,虛擬用戶的用戶名、密碼存儲(chǔ)在MySQL數(shù)據(jù)庫中,同時(shí)修改Firewall、SeLinux配置保護(hù)系統(tǒng)安全。
1軟件安裝
考慮服務(wù)器效率及安全,Centos7選用最小安裝,并配置基本編譯環(huán)境。
vsftp安裝采用yum安裝,運(yùn)行命令如下:
yum install vsftpd
MySQL不采用yum安裝,否則在編譯pam_mysql時(shí)會(huì)發(fā)生找不到mysql.h文件的錯(cuò)誤,解決起來比較麻煩,采用源代碼編譯安裝比較好,安裝后mysql的頭文件和庫安裝在/usr/local/mysql目錄下。
pam_mysql是基于MySQL數(shù)據(jù)庫的PAM認(rèn)證模塊,是vsftpd與MySQL之間的橋梁,最新源代碼包為pam_mysql-0.7RC1.tar.gz,在字符命令界面下,可通過wget命令下載。下載解壓后在編譯時(shí)要設(shè)置兩個(gè)參數(shù):
--with-pam-mods-dir=/lib64/security #pam_mysql.so安裝位置。
--with-mysql=/usr/local/mysql #mysql頭文件和庫安裝位置。
2服務(wù)配置過程
2.1 pam_mysql配置
配置文件在/etc/pam.d目錄下,文件名用戶自己確定,本文中命名為vsftpd.mysql,文件中包括pam_mysql.so文件位置,MySQL數(shù)據(jù)庫用戶名,密碼,用戶數(shù)據(jù)庫名稱,用戶表名稱,表結(jié)構(gòu),加密方式等,具體如下:
auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=*** host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 verbose=1
account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=*** host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 verbose=1
verbose=1選項(xiàng)用于調(diào)試,輸出信息在/var/log/secure中。
2.2MySQL配置
MySQL數(shù)據(jù)庫配置主要包括新建一個(gè)“用戶數(shù)據(jù)庫”,一個(gè)用戶表,一個(gè)授權(quán)可對(duì)該“用戶數(shù)據(jù)庫”訪問的用戶,表結(jié)構(gòu)如下:
create table users (id int AUTO_INCREMENT NOT NULL, name char(16) binary NOT NULL, passwd char(48) binary NOT NULL, primary key(id) );
2.3 vsftpd配置
vsftpd配置文件/etc/vsftpd/vsftpd.conf,要實(shí)現(xiàn)文章引言部分所要求功能,如下幾個(gè)選項(xiàng)必須正確設(shè)置:
anonymous_enable=YES;
#開啟匿名用戶。
local_enable=YES;
#允許本地用戶登錄,不能設(shè)置為NO,否則虛擬用戶將不能訪問,虛擬用戶訪問在主機(jī)上其實(shí)也是以一種特殊本地用戶身份訪問。
chroot_list_enable=YES;chroot_local_user=NO;chroot_list_file=/etc/vsftpd/chroot_list;
#以上三個(gè)參數(shù)配合,限制登錄后鎖定在自己目錄中。
guest_enable=YES;
#啟用虛擬用戶
guest_username=ftp;
#虛擬用戶映射對(duì)應(yīng)的系統(tǒng)賬戶,該賬戶是不能直接登錄系統(tǒng)的。
user_config_dir=/etc/vsftpd/vuser_conf;
#虛擬用戶個(gè)性配置文件存放目錄,配置文件名須與虛擬用戶名稱相同。
pam_service_name=vsftpd.mysql;
#/etc/pam.d目錄下pam_mysql配置文件。
virtual_use_local_privs=YES;
#設(shè)定虛擬用戶權(quán)限與宿主用戶相同,簡(jiǎn)化虛擬用戶個(gè)性配置文件中的權(quán)限配置,需設(shè)置宿主用戶ftp對(duì)虛擬用戶主目錄擁有全權(quán)限;當(dāng)設(shè)為NO時(shí),虛擬用戶權(quán)限設(shè)置同匿名用戶,可在個(gè)性配置文件中結(jié)合write_enable,anon_world_readable_only,anon_upload_enable,anon_mkdir_write_enable等命令選項(xiàng)實(shí)現(xiàn)更為靈活權(quán)限配置。
虛擬用戶個(gè)性配置文件在/etc/vsftpd/vuser_conf目錄下,主要命令選項(xiàng)如下:
local_root=/var/ftp/ftp1; #設(shè)定虛擬用戶主目錄。
write_enable=YES; #開啟寫權(quán)限。
anon_umask=022; #設(shè)置上傳文件權(quán)限,文件夾為755,文件為644。
2.4 SeLinux及Firewall配置
Centos系統(tǒng)中SeLinux防護(hù)主要集中在各種網(wǎng)絡(luò)服務(wù),通過各種策略、規(guī)則及安全上下文設(shè)定保護(hù)系統(tǒng)安全。在默認(rèn)情況下,由于SeLinux,F(xiàn)TP及MySQL訪問容易出現(xiàn)各種限制及異常。直接關(guān)閉并不是最好選擇,可通過布爾值變量調(diào)整和相關(guān)目錄及文件的安全上下文設(shè)定,定制開放vsftp與MySQL的訪問。
1)布爾變量ftpd_anon_write
要開放虛擬用戶上傳功能必須開放此布爾變量,修訂vsftp訪問策略,允許用戶上傳,執(zhí)行命令如下:
setsebool ftpd_anon_write on
2)ftp根目錄/var/ftp安全上下文更改
默認(rèn)情況下,目錄安全上下文為public_content_t,是不允許上傳文件的,須把安全上下文修改為public_content_rw_t,執(zhí)行命令如下:
chcon -Rt public_content_rw_t /var/ftp/
3)關(guān)于mysql文件安全上下文更改
由于SeLinux訪問控制,日志文件記錄如下兩處錯(cuò)誤:
pam_mysql - MySQL error (Can't connect to local MySQL server through socket '/tmp/mysql.sock' )
PAM unable to dlopen(/usr/lib64/security/pam_mysql.so): libmysqlclient.so.18: cannot open shared object file: Permission denied
經(jīng)分析,錯(cuò)誤原因是這兩個(gè)文件的預(yù)設(shè)安全上下文不允許pam_sql模塊的訪問,需做如下更改:
chcon -t mysqld_db_t /tmp/mysql.sock
chcon -t texrel_shlib_t /usr/lib64/libmysqlclient.so.18
4)Firewall配置
Centos7默認(rèn)防火墻由iptables改為Firewall,默認(rèn)情況下關(guān)閉ftp服務(wù)的訪問,開放命令如下:
firewall-cmd --add-service=ftp --permanent
3結(jié)束語
在配置調(diào)試vsftp過程中,日志文件/var/log/messages,/var/log/secure中記錄信息發(fā)揮了特別重要的作用。在Linux中各種服務(wù)配置過程中,由于系統(tǒng)初始環(huán)境的不同,容易發(fā)生各種各樣的錯(cuò)誤,要充分利用日志文件,分析其中記錄的信息,給問題解決予以幫助。
參考文獻(xiàn):
[1] 鳥哥.鳥哥的Linux 私房菜:服務(wù)器架設(shè)篇[M].北京: 機(jī)械工業(yè)出版社, 2012.