一、安装vsftpd和ftp客户端
yum install vsftpd ftp -y
二、启动测试ftp
/etc/init.d/vsftpd start
本机登陆测试
[root@myblog ~]# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (127.0.0.1:root):
如果要在别的电脑上访问,需要关闭selinux和iptables(或添加21号端口)
/etc/init.d/iptables stop 关闭防火墙
setenforce 0 设置selinux为警告
windows下登陆测试的情况
C:\Users\Mr.Wu>ftp 192.168.17.203
连接到 192.168.17.203。
220 (vsFTPd 2.2.2)
用户(192.168.17.203:(none)): anonymous
331 Please specify the password.
密码:
230 Login successful.
ftp>
三、允许匿名用户创建文件夹和上传文件参数
默认情况下的vsftpd的配置文件
[root@myblog ~]# grep -Ev "^$|#" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
在vsftpd.conf配置文件中添加如下代码
anon_upload_enable=YES
anon_mkdir_write_enable=YES
重启FTP服务
/etc/init.d/vsftpd reload
结果在创建文件夹的时候出现如下的问题
ftp> mkdir test
550 Create directory operation failed.
ftp>
解决办法:
chmod 757 /var/ftp/pub/
或者
chmod o+w /var/ftp/pub/
测试结果如下
ftp> mkdir test
257 "/pub/test" created
ftp> bye
221 Goodbye.
四、禁止用户在ftp模式下切换到/目录下
在ftp下面是可以直接使用真实用户来登陆的,为了安全是需要禁止其切换到/目录下
C:\Users\Mr.Wu\Desktop>ftp 192.168.17.203
连接到 192.168.17.203。
220 (vsFTPd 2.2.2)
用户(192.168.17.203:(none)): silence
331 Please specify the password.
密码:
230 Login successful.
ftp> dir
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp> cd /
250 Directory successfully changed.
ftp> ls
……省略……
226 Directory send OK.
ftp: 收到 133 字节,用时 0.00秒 133.00千字节/秒。
ftp>
添加如下参数
chroot_local_user=YES
chroot_list_enable=NO
结果如下所示:
C:\Users\Mr.Wu>ftp 192.168.17.203
连接到 192.168.17.203。
220 (vsFTPd 2.2.2)
用户(192.168.17.203:(none)): test
331 Please specify the password.
密码:
230 Login successful.
ftp> pwd
257 "/"
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp>
五、禁止特定的真实用户登陆
在user_list里面添加你需要禁用的用户
vim /etc/vsftpd/user_list
在vsftpd.conf配置文件中添加如下代码
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
测试结果如下
C:\Users\Mr.Wu\Desktop>ftp 192.168.17.203
连接到 192.168.17.203。
220 (vsFTPd 2.2.2)
用户(192.168.17.203:(none)): silence
530 Permission denied.
登录失败。
ftp>
六、配置虚拟用户
其实使用真实用户来登陆ftp是非常不安全的一件事情,所以ftp还是采用虚拟用户好。
安装db4
yum install db4 -y
然后编辑虚拟用户和密码文件
vim /etc/vsftpd/login.txt
将txt生成db文件
db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftp_login.db
编辑/etc/pam.d/vsftp
32位系统添加
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
64位系统添加
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
虚拟用户的宿主用户
useradd -d /var/ftp/file -s /sbin/nologin virftp
在vsftpd.conf配置文件中添加如下代码
guest_enable=YES
guest_username=virftp
重启ftp服务,测试结果如下
C:\Users\Mr.Wu\Desktop>ftp 192.168.17.203
连接到 192.168.17.203。
220 (vsFTPd 2.2.2)
用户(192.168.17.203:(none)): linux
331 Please specify the password.
密码:
230 Login successful.
ftp>
七、完成后的总配置
[root@myblog ~]# grep -Ev "^$|#" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=NO
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
guest_enable=YES
guest_username=virftp