ftp服务器配置
1、ftp介绍
文件传输协议FTP是使用历史比较长的协议。FTP满足了人们使用互联网的最原始需求,也就是获取文件资料。FTP协议采用的是明文传输方式,通过FTP可以在不同设备之间交换文件资料。FTP服务器促进了文件之间的共享,并且通过FTP服务器可以忽略不同主机文件系统的差异。
FTP服务器在默认情况下,根据用户登陆的情况,可以划分出三种不同的用户:
1、实际用户。
2、访客。
3、匿名用户。
三种用户可以获取到的权限自然各不相同,权限最大的是实际用户,可以进行一些上传修改操作。而针对匿名用户,FTP服务器最多开放下载文件的权限,并且可以下载的文件也会受到一定的限制。
FTP服务器通常情况下运行在20和21端口,两个端口的作用各不相同。20端口是数据端口,用户在客户端和服务器之间传输数据;21端口是传输控制流,也就是用于接收客户端发送的命令。FTP服务目前最常见的应用场景是在内网中,比如学校搭建的FTP服务器,方便学生下载软件资料等。
vsftp是基于GPL许可的FTP服务器软件,除了具有安全高速的特点外,还有许多其他的优点,比如匿名服务设置十分方便,并且不需要执行任何外部程序,可以限制服务器的带宽等。因此其应用也十分广泛。
2、vsftp软件安装及配置
1、vsftp的安装比较简单,我们通过yum仓库即可完成安装。
yum install vsftpd
安装过程中出现选择直接输入y安装,出现如下说明安装成功。
2、查看vsftp是否已经存在
rpm –qa|grep vsftpd
3、清空防火墙策略
为了防止iptables防火墙干扰实验,我们将iptables防火墙和所有策略全部清空,这样的清理只会在当前内存中进行清理,重新启动Linux主机后,iptables策略会恢复。
iptables -F
4、关闭SELinux安全功能
为了防止实验出现问题,我们需要关闭。
setenforce 0
5、启动vsftpd
systemctl start vsftpd
6、设置开机自动启动
systemctl enable vsftpd
7、安装ftp
除此之外,我们还需要再Linux系统中安装ftp命令,用于通过命令行界面管理ftp传输,通过yum安装即可。
yum install ftp
到此为止,一切准备工作已经准备就绪,下面进行vsftpd的三种登陆模式。
3、三种登陆模式
3.1、匿名用户模式
匿名用户模式再互联网中是一种比较常见的方式,尤其在内网中分享一些不重要的文件,譬如软件安装包等。任何用户都可以登录到ftp服务器获取文件信息,配合防火墙将访问范围限制在内网中,可以将一些不安全的认证模式变得相对可控一些。下面尝试登陆一下ftp服务器,通过本地127.0.0.1进行测试。
1、开启vsftpd
systemctl start vsftpd
2、查看对应的防火墙端口
netstat -ntlp | grep vsftpd
3、连接测试
ftp 127.0.0.1
按照如图所示进行操作:
注意:anonymous表示的就是匿名用户,输入密码的时候不用输入,直接回车,登陆成功。
4、在Linux中的ftp中的pub目录中尝试新建目录
我们发现创建文件失败,这说明匿名用户是不具备新建目录和上传文件的权限,下面我们将进行配置以实现这一功能。exit命令退出匿名用户。
5、修改配置文件
vim /etc/vsftpd/vsftpd.conf
修改完成保存退出。
6、重启vsftpd服务
systemctl restart vsftpd
重启完成后重新执行上述的第三步操作,完成后进入pub目录重新创建目录进行测试。我们发现创建目录还是失败,这时候退出exit。
7、查看pub目录权限
ls -ld /var/ftp/pub/
我们好像发现了问题所在,可能是目录没有写的权限,这时候我们重新给予权限,更改目录的所有者为ftp。
chown ftp /var/ftp/pub/
8、重新建立目录
修改完成权限之后,我们重新执行上述第三个步骤,进入pub目录下,创建文件夹,文件夹名字随意。
可以看到文件创建成功。
9、window中建立测试连接
Linux中输入ifconfig查看网络端口
window中进行测试:
如果window中无法进行访问,修改上述第五步配置文件。
此时我们匿名用户模式配置完成。
3.2 本地用户模式
在配置本地用户之前,建议给系统拍个快照,防止系统配置错误能够及时恢复。
本地用户相比匿名用户更加的安全。配置本地用户模式首先需要将配置文件进行修改,匿名用户部分全部设置为禁用,开启系统用户权限。将/etc/vsftpd/vsftpd.conf中部分配置按照如下进行修改。
1、修改配置文件
vim /etc/vsftpd/vsftpd.conf
2、重新启动服务器
system restart vsftpd
3、通过ftp服务器进行登陆测试
此时登陆ftp的用户名即为登陆Linux系统的普通用户,这些都是之前自己设置的。但是root用户是无法登陆服务器的,但是经过修改配置还是可以登录的,本次教程忽略。
3.3 虚拟用户模式
虚拟用户模式是三种模式中安全性最高的一种模式,但是它的配置也是比其他两种更加复杂一些。
1、新建数据库文件
vim /etc/vsftpd/login_user
添加如下内容:
这个新建的数据库文件有格式规定:每个用户占两行,第一行表示用户名,第二行表示密码,用户名和密码可以自己设定。(不建议用户名和密码设置成完全一样的)
2、修改文件
上述的文件通过明文写明了账号和密码,肯定是不行的,不能作为最终的数据库文件供FTP服务器进行使用。我们可以通过工具将特定的格式文本文件转换成数据库文件,并且调整数据库文件的权限以防止其他用户获取到数据库文件的内容,随后删除原始的明文存储文件。
3、配置RAM验证
PAM可以动态的加载验证模块,因为可以按照需要的动态对验证的内容进行变更,所以可以大大提高验证的灵活性,管理员可以灵活调整服务程序认证方式。PAM的配置文件在/etc/pam.d/vsftpd
为了防止实验干扰,在文件中添加两行内容,并将上述内容进行注释,如下所示
vim /etc/pam.d/vsftpd
4、将虚拟用户和本地用户进行映射
我们这时新建一个新用户,并且不允许其登陆到ftp服务器,保证系统安全性。
useradd -d /var/ftproot -s /sbin/nologin ftp_chang
ls -ld /var/ftproot
然后我们设置权限:
chmod -Rf 755 /var/ftproot
5、配置文件内启用映射
vim /etc/vsftpd/vsftpd.conf
在配置文件的最后添加如下两行内容
同时将配置文件按如下进行修改:
6、给不同的用户设置不同的目录和权限
本实例中将虚拟用户映射为ftp_chang用户,在ftp主目录下创建两个文件夹供两个用户作为主目录,互不干扰。实验结果需要让testuser用户具备只读权限,testchang用户具备上传文件和建立目录,如下所示:
mkdir /var/ftproot/testuser
chown ftp_chang:ftp_chang /var/ftproot/testuser/
mkdir /var/ftproot/testchang
chown ftp_chang:ftp_chang /var/ftproot/testchang
ls -ld /var/ftproot/testuser/ /var/ftproot/testchang
7、建立vsftp配置文件
mkdir /etc/vsftpd/vsftp_user_conf
vim /etc/vsftpd/vsftpd.conf
向配置文件添加如下内容:user_config_dir=/etc/vsftpd/vsftp_user_conf
cat /etc/vsftpd/vsftpd.conf | grep user_config_dir
随后在/etc/vsftpd/vsftp_user_conf目录下建立两个文件,文件名对应虚拟用户名称。
cd /etc/vsftpd/vsftp_user_conf
vim testuser
cat testuser
在testuser文件中添加:local_root=/var/ftproot/testuser
vim testchang
cat testchang
在testchang文件中添加:
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
local_root=/var/ftproot/testchang
8、重新启动vsftpd服务器
systemctl restart vsftpd
9、启动测试
ftp 127.0.0.1
首先我们测试chang用户,mkfir创建文件夹,发现创建成功。exit退出
我们再次连接ftp服务器,不过这次测试testuser用户,再次mkdir创建文件夹,这次我们发现文件夹创建失败。exit退出
最后我们进入window中进行测试,输入对应的用户名和密码,登陆成功!