开启防火墙ftp端口
21端口是ftp服务端口;10060到10090是Vsftpd被动模式需要的端口,可自定义一段大于1024的tcp端口
阿里云服务器记得开放上面的端口
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。
关闭firewall:
1 | systemctl stop firewalld.service #停止firewall |
编辑防火墙配置文件
vi /etc/sysconfig/iptables
1 | -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT |
重启防火墙使配置生效
1 | systemctl restart iptables.service #最后重启防火墙使配置生效 |
关闭SELINUX
1 | vi /etc/selinux/config |
安装vsftpd
1 | rpm -qc vsftpd #查询vsftpd是否安装 |
ftp的配置文件主要有三个,位于/etc/vsftpd/
目录下,分别是:
ftpusers
该文件用来指定那些用户不能访问ftp服务器。user_list
该文件用来指示的默认账户在默认情况下也不能访问ftpvsftpd.conf
vsftpd的主配置文件
新建系统用户vsftpd
1 | useradd vsftpd -d /data/wwwroot -s /bin/false #用户目录为/data/wwwroot, 用户登录终端设为/bin/false(即使之不能登录系统) |
建立虚拟用户
建立虚拟用户个人Vsftp的配置文件和子账号FTP权限
1 | mkdir /etc/vsftpd/vconf |
输入以下内容
1 | local_root=/data/wwwroot/qgadmin/ |
保存退出
1 | :wq! |
配置vsftp服务器
1 | cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak #备份默认配置文件 |
执行以下命令进行设置:
1 | sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf' |
解决服务器发回了不可路由的地址。使用服务器地址代替的问题
查看生成的配置文件:
1 | vi /etc/vsftpd/vsftpd.conf |
1 | listen=NO -> listen=YES |
开启被动模式
1 | #开启被动模式 |
pasv_address 是所在服务器的公网IP
配置文件说明:
1 | anonymous_enable=NO //设定不允许匿名访问 |
建立虚拟用户名单文件
1 | touch /etc/vsftpd/virtusers |
编辑虚拟用户名单文件:(单行账号,双行密码,注意:不能使用root做用户名,系统保留)
1 | vi /etc/vsftpd/virtusers |
输入
1 | zhangjian |
保存退出
1 | :wq! |
生成虚拟用户数据文件
1 | rm -rf /etc/vsftpd/virtusers.db |
vsftpd配置
在/etc/pam.d/vsftpd
的文件头部加入以下信息(在后面加入无效)
修改前先备份
1 | cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak |
打开文件
1 | vi /etc/pam.d/vsftpd |
先注释vsftpd所有配置,加入下面部分
1 | auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers |
注意:如果系统为32位,上面改为lib,否则配置失败
重启vsftpd服务器
1 | systemctl restart vsftpd.service |
可通过 tail -f /var/log/secure
指令,查看服务器安全日志,便于分析错误问题,设置操作效果一定要仔细