Centos下安装ftp

安装VSFTPD

1
yum install vsftpd

启动vsftpd:

1
systemctl start vsftpd.service

设置vsftpd开机自启动:

1
systemctl enable vsftpd.service

配置VSFTPD

完成第一步之后其实已经启动了ftp服务器,但我们并用不了,因为我们还没有对vsftpd进行一些必要的设置。

vsftpd的配置文件是/etc/vsftpd/vsftpd.conf,直接用vim打开编辑即可。

使用vim编辑器打开vsftpd配置文件:

1
2
vim /etc/vsftpd/vsftpd.conf
注:在vim中,非编辑状态下输入“/”+需要查找的内容 后按回车键可以快键查找指定字符串。

设置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
anonymous_enable=YES
是否允许匿名用户登陆FTP。
为了安全起见关闭这个功能(将等号后的YES改成NO即可)。

dirmessage_enable=YES
切换目录时,显示目录下.message文件中的内容
默认是开启的

local_umask=022
FTP上本地的文件权限,默认是077,不过vsftpd安装后的配置文件里默认是022.
没有什么特殊情况不用修改。

xferlog_enable=YES
启用上传和下载的日志功能,默认开启。
建议开启此功能,它可以对用户的操作进行日志记录,当出现问题的时候可以通过日志排查问题。

ftpd_banner=XXXX
FTP的欢迎信息。
在FTP登陆成功之后,服务器会往客户端发送一个欢迎消息以表示登陆成功。这是一个个性化的功能,您可以自由的设置其值,也可以在配置最前加上#注释本行。

data_connection_timeout=120
数据连接超时时间。
如果在使用vsftpd上传下载碎小文件的时候容易发生超时中断的问题,可以将本行前的#注释符去掉,然后将120改成5或者更小,然后重启vsftpd即可。

修改配置文件完成。保存后重启VSFTPD。

重启vsftpd服务:

1
systemctl restart vsftpd.service

创建FTP用户

修改完vsftpd的配置文件之后我们还是不能使用vsftpd,因为我们还没有设置ftp的用户。

添加一个名为lzd的用户,用户文件夹位置为:/var/www/html,且禁止此用户登陆服务器:

1
2
3
useradd -d /var/www/html -s /sbin/nologin lzd
会提示以下错误,忽视即可:useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.

然后设置一下密码,为ftpuser设置密码:

1
passwd lzd

开放端口

调整防火墙或配置安全组,开放21端口的入站规则。

主动模式与被动模式

主动模式和被动模式的不同简单概述为: 主动模式传送数据时是“服务器”连接到“客户端”的端口(客户端开启数据端口);被动模式传送数据是“客户端”连接到“服务器”的端口(服务端开启数据端口)。

主动模式需要客户端必须开放端口给FTP服务端,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。

被动模式只需要服务器端开放端口给客户端连接就行了,如果服务端在防火墙内,也需要做端口映射才行。

FTP主动模式

使用Vim编辑器打开iptables配置文件:

1
vim /etc/sysconfig/iptables

然后在配置文件中加入这么一句:

1
-A INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT

这句话告诉iptables开放21端口,允许接受从21端口传入的连接。

然后重启iptables服务:

1
systemctl restart iptables.service

现在就可以使用ftp工具登陆我们的ftp服务器了!

FTP被动模式

如果ftp处于被动模式下,除了需要修改iptables的配置文件以外,还需要修改vsftpd的配置文件。

首先是修改vsftpd的配置文件:

使用Vim编辑器打开vsftpd配置文件:

1
vim /etc/vsftpd/vsftpd.conf

现在配置文件中找到“connect_from_port_20=YES”并将它修改为“connect_from_port_20=NO”,关闭掉vsftpd的主动模式。

然后在配置文件的末尾追加:

1
2
3
4
5
6
7
8
#使vsftpd运行在被动模式
pasv_enable=YES

\#被动模式最小端口号30000
pasv_min_port=30000

\#被动模式最小端口号31000
pasv_max_port=31000

保存配置文件并退出。

然后重启vsftpd服务:

1
systemctl restart vsftpd.service

然后再使用Vim编辑器打开iptables配置文件:

1
vim /etc/sysconfig/iptables

添加这两句话:(“#”开头的是注释,可以不添加)

1
2
3
4
#开放ftp协议21端口,允许接受来自21端口的新建TCP连接
-A INPUT -p tcp -m state –state NEW -m tcp –dport 21 -j ACCEPT
#开放30000-31000号端口,允许接受来自此端口号段的新建TCP连接
-A INPUT -p tcp –dport 30000:31000 -j ACCEPT

保存并退出,然后重启iptables服务:

1
systemctl restart iptables.service

现在就可以使用ftp工具登陆我们的ftp服务器了!

调整文件夹权限

可能现在又有个问题冒出来了,使用ftp工具登陆服务器之后,不管创建什么,都会失败。

1
chmod 777 html

参考

FTP的主动模式和被动模式工作原理及抓包分析

------ 本文结束------
坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道