CentOS 7 安装FTP服务并开启PASV方式

本来以为弄个FTP应该非常简单。不曾想花了两天时间才差不多搞定。自己能力是有多差啊。下面记录一下整个配置过程,备注一些注意点。以备今后使用。

1. 安装FTP

sudo yum install vsftpd -y

执行上面命令即可。执行完之后,用下面命令检查一下vsftpd的版本号。能返回版本号就属于安装成功了。

vsftpd -v

需要说明的是安装后,默认的FTP访问路径是/var/ftp/pub。安装位置路径是/etc/vsftpd。

启动服务并设置为开机自动启动。

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

2. 创建FTP用户

#增加用户ftpadmin,并指定用户的主目录为/var/ftp/pub
useradd -d /var/ftp/pub ftpadmin

#为ftpadmin用户设置密码
passwd ftpadmin

#限定用户ftpadmin只能ftp登陆
usermod -s /sbin/nologin ftpadmin

3. 修改目录权限

chmod -R 777 /var/ftp/pub

4. 打开PASV模式

#编辑vsftpd配置
nano /etc/vsftpd/vsftpd.conf

#在文件末尾添加下面三行命令
pasv_enable=YES
pasv_min_port=6000
pasv_max_port=7000

#重启FTP服务
service vsftpd restart

关于PORT方式和PASV方式的区别:

主动模式PORT MOD & 被动模式 PASV MOD

FTP的连接一般是有两个连接的通道:
一个用来客户端程序和ftp服务器传输控制命令,默认端口21;另一个用来传输数据的链接通道,默认端口20。
假设客户端为C,服务端为S:

主动模式:当客户端C向服务端S发起连接并通过账户密码验证后,客户端C会发送一条命令告诉服务端S,客户端在本地打开了一个端口N在等待进行数据链接,当服务端S收到这个Port命令后,就会主动向客户端打开的那个端口N发起请求,这种数据通道就生成了。
Pasv模式:当客户端C向服务端S发起连接并通过账户密码验证后,服务端S告知客户端C,服务的在本地打开了一个端口M作为数据传输通道,等待客户端来建立链接,即被动地接受客户端来链接。

 

所以在vsftpd配置中需要打开PASV方式。具体定义如下:

pasv_enable=YES (Default: YES) 设置是否允许pasv模式
#pasv_promiscuous=NO (Default: NO) 是否屏蔽对pasv进行安全检查,(当有安全隧道时可禁用)
pasv_max_port=6000 (Default: 0 (use any port)) pasv使用的最大端口
pasv_min_port=7000 (Default: 0 (use any port)) pasv使用的最小端口

 

5. 防火墙设置

给防火墙添加FTP访问转换支持模块。

nano /etc/sysconfig/iptables-config

#添加下面两行内容,顺序不能颠倒
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"

给防火墙添加访问规则允许

iptables -L -n
iptables -L INPUT --line-numbers
iptables -D INPUT 7
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 6000:7000 -j ACCEPT
iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
service iptables save
service iptables restart

6. 修改SELINUX

nano /etc/selinux/config

#将SELINUX设置为disable
SELINUX=disabled

#重启系统
reboot

至此,所有配置都完成了。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注