- VSFTPD
- 禁止使用不安全的 FTP,请使用“CSK Global Root CA”证书颁发机
- 构,颁发的证书,启用 FTPS 服务;
- 创建虚拟用户 webuser,登录 ftp 服务器,根目录为/webdata,上传
- 的文件映射为 webadmin;
- 登录后限制在自己的根目录;
- 允许 WEB 管理员上传和下载文件,但是禁止上传后缀名
- 为.doc .docx .xlsx 的文件;
- 限制用户的下载最大速度为 100kb/s;最大同一 IP 在线人数为 2 人;
- 通过工具或者浏览器下载的最大速度不超过 100kb/s;
- 一个 IP 地址同时登陆的用户进程/人数不超过 2 人;
- 采用随机端口用户客户端跟服务器的数据传输,并限制传输端口为
- 40000-41000 之间。
一、安装vsftpd ftp lftp 服务
[root@storagesrv /]# yum install vsftpd ftp lftp -y
二、创建虚拟用户与目录
[root@storagesrv /]# mkdir /webdata
[root@storagesrv /]# chmod 777 /webdata/
[root@storagesrv /]# useradd webadmin
[root@storagesrv /]# echo 1 |passwd --stdin webadmin
[root@storagesrv /]# useradd -s /sbin/nologin -d /var/webuser webuser
[root@storagesrv /]# echo 1 |passwd --stdin webad
[root@storagesrv /]# nano user
webuser
1234
[root@storagesrv /]# db_load -T -t hash -f user user.db
[root@storagesrv /]# cat /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam >> /etc/pam.d/vsftpd
[root@storagesrv /]# nano /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/user
account required pam_userdb.so db=/etc/vsftpd/user
三、生成服务证书并自签名
[root@storagesrv /]# nano /etc/pki/tls/openssl.cnf
dir = /CA
[root@storagesrv /]# mkdir /CA
[root@storagesrv /]# cp -rf /etc/pki/tls/* /CA
[root@storagesrv /]# cd /CA/
[root@storagesrv CA]# touch index.txt
[root@storagesrv CA]# echo 01 >serial
[root@storagesrv CA]# openssl genrsa -out private/cakey.pem 2048
root@storagesrv:/CA# openssl req -new -x509 -key ./private/cakey.pem -out cacert.pem
CN
Inc
www.skills.com
skill Global Root CA
[root@storagesrv CA]# openssl genrsa -out ftp.key 2048
[root@storagesrv CA]# openssl req -new -key ftp.key -out ftp.csr
CN
China
ShangDong
skills
Operations Departments
ftp.sdskills.com
[root@storagesrv CA]# openssl x509 -req -in ftp.csr -CA /CA/cacert.pem -CAkey /CA/private/cakey.pem -CAcreateserial -out ftp.crt
Signature ok
subject=/C=CN/ST=China/L=ShangDong/O=skills/OU=Operations Departments/CN=ftp.sdskills.com
Getting CA Private Key
四、配置vsftpd主配置文件和认证
[root@storagesrv /]# nano /etc/vsftpd/vsftpd.conf
guest_enable=YES #开启虚拟用户登录
guest_username=webadmin #虚拟映射用户名称
user_config_dir=/etc/vsftpd #虚拟用户目录
force_local_data_ssl=YES #开启ftps数据
force_local_logins_ssl=YES #开启ftps登录
ssl_enable=YES #证书启动
rsa_cert_file=/ca/ftp.crt #证书位置
rsa_private_key_file=/ca/ftp.key #密钥位置
local_root=/webdata #根目录
allow_writeable_chroot=YES #允许读写操作
deny_file={*.doc,*.docx,*.xlsx} #禁止的文件类型
local_max_rate=100000 #本地最大流量为100kb 单位b
max_per_ip=2 #最大同一ip在线人数
pasv_min_port=40000 #限制传输最小
pasv_max_port=41000 #限制传输最大
#具体可 man 5 vsftpd.conf 参考
[root@storagesrv /]# nano webuser
write_enable=YES
allow_writeable_chroot=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
download_enable=NO
local_root=/webdata
[root@storagesrv /]# nano /etc/vsftpd/webuser
write_enable=YES
allow_writeable_chroot=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
download_enable=NO
local_root=/webdata
五、测试
[root@storagesrv /]# nano /etc/lftp.conf
set ssl:verify-certificate no #加入这行,具体可参考报错信息
#创建文件类型测试
[root@storagesrv /]# touch test.doc
[root@storagesrv /]# touch test.docx
[root@storagesrv /]# touch test.xlsx
[root@storagesrv /]# touch test.txt
#lftp连接
[root@storagesrv ~]# lftp -u webuser:1234 localhost
lftp webadmin@localhost:~> quote pwd
257 "/"
lftp webadmin@localhost:/> put test.doc
put: Access failed: 550 Permission denied. (test.doc)
lftp webadmin@localhost:/> put test.docx
put: Access failed: 550 Permission denied. (test.docx)
lftp webadmin@localhost:/> put test.xlsx
put: Access failed: 550 Permission denied. (test.xlsx)
lftp webadmin@localhost:/> put test.txt
lftp webadmin@localhost:/> ls
-rw-r--r-- 1 1000 1000 0 Jul 21 11:24 test.txt
- VSFTPD
- 虚拟用户 ftpuser1 ftpuser2 映射用户为ftpuser文件根目录在用户自身目录下/var/ftpuser*
- ftp1能下载,但不能上传;
- ftp2能上传,但不能下载。
1. 创建2个虚拟用户,并设置密码
[root@storagesrv /]# useradd -s /sbin/nologin -d /var/ftp1 ftp1
[root@storagesrv /]# useradd -s /sbin/nologin -d /var/ftp2 ftp2
[root@storagesrv /]# echo 1111 | passwd --stdin ftp1
[root@storagesrv /]# echo 2222 | passwd --stdin ftp2
2. 安装db4
[root@storagesrv vsftpd]# yum -y install db4 db4-utils
3. 建立密码文件(每个用户两行,第一行为用户名,第二行为密码)
[root@storagesrv vsftpd]# cat vusers.txt
ftp1
111
ftp2
222
[root@storagesrv vsftpd]# db_load -T -t hash -f vusers.txt vusers.db
4. 配置pam认证文件
[root@storagesrv vsftpd]# vim /etc/pam.d/vsftpd
在最后添加下面的内容(注意:末尾没有.db)可参考/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pem
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
5. 编辑配置文件
[root@storagesrv vsftpd]# nano vsftpd.conf
最后加上
guest_enable=YES
guest_username=ftp #本地用户映射为匿名用户
user_config_dir=/etc/vsftpd
6. 创建用户配置文件(配置文件名与用户名相同)
[root@storagesrv vsftpd]# cat ftp1 #虚拟用户ftp1
local_root=/var/ftp1 #根目录
download_enable=YES #允许下载
anon_upload_enable=NO #禁止匿名上传
[root@storagesrv vsftpd]# cat ftp2 #虚拟用户ftp2
local_root=/var/ftp2
download_enable=NO #禁止下载
write_enable=YES #开启读写
anon_upload_enable=YES #允许上传
anon_mkdir_write_enable=YES #允许创建目录
anon_other_write_enable=YES #允许其他读写操作
- 首先需要打开local_enable = YES
- VSFTPD
- 本地用户登录
- 情况一、
- chroot_local_user=YES #将所有用户锁定在主目录,下面指定的用户例外
- chroot_list_enable=YES #启用锁定用户名单。
- chroot_list_file=/etc/vsftpd/chroot_list #文件中的用户有例外的权限。
- 则/etc/vsftpd/chroot_list文件中的用户不锁定到用户主目录,其余的用户锁定到用户主目录。
- 情况二、
- chroot_local_user=NO #不锁定用户主目录,下面指定的用户例外
- chroot_list_enable=YES
- chroot_list_file=/etc/vsftpd/chroot_list
- 则/etc/vsftpd/chroot_list文件中的用户锁定到用户主目录,其余的用户不锁定到用户主目录。
- 情况三、
- chroot_local_user=YES
- chroot_list_enable=NO
- chroot_list_file=/etc/vsftpd/chroot_list
- 则/etc/vsftpd/chroot_list不生效,所有用户全部锁定在主目录ftpuser。