一、FTP服务器及基本原理
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/104130a34fd4bd81fc8ff9a74b79ac14.jpeg)
四、常用FTP服务器软件
vsftpd的安装需要注意以下几点
ftpusers文件中可禁止高权限本地用户登录FTP服务器,提高了系统的安全性
FTP本地用户帐号的问题
************************************
注意************************************************
***********************************
*注意*************************************************
(-)、vsftpd虚拟用户配置3-1
建立虚拟用户口令库文件
建立虚拟用户所需的PAM配置文件
设置vsftpd.conf配置文件
1、FTP服务的基本概念
FTP是用于进行文件传输的网络协议
FTP服务中分为服务器和客户机两个角色
2、FTP服务器的传输模式
主动模式:由服务器主动连接客户机建立数据链路
被动模式:FTP服务器等待客户机建立数据链路
3、FTP服务器使用的端口
21端口用于与客户机建立命令链路
在主动模式下服务器使用20端口向客户机建立数据链路
FTP是用于进行文件传输的网络协议
FTP服务中分为服务器和客户机两个角色
2、FTP服务器的传输模式
主动模式:由服务器主动连接客户机建立数据链路
被动模式:FTP服务器等待客户机建立数据链路
3、FTP服务器使用的端口
21端口用于与客户机建立命令链路
在主动模式下服务器使用20端口向客户机建立数据链路
4、vsftpd支持的账户:
- 匿名账户
- 本地账户(linux系统上有哪些本地账户)
- 虚拟账户
二、主动模式的连接过程
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/104130a34fd4bd81fc8ff9a74b79ac14.jpeg)
四、常用FTP服务器软件
Windows下常用的FTP服务器软件
IIS具有FTP服务器的功能
Serv-U是流行的FTP服务器软件
Linux下的FTP服务器
Wu-ftpd出现较早,运行稳定,安全性稍差
Proftpd在配置文件和安全性方面有很大改进
vsftpd着重强调服务的安全性,运行效率也很高
五、ftp命令作为FTP客户端
ftp命令是最基本的FTP客户端软件
在Linux和Windows系统中都默认提供ftp命令
ftp命令的交互环境中使用命令对FTP服务器进行操作
ftp中很多命令与Bash中的命令类似
binary设置传输二进制文件,ascii设置传输文本文件
get命令用于下载文件,put命令用于上传文件
mget和mput用于一次下载或上传多个文件
quite、bye命令可退出ftp命令交互环境
六、安装vsftpd
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/85ce724cdccc1d2177a5be84f500f827.gif)
- RHEL5系统中默认没有安装vsftpd服务器
- vsftpd服务器的安装文件位于映像文件中
- 安装文件名称是vsftpd-2.0.5-10.el5.i386.rpm
- 使用rpm命名可顺利安装该软件包# rpm -ivh vsftpd-2.0.5-10.el5.i386.rpm
- vsftpd.conf是vsftpd服务器的主配置文件
- /etc/vsftpd/vsftpd.conf
- 配置文件中所有的配置项都有相同的格式
- anonymous_enable=YES
- 配置文件中的注释行以“#”开始
- 配置文件的详细帮助信息可查询手册页# man 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
- pam_service_name=vsftpd
- userlist_enable=YES
- listen=YES
- tcp_wrappers=YES
ftpusers用于保存不允许进行FTP登录的本地用户帐号
# head -5 /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/85ce724cdccc1d2177a5be84f500f827.gif)
十、user_list文件
-
user_list文件具有对vsftpd服务器更灵活的用户访问控制
-
/etc/vsftpd/user_list
-
使用vsftpd.user_list文件需要在主配置文件中进行设置
-
设置禁止user_list文件中的用户登录
-
userlist_enable=YES
-
userlist_deny=YES
-
设置只允许user_list文件中的用户登录
-
userlist_enable=YES
-
userlist_deny=NO
vsftpd服务器提供匿名用户登录的功能
匿名用户使用的登录用户名
anonymous
ftp
匿名FTP用户登录的口令通常是使用用户的E-mail地址,在vsftpd中输入任何字符串或直接回车都可以登录
所有匿名用户都登录到相同的目录中
/var/ft
FTP服务器的匿名登录可用于构建公共的文件下载服务器
十二、vsftpd服务的启动和关闭
服务器启动脚本
启动脚本名称是vsftpd
/etc/init.d/vsftpd
vsftpd服务需要设置在运行级别3和5自动启动
# chkconfig --level 35 vsftpd on
服务器启动
# service vsftpd start
服务器停止
# service vsftpd stop
服务器状态查询
# service vsftpd status
十三、使用ftp命令登录FTP服务器
ftp命令登录FTP服务器的格式
- # ftp 192.168.1.2
- 匿名登录
- 使用用户名anonymous或ftp
- 登录的FTP根目录为系统目录“/var/ftp”
- 本地用户登录
- 使用系统用户帐号和口令登录ftp服务器
- 登录FTP服务器后的目录为用户宿主目录,用户可转换到系统中的其他目录
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/3bbec5cdbea6abe2c68531ccc0ceebe1.gif)
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/e87f4d4469a071583e330bc0110375f1.gif)
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/e87f4d4469a071583e330bc0110375f1.gif)
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/3bbec5cdbea6abe2c68531ccc0ceebe1.gif)
- 使用FTP本地用户帐号存在安全性问题
- FTP本地用户使用Linux系统用户帐号,存在安全隐患
- 使用虚拟帐号替代本地用户帐号可以增强系统的安全性
- 本地用户登录FTP目录后可从宿主目录转换到其他目录,不是很安全
- 可以设置将本地用户禁锢在宿主目录中
十五、
将FTP本地用户禁锢在宿主目录中
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/3bbec5cdbea6abe2c68531ccc0ceebe1.gif)
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/85ce724cdccc1d2177a5be84f500f827.gif)
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/85ce724cdccc1d2177a5be84f500f827.gif)
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/3bbec5cdbea6abe2c68531ccc0ceebe1.gif)
- 在vsftpd.conf文件中添加设置项
- chroot_local_user=YES
- 重新启动vsftpd服务
- # service vsftpd restart
- 使用ftp客户端验证
- 本地用户登录FTP服务器后,宿主目录将作为根(/)目录
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/b03c4bd50acf3c584e72aada3cc19d35.gif)
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/b03c4bd50acf3c584e72aada3cc19d35.gif)
在添加设置项时,一定要注意检查末尾是否有空格,否则会出现重启失败。我就是在操作过程中出现这个问题,浪费了2个多小时才检查出来。
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/676ebda4729556d2ae74a2569eb85a7a.gif)
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/b03c4bd50acf3c584e72aada3cc19d35.gif)
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/b03c4bd50acf3c584e72aada3cc19d35.gif)
【附加】:设置使其root用户可以登录
vi /etc/vsftpd/ftpusers
vi /etc/vsftpd/user_list
删除root用户即可
重启vsftpd
service vsftpd restart
在开了root用户上传权限,也关了系统的防火墙,但ftp连接的时候依然还会出现 "500 OOPS:cannot change directory:/root" 错误,如何解决呢?
解决:
1、 查看 SELinux 的状态:
sestatus -b | grep ftp
确切地说,只是查看了ftp的状态。
2、 在出现的结果中可以看到
ftp_home_dir off ,tftpd_disable_trans
off之类。我们现在只要把其中之一设置为on就可以啦。
3、 setsebool -P ftpd_disable_trans on
或者 setsebool -P
ftp_home_dir
on
4、 重启vsftpd:
service vsftpd restart
5、 慢慢享受ftp带来的乐趣。
十六、
vsftpd虚拟用户帐号的设置步骤【重点难点】
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/e87f4d4469a071583e330bc0110375f1.gif)
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/e4f5601e54e6bbc0d3b89f81993d90e7.gif)
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/e87f4d4469a071583e330bc0110375f1.gif)
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/6ec20cc30d05907b15c7db52a8c6dc98.gif)
- 建立虚拟用户口令库文件
- 生成vsftpd的认证文件
- 建立虚拟用户所需的PAM配置文件
- 建立虚拟用户所要访问的目录并设置相应权限
- 设置vsftpd.conf配置文件
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/e87f4d4469a071583e330bc0110375f1.gif)
- 口令库文件中奇数行设置用户名,偶数行设置口令
- # cat logins.txt
- mike
- pwabcd
- john
- pw1234
- 生成vsftpd的认证文件
- 使用db_load命令生成认证文件(需要安装db4-utilsxx.rpm包)
- # db_load -T -t hash -f logins.txt \
- /etc/vsftpd/vsftpd_login.db
- 设置认证文件只对用户可读可写
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/85ce724cdccc1d2177a5be84f500f827.gif)
- 手工建立vsftpd.vu文件
- # cat /etc/pam.d/vsftpd.vu
- auth required /lib/security/pam_userdb.so
db=/etc/vsftpd/vsftpd_login - account required
/lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login - 建立虚拟用户及要访问的目录并设置相应的权限
- 建立所有FTP虚拟用户帐号使用的系统用户帐号,并设置该帐号宿主目录的权限(-d意思是对应哪个目录)
- # useradd -d /home/ftpsite virtual
- # chmod 700 /home/ftpsite
(三)、vsftpd虚拟用户配置3-3
![linux_vsftp服务器的搭建与测试 linux_vsftp服务器的搭建与测试](https://i-blog.csdnimg.cn/blog_migrate/85ce724cdccc1d2177a5be84f500f827.gif)
- 在配置文件中添加虚拟用户的配置内容
- guest_enable=YES
- guest_username=virtual
- pam_service_name=vsftpd.vu
- 重新启动vsftpd服务程序
- 对vsftpd.conf文件修改后需要重新启动vsftpd服务程序
- # service vsftpd restart
- 使用ftp命令登录FTP服务器
- 使用已配置的虚拟用户名和口令登录FTP服务器,如能够正常登录说明虚拟帐号配置成功
- 为了系统的安全,缺省配置的虚拟用户只具有较低的用户权限
- 可以通过为每个虚拟用户建立独立的配置文件增加用户的权限
(五)、对虚拟用户设置不同的权限
1、设置主配置文件
- 在vsftpd.conf文件中添加用户配置文件目录设置
- user_config_dir=/etc/vsftpd_user_conf
- 使用mkdir命令建立用户配置文件目录
- # mkdir /etc/vsftpd_user_conf
- 用户配置文件名称与用户名相同
- /etc/vsftpd_user_conf/mike
- /etc/vsftpd_user_conf/john
(六)、虚拟用户配置文件中的配置项
- 每个FTP虚拟用户都可以独立设置其权限
- anon_world_readable_only=NO
- anon_upload_enable=YES
- anon_mkdir_write_enable=YES
- anon_other_write_enable=YES
- vsftpd服务器中可使用匿名用户、本地用户和虚拟用户三种用户类型
- FTP服务器中的虚拟用户与本地用户功能类似,但更加安全
- vsftpd服务器中使用虚拟用户需要维护独立的用户口令库文件
- vsftpd中的每个虚拟用户可以建立用户配置文件用于设置独立的用户权限
- vsftpd中可以限制客户机对服务器资源的使用