vsftp配置詳解

vsftp配置詳解


FTP:文件傳輸協議(File Transfer Protocol)

是用於在網絡上進行文件傳輸的一套標準協議。它屬於網絡傳輸協議的應用層。

FTP服務一般運行在20和21兩個端口

20用於在客戶端和服務器之間傳輸數據流(主動模式時使用)
 21用於傳輸控制流,並且是命令通向ftp服務器的進口。

FTP兩種使用模式:

  • 主動PORT模式:PORT模式 由FTP服務器端發起,FTP服務器使用20端口連接客戶端的某一個大於1023的隨機端口。

  • 被動PASV模式:PASV模式 由FTP客戶端發起的,使用一個大於1024的端口連接服務器上大於1023的隨機端口。

數據傳輸模式:

  • ASCII:文本格式

  • BINARY:二進制格式


vsftp:very secure FTP

主配置文件:/etc/vsftpd/vsftpd.conf

anonymous_enable=YES    允許匿名用戶登錄
local_enable=YES    允許本地用戶登錄
write_enable=YES    允許用戶上傳
local_umask=022     本地用戶上傳後的權限mask
anon_upload_enable=NO   匿名用戶上傳控制

#anon_mkdir_write_enable=YES    匿名用戶創建目錄

dirmessage_enable=YES   顯示目錄註釋
xferlog_enable=YES      開啓日誌
connect_from_port_20=YES    主動連接使用的數據通道

#chown_uploads=YES      
#chown_username=whoever

xferlog_std_format=YES  與wu-ftp相同的日誌文件格式

#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails

#chroot_local_user=NO   若開啓,則本地用戶默認使用chroot()
#chroot_list_enable=NO  如果開啓,需提供文件指定生效用戶,如果chroot_local_user設置爲Yes,則這個列表爲不生效用戶,默認列表文件是/etc/vsftpd.chroot_list,可通過chroot_list_file參數制定文件
#chroot_list_file=/etc/vsftpd/chroot_list

ls_recurse_enable=NO     是否允許用戶使用'ls -R'命令,遞歸顯示目錄
listen=YES  以stand alone的方式啓動(值爲NO時,super daemon方式啓動)

#listen_ipv6=YES

pam_service_name=vsftpd     vsftpd服務中PAM驗證模塊的名稱
userlist_enable=YES     使用user_list文件控制用戶登錄(配合userlist_deny)
#userlist_deny=YES
tcp_wrappers=YES    採用tcp_wrappers進行控制訪問

匿名用戶相關配置:

anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

系統用戶相關:

local_enable=YES
write_enable=YES

輔助認證配置文件/etc/vsftpd/ftpusers
pam認證的配置文件:/etc/pam.d/vsftpd

chroot_local_users=YES
禁錮所有的本地用戶於自己的家目錄中;需移除用戶對家目錄寫權限;

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
禁錮指定的文件中的用戶於自己的家目錄中;需移除用戶對家目錄寫權限;

數據傳輸日誌:

xferlog_std_format=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog

控制可登錄vsftpd服務的用戶列表:

userlist_enable=YES
userlist_deny={YES|NO}
如果userlist_deny=NO, 只允許user_list文件中的用戶
如果userlist_deny=YES (默認), 不允許user_list文件中的用戶, 輸入密碼前就會報錯

vsftpd配置實例:
Centos 7

  1. 禁錮系統用戶於家目錄;

  2. 基於mysql進行用戶認證;

  3. 不同的虛擬用戶擁有不同的權限設定;

安裝vsftp、mysql及pam-mysql模塊,用於pam連接mysql存儲密碼:

]# yum isntall vsftpd mariadb-server mariadb-devel pam-devel
]# wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz

]# tar xvf pam_mysql-0.7RC1.tar.gz
]# cd pam_mysql-0.7RC1
]# ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security
]# make
]# make install

準備mairadb數據庫:

]# mysql_install_db  --user=mysql   初始化數據庫
]# systemctl start mariadb  啓動mariadb
]# mysql_secure_installation    安全設置
]# mysql -p     輸入密碼登陸數據庫
> create database vsftpd;   創建vsftpd數據庫

插入虛擬用戶信息:
> insert into vsftpd.users (name,password) values ('rick',PASSWORD('222222')),('morty',PASSWORD('222222'));

授權:
> grant all on vsftpd.* to 'vuser'@'localhost' identified by '333333';
> grant all on vsftpd.* to 'vuser'@'127.0.0.1' identified by '333333';
> flush privileges;

配置vsftpd通過pam_mysql進行認證

]# vi /etc/vsftpd/vsftpd.conf
#listen_ipv6=YES    註釋該行
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=vuser

模塊認證配置文件:

]# vi /etc/pam.d/vsftpd.mysql   添加兩行
auth required /usr/lib64/security/pam_mysql.so user=vuser passwd=333333 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /usr/lib64/security/pam_mysql.so user=vuser passwd=333333 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

創建映射的系統用戶賬號:

]# mkdir vpub
]# useradd -d /vpub vuser
]# mkdir /vpub/{pub,upload}
]# chmod u-w /vpub
]# setfacl -m u:vuser:rwx /vpub/upload

設置各虛擬用戶的權限

]# vi /etc/vsftpd/vsftpd.conf   添加一行指定虛擬用戶權限目錄
user_config_dir=/etc/vsftpd/users_conf

]# mkdir users_conf
]# vi rick  虛擬用戶的權限都用匿名指令指定
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

]# vi morty 該用戶無上傳權限
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

測試成功:

lftp rick@10.1.235.7:/upload> put issue
59 bytes transferred

lftp morty@10.1.235.7:/upload> put centos-release
put: Access failed: 550 Permission denied. (centos-release)




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章