一、Vsftpd 服务器安装配置
(1)在命令行执行如下命令
yum install vsftpd*
(2)查看vsftpd 安装后的文件路径、启动Vsftpd服务及查看进程是否启动
rpm -ql vsftpd|more
service vsftpd restart(centos 6) systenctl restart vsftpd.service
ps -ef | grep vsftpd
(3)Vsftpd.conf默认位置详解如下
anonymous_enable=YES | 开启匿名访问 |
local_enable=YES | 启用本地系统用户访问 |
write_enable=YES | 本地系统用户写入权限 |
local_umask=022 | 本地用户创建文件及目录的默认权限掩码 |
dirmssage_enable=YES | 打印目录信息,通常用于用户第一次访问目录时,信息提示 |
xferlog_enable=YES | 启用上传/下载日志记录 |
connect_from_port_20=YES | FTP 使用20端口进行数据传输 |
xferlong_std_foemat=YES | 日志文件根据xferlog的标准格式写入 |
listen=YES | Vsftpd不以独立的服务启动,通过Xinetd服务管理, |
listen_ipv6=YES | 启动IPV6 监听 |
pam_service_name=vsftpd | 登录FTP服务器,依据/etc/pam.d/vsftpd中内容进行认证 |
userlist_enable=YES | vsftpd.user_list和ftpusers 配置文件里用户禁止访问FTP |
tcp_wrappers=YES | 设置vsftpd与tcp wrapper结合进行逐级的访问控制,Vsftpd服务器检查/etc/host.allow和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问改FTP服务器 |
2、匿名登录设置
anon_upload_enable=YES // 如果允许匿名登录,是否开启匿名上传权限
anon_mkdir_write_enable=YES //如果允许匿名登录,是否允许匿名建立文件夹并在文件夹内上传文件
anon_other_write_enable=yes // 如果允许匿名登录,匿名帐号可以有删除的权限
anon_world_readable_only=no //如果允许匿名登录,匿名的下载权限,匿名为Other,可设置目录/文件属性控制
anon_max_rate=30000 // 如果允许匿名登录,限制匿名用户传输速率,单位bite
3、限制登录
userlist_enable=yes //用userlist来限制用户访问
userlist_deny=no //名单中的人不允许访问
userlist_file=/etc/vsftpd/userlist_deny.chroot //限制名单文件放置的路径
4、限制目录
chroot_local_user=yes //限制所有用户都在家目录
chroot_list_enable=YES //调用限制在家目录的用户名单
chroot_list_file=/etc/vsftpd/chroot_list //限制在家目录的用户名单所在路径
5、安全设置
idle_session_timeout=600 //用户空闲超时,单位秒
data_connection_timeout=120 //数据连接空闲超时,单位秒
accept_timeout=60 //将客户端空闲1分钟后断开
local_max_rate=10000 //本地用户传输速率,单位bite
max_clients=100 //FTP的最大连接数
注意:FTP主被动模式,默认为主动模式,设置被动模式使用端口方法如下
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100
二 、Vsftpd 匿名用户配置:
(1)Vsftpd 默认以匿名用户访问,匿名用户默认访问的FTP服务器端路径为:/var/ftp/pub,匿名用户只有查看权限,无法创建、删除、修改。如果需要关闭FTP匿名用户访问,需要修改配置文件/etc/vsftpd/vsftpd.conf,将anonymous_enable=YES中的YES改成NO,重启Vsftpd服务即可。
(2)如果允许匿名用户能够上传文件、下载、删除,需在/etc/vsftpd/vsftpd.conf配置问价中加入以下代码:
anon_upload_enable=YES 允许匿名用户上传文件
anon_mkdir_write_enable=YES 允许匿名用户创建目录
anon_other_write_enable=YES 允许匿名用户其他写入权限(删除)
(3)匿名用户完整的Vsftpd.conf 配置文件代码如下:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umak=022
anon_upload_enable=YES
anon_mkdir_write_enabe=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
注意:由于默认Vsftpd匿名用户有两种:anonymous、ftp,所以匿名用户如果需要上传文件、删除及修改等权限,需要ftp用户对/var/ftp/pub目录有写入权限,使用以下一条命令即可。
无论是对 ftp,改组,改用户,改权限都不能在ftp根目录下,上传东西,要么就是ftp匿名无法连接,要么就是不能上传;折腾了几天,终于明白了!
ftp 作为匿名用户根目录,vsftpd有特殊处理;
vsftpd对此 ftp 根目录,有两点特殊要求;该用户所有者必须是root,该目录的权限对其他不能为 w;
也就是说其他人,匿名用户来说 ftp 目录是根目录,只能是只读的,不能上传,不能更改;如下官方解释
1.匿名用户就是ftp,想要匿名用户写入,必须文件夹的权限为ftp可写。
2.匿名用户的根目录不允许写,所以根目录的权限绝对不能是ftp可写和其他用户可写,如果根目录所有者为ftp的话,所有者的权限也不能写。
所以解决方法是建个单独的public文件夹用于上传文件,设置其为ftp可写或”其他用户可写“
还可建个download文件夹只用于下载,设置其他用户没有写权限便可。
chown -R ftp pub/
chomd O+w pub/
三、Vsftpd 系统用户配置
保证目录或文件专属拥有者,Vsftpd可以实现该需求。实现Vsftpd系统用户验证,只需在linux中创建多个用户。
(1)创建系统用户li、le,密码分别是123456
useradd li
useradd le
echo 12356|passwd --stdin li
echo 123456|passwd --stdin le
(2)修改Vsftpd.conf配置文件代码如下
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umak=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
注意:登录ftp时,系统用户默认访问的FTP服务端路径为:/home/li (home目录下的用户名),此时我们发现可以进入根目录,这对系统极不安全,我们在配置文件里更改以下注释内容:
在/etc/vsftpd/chroot_list 添加用户,这个用户可以访问FTP服务端的根目录及其他权限较大的目录,第一行是用户名,第二行是密码。
四、Vsftpd 虚拟用户配置
1.如果基于Vsftpd系统用户访问FTP服务器,系统用户多不利于管理,而且不利于系统的安全,为了更加安全的使用VSFTPD,需要使用Vsftpd 虚拟用户方式
2.Vsftpd 虚拟用户原理:虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录linux系统,从而让系统更安全可靠
3.配置Vsftpd 虚拟用户配置步骤如下:
(1)安装Vsftpd 虚拟用户需用到的软件及认证模块
yum install pam* libdb-utils libdb* --skip-broken
(2)在/etc/vsftpd 目录下创建虚拟用户临时文件,如ftpusers.txt 新建虚拟用户和密码,其中yiteng001、yiteng002为虚拟用户名,123456为密码,如果有多个用户,依次按照格式填写
(3)生成Vsftpd虚拟用户数据库认证文件,设置权限为700:
db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
chmod 700 /etc/vsftpd/vsftpf_login.db
(4)配置pam认证文件,
(5)在/etc/pam.d/目录下,新建文件 vsftpd.xn 注意:后缀名有你来定,写入下列内容
auth required pam_user.so db=/etc/vsftpd/vsftpfd_longin
account required pam_userdb.so db=/etc/vsft pd/vsftpd_login
(6)所有的虚拟用户需要映射到一个系统用户下,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射,命令如下
useradd -s /sbin/nologin ftpuser
(7) 修改/etc/vsftpd/vsftpd.conf 配置文件如下:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umak=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=YES
userlist_enable=YES
tcp_wrappers=YES
pam_service_name=vsftpd.xn #虚拟用户启用pam认证
guest_enable=YES #启用虚拟用户
guest_username=ftpuser #映射虚拟用户至系统用户ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf #设置虚拟用户配置文件所在的目录
virtual_use_local_privs=YES #虚拟用户使用与本地用户相同的权限
anon_umak=022 #匿名用户创建文件的权限
(8)至此,虚拟用户共同使用基于/home/ftpuser 主目录实现文件上传与下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户的配置文件主目录
mkdir -p /etc/vsftpd/vsftpd_user_conf/
(9)如下,为虚拟用户yiteng001、yiteng002,同时创建私有的虚拟目录,代码如下
vim /etc/vsftpd/vsftpd_user_conf/yiteng001
local_root=/home/ftpuser/yiteng001 #虚拟用户配置文件路径
write_enable=YES #允许登录用户有写权限
anon_world_readable_only=YES #允许匿名用户下载,然后读取文件
anon_upload_enable=YES #允许匿名用户上传文件权限,只有在write_enable=YES时,参数才生效
anon_mkdir_write_enable=YES #允许匿名用户创建目录,只有在write_enable=YES时,参数才生效
anon_other_write_enable=YES #允许匿名用户其他权限,例如删除、重命名
yiteng002创建私有目录
vim /etc/vsftpd/vsftpd_user_conf/yiteng002
local_root=/home/ftpuser/yiteng001 #虚拟用户配置文件路径
write_enable=YES #允许登录用户有写权限
anon_world_readable_only=YES #允许匿名用户下载,然后读取文件
anon_upload_enable=YES #允许匿名用户上传文件权限,只有在write_enable=YES时,参数才生效
anon_mkdir_write_enable=YES #允许匿名用户创建目录,只有在write_enable=YES时,参数才生效
anon_other_write_enable=YES #允许匿名用户其他权限,例如删除、重命名
(10)创建虚拟用户各自虚拟目录
mdkir -P /home/ftpuser/{yiteng001,yiteng002}
chown -R ftpuser:ftpuser /home/ftpuser