Centos下ftp的安装一般采用的是vsftpd,但是在ftp的模式中又有几个用户配置项需要注意,有些人喜欢用本地用户去登陆FTP,虽然在建立本地用户的时候加了/sbin/nologin参数,但是这个还是不够安全,而且这样权限控制也不是很好,他们都是统一的控制权限,这里采用虚拟用户前来配置。虚拟用户配合防火墙selinux还有单个用户的权限,这使得FTP有着足够的安全。而且权限控制特别灵活,修改一个用户的权限不会影响到其他用户。
centos 系统版本(5.5、5.3、6.0、6.5)
centos 7.4 已经验证
首先我们安装vsftpd
1 | [root@RAID1 ~]# yum –y install vsftpd |
2、启动和加载vsftp
1 | [root@RAID1 ~]# service vsftpd restart |
3、开始配置vsftpd
Vsftpd的配置文件在/etc/vsftpd下面,在配置之前我们先cp一份做备份用以免发生意外(做什么都要随手备份,因为没有一万,只有万一。)
1 | [root@RAID1 ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak |
- vsftpd的参数介绍
1 | reverse_lookup_enable=NO #添加此行,解决客户端登陆缓慢问题!重要!默认vsftpd开启了DNS反响解析!这里需要关闭,如果启动有错误,请注销! |
- 以下是我使用的参数,使用的是被动模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33anonymous_enable=No
listen_port=21
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_list_enable=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
reverse_lookup_enable=No
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vconf
virtual_use_local_privs=YES
pasv_min_port=9000
pasv_max_port=9045
chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
#port_enable=YES
#connect_from_port_20=YES
pasv_enable=yes
- 备注: 这里vsftp采用的被动模式,被动模式开放了一个端口段,公司路由器上需要开放这一个端口端,路由器端口映射
4、建立虚拟用户名单文件
编辑虚拟用户的名单:(第一行用户名。第二行密码。不能使用root)
1 | [root@RAID1 ~]# vim /etc/vsftpd/xuniusers |
5、开始建立生成虚拟用户数据文件
这里需要安装db4,设置PAM文件权限,并制定虚拟用户数据库文件读取
1 | [root@RAID1 ~]# yum –y install db4-utils |
在/etc/pam.d/vsftpd的文件头部加入以下信息(注: 这里一定要在前面,不能再后面,刚开始我也加载到后面登陆的时候提示错误),修改前先备份
1 | [root@RAID1 ~]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak |
- 注: 64位的操作系统,则上面lib改为64。不然配置也会无效
1 | auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/xuniusers |
建立一个系统用户vsftpd,用户的主目录可以自己设置,/home/wwwroot,设置用户登陆的终端为/bin/false
1 | [root@RAID1 ~]# useradd vsftpd -d /home/wwwroot -s /bin/false |
6、建立虚拟用户个人vsftp的配置文件
1 | [root@RAID1 ~]# mkdir /etc/vsftpd/vconf |
最后重启vsftpd服务,不关闭Selinux可以执行以下命令通过FTP。防火墙开放端口setsebool -P ftpd_disable_trans 1
上述配置完成后还可以通过#adduser -d /目录路径 -g vsftpd -s /sbin/nologin 用户名 这个命令来添加一个用户,不需要配置任何权限都可以进行FTP的访问,最后补充说明,需要安装的其他插件
需要安装的的是pan
1
[root@RAID1 ~]# yum install -y pam
这里我们还可以查看日志,可以根据提示的提示来判断。
1
[root@RAID1 ~]# cat /var/log/secure
测试用户登录虚拟用户只能看到自己本身的目录 ,不能去其他目录查看(到这里vsftpd配置结束)
注: 如果这里配置的被动模式,且用的是iptables来进行对外代理提供访问,那么需要在vsftpd.conf 的配置文件里面增加一行配置: pasv_promiscuous=YES
。否则用户在连接的时候会提示 425 Security: Bad IP connecting.
。
7. pasv_promiscuous选项参数说明
此选项激活时,将关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址。小心打开此选项。此选项唯一合理的用法是存在于由安全隧道方案构成的组织中。默认值为NO。
合理的用法是:在一些安全隧道配置环境下,或者更好地支持FXP时(才启用它)