安装
Debain 系:
1 | apt-get install vsftpd |
RH 系(RPM resource vsftpd下载对应版本的 rpm 包):
1 | rpm -ivh vsftpd-3.0.2-29.el7_9.x86_64.rpm # RHEL7.9 |
安装好后默认自动创建 ftp 用户,以下命令完成 ftp 用户的基本设置:
1 | passwd ftp # 设置ftp用户的密码 |
或是新建 ftp 用户:
1 | useradd -d /home/ftpuser ftpuser # 其中/home/ftpuser是新建用户主目录,ftpuser是新建用户用户名 |
修改 vsftp 配置文件,文章末尾有所有选项的解释:
1 | vi /etc/vsftpd.config |
vi 中使用/
查询修改如下设置,并删除#
注释符:
1 | anonymous_enable=YES # 是否允许匿名ftp,若不允许选NO |
重启 vsftp 服务以加载配置:
1 | service vsftpd restart # 或: |
测试,输入用户名与密码实现登录:
1 | ftp://localhost # 网页 |
如果登录ftp总是出现密码错误,可以将
/etc/vsftpd.conf
配置文件的pam_service_name=vsftpd
改为pam_service_name=ftp
,即可解决。
开机自启:
1 | chkconfig --levels 235 vsftpd on # 或: |
目录权限限制
由于我们不想 ftpuser 用户访问它主目录以外的任何文件,那么就要限制 ftpuser 用户的访问路径,将它限制在 ftpuser 用户主目录
/home/ftpuser
下边。要做到这不其实不难,只要完成 vsftpd 的相关配置就可以了。
修改 vsftpd 配置:
1 | vi /etc/vsftpd.conf |
1 | chroot_list_enable=YES # 是否启动限制用户的名单 |
修改或新建 /etc/vsftpd/vsftpd.chroot_list
文件,在其中加入:
1 | ftpuser # 如果有多个ftp用户,则每个用户一行 |
文件权限限制
生产环境中存在不允许删除其中的文件,只允许下载或上传文件的应用场景。
读写操作权限限制
修改 vsftpd 配置:
1 | vi /etc/vsftpd.conf |
/enable
搜索配置,按需修改入下设置,:wq
保存退出:
1 | write_enable = YES # 保证能够上传 |
删除操作权限限制
修改 vsftpd 配置:
1 | vi /etc/vsftpd.conf |
在尾部添加如下:
1 | user_config_dir=/etc/vsftpd/vsftpd_user_conf # 指定用户配置目录 |
创建相应目录:
1 | mkdir -p /etc/vsftpd/vsftpd_user_conf |
添加如下,完成后重启服务:
1 | cmds_denied=DELE # 禁止使用 删除 命令 |
需注意项
- 为防止恶意登录账户(SFTP),需取消对应账户对文档的读写权限;
- 重启vsftpd后需检查服务状态。
其他安全设置
可根据自身需求选取特定项修改即可。
修改 ftp 端口号
以’9981’连接,’9980’数据为例,修改 /etc/vsftpd.conf
文件,在末尾加入如下几行:
1 | listen_port=9981 # 监听端口号 |
更改后保存,并重启 vsftpd 服务,并查看 vsftpd 端口号是否改为’9981’:
1 | netstat -tunpl | grep vsftpd |
防火墙设置
防火墙开启对内’9980’和对内’9981’端口。
更改vsftpd安全特性和性能特性
禁止匿名用户登录,更改 /etc/vsftpd.conf
文件:
1 | anonymous_enable=NO |
用户连接限制,更改 /etc/vsftpd.conf
文件:
1 | max_clients=100 # 最大连接数为100,超100会报错 |
其他,更改 /etc/vsftpd.conf
文件:
1 | idle_session_timeout=600 |