|
在每次重啟linux 服務(wù)器的時(shí)候 vsftpd 目錄有時(shí)候會(huì)自動(dòng)關(guān)閉掉,每次得去按 setsebool ftp_home_dir 1 開(kāi)啟目錄 ftp 才能正常登陸,今天我發(fā)現(xiàn)有一個(gè)這樣的命令以后再也不用按了
echo "setsebool ftp_home_dir 1" >> /etc/rc.local 我們登錄FTP有三種方式,匿名登錄、本地用戶登錄和虛擬用戶登錄。 匿名登錄:在登錄FTP時(shí)使用默認(rèn)的用戶名,一般是ftp或anonymous。 本地用戶登錄:使用系統(tǒng)用戶登錄,在/etc/passwd中。 虛擬用戶登錄:這是FTP專有用戶,有兩種方式實(shí)現(xiàn)虛擬用戶,本地?cái)?shù)據(jù)文件和數(shù)據(jù)庫(kù)服務(wù)器。 FTP虛擬用戶是FTP服務(wù)器的專有用戶,使用虛擬用戶登錄FTP,只能訪問(wèn)FTP服務(wù)器提供的資源,大大增強(qiáng)了系統(tǒng)的安全。 本文實(shí)驗(yàn)的Linux系統(tǒng)是CentOS 5 update2 一、本地?cái)?shù)據(jù)文件方式 1. 添加虛擬用戶口令文件 [root@jock]#vi ftpusr.txt 添加虛擬用戶名和密碼,一行用戶名,一行密碼,以此類(lèi)推。奇數(shù)行為用戶名,偶數(shù)行為密碼。 bobyuan #用戶名 123456 #密碼 markwang #用戶名 123456 #密碼 2. 生成虛擬用戶口令認(rèn)證文件 將剛添加的vftpuser.txt虛擬用戶口令文件轉(zhuǎn)換成系統(tǒng)識(shí)別的口令認(rèn)證文件。 首先查看系統(tǒng)有沒(méi)有安裝生成口令認(rèn)證文件所需的軟件db4-utils。 [root@jock]#rpm –qa |grep db4-utils
如果沒(méi)有請(qǐng)使用以下命令:
[root@jock]#yum install db4-utils
下面使用db_load命令生成虛擬用戶口令認(rèn)證文件。 [root@jock]# db_load -T -t hash -f ./ftpusr.txt /etc/vsftpd/ftpusr.db
[root@jock]# chmod 600 /etc/vsftpd/ftpusr.db 3. 編輯vsftpd的PAM認(rèn)證文件 在/etc/pam.d目錄下, [root@jock]#vi /etc/pam.d/vsftpd_login 將里面其他的都注釋掉,添加下面這兩行: auth required /lib/security/pam_userdb.so db=/etc/vsftpd/ftpusr account required /lib/security/pam_userdb.so db=/etc/vsftpd/ftpusr 4. 建立本地映射用戶并設(shè)置宿主目錄權(quán)限 所有的FTP虛擬用戶需要使用一個(gè)系統(tǒng)用戶,這個(gè)系統(tǒng)用戶不需要密碼。 [root@jock]#useradd –d /home/vftpsite –s /sbin/nologin ftp_virt [root@jock]#chmod 700 /home/vftpsite/ 5. 配置vsftpd.conf(設(shè)置虛擬用戶配置項(xiàng)) [root@CentOS5 /]#vi /etc/vsftpd/vsftpd.conf
在#listen_ipv6=YES 下面添加兩行配置文件
guest_enable=YES 開(kāi)啟虛擬用戶賬號(hào) guest_username=ftp_virt FTP虛擬用戶對(duì)應(yīng)的系統(tǒng)用戶
pam_service_name=vsftpd_login (pam認(rèn)證文件) 6. 重啟vsftpd服務(wù) [root@jock]#service vsftpd restart
接下來(lái)是設(shè)置虛擬用戶的權(quán)限 [root@jock]#cd /home/ftpsite/
在ftpsite 目錄下面創(chuàng)建2個(gè)目錄
[root@jock ftpsite]#mkdir jock01
[root@jock ftpsite]#mkdir jock02
注意:jick01,jock02 是剛才創(chuàng)建的虛擬賬號(hào)
[root@jock ftpsite]#chown ftp_virt jock01
[root@jock ftpsite]#chown ftp_virt jock02
[root@jock ftpsite]#vi /etc/vsftpd/jock01 在里面輸入以下配置文件:local_root=/home/ftpsite/jock01
#:wq保存退出
[root@jock ftpsite]#vi /etc/vsftpd/jock02 在里面輸入以下配置文件:local_root=/home/ftpsite/jock02
#:wq保存退出
[root@jock ftpsite]#service vsftpd restart 重啟vsftpd 進(jìn)程。
7. 用資源管理器登陸測(cè)試虛擬用戶登錄FTP 測(cè)試 OK 二、數(shù)據(jù)庫(kù)服務(wù)器(MySQL)方式 1. 安裝MySQL 我使用的是Tar包安裝的MySQL,版本號(hào):mysql-6.0.8-alpha.tar.gz 具體安裝方法,請(qǐng)查看我的另一篇文章“部署LAMP+Discuz!7.0”。 2. 建立本地映射用戶并設(shè)置宿主目錄權(quán)限 [root@CentOS5 /]#useradd –d /home/vftpsite –s /sbin/nologin vftpuser [root@CentOS5 /]#chmod 700 /home/vftpsite 3. 配置vsftpd.conf(設(shè)置虛擬用戶配置項(xiàng)) [root@CentOS5 /]#vi /etc/vsftpd/vsftpd.conf guest_enable=YES #開(kāi)啟虛擬用戶 guest_username=vftpuser #FTP虛擬用戶對(duì)應(yīng)的系統(tǒng)用戶 pam_service_name=vsftpd #PAM認(rèn)證文件 4. 在MySQL中建立用戶口令數(shù)據(jù)庫(kù) [root@CentOS5 /]#mysql –u root –p mysql> create database vftpuser; #建立虛擬用戶數(shù)據(jù)庫(kù),庫(kù)名vftpuser mysql> use vftpuser; #進(jìn)入vftpuser數(shù)據(jù)庫(kù) mysql> create table users(name char(16) binary,passwd char(16) binary); #建立虛擬用戶口令表,表名users mysql> insert into users (name,passwd) values ('bobyuan',password('111')); mysql> insert into users (name,passwd) values ('markwang',password('111')); #建立兩個(gè)虛擬用戶,bobyuan和markwang 注:在這里我用這種方法添加的虛擬用戶密碼都是經(jīng)過(guò)MySQL加密的,加密后的密碼pam-mysql不能識(shí)別(MySQL和pam-mysql兼容性有些問(wèn)題),因此本次實(shí)驗(yàn)使用明文保存密碼。 添加明文密碼: 方法一:?jiǎn)蝹€(gè)添加用戶 mysql> insert into users (name,passwd) values ('bobyuan', '111'); mysql> insert into users (name,passwd) values ('markwang',‘111'); 方法二:批量添加用戶 新建vftpuser.txt文件 [root@jock]#vi vftpuser.txt 添加用戶名和密碼,注意字段數(shù)據(jù)之間要用Tab鍵隔開(kāi)。 bobyuan 111 markwang 111
[root@jock]#mysql -u root -p (這里注意:必須是數(shù)據(jù)庫(kù)管理員賬號(hào))
Enter password: mysql>use vftpuser; mysql>load data local infile '/vftpuser.txt'into table users; mysql>flush privileges; mysql> grant select on vftpuser.users to vftpuser@localhost identified by '111111'; #授權(quán)vftpuser這個(gè)賬號(hào)可以讀取vftpuser數(shù)據(jù)庫(kù)的user表
grant select on vftp.users to vftp@localhost identified by '111111'; 5. 驗(yàn)證第4步的設(shè)置是否成功 [root@CentOS5 /]#mysql –u vftpuser –p mysql>show databases; mysql>use vftpuser; mysql>show tables; mysql>select * from users; mysql>quit 如下圖:
6. 編譯MySQL的PAM認(rèn)證模塊
編輯完成后可查看/lib/security目錄下是否已有對(duì)應(yīng)pam模塊(如下圖)?
# ll /lib/security/ |grep mysql 圖 如下:
如果沒(méi)有則下載pam-mysql安裝 http:///projects/pam-mysql/我下載的是pam_mysql-0.7RC1.tar.gz。 [root@CentOS5 /]#cd /usr/local/src [root@CentOS5 src]#tar –zxvf pam_mysql-0.7RC1.tar.gz [root@CentOS5 src]#cd pam_mysql-0.7RC1 [root@CentOS5 pam_mysql-0.7RC1]# ./configure --with-mysql=/usr/local/mysql/ --with-pam-mods-dir=/lib/security/ [root@CentOS5 pam_mysql-0.7RC1]#make [root@CentOS5 pam_mysql-0.7RC1]#make install 7. 編輯vsftpd的PAM認(rèn)證文件 在/etc/pam.d目錄下, [root@CentOS5 /]#vi /etc/pam.d/vsftpd 將里面其他的都注釋掉,添加下面這兩行: auth required pam_mysql.so user=vftpuser passwd=111111 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=0 account required pam_mysql.so user=vftpuser passwd=111111 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=0 crypt=0:表示口令使用明文方式保存在數(shù)據(jù)庫(kù)中 crypt=1:表示口令使用UNIX的DES加密方式加密后保存在數(shù)據(jù)庫(kù)中 crypt=2:表示口令使用MySQL的password()函數(shù)加密后保存在數(shù)據(jù)庫(kù)中 crypt=3:表示口令使用MD5散列值的方式保存在數(shù)據(jù)庫(kù)中 8. 重啟vsftpd服務(wù) [root@CentOS5 /]#service vsftpd restart 9. 測(cè)試虛擬用戶登錄FTP C:\User\Administrator>ftp 192.168.120.240 Connected to 192.168.120.240. 220 Welcome to BOB FTP server User (192.168.120.240:(none)): bobyuan 331 Please specify the password. Password: 230 Login successful. ftp> quit 221 Goodbye. 三、虛擬用戶高級(jí)設(shè)置 1. virtual_use_local_privs參數(shù) 當(dāng)virtual_use_local_privs=YES時(shí),虛擬用戶和本地用戶有相同的權(quán)限; 當(dāng)virtual_use_local_privs=NO時(shí),虛擬用戶和匿名用戶有相同的權(quán)限,默認(rèn)是NO。 當(dāng)virtual_use_local_privs=YES,write_enable=YES時(shí),虛擬用戶具有寫(xiě)權(quán)限(上傳、下載、刪除、重命名)。 當(dāng)virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES, anon_upload_enable=YES時(shí),虛擬用戶不能瀏覽目錄,只能上傳文件,無(wú)其他權(quán)限。 當(dāng)virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO, anon_upload_enable=NO時(shí),虛擬用戶只能下載文件,無(wú)其他權(quán)限。 當(dāng)virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO, anon_upload_enable=YES時(shí),虛擬用戶只能上傳和下載文件,無(wú)其他權(quán)限。 當(dāng)virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO, anon_mkdir_write_enable=YES時(shí),虛擬用戶只能下載文件和創(chuàng)建文件夾,無(wú)其他權(quán)限。 當(dāng)virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO, anon_other_write_enable=YES時(shí),虛擬用戶只能下載、刪除和重命名文件,無(wú)其他權(quán)限。 2. 建立各個(gè)虛擬用戶自身的配置文件 [root@CentOS5 /]#vi /etc/vsftpd/vsftpd.conf 添加: user_config_dir=/etc/vsftpd/vsftpd_user_conf [root@CentOS5 /]#mkdir /etc/vsftpd/vsftpd_user_conf 編輯bobyuan的配置文件 [root@CentOS5 /]#vi /etc/vsftpd/vsftpd_user_conf/bobyuan 添加: anon_world_readable_only=NO #開(kāi)放bobyuan的下載權(quán)限(只能下載)。注意這個(gè)地方千萬(wàn)不能寫(xiě)成YES,否則bobyuan將不能列出文件和目錄。 編輯markwang的配置文件 [root@CentOS5 /]#vi /etc/vsftpd/vsftpd_user_conf/markwang 添加: write_enable=YES #開(kāi)放markwang的寫(xiě)權(quán)限 anon_world_readable_only=NO #開(kāi)放markwang的下載權(quán)限 anon_upload_enable=YES #開(kāi)放markwang的上傳權(quán)限 anon_mkdir_write_enable=YES #開(kāi)放markwang創(chuàng)建目錄的權(quán)限 anon_other_write_enable=YES #開(kāi)放markwang刪除和重命名的權(quán)限 四、虛擬用戶配置文件(實(shí)驗(yàn)) 1. 所有虛擬用戶使用統(tǒng)一配置 [root@CentOS5 /]#vi /etc/vsftpd/vsftpd.conf write_enable=YES anonymous_enable=NO local_enable=YES guest_enable=YES guest_username=vftpuser virtual_use_local_privs=NO pam_service_name=vsftpd anon_world_readable_only=NO #可以下載 anon_upload_enable=NO(默認(rèn)值)#不能上傳 anon_mkdir_write_enable=NO(默認(rèn)值)#不能新建文件夾 anon_other_write_enable=NO(默認(rèn)值)#不能刪除和重命名文件 ftpd_banner=Welcome to BOB FTP server xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES ascii_upload_enable=YES ascii_download_enable=YES tcp_wrappers=NO setproctitle_enable=YES listen_port=21 connect_from_port_20=YES idle_session_timeout=600 data_connection_timeout=120 max_clients=0 max_per_ip=3 local_max_rate=512000 2. 各個(gè)虛擬用戶使用自身配置 [root@CentOS5 /]#vi /etc/vsftpd/vsftpd.conf write_enable=YES anonymous_enable=NO local_enable=YES guest_enable=YES guest_username=vftpuser virtual_use_local_privs=NO pam_service_name=vsftpd user_config_dir=/etc/vsftpd/vsftpd_user_conf ftpd_banner=Welcome to BOB FTP server xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES ascii_upload_enable=YES ascii_download_enable=YES tcp_wrappers=NO setproctitle_enable=YES listen_port=21 connect_from_port_20=YES idle_session_timeout=600 data_connection_timeout=120 max_clients=0 max_per_ip=3 local_max_rate=512000 [root@CentOS5 /]#mkdir /etc/vsftpd/vsftpd_user_conf 編輯bobyuan(FTP匿名用戶)的配置文件 [root@CentOS5 /]#vi /etc/vsftpd/vsftpd_user_conf/bobyuan anon_world_readable_only=NO 編輯ftpadmin(FTP匿名管理員)的配置文件 [root@CentOS5 /]#vi /etc/vsftpd/vsftpd_user_conf/ftpadmin anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
|