FTP虚拟账号创建使用
FTP虚拟账号创建使用
1、环境规划
环境系统版本,以下内容简称主机为A机B机
A:CentOS 7.6 (172.20.10.4)
B:RedHat 8.2 (172.20.10.6)
A机建立上传测试文件 方便区分命名方式为‘系统简称+系统版本+虚拟账号简称’
[root@CentOS7-6 test]# ll-rw-r--r-- 1 root root 1819 May 19 12:34 CT7-6-1-rw-r--r-- 1 root root 1819 May 19 12:34 CT7-6-2
A机建立下载测试文件 方便区分命名方式为‘A机+虚拟账号简称’
[root@CentOS7-6 test]# ls /home/test/test1/A1.txt [root@CentOS7-6 test]# ls /home/test/test2/A2.txt
B机建立上传测试文件 方便区分命名方式为‘系统简称+系统版本+虚拟账号简称’
[root@RedHat8-2 test]# ll-rw-r--r-- 1 root root 2123 May 19 12:34 RH8-2-1-rw-r--r-- 1 root root 2123 May 19 12:34 RH8-2-2
B机建立下载测试文件 方便区分命名方式为‘B机+虚拟账号简称’
[root@RedHat8-2 test]# ls /home/test/test1B1.txt [root@RedHat8-2 test]# ls /home/test/test2B2.txt
2、测试内容结果简要描述
1)A机B机各创建宿主账号test shell为/sbin/nologin 家目录/home/test
2)各创建两个虚拟账号test1账号 家目录/home/test/test1、test2账号 家目录/home/test/test2
3)宿主账号禁止登录,虚拟账号登录锁定在自己的家目录
4)传输测试A机B机互为服务端客户端,对/test/下的文件进行上传测试,对服务端特定文件下载到客户端/test下
5)文件末尾描述vsftpd配置文件内容、以及黑白名单说明、虚拟用户独立权限文件内容说明
3、安装vsftp软件包,以及用于测试的ftp客户端
yum install -y vsftpd yum install -y ftp
4、创建ftp宿主账号
我测试的是两个虚拟账号,虚拟账号限制在统一目录下单独的两个虚拟账号家目录中
useradd -s /sbin/nologin testmkdir /home/test/test1 mkdir /home/test/test2 chown test. /home/test/ -R
5、创建ftp日志文件并更改权限
touch /var/log/vsftpd.logchown test. /var/log/vsftpd.log
6、备份vsftpd配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
7、更改ftp配置文件
cat > /etc/vsftpd/vsftpd.conf << EOFanonymous_enable=NOlocal_enable=YESwrite_enable=YESanon_upload_enable=NOanon_mkdir_write_enable=NOanon_other_write_enable=NOchroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd/vsftpd.chroot_listguest_enable=YESguest_username=testlisten=NOlisten_ipv6=YESpam_service_name=vsftpduser_config_dir=/etc/vsftpd/vsftpd_user_confvsftpd_log_file=/var/log/vsftpd.logallow_writeable_chroot=YESEOF或者使用如下命令手动编辑添加sed '/\#/d' /etc/vsftpd/vsftpd.confsed '/\#/d' /etc/vsftpd/vsftpd.conf -ivi /etc/vsftpd/vsftpd.conf
8、创建白名单文件并写入账号,本次测试实体账号为test,虚拟账号为test1、test2
cat >> /etc/vsftpd/vsftpd.chroot_list << EOF test1 test2 EOF
9、ftp虚拟账号密码文件,(基数行为账号,偶数行为密码)
cat >> /etc/vsftpd/vsftpd_user << EOF test1 1qaz2wsx test2 p@ssw0rd EOF
10、将账号密码文件生成库文件(为了安全考虑,自行备份账号密码文件,待生成库文件之后可将账号密码文件删除)
db_load -T -t hash -f /etc/vsftpd/vsftpd_user /etc/vsftpd/vsftpd_user.dbchmod 600 /etc/vsftpd/vsftpd_user.db
11、添加pam认证
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_bak cat /etc/pam.d/vsftpd|grep -v '#'|awk '{print "#"$0 >> "/etc/pam.d/vsftpd"}'cat /etc/pam.d/vsftpd|grep '#'|awk '{print $0 > "/etc/pam.d/vsftpd"}'cat >> /etc/pam.d/vsftpd << EOF auth required pam_userdb.so db=/etc/vsftpd/vsftpd_user account required pam_userdb.so db=/etc/vsftpd/vsftpd_user EOF
12、配置虚拟账号权限文件
mkdir /etc/vsftpd/vsftpd_user_confcat > /etc/vsftpd/vsftpd_user_conf/test1 << EOFlocal_root=/home/test/test1write_enable=YESanon_umask=022anon_world_readable_only=NOanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESEOFcat > /etc/vsftpd/vsftpd_user_conf/test2 << EOFlocal_root=/home/test/test2write_enable=YESanon_umask=022anon_world_readable_only=NOanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESEOF
13、重启vsftpd服务
systemctl start vsftpdsystemctl status vsftpd
14、登录测试以及传输测试
1)建立测试目录并增加上传下载传输测试文件
主机A:CentOS 7.6: mkdir /testcat /etc/profile >> /test/CT7-6-1 cat /etc/profile >> /test/CT7-6-2 cat /etc/profile >> /home/test/test1/A1.txt cat /etc/profile >> /home/test/test2/A2.txt chown test. /home/test/ -R 主机B:RedHat 8.2: mkdir /testcat /etc/profile >> /test/RH8-2-1 cat /etc/profile >> /test/RH8-2-2 cat /etc/profile >> /home/test/test1/B1.txt cat /etc/profile >> /home/test/test2/B2.txt chown test. /home/test/ -R#两台主机均进入测试传输目录cd /test
2)A机B机互为服务端以及客户端登录测试
##B为客户端 A为服务端 ftp账号-test1、test2:[root@RedHat8-2 test]# ftp 172.20.10.4Connected to 172.20.10.4 (172.20.10.4). 220 (vsFTPd 3.0.2)Name (172.20.10.4:root): test1331 Please specify the password.Password: 230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> quit221 Goodbye.[root@RedHat8-2 test]# ftp 172.20.10.4Connected to 172.20.10.4 (172.20.10.4). 220 (vsFTPd 3.0.2)Name (172.20.10.4:root): test2331 Please specify the password.Password: 230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> quit221 Goodbye. ##A为客户端 B为服务端 登录ftp账号-test1、test2:[root@CentOS7-6 test]# ftp 172.20.10.6Connected to 172.20.10.6 (172.20.10.6). 220 (vsFTPd 3.0.3)Name (172.20.10.6:root): test1331 Please specify the password.Password: 230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> quit221 Goodbye.[root@CentOS7-6 test]# ftp 172.20.10.6Connected to 172.20.10.6 (172.20.10.6). 220 (vsFTPd 3.0.3)Name (172.20.10.6:root): test2331 Please specify the password.Password: 230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> quit221 Goodbye.
3)传输测试-A为客户端登录B机ftp用户tets1,A机test1上传测试文件‘CT7-6-1’ 下载测试文件B1.txt
#####上传:[root@CentOS7-6 test]# lsCT7-6-1 CT7-6-2[root@CentOS7-6 test]# ftp 172.20.10.6Connected to 172.20.10.6 (172.20.10.6).220 (vsFTPd 3.0.3)Name (172.20.10.6:root): test1331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls227 Entering Passive Mode (172,20,10,6,42,68).150 Here comes the directory listing.-rw-r--r-- 1 1000 1000 2123 May 19 04:34 B1.txt226 Directory send OK.ftp> put CT7-6-1 local: CT7-6-1 remote: CT7-6-1227 Entering Passive Mode (172,20,10,6,124,67).150 Ok to send data.226 Transfer complete.1819 bytes sent in 6.3e-05 secs (28873.02 Kbytes/sec)ftp> ls227 Entering Passive Mode (172,20,10,6,186,156).150 Here comes the directory listing.-rw-r--r-- 1 1000 1000 2123 May 19 04:34 B1.txt-rw-r--r-- 1 1000 1000 1819 May 19 06:02 CT7-6-1226 Directory send OK.#####下载:ftp> ls227 Entering Passive Mode (172,20,10,6,53,40).150 Here comes the directory listing.-rw-r--r-- 1 1000 1000 2123 May 19 04:34 B1.txt-rw-r--r-- 1 1000 1000 1819 May 19 06:02 CT7-6-1226 Directory send OK.ftp> get B1.txtlocal: B1.txt remote: B1.txt227 Entering Passive Mode (172,20,10,6,204,244).150 Opening BINARY mode data connection for B1.txt (2123 bytes).226 Transfer complete.2123 bytes received in 2.8e-05 secs (75821.42 Kbytes/sec)ftp> 221 Goodbye.[root@CentOS7-6 test]# lsB1.txt CT7-6-1 CT7-6-2
4)传输测试-B为客户端登录A机ftp用户tets1,B机test1上传测试文件‘RH8-2-1’ 下载测试文件A1.txt
#####上传:[root@RedHat8-2 test]# lsRH8-2-1 RH8-2-2[root@RedHat8-2 test]# ftp 172.20.10.4Connected to 172.20.10.4 (172.20.10.4).220 (vsFTPd 3.0.2)Name (172.20.10.4:root): test1331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls227 Entering Passive Mode (172,20,10,4,245,200).150 Here comes the directory listing.-rw-r--r-- 1 1000 1000 1819 May 19 04:34 A1.txt226 Directory send OK.ftp> put RH8-2-1local: RH8-2-1 remote: RH8-2-1227 Entering Passive Mode (172,20,10,4,45,38).150 Ok to send data.226 Transfer complete.2123 bytes sent in 0.000107 secs (19841.12 Kbytes/sec)ftp> ls227 Entering Passive Mode (172,20,10,4,60,224).150 Here comes the directory listing.-rw-r--r-- 1 1000 1000 1819 May 19 04:34 A1.txt-rw-r--r-- 1 1000 1000 2123 May 19 06:07 RH8-2-1226 Directory send OK.#####下载:ftp> ls227 Entering Passive Mode (172,20,10,4,60,224).150 Here comes the directory listing.-rw-r--r-- 1 1000 1000 1819 May 19 04:34 A1.txt-rw-r--r-- 1 1000 1000 2123 May 19 06:07 RH8-2-1226 Directory send OK.ftp> get A1.txtlocal: A1.txt remote: A1.txt227 Entering Passive Mode (172,20,10,4,120,123).150 Opening BINARY mode data connection for A1.txt (1819 bytes).226 Transfer complete.1819 bytes received in 3.5e-05 secs (51971.43 Kbytes/sec)ftp> ls227 Entering Passive Mode (172,20,10,4,221,74).150 Here comes the directory listing.-rw-r--r-- 1 1000 1000 1819 May 19 04:34 A1.txt-rw-r--r-- 1 1000 1000 2123 May 19 06:07 RH8-2-1226 Directory send OK.ftp> 221 Goodbye.[root@RedHat8-2 test]# lsA1.txt RH8-2-1 RH8-2-2
15、vsftpd配置文件、黑白名单、虚拟用户权限文件内容说明
vsftpd配置文件:
anonymous_enable=NO #关闭匿名用户local_enable=YES #开启本地用户write_enable=YES #开启读权限anon_upload_enable=NO #禁止匿名用户上传anon_mkdir_write_enable=NO #禁止匿名用户建立目录anon_other_write_enable=NO #禁止匿名用户删除chroot_local_user=YES #所有用户被锁定在自己的家目录(如关闭则chroot_list为黑名单)chroot_list_enable=YES #使用户不能离开主目录(需要建立用户白名单文件)chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #用户白名单guest_enable=YES #开启虚拟用户的功能guest_username=ftpuser1 #定义虚拟用户的宿主操作系统用户pam_service_name=vsftpd #pam设置user_config_dir=/etc/vsftpd/vsftpd_user_conf #指定虚拟用户权限配置文件,目录下每个虚拟账号一个同账号名的配置文件。vsftpd_log_file=/var/log/vsftpd.log #vsftpd的服务日志保存路径,默认不存在allow_writeable_chroot=YES #若可以查看文件但无法上传下载,可尝试添加该选项
黑白名单:
黑白名单文件可自行定义存放位置,注意区别#用户白名单建立chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list #chroot_list相当于白名单#用户黑名单建立chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list #chroot_list相当于黑名单
虚拟用户权限文件内容:
参考如下内容进行适当修改: 当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限; 当virtual_use_local_privs=NO 时,虚拟用户和匿名用户有相同的权限,默认是NO。 当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES, anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO, anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO, anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO, anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO, anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。
来源:https://www.cnblogs.com/xiongty/p/14785146.html