最近在centos 7.2下配置vsftpd遇到一个奇怪的问题,一切按照原来的配置,不能连接,但是可以用主动模式查看文件列表,进入多级目录之后,卡死。
纠结了很久,原来是阿里的“安全组策略”限制了,仅仅开放20/21端口是不够的,还需要开放更多的端口
整理步骤如下:
一、安装软件
1、开放连接端口,入网和出网都要配置
* 端口范围 : 20/21
* 授权对象:0.0.0.0/0
开放被动连接端口,入网和出网都要配置
* 端口范围 : 10020/10040
* 授权对象:0.0.0.0/0
2、安装vsftp服务,自动安装,提示下载的时候,按 y 并回车
yum install vsftpd
3、修改/etc/pam.d/vsftpd
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
vi /etc/pam.d/vsftpd
用井号 # 注释掉原来的内容,并添加最后两行用户验证数据库
#%PAM-1.0
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
修改/etc/vsftpd/vsftpd.conf
vi /etc/vsftpd/vsftpd.conf
-------修改文件
anonymous_enable=NO # 禁用匿名登录
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES # 启用限定用户在其主目录下
-----以下配置是需要自己手工添加:
pam_service_name=vsftpd
guest_enable=YES
guest_username=new_ftp_user
user_config_dir=/etc/vsftpd/vuser_conf
tcp_wrappers=YES--------一定要加这个,否则不能被动连接
pasv_min_port=10020 # 被动模式最小端口号10020
pasv_max_port=10040 # 被动模式最大端口号10040
二、添加宿主用户并指定根目录并使其不能登陆并赋予权限
useradd new_ftp_user –d /var/ftp/share –s /bin/false //添加用户virtual并指定家目录为share并设置用户不能登陆
mkdir /var/ftp/share //创建目录
chown new_ftp_user:new_ftp_user /var/ftp/share //修改文件夹归属
chmod –R 755 /var/ftp/share //修改目录权限为755,如果连接的时候提示错误,就把这里的权限再写小一点
三、创建虚拟用户帐号登陆文件及数据库文件
vi /etc/vsftpd/vftpuser.txt
添加账户名和密码
new_ftp_user
new_ftp_user_password
生成数据文件
db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db
创建用户配置文件:
cd vuser_conf
vi new_ftp_user
配置文件内容:
local_root=/var/ftp/share
write_enable=YES
download_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=022
virtual_use_local_privs=YES
重启ftp服务,测试一切OK
service vsftpd restart