基于国产UOS操作系统第8章-ftp服务器


风晓
风晓 2024-01-04 09:50:12 54081 赞同 0 反对 0
分类: 资源
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

FTP的工作模式
Port模式(主动模式) FTP客户端首先和服务器的TCP 21端口建立连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。
Passive模式(被动模式) 建立控制通道和Standard模式类似,但建立连接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。在开源操作系统中常用的FTPD套件主要还有ProFTPD、PureFTPd和wuftpd等

搭建ftp服务
apt -y install vsftpd
systemctl resstart vsftpd
ss -anptu |grep 21

配置文件参数最好不使用注释,而采用明确的YES或NO

允许匿名访问
anonymous_enable=yes #禁止匿名访问必须改为NO,注释掉默认是YES

服务器端支持匿名用户上传
anon_upload_enable=YES
anon_mkdir_write_enable=YES

允许给每个目录建立一个名为.message的文件,客户端必须用ftp命令才能看到注释
dirmessage_enable=YES

xferlog_enable=YES 允许记日志
xferlog_file=/var/log/xferlog 日志记录的位置
xferlog_std_format=YES 采用标准的格式,便于和unix通讯

connect_from_port_20=YES 允许20端口通讯

改变上传后文件的的拥有者
chown_uploads=YES
chown_username=user1

空闲600秒后,断开
idle_session_timeout=600

下载到120s时,断开
data_connection_timeout=120

async_abor_enable=YES 异步存储,默认注释状态为同步

是否允许上传和下载可执行文件,默认注释状态不允许
ascii_upload_enable=YES
ascii_download_enable=YES

ftp的连接提示
ftpd_banner=Welcome to blah FTP service.

登录ftp的方式
ftp 192.168.0.1
lftp 192.168.0.1
user 用户名
lftp 用户名@ftp服务器ip

客户端安装登陆
apt -y install lftp
ftp windows linux unix都能用
lftp linux专用,支持tab补全

lftp uos1@192.168.200.131
口令:
lftp uos1@192.168.200.131:~> ls
drwxr-xr-x 2 1000 1000 4096 Apr 22 09:35 Desktop
drwxr-xr-x 2 1000 1000 4096 Apr 22 09:35 Documents
drwxr-xr-x 2 1000 1000 4096 Apr 22 09:35 Downloads
drwxr-xr-x 2 1000 1000 4096 Apr 22 09:34 Music
drwxr-xr-x 3 1000 1000 4096 Apr 22 09:35 Pictures
drwxr-xr-x 2 1000 1000 4096 Apr 22 09:35 Videos

拒绝用户用email方式连接ftp,这样可以有效的防止匿名用户通过email方式连接
vim /etc/vsftpd.conf
deny_email_enable=YES

(default follows)
banned_email_file=/etc/vsftpd/banned_emails

防止用户切换目录
chroot_local_user=YES
要对该用户的家目录执行o-w
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

实验-匿名用户下载
在server1上
apt install -y vsftpd
vim /etc/vsftpd.conf
anonymous_enable=YES

touch /srv/ftp/test.txt

在server2上
apt -y install ftp
ftp 192.168.200.131
Name (192.168.200.131:root): ftp
Password: //直接回车

ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r–r-- 1 0 0 0 Apr 26 09:45 test.txt

ftp> get test.txt

实验-匿名用户上传
在server1上面
vim /etc/vsftpd.conf
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

systemctl restart vsftpd

mkdir /srv/ftp/pub
chmod 777 /srv/ftp/pub
chown ftp:ftp /srv/ftp/pub/

在server2上
ftp 192.168.200.131
Name (192.168.200.131:root): ftp
Password:
ftp> cd pub
ftp> put 1.sh

实验-用户访问
在server1上
useradd -m -s /bin/bash user1
useradd -m -s /bin/bash user2

echo “user1:123456” |chpasswd
echo “user2:123456” |chpasswd
vim /etc/vsftpd.conf
anonymous_enable=NO
systemctl restart vsftpd

在server2上
ftp 192.168.200.131
Name (192.168.200.131:root): user1
Password:
ftp> put 1.sh
ftp> ls

实验-锁定用户登录目录
touch /etc/vsftpd.chroot_list
setfacl -m u:user1:rwx /srv/ftp/pub/
vim /etc/vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

echo user2 > /etc/vsftpd.chroot_list

systemctl restart vsftpd
客户端测试前最后彻底退出重连一次,使用user1登录将被锁定目录,user2不被锁定

实验-限制用户登录
在server1上
cat /etc/pam.d/vsftpd #显示/etc/vsftpd/ftpusers中的用户会被pam模块deny
echo user1 >> /etc/vsftpd/ftpusers #无需重启服务,pam立即生效,user1在任何客户端都不能登录

echo user2 >> /etc/vsftpd/user_list
vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES
userlist_deny=YES #增加
#如果userlist_deny=NO,则只有/etc/vsftpd/user_list中的用户可以登录
systemctl restart vsftpd
#客户端上user2将不能登录
vim /etc/vsftpd/vsftpd.conf
userlist_deny=YES #修改
systemctl restart vsftpd
#客户端只有user2可以登录

echo “vsftpd:192.168.200.2” >> /etc/hosts.deny
vim /etc/vsftpd/vsftpd.conf
tcp_wrappers=YES
systemctl restart vsftpd
#server2上所有用户都不能登录,其他主机的客户端可以登录

实验-虚拟用户
useradd qinftp -s /bin/false #建立虚拟用户对用的系统用户qinftp
vim /etc/vsftpd/virtualuser.list
qinftp1
qinftp1
qinftp2
qinftp2
qinftp3
qinftp3
db5.3_load -T -t hash -f /etc/vsftpd/virtualuser.list /etc/vsftpd/qinftp.db #生成虚拟用户数据库
strings /etc/vsftpd/qinftp.db #用strings查看二进制文件
chmod 600 /etc/vsftpd/qinftp.db #增强安全级别
file /etc/vsftpd/qinftp.db #查看文件类型是Berkeley DB
vim /etc/pam.d/vsftpd #注释所有行,增加下面两条
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/qinftp #注意没有.db后缀
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/qinftp #注意没有.db后缀

mkdir -p /ftpdate/qinftp{1…3} #3个虚拟用户各自对应一个数据存放位置
touch /ftpdate/qinftp1/qinftp1
touch /ftpdate/qinftp2/qinftp2
touch /ftpdate/qinftp3/qinftp3

mkdir /etc/vsftpd/virtualuserconf
vim /etc/vsftpd/virtualuserconf/qinftp1 #qinftp1的配置文件
local_root=/ftpdate/qinftp1
vim /etc/vsftpd/virtualuserconf/qinftp2 #qinftp2的配置文件
local_root=/ftpdate/qinftp2
vim /etc/vsftpd/virtualuserconf/qinftp3 #qinftp3的配置文件
local_root=/ftpdate/qinftp3

vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
local_root=/var/ftp #删除或者保留均可,虚拟用户不参考此参数
guest_enable=YES
guest_username=qinftp
user_config_dir=/etc/vsftpd/virtualuserconf
virtual_use_local_privs=YES

systemctl restart vsftpd
在windows客户端分别用3个账号登录,进入3个不同的目录

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
风晓L1
粉丝 1 资源 2038 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  126
统信桌面专业版【全盘安装UOS系统】介绍  121
银河麒麟桌面操作系统安装佳能打印机驱动方法  114
银河麒麟桌面操作系统 V10-SP1用户密码修改  105
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!