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 本地用户上传后的权限maskanon_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=YEStcp_wrappers=YES 采用tcp_wrappers进行控制访问
匿名用户相关配置:
anonymous_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES
系统用户相关:
local_enable=YESwrite_enable=YES
辅助认证配置文件/etc/vsftpd/ftpuserspam认证的配置文件:/etc/pam.d/vsftpd
chroot_local_users=YES禁锢所有的本地用户于自己的家目录中;需移除用户对家目录写权限;
chroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list 禁锢指定的文件中的用户于自己的家目录中;需移除用户对家目录写权限;
数据传输日志:
xferlog_std_format=YESxferlog_enable=YESxferlog_file=/var/log/xferlog
控制可登录vsftpd服务的用户列表:
userlist_enable=YESuserlist_deny={YES|NO}如果userlist_deny=NO, 只允许user_list文件中的用户如果userlist_deny=YES (默认), 不允许user_list文件中的用户, 输入密码前就会报错
vsftpd配置实例:
Centos 7
- 禁锢系统用户于家目录;
- 基于mysql进行用户认证;
- 不同的虚拟用户拥有不同的权限设定;
安装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.mysqlguest_enable=YESguest_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=2account 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=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES
]# vi morty 该用户无上传权限anon_upload_enable=NOanon_mkdir_write_enable=NOanon_other_write_enable=NO
测试成功:
lftp [email protected]10.1.235.7:/upload> put issue59 bytes transferred
lftp [email protected]10.1.235.7:/upload> put centos-release put: Access failed: 550 Permission denied. (centos-release)
时间: 2024-08-05 04:21:40