赞
踩
FTP是文件传输协议(File Transfer Protocol),用于在网络上进行文件传输的一套标准协议,使用客户/服务器模 式。专门用来传输文件的协议 。
FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式。
FTP服务器允许用户以三种认证模式登录到FTP服务器上
FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请 求,以建立数据传输链路的主机。FTP协议有下面两种工作模式
FTP协议默认使用20、21号端口,其中端口 20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。
FTP服务端IP地址:192.168.192.133
VSFTP主配置文件:/etc/vsftp/vsftp.conf
#在linux下客户端安装ftp,服务器端安装vsftpd
[root@c74 ~]# yum install vsftpd -y
[root@c66 ~]# yum install ftp -y
[root@c74 ~]# systemctl stop firewalld
[root@c74 ~]# setenforce 0
[root@c74 ~]# vi/etc/vsftp/vsftp.conf
anon_upload_enable=YES #允许匿名用户上传
anon_mkdir_write_enable=YES #匿允许名用户建立目录
anon_other_write_enable=YES #允许匿名用户删除重命名目录
[root@c74 ~]# systemctl restart vsftpd&&systemctl enable vsftpd
[root@c66 ~]# ftp 192.168.192.133 Connected to 192.168.192.133 (192.168.192.133). 220 (vsFTPd 3.0.2) Name (192.168.192.133:root): ftp #用户填ftp 331 Please specify the password. Password: #密码为空 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> pwd #刚进来时所处目录为服务器的 /var/ftp/ 257 "/" ftp> cd pub #切换目录至/var/ftp/ftp 250 Directory successfully changed. #切换成功 ftp> mkdir pub1.1 #创建目录 550 Create directory operation failed. #创建失败 ftp>
解决方法(两种):
第一种:将/var/ftp/pub目录的权限改为757 ,此时客户端可在/var/ftp/pub/目录下创建文 ftp服务端: [root@c74 ~]# chmod 757 /var/ftp/pub/ [root@c74 ~]# systemctl restart vsftpd&&systemctl enable vsftpd ftp客户端: [root@c66 ~]# ftp 192.168.192.133 Connected to 192.168.192.133 (192.168.192.133). 220 (vsFTPd 3.0.2) Name (192.168.192.133:root): ftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd pub 250 Directory successfully changed. ftp> mkdir pub1 #创建目录 257 "/pub/pub1" created ftp> rename pub1 changepub1 #修改目录名 350 Ready for RNTO. 250 Rename successful. ftp> rmdir changepub1 #删除目录 250 Remove directory operation successful. ftp> 第二种方法:将/var/ftp/pub目录的属主改为ftp用户,此时既可以创建目录,也可以修改pub/下的目录名 ftp服务器: [root@c74 ~]# chown -Rf ftp /var/ftp/pub/ [root@c74 ~]# systemctl restart vsftpd&&systemctl enable vsftpd ftp客户端: [root@c66 ~]# ftp 192.168.192.133 Connected to 192.168.192.133 (192.168.192.133). 220 (vsFTPd 3.0.2) Name (192.168.192.133:root): ftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd pub 250 Directory successfully changed. ftp> mkdir pub2 257 "/pub/pub2" created ftp> rename pub2 changepub2 350 Ready for RNTO. 250 Rename successful. ftp> rmdir changepub2 250 Remove directory operation successful. ftp>
[root@c74 ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
[root@c74 ~]# systemctl restart vsftpd&&systemctl enable vsftpd
[root@c66 ~]# ftp 192.168.192.133
Connected to 192.168.192.133 (192.168.192.133).
220 (vsFTPd 3.0.2)
Name (192.168.192.133:root): root
530 Permission denied.
Login failed. #登录失败
ftp>
#失败原因:vsftpd服务所在目录中存放着两个用户名单ftpusers,user_list,出于安全原因,root默认不允许登录。
解决方法:
#编辑ftp服务端两个用户名单ftpusers,user_list,注释root即可。同时在新创建一个用户,便于测试。 ftp服务器: [root@c74 ~]# vi /etc/vsftpd/ftpusers #root [root@c74 ~]# vi /etc/vsftpd/user_list #root [root@c74 ~]# systemctl restart vsftpd&&systemctl enable vsftpd ftp客户端测试: [c66 ~]# ftp 192.168.192.133 Connected to 192.168.192.133 (192.168.192.133). 220 (vsFTPd 3.0.2) Name (192.168.192.133:root): root #登录服务器的管理员用户 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> pwd #一进来就处于/root目录 257 "/root" ftp> cd /var/ftp/pub #切换目录 250 Directory successfully changed. ftp> mkdir 11 #在/var/ftp/pub/目录下创建目录 257 "/var/ftp/pub/11" created ftp> rename 11 111 #修改/var/ftp/pub目录下的目录名 350 Ready for RNTO. 250 Rename successful ftp> rmdir 111 #删除/var/ftp/pub目录下的目录 250 Remove directory operation successful. ftp> cd /root #切换目录至/root 250 Directory successfully changed. ftp> pwd 257 "/root" ftp> mkdir ftpclien #在/root/目录下创建目录 257 "/root/ftpclien" created ftp> rename ftpclien clien #修改/root目录下的目录名 350 Ready for RNTO. 250 Rename successful. ftp> rmdir clien #删除/root目录下的目录 250 Remove directory operation successful. ftp>
ftp服务器: [root@c74 ~]# useradd user1 [root@c74 ~]# passwd user1 Changing password for user user1. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. [root@c74 ~]# systemctl restart vsftpd&&systemctl enable vsftpd tfp客户端测试: [root@c66 ~]# ftp 192.168.192.133 Connected to 192.168.192.133 (192.168.192.133). 220 (vsFTPd 3.0.2) Name (192.168.192.133:root): user1 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> pwd 257 "/home/user1" ftp> mkdir user1dir 257 "/home/user1/user1dir" created ftp> rename user1dir dir1 350 Ready for RNTO. 250 Rename successful. ftp> rmdir dir1 250 Remove directory operation successful. ftp> cd /root 550 Failed to change directory. #普通用户只能在自己的家目录里对目录进行操作,不能切换出家用户目录
VsFTP高级应用,虚拟用户模式
#虚拟用户模式是这三种模式中最安全的一种认证模式,配置复杂。
[root@c74 ~]# vi /etc/vsftpd/vuser.list user1 #用户名 123456 #密码 user2 123456 #db_load命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件 #明文不安全,风险高。所以转换为密文,并将明文文件删除 [root@c74 ~]# db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db #生成密文文件 [root@c74 ~]# ll -d /etc/vsftpd/vuser.list -rw-r--r--. 1 root root 26 Dec 3 16:45 vuser.list [root@c74 ~]# file /etc/vsftpd/vuser.db /etc/vsftpd/vuser.db: Berkeley DB (Hash, version 9, native byte-order) [root@c74 ~]# chmod 600 /etc/vsftpd/vuser.db [root@c74 ~]# rm -rf /etc/vsftpd/vuser.list #删除明文文件 #创建vsftpd服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户。 #FTP服务用于存储文件的根目录指的是,当虚拟用户登录后所访问的默认位置。 [root@c74 ~]# useradd -d /var/ftproot -s /sbin/nologin virtual [root@c74 ~]# ls -ld /var/ftproot/ drwx------. 2 virtual virtual 62 Dec 3 16:53 /var/ftproot/ [root@c74 ~]# chmod -Rf 755 /var/ftproot #建立用于支持虚拟用户的PAM文件 #PAM是一组安全机制的模块,系统管理员可以用来轻易地调整服务程序的认证方式 [root@c74 ~]# vi /etc/pam.d/vsftpd.vu auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser [root@c74 ~]# vi /etc/vsftpd/vsftpd.conf anonymous_enable=No guest_enable=YES guest_username=virtual allow_writeable_chroot=YES pam_service_name =vsftpd.vu #为虚拟用户创建不同的权限 [root@c74 ~]# mkdir /etc/vsftpd/vusers_dir [root@c74 ~]# cd /etc/vsftpd/vusers_dir [root@c74 vusers_dir]# touch user1 vi user1 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES [root@c74 ~]# vi /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers_dir #用user1和user2分别进行测试,注意结果 [root@c74 ~]# systemctl restart vsftpd tfp客户端测试: [root@c66 ~]# ftp 192.168.192.133 Connected to 192.168.192.133 (192.168.192.133). 220 (vsFTPd 3.0.2) Name (192.168.192.133:root): user1 331 Please specify the password. Password: 500 OOPS: bad bool value in config file for: anon_upload_enable Login failed. 421 Service not available, remote server has closed connection ftp> pwd Not connected. ftp> [root@c66 ~]# ftp 192.168.192.133 Connected to 192.168.192.133 (192.168.192.133). 220 (vsFTPd 3.0.2) Name (192.168.192.133:root): user2 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> pwd 257 "/" ftp> ls 227 Entering Passive Mode (192,168,192,133,80,133). 150 Here comes the directory listing. 226 Transfer done (but failed to open directory). ftp> #得出客户端可以登录user2,却不可以登录user1
问题
#如果加密用户不能认证,注意监控/var/log/secure日志!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。