linux 之ftp
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 之ftp相关的知识,希望对你有一定的参考价值。
FTP的内容
文件传输协议
FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。FTP服务器普遍部署于内网中,具有容易搭建、方便管理的特点。而且有些FTP客户端工具还可以支持文件的多点下载以及断点续传技术,因此FTP服务得到了广大用户的青睐。FTP协议的传输拓扑如图11-1所示。
FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机
两种模式
主动模式:FTP服务器主动向客户端发起连接请求。
被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式)。
防火墙一般是用于过滤从外网进入内网的流量,因此有些时候需要将FTP的工作模式设置为主动模式,才可以传输数据。
什么是vsftpd
vsftpd(very secure ftp daemon,非常安全的FTP守护进程)是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费,此外,还具有很高的安全性、传输速度,以及支持虚拟用户验证等其他FTP服务程序不具备的特点。
安装vsftpd
1 [[email protected] ~]# yum install vsftpd
ptables防火墙管理工具默认禁止了FTP传输协议的端口号,因此在正式配置vsftpd服务程序之前,为了避免这些默认的防火墙策略“捣乱”,还需要清空iptables防火墙的默认策略,并把当前已经被清理的防火墙策略状态保存下来
[[email protected] ~]# iptables -F
[[email protected] ~]# service iptables save
2 备份原文件,去掉注释行,查看内容
[[email protected] ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
[[email protected] ~]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
[[email protected] ~]# cat /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=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
vsftpd服务程序常用的参数以及作用
Vsftpd服务程序
vsftpd作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到FTP服务器上。
匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。
本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器。
虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。
ftp是Linux系统中以命令行界面的方式来管理FTP传输服务的客户端工具。所以接下来要安装ftp客户端工具
[[email protected] ~]# yum install ftp
匿名访问模式
在vsftpd服务程序中,匿名开放模式是最不安全的一种认证模式。任何人都可以无需密码验证而直接登录到FTP服务器。这种模式一般用来访问不重要的公开文件(在生产环境中尽量不要存放重要文件)。当然,如果采用第8章中介绍的防火墙管理工具(如Tcp_wrappers服务程序)将vsftpd服务程序允许访问的主机范围设置为企业内网,也可以提供基本的安全性。
vsftpd服务程序默认开启了匿名开放模式,我们需要做的就是开放匿名用户的上传、下载文件的权限,以及让匿名用户创建、删除、更名文件的权限。需要注意的是,针对匿名用户放开这些权限会带来潜在危险,我们只是为了在Linux系统中练习配置vsftpd服务程序而放开了这些权限,不建议在生产环境中如此行事。表11-2罗列了可以向匿名用户开放的权限参数以及作用。
可以向匿名用户开放的权限参数以及作用
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
在vsftpd服务程序的主配置文件中正确填写参数,然后保存并退出。还需要重启vsftpd服务程序,让新的配置参数生效。在生产环境中或者在RHCSA、RHCE、RHCA认证考试中一定要把配置过的服务程序加入到开机启动项中,以保证服务器在重启后依然能够正常提供传输服务:
[[email protected] ~]# systemctl restart vsftpd
[[email protected] ~]# systemctl enable vsftpd
现在就可以在客户端执行ftp命令连接到远程的FTP服务器了。在vsftpd服务程序的匿名开放认证模式下,其账户统一为anonymous,密码为空。而且在连接到FTP服务器后,默认访问的是/var/ftp目录。我们可以切换到该目录下的pub目录中,然后尝试创建一个新的目录文件,以检验是否拥有写入权限:
[[email protected] ~]# ftp 192.168.213.131 这里登录的IP为桥接
Connected to 192.168.213.131 (192.168.213.131).
220 (vsFTPd 3.0.2)
Name (192.168.213.131:root): anonymous
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 file
550 Create directory operation failed.
创建失败,很显然没有写的权限 。那么我们来查看一下在pub目录下的权限
[[email protected] ~]# ll -ld /var/ftp/pub/
drwxr-xr-x. 3 root root 21 3月 29 09:38 /var/ftp/pub/
可以看出所有人和所有组以及其他人的权限分别是读写执行|读执行|执行 。所以这个文件只有只有root可以为所欲为,而ftp匿名用户就是其他人,他对这个文件只有执行的权限,所以做不了任何事情。在安装ftp客户端管理工具时,系统已经自动创建了用户,要实现能够写的权利,我们可以把所有人改为本人ftp用户。因为我们登录的时候是作为ftp匿名用户登录的,所以把所有人改为ftp用户 ,这个文件就可以执行相应的权限的操作了
[[email protected] ~]# chown -Rf ftp /var/ftp/pub
[[email protected] ~]# ll -ld /var/ftp/pub/
drwxr-xr-x. 3 ftp root 21 3月 29 09:38 /var/ftp/pub
再次登录 可以看到可以创建文件目录
[[email protected] ~]# ftp 192.168.213.131
Connected to 192.168.213.131 (192.168.213.131).
220 (vsFTPd 3.0.2)
Name (192.168.213.131:root): anonymous
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 file
257 "/pub/file" created
登录后在这里默认的目录文件为/var/ftp/pub
本地用户模式
相较于匿名开放模式,本地用户模式要更安全,而且配置起来也很简单。如果大家之前用的是匿名开放模式,现在就可以将它关了,然后开启本地用户模式。针对本地用户模式的权限参数以及作用如表所示。
1 当userlist_enable=YES时,userlist_deny=YES时,不管vim /etc/pam.d/vsftpd注释不注释 user_list是一个黑名单,所有出现在名单中的用户都会被拒绝登入;除非注释掉里面的名单用户才可登录
2 当userlist_enable=YES时,userlist_deny=NO(用户不可登录)最后把 vim /etc/pam.d/vsftpd注释时 userlist依旧是个白名单,名单用户可以登录
3 当 userlist_enable=NO时,userlist_deny=YES时 (用户不可登录)最后把vim /etc/pam.d/vsftpd注释时 userlist依旧是个白名单,名单用户可以登录
这足以说明,当有一个功能开启全部禁用时,不管pam是否怎么样,名单用户不可登录。当开启一个任意禁用 ,pam默认禁止登录,名单用户不可登录。当注释掉pam 开启前2者之一的禁用,名单用户可以登录
vsftpd服务程序为了保证服务器的安全性而默认禁止了root管理员和大多数系统用户的登录行为,这样可以有效地避免黑客通过FTP服务对root管理员密码进行暴力破解。如果您确认在生产环境中使用root管理员不会对系统安全产生影响,只需按照上面的提示删除掉root用户名即可。我们也可以选择ftpusers和user_list文件中没有的一个普通用户尝试登录FTP服务器:
删除root这一行,就可以让root用户登录。另外还可以让不在这个禁止登录名单里的用户登录。
编译配置文件 vim /etc/vsftpd/user_list /etc/vsftpd/ftpusers注释掉root
[[email protected] ~]# ftp 192.168.213.131
Connected to 192.168.213.131 (192.168.213.131).
220 (vsFTPd 3.0.2)
Name (192.168.213.131:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
这里我们可以看出,在禁止用户登录的名单中删除了root用户以后,就可以登录了,就可以看到root用户里面的文件了。
当实现文件名单禁用用户时,要实现root登录有2种方式, 一种是去配置文件里去掉注释,第二种是去掉pam第二行注释和一个userlist开启禁用等于NO。
以上是关于linux 之ftp的主要内容,如果未能解决你的问题,请参考以下文章