之前部署阿里云服务器需要上传一些文件,所以搭建了FTP服务器,便记录一下。
环境
- Centos7
安装VSFTPD
1 | $ yum install vsftpd -y |
配置VSFTPD
vsftpd的配置文件是 /etc/vsftpd/vsftpd.conf ,直接用vim打开编辑即可。
使用vim编辑器打开vsftpd配置文件:1
$ vim /etc/vsftpd/vsftpd.conf
关键修改
- anonymous_enable=YES
是否允许匿名用户登陆FTP。
为了安全起见关闭这个功能(将等号后的YES改成NO即可)。 - dirmessage_enable=YES
切换目录时,显示目录下.message文件中的内容
默认是开启的 - local_umask=022
FTP上本地的文件权限,默认是077,不过vsftpd安装后的配置文件里默认是022.
没有什么特殊情况不用修改。 - xferlog_enable=YES
启用上传和下载的日志功能,默认开启。 - ftpd_banner=XXXX
FTP的欢迎信息。 - data_connection_timeout=120
数据连接超时时间。
启动VSFTPD
开机启动1
2$ systemctl enable vsftpd.service
$ systemctl start vsftpd.service
创建FTP用户
修改完vsftpd的配置文件之后我们还是不能使用vsftpd,因为我们还没有设置ftp的用户。
添加一个名为ftpuser的用户,用户文件夹位置为:/home/ftpdir,且禁止此用户登陆服务器:1
2$ useradd -d /home/ftpdir -s /sbin/nologin ftpuser
$ passwd ftpuser
这时候系统会要求您输入新的密码并且重复一遍。顺便一提在SSH中,密码一般不会回显,所以初学者可能会觉得输进去没反应,其实是已经输进去了。
调整文件夹权限1
2
3$ chmod 777 /home/ftpdir
$ cd /home
$ ls -l
调整防火墙
我这里用的是传统的管理方式
在CentOS 7或RHEL 7或Fedora中防火墙由firewalld来管理,需要还原1
2$ systemctl stop firewalld
$ systemctl mask firewalld
并且安装iptables-services:1
$ yum install iptables-services -y
设置开机启动:1
2$ systemctl enable iptables
$ systemctl start iptables
开放端口
主动模式
使用Vim编辑器打开iptables配置文件:1
$ vim /etc/sysconfig/iptables
添加1
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
重启服务1
$ systemctlrestart iptables.service
被动模式(未测试)
如果ftp处于被动模式下,除了需要修改iptables的配置文件以外,还需要修改vsftpd的配置文件。
首先是修改vsftpd的配置文件:
使用Vim编辑器打开vsftpd配置文件:1
$ vim /etc/vsftpd/vsftpd.conf
现在配置文件中找到 “connect_from_port_20=YES” 并将它修改为 “connect_from_port_20=NO” ,关闭掉vsftpd的主动模式。
然后在配置文件的末尾追加:
使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