AWS CentOS7 下配置FTP(vsftpd)及防火墙

时间:2024-04-10 13:54:45

趁着AWS云服务有1年免费期的福利,申请了一个EC2(可以看作是AWS的VPC),预装Centos7系统。

整个网页后台学习学习, 作为后台维护自然免不了要装一个FTP,选用最经典的vsftpd,立马安装。

yum install vsftpd

开启FTP前,习惯性关闭防火墙 systemctl stop firewalld, 居然提示找不到firewalld.service。一脸问号,顺便查看了一下iptables,也没有。难道这个版本的Centos连防火墙都没有。

怒装firewall

yum install firewalld

到此,软件的安装顺利完成

在做软件配置前,为排除干扰,先把防火墙都关闭,包括AWS的安全组。

  • 配置FTP

FTP通过改写配置文件来实现配置,每次配置修改后要应用则需要重新启动FTP服务。

vim /etc/vsftpd/vsftpd.conf

systemctl restart vsftpd

配置FTP模式

熟悉FTP的同学一定了解FTP根据连接端口的使用可以分两种模式(被动Passive模式 与 主动Active模式)

若FTP未做任何配置,则默认使用的是PASV被动模式。通过浏览器做连接(ftp://192.168.1.2)也是默认使用PASV的方式连接服务器。

被动模式

FTP模式 服务端监听端口
连接建立后服务端用来传输的端口
配置内容
Active 21/TCP 20(由服务器发起连接请求)    connect_from_port_20=YES
   pasv_enable=NO
PASV 21/TCP

在自定义的端口范围中随机选择一

(由客户端发起连接请求)

   connect_from_port_20=NO(默认为YES)
   pasv_enable=YES
   pasv_min_port=10000(端口范围可任意设置)
   pasv_max_port=10001
权衡之后自然选择对服务器负担比较小的PASV模式。

接下来配置FTP的访问用户与权限(匿名方式)

暂时为图方便,采用匿名用户的访问方式。

在配置文件 vsftpd.conf 中确认以下几行内容,没有的加上,搞定。

anonymous_enable=YES         
anon_upload_enable=YES          
anon_mkdir_write_enable=YES   
anon_other_write_enable=YES    


最后配置FTP的访问目录(匿名用户使用)

同样在配置文件中为匿名用户设定访问目录

anon_root=/root/ftpfolder

同时还需要通过以下Linux命令设置目录权限 
chmod 755  /root/ftpfolder  

指定用户访问(规定用户名密码,匿名用户拒绝登录)

匿名的方式多少感觉在安全性在有风险,又花时间调查了一把用户登录的方式

既然拒绝匿名用户,首先就是关闭匿名用户的权限

anonymous_enable=NO

接着是创建用于登录FTP的用户, 这是linux的一种用户类型, 使用linux命令创建并设置初始访问目录

useradd ftpuser -s /sbin/nologin –d /usr/share/nginx/html

最后为该用户设置好密码后重启vsftpd

passwd ftpuser

systemctl restart vsftpd


成功连接,本以为大功告成,却发现完全看不到 ftpfolder 下的子目录,
又是一阵搜索,原来是selinux搞的鬼。
vi  /etc/sysconfig/selinux   

把SELINUX配置改为disable   
SELINUX=disable  
保存退出重启

终于能正常访问,文件夹的创建删除,文件上传下载也都OK。

  • 配置防火墙
在AWS云平台上使用,共需要配置2个防火墙(Centos的防火墙 与 AWS提供的安全组)

    Centos firewall 配置

     先插一段防火墙使用的常用命令列表

作用 命令
开启防火墙 systemctl  start  firewalld
停止防火墙 systemctl  stop firewalld
查看防火墙运行状态

systemctl  status  firewalld

或者 firewall-cmd  --state

开放单个端口

firewall-cmd   --permanent   --zone=public   --add-port=8081/tcp

永久开放8081的TCP端口

开放批量端口

firewall-cmd   --permanent   --zone=public   --add-port=100-500/tcp

批量永久开放100到500的TCP端口

移除/关闭已开放的端口 firewall-cmd   --permanent   --zone=public   --remove-port=100-500/tcp
添加对应的服务

firewall-cmd  --add-service=ftp   --permanent

服务开启后就不需要另行开启该服务的端口。

比如添加FTP服务后,不需要再开放21或其他ftp关联端口

移除已开放的服务 firewall-cmd  --remove-service=ftp   --permanent
应用之前所做的所有修改

firewall-cmd --complete-reload

防火墙的修改配置立即生效,不用通过systemctl重新启动防火墙。

修改只有通过该命令应用后才能在 --list-all 参数查看到

查看当前防火墙的所有配置

firewall-cmd   --list-all

显示当前防火墙的所有配置

    综上,对于Centos的防火墙,放行FTP服务的流量只需要加上FTP service就可以了。

    firewall-cmd  --add-service=ftp   --permanent

     firewall-cmd --complete-reload

    AWS 安全组配置
AWS的安全组对出站是全放开,只需要配置入站(也就是向服务器发送的请求开放)。

我这里配置的FTP是PASV,从10000到10001之间选择一个端口

因此这里我只为FTP开放了21与10000-10001这种类型的TCP端口。

    AWS CentOS7 下配置FTP(vsftpd)及防火墙