1.先关闭firewall和SELinux
2.安装iptables服务并启动
3.安装vsftpd
rpm -qa | grep vsftpd #查看是否安装了vsftpd
yum install -y vsftpd #下载安装
ps -ef | grep vsftpd #查看进程是否启动
systemctl start vsftpd.service #启动服务
systemctl enable vsftpd.service #添加到自启动
4.备份原配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
5.修改配置文件
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #不允许匿名登录
local_enable=YES #允许本地用户登录
write_enable=YES #允许写入
local_umask=022 #上传的文件权限改为755
dirmessage_enable=YES #允许显示目录消息
xferlog_enable=YES #是否记录日志
#connect_from_port_20=YES #禁用PORT模式,采用PASV模式
xferlog_file=/var/log/xferlog #日志文件的保存路径
xferlog_std_format=YES #日志文件的格式
idle_session_timeout=300 #空闲超时时间
data_connection_timeout=120 #数据连接超时时间
ascii_upload_enable=YES #允许ascii上传
ascii_download_enable=YES #允许ascii下载
ftpd_banner=Welcome to FTP service. #ftp欢迎信息
#以下三个配置实现了,在chroot_list文件中的用户可以更改路径,其他用户只能锁定在指定目录中
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES #独立进程模式启动
#listen_ipv6=YES #注释掉
pam_service_name=vsftpd #验证文件为/etc/pam.d/vsftpd
tcp_wrappers=YES
#以下两个配置实现了,只有在user_list文件中的用户才能登录
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
#userlist_deny=NO #这个不能设置,设置后,window下文件管理器无法实现登录
#因为配置了防火墙,只能使用PASV模式
pasv_enable=YES #启动PASV模式,
pasv_min_port=
30000 #指定端口范围
pasv_max_port=
30999 #指定端口范围 这里的端口范围不能设置太大,否则会出现连接慢的问题。目前测试999为最大范围
guest_enable=YES #采用虚拟用户认证方式
guest_username=ftp #虚拟用户对应的本地用户名
user_config_dir=/etc/vsftpd/vuser_conf #虚拟用户的配置文件目录
reverse_lookup_enable=NO #不允许dns反向查询
#listen_port=21 #这里可以修改默认的端口,修改完这里,记得把iptable里面的端口信息也要做修改
6.创建虚拟用户
vi /etc/vsftpd/vuser_passwd.txt
在文件里面添加用户信息,奇数行为用户名,偶数行为密码,如:
abc #虚拟用户名
abc123 #密码
:wq #保存退出
#执行转换 #注意,生成的验证db文件的文件后缀必须是*.db
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
7.修改认证文件
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/vuser_passwd #注意这里没有.db的后缀
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd #注意这里没有.db的后缀
8.创建ftp根目录
用户ftp 在安装 vsftp服务 的时候,自动创建
mkdir -p /home/ftp #
新建目录
chown ftp:ftp /home/ftp #
修改目录所有者
9.创建虚拟用户的配置文件
touch
/etc/vsftpd/
chroot_list
mkdir -p
/etc/vsftpd/
vuser_conf
cd /etc/vsftpd/vuser_conf #
转到虚拟用户配置目录
vi abc #
创建跟虚拟用户同名的文件
在文件中添加以下信息:
local_root=/home/ftp
#
指定虚拟用户能访问的根目录
allow_writeable_chroot=YES #
是否允许访问
#下面两个指令用于配置用户对目录具有写权限,如果用户只有读权限,则不需要配置
virtual_use_local_privs=YES #
与绑定的用户具有同等权限
chmod_enable=YES #
允许覆盖原有文件
10.配置iptables
vi /etc/sysconfig/iptables
配置如下信息
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT #
新增
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30000:30999 -j ACCEPT #
新增
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#
重启
iptables
systemctl restart iptables.service
11.重启vsftp服务
systemctl restart vsftpd.service