文件传输协议(FTP):为了可以在如此复杂多样的设备之间解决问题解决文件传输问题。linux
FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口数据库
20端口用于数据传输vim
21端口用于接受客户端发出的ftp命令和参数安全
FTP协议主要用两种工做模式服务器
主动模式:FTP服务器主动向客户端发起链接请求app
被动模式:FTP服务器等待客户端发起的链接请求(默认工做模式)tcp
vsftpd是一种很是安全的FTP守护进程,彻底开源,免费,具备高安全性、传输速度快以及支持虚拟客户验证等其余ftp程序服务不具有的特色工具
使用yum安装vsftpd服务ui
iptables防火墙管理工具默认禁止了FTP传输协议的端口号,所以在正式配置vsftpd服务程序以前,为了不这些默认的防火墙策略“捣乱”,还须要清空iptables防火墙的默认策略,并把当前已经被清理的防火墙策略状态保存下来:加密
[root@zhang ~]# iptables -F [root@zhang ~]# service iptables save
因为vsftpd服务配置文件条目不少 可是大多数都是注释
因此经过grep -v 进行反选,结果发现只有十几条
[root@zhang vsftpd]# mv vsftpd.conf vsftpd.bak
[root@zhang vsftpd]# grep -v "#" vsftpd.bak > vsftpd.conf
vsftpd服务程序
vsftpd做为更加安全的文件传输服务程序,容许用户以三种认证模式登录到FTP服务器上
匿名开放模式:这是一种最不安全的认证模式,任何人均可以访问且不须要密码
本地用户模式:经过Linux的本地帐号密码信息进行认证模式,相对第一种比较安全
虚拟用户模式:最安全的认证模式,他须要为FTP服务器创建用户数据库文件,虚拟出用来进行口令认证的帐户信息,这些帐号信息在服务器中是不存在的,仅供FTP服务程序进行认证。
匿名访问模式
编辑配置文件
[root@zhang ~]# vim /etc/vsftpd/vsftpd.conf 1 anonymous_enable=YES 2 anon_umask=022 3 anon_upload_enable=YES 4 anon_mkdir_write_enable=YES 5 anon_other_write_enable=YES 6 local_enable=YES 7 write_enable=YES 8 local_umask=022 9 dirmessage_enable=YES 10 xferlog_enable=YES 11 connect_from_port_20=YES 12 xferlog_std_format=YES 13 listen=NO 14 listen_ipv6=YES 15 pam_service_name=vsftpd 16 userlist_enable=YES 17 tcp_wrappers=YES
关闭防火墙
[root@zhang ~]# iptables -F [root@zhang ~]# service iptables save
在vsftpd服务程序的匿名开放认证模式下,其帐户统一为anonymous,密码为空。并且在链接到FTP服务器后,默认访问的是/var/ftp目录,可是该目录权限为root,因此须要更新权限到ftp用户
chown -Rf ftp /var/ftp/pub
修改selinux策略
[root@linuxprobe ~]# getsebool -a | grep ftp [root@linuxprobe ~]# setsebool -P ftpd_full_access=on
客户端链接服务器
ftp 192.168.10.10
本地用户模式
编辑配置文件
[root@zhang ~]# vim /etc/vsftpd/vsftpd.conf 1 anonymous_enable=NO 2 local_enable=YES 3 write_enable=YES 4 local_umask=022 5 dirmessage_enable=YES 6 xferlog_enable=YES 7 connect_from_port_20=YES 8 xferlog_std_format=YES 9 listen=NO 10 listen_ipv6=YES 11 pam_service_name=vsftpd 12 userlist_enable=YES 13 tcp_wrappers=YES
关闭防火墙
[root@zhang ~]# iptables -F [root@zhang ~]# service iptables save
vsftpd服务程序所在的目录中默认存放着两个名为“用户名单”的文件(ftpusers和user_list)
若是在这两个文件中的用户皆为“黑名单”没法使用ftp登录,因此须要将其去掉
在采用本地用户模式登陆FTP服务器后,默认访问的是该用户的家目录,也就是说,若是用root,那么访问的是/root目录。
虚拟用户模式
第1步:建立用于进行FTP认证的用户数据库文件,其中奇数行为帐户名,偶数行为密码。例如,咱们分别建立出zhang和quan两个用户,密码均为redhat:
[root@linuxprobe ~]# cd /etc/vsftpd/ [root@linuxprobe vsftpd]# vim vuser.list zhangsan redhat lisi redhat
可是明文不够安全 因此须要进行加密,并受权
[root@zhang vsftpd]# db_load -T -t hash -f vuser.list vuser.db [root@zhang vsftpd]# chmod 600 vuser.db
第2步:建立vsftpd服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户。FTP服务用于存储文件的根目录指的是,当虚拟用户登陆后所访问的默认位置。 建立并受权
[root@zhang ~]# useradd -d /var/ftproot -s /sbin/nologin ftpuser [root@zhang ~]# chmod -Rf 755 /var/ftproot/
第3步:创建用于支持虚拟用户的PAM文件。PAM是一组安全机制的模块,系统管理员能够用来轻易地调整服务程序的认证方式,而没必要对应用程序进行任何修改。
[root@zhang ~]# vim /etc/pam.d/vsftpd.vu auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
第4步:在vsftpd服务程序的主配置文件中经过pam_service_name参数将PAM认证文件的名称修改成vsftpd.vu,PAM做为应用程序层与鉴别模块层的链接纽带,可让应用程序根据需求灵活地在自身插入所需的鉴别功能模块。当应用程序须要PAM认证时,则须要在应用程序中定义负责认证的PAM配置文件,实现所需的认证功能。
[root@zhang ~]# vim /etc/vsftpd/vsftpd.conf 1 anonymous_enable=NO 2 local_enable=YES 3 guest_enable=YES 4 guest_username=virtual 5 allow_writeable_chroot=YES 6 write_enable=YES 7 local_umask=022 8 dirmessage_enable=YES 9 xferlog_enable=YES 10 connect_from_port_20=YES 11 xferlog_std_format=YES 12 listen=NO 13 listen_ipv6=YES 14 pam_service_name=vsftpd.vu 15 userlist_enable=YES 16 tcp_wrappers=YES
第5步:为虚拟用户设置不一样的权限,即zhang能够建立 quan不能够
[root@zhang ~]# mkdir /etc/vsftpd/vusers_dir/ [root@zhang ~]# cd /etc/vsftpd/vusers_dir/ [root@zhang vusers_dir]# touch quan [root@zhang vusers_dir]# vim zhangsan anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
再次编辑配置文件
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf 最后面加上 user_config_dir=/etc/vsftpd/vusers_dir
修改selinux,并重启vsftpd服务
[root@linuxprobe ~]# setsebool -P ftpd_full_access=on
注释:ftp> lcd /root 肯定文件下载位置 get 文件名称 即下载文件
TFTP简单文件传输协议
简单文件传输协议(Trivial File Transfer Protocol,TFTP)是一种基于UDP协议在客户端和服务器之间进行简单文件传输的协议。顾名思义,它提供不复杂、开销不大的文件传输服务(可将其看成FTP协议的简化版本)。
不须要认证 效率高 。可是因为TFTP在传输文件时采用的是UDP协议,占用的端口号为69,所以文件的传输过程也不像FTP协议那样可靠
安装
[root@zhang ~]# yum install tftp-server tftp
配置文件
[root@zhang ~]# vim /etc/xinetd.d/tftp
yes修改成no
重启xinetd服务并将它添加到系统的开机启动项中,以确保TFTP服务在系统重启后依然处于运行状态。考虑到有些系统的防火墙默认没有容许UDP协议的69端口,所以须要手动将该端口号加入到防火墙的容许策略中:
[root@zhang ~]# systemctl restart xinetd [root@zhang ~]# systemctl enable xinetd [root@zhang ~]# firewall-cmd --permanent --add-port=69/udp success [root@zhang ~]# firewall-cmd --reload success
TFTP的根目录为/var/lib/tftpboot
[root@linuxprobe ~]# tftp 192.168.10.10 tftp> get readme.txt tftp> quit