linux-运维进阶-16 vsftpd服务
文件传输协议
FTP协议有下面两种工作模式。
- 主动模式:FTP服务器主动向客户端发起连接请求。
- 被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式)
安装并启动vsftpd
1 | [root@localhost ~]# yum install vsftpd -y |
备份配置文件
1 | [root@localhost ~]# mv /etc/vsftpd/vsftpd.conf{,.bak} |
创建新的没有注释的配置文件
1 | [root@localhost ~]# grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf |
查看默认配置文件中的选项
1 | [root@localhost ~]# cat /etc/vsftpd/vsftpd.conf |
Vsftpd服务程序
vsftpd作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到FTP服务器上。
vsftpd使用三大模式:
匿名用户模式
是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。
本地用户模式
是通过Linu系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器。
虚拟用户模式
是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。
匿名开放模式
修改配置文件
1 | [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf |
接下来就可以用windows资源管理器登录上去上传下载文件
本地用户模式
修改配置文件
1 | [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf |
再次用windows资源管理器登录服务器:
按理来讲,现在已经完全可以本地用户的身份登录FTP服务器了。但是在使用root管理员登录后,发现登陆失败:
可见,我们已经被系统拒绝访问了。这是因为vsftpd服务程序所在的目录中默认存放着两个名为“用户名单”的文件(ftpusers和user_list)。vsftpd服务程序目录中的这两个文件只要里面写有某位用户的名字,就不再允许这位用户登录到FTP服务器上。分别打开 ftpusers 和 user_list 这两个文件,删除里面的root,然后保存并退出
1 | [root@localhost ~]# cat /etc/vsftpd/ftpusers |
现在就可以用本地用户root登录了,本地用户登录上去之后,登录的目录是本地用户的家目录。
虚拟用户模式
创建一个本地用户,用于映射虚拟用户在本地的代理,为了安全起见,禁止这个用户登录linux服务器
1 | [root@localhost ~]# useradd -d /var/ftproot -s /sbin/nologin virtual |
创建用于进行FTP认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。
1 | [root@localhost ~]# cd /etc/vsftpd/ |
使用db_load命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件
降低数据库文件的权限(避免其他人看到数据库文件的内容)
把原始的明文信息文件删除。
1 | [root@localhost vsftpd]# db_load -T -t hash -f vuser.list vuser.db |
建立用于支持虚拟用户的PAM文件
1 | [root@localhost vsftpd]# vim /etc/pam.d/vsftpd.vu |
修改vsftpd配置文件
1 | [root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf |
再次用windows资源管理器登录服务器,用bbb用户登录,可以登录成功。
tftp服务
安装tftp服务
1 | [root@localhost ~]# yum install xinetd tftp-server.x86_64 tftp -y |
修改配置文件
1 | [root@localhost ~]# vim /etc/xinetd.d/tftp |
重启服务
1 | [root@localhost ~]# systemctl restart xinetd.service |
命令 | 作用 |
---|---|
? | 帮助信息 |
put | 上传文件 |
get | 下载文件 |
verbose | 显示详细的处理信息 |
status | 显示当前的状态信息 |
binary | 使用二进制进行传输 |
ascii | 使用ASCII码进行传输 |
timeout | 设置重传的超时时间 |
quit | 退出 |
测试
1 | [root@localhost ~]# echo "hello,tftp" > /var/lib/tftpboot/readme.txt |