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。

原文地址:http://blog.51cto.com/13574027/2113055

时间: 2024-08-13 01:47:53

linux 之ftp的相关文章

Linux下FTP虚拟账户配置

参考模版/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_USERS) 1.创建虚拟账户 [[email protected] ~]#yum install db4-utils [[email protected] ~]#vim /etc/vsftpd/vlogin tomcat #账户名称 123456 #密码 jerry #账户名称 654321 #密码 [[email protected] ~]#db_load -T -t hash -f /etc/v

linux系统ftp服务器详解

匿名FTP服务 1.检查并安装vsFTPD软件包在终端窗口输入命令:"rpm –qa|grep vsftpd 命令检查系统是否安装了VsFTPD软件包,如下图所示:如上图所示 vsftpd 软件包并没有安装,可以使用命令 yum install vsftpd –y 进行安装 查看是否已经安装成功使用命令 rpm –qa vsftpd 如上图所示已经成功下载安装了软件包vsftpd VsFTPD在安装时会自动创建FTP系统用户组ftp,和属于该组的FTP系统用户ftp, 该用户的主目录为/var/

linux的ftp服务器

ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linux ftp命令的一些经常使用的命令,相信掌握了这些使用Linux 进行ftp操作将会非常容易. Linux ftp命令的一般格式如下: $ ftp 主机名/IP 其中"主机名/IP"是所要连接的远程机的主机名或IP地址.在命令行中,主机名属于选项,如果指定主机名,ftp将试图与远程机的ftp服务程序进行连接:如果没有指定主机名,ftp将给出提示符,等待用户输入命

Linux 下 FTP虚拟用户的使用配置

Linux下FTP虚拟用户的使用配置 Linux的FTP服务支持3种用户: 1.匿名帐户 2.本地帐户 3.虚拟用户 为什么要使用虚拟用户: 匿名帐户可以很好的保证FTP服务器的安全性,但是,对匿名用户的权限管理不够灵活.如果想对访问FTP的帐户给予更多的权限,就可以用本地帐户来实现.但是,本地帐户默认情况下是可以登陆Linux系统的,这样对Linux系统来说是一个安全隐患.那么怎么能在灵活的赋予FTP用户权限的前提下,保证FTP服务器乃至整个Linux系统的安全呢?使用虚拟用户就是一种解决办法

linux建立ftp用户

#!/bin/bash sleep 1 mkdir -p /ceshi/ userdel ceshi useradd -d /ceshi -s /sbin/nologin ceshi echo mima | passwd ceshi –stdin chown -R ceshi:ceshi /ceshi killall proftpd sleep 1 service proftpd start 查看用户文件:/etc/passwd 以上就是linux建立ftp用户的全部内容了,更多内容请关注:CP

Linux创建ftp并设置权限以及忘记ftp帐号(密码)修改

忘记ftp密码修改方法: 1.登录服务器 cd  /etc/vsftpdcat ftpusers找到对应的ftp用户名 (如果用户名也忘记了 那么 cd /etc 然后cat passwd 查看用户和对应的管理目录)passwd ftp用户名(回车)service vsftpd restart Linux添加FTP用户并设置权限 在linux中添加ftp用户,并设置相应的权限,操作步骤如下: 1.环境:ftp为vsftp.被限制用户名为test.被限制路径为/home/test 2.建用户,命令

<Linux下FTP服务的搭建>

默认安装好ftp软件包匿名用户是可以下载的.匿名以后可以上传:anon_upload_enable=YES# getsebool -a | grep ftpallow_ftpd_anon_write --> onchcon -t public_content_rw_t pubchmod 775 pubchgrp ftp pub 匿名用户可以创建目录:anon_mkdir_write_enable=YES 在创建的目录上传文件看不到.添加下面anon_world_readable_only=NO

Linux下ftp和ssh详解

学习了几天Linux下ftp和ssh的搭建和使用,故记录一下.学习ftp和ssh的主要目的是为了连接远程主机,并且进行文件传输.废话不多说,直接开讲! ftp服务器 1. 环境搭建 本人的系统是Archlinux,我是基于vsftpd来搭建的,首先需要安装它: pacman -S vsftpd 接着对其配置文件进行编辑,打开/etc/vsftpd.conf(也可能在/etc/vsftdp/.vsftpd.conf) 以下是我的配置文件内容: 在以上的配置文件中,我们允许匿名用户登录,并且其有删除

linux 指定ftp用户 特定目录及权限

Linux添加FTP用户并设置权限 在linux中添加ftp用户,并设置相应的权限,操作步骤如下: 1.环境:ftp为vsftp.被限制用户名为test.被限制路径为/home/test 2.建用户:在root用户下: useradd -d /home/test test //增加用户test,并制定test用户的主目录为/home/test passwd test //为test设置密码 3.更改用户相应的权限设置: usermod -s /sbin/nologin test //限定用户te

Linux安装FTP

1.先用rpm -qa|grep vsftpd命令检查是否已经安装,如果ftp没有安装,使用yum install -y vsftpd 安装. 2. 启动:/etc/init.d/vsftpd start 开机启动:chkconfig --level 35 vsftpd on 3.设置ftp权限 vi /etc/vsftpd/vsftpd.conf 将anonymous_enable=YES 改为 anonymous_enable=NO: 关闭selinux(修改/etc/selinux/con