小企业公司网站怎么建,做网站英文编辑有前途吗,dedecms 迁移 wordpress,公司网站购买主机一、FTP协议、服务器FTP#xff1a;文件传输协议#xff08;用于网络文件双向传输的应用层协议#xff09;特点#xff1a;最广泛、最底层、较简单#xff0c;但是明文传输#xff1b;适用于较大文件的传输1.常见客户端、服务器客户端#xff1a;WINSCP or filezilla文件传输协议用于网络文件双向传输的应用层协议特点最广泛、最底层、较简单但是明文传输适用于较大文件的传输1.常见客户端、服务器客户端WINSCP or filezillawindowsftplinux服务器IISwindows、vsftpdlinuxVSFTPDvery secure FTP daemon2.FTP服务参数服务端软件名vsftpd服务名vsftpd端口号20、21、指定范围的随机端口配置文件/etc/vsftpd/vsftpd.conf日志文件/var/log/messages客户端软件名ftp格式ftp 服务器ip命令连上ftp后用help或命令查看,!命令——可以执行客户端命令注ftp连接需要将客户端用户禁锢在家目录防止权限过大二、FTP用户模式匿名用户模式测试用户用户名为ftp或anonymous密码随意本地用户模式服务器上的/etc/passwd的用户默认禁止/etc/vsftpd/user_list中用户连接虚拟用户模式不做重点用户属性账号、共享位置、访问权限、设置指定的访问权限、下载上传的文件的位置访问权限FTP服务的访问权限下载、上传、创建文件夹、其他写入权限等Linux系统的访问权限r、w、x1.匿名用户服务端共享目录/var/ftp默认权限可下载、不能上传设置权限由两部分控制主配置文件和文件系统权限客户端下载目录下载在连接ftp时所在目录位置匿名用户参数anontmous_enableYES 启用匿名访问anon_umask022 匿名用户所上传文件的权限掩码 anon_root/var/ftp 匿名用户FTP的根目录anon_upload_enableYES 允许上传文件anon_mkdir_write_enableYES 允许创建目录anon_other_write_enableYES 允许其他写权限anon_max_rate2 限制最大传输速率字节/秒参数设置注意事项想要使用除配置文件允许外还需要设置独立的文件系统权限建议用acl即便可以上传文件上传文件的权限也仅有600其他人包括上传者无法下载使用想要让其他人也能正常下载需要修改匿名用户上传文件掩码值为0222.本地用户用户名、密码服务器端设置的系统用户名和密码服务端共享目录系统用户家目录默认权限FTP的所有权限可上传、下载、创建目录、删除、重命名等其他写入权限客户端下载目录下载在连接ftp时所在的目录位置本地用户参数local_enableYES 启用本地用户访问local_umask022 本地用户所上传文件的权限掩码local_root/home/用户名 设置本地用户的FTP根目录chroot_local_userYES 是否将用户禁锢在主目录allow_writeable_chrootYES 禁锢后允许写入local_max_rate2 限制最大传输速率字节/秒补充useradd -s /sbin/nologin -d /data/ftp wangwu——设置不能登录系统仅禁锢用户在主目录依旧不够安全也要同时拒绝ssh连接的通道 设置了/sbin/nologin后客户端用ftp有可能无法连接因为服务端/etc/shells下没有/sbin/nologin需要手动添加才可以连接3.VSFTPD全局参数write_enableYES 是否启用写入权限download_enableYES 是否允许下载文件connect_timeout60 主动模式下的连续超时时间accept_timeout60 被动模式下的连续超时时间data_connection_timeout300 进行完整数据传输后的再操作连接时间idle_session_timeout300 验证完用户名和密码后等待传输数据的超时时间注其中有一个配置pam_service_namevsftpd其中vsftpd指的是/etc/pam.d/vsftpd文件该文件可验证/etc/vsftpd/ftpuser文件下用户登录如果修改则客户端连接会因为无法验证而失败 例vim /etc/pam.d/vsftpd其中*.so文件是该服务的依赖依赖分为动态依赖和静态依赖静态依赖static随着服务启动而存在动态依赖如so服务启动时没有需要使用的时候加载三、VSFTPD原理工作模式主动模式、被动模式 传输模式ASCII模式、Binary模式ASCII模式将文件内容转换成存储文本文件的格式多用于传输文本文件BINARY二进制模式不对数据进行任何处理逐位复制多用于传输非文本文件如程序、数据库、压缩文件1.FTP被动模式被动模式原理客户端连接服务器的21端口、验证用户名和密码建立控制连接客户端想传输数据时在控制连接中发送PASV命令服务器收到该命令后生成随机端口返回给客户端、等待客户端的请求传输数据时客户端的随机端口连接服务器的指定端口建立数据连接客户端和服务器进行数据传输注20端口不在被动模式里控制连接客户端随机端口——服务端21端口数据连接客户端随机端口——服务端指定端口被动切主动客户端传输数据时FTP服务默认采用被动模式被动和主动是由客户端决定的被动和主动作用的是服务器的动作是主动连接还是被动的等待连接使用主动模式ftppassive off2.FTP主动模式主动模式原理客户端连接服务器的21端口、验证用户名和密码建立控制连接客户端想传输数据时在控制连接中发送PORT命令【1.该命令中包含了客户端想要进行数据传输的指定端口2.服务器收到该命令后会主动连接客户端】要传输数据时服务器的20端口连接至客户端的指定端口建立数据连接客户端和服务器进行数据传输控制连接客户端随机端口——服务器端21端口数据连接服务端20端口——客户端指定端口3.模式对比1控制连接过程不同2数据连接部分不同【FTP的主被动模式是由客户端决定的针对服务器而言的】3使用场景不同FTP服务器较弱时可以考虑主动模式公网无法要求客户端开放防火墙一般采用被动模式被动模式下可以通过pasv_min_port和pasv_max_port控制随机端口范围4.问题为什么用被动连接模式主动模式下数据连接都走20端口压力大防火墙规则管进不管出主动连接在数据传输时需要客户端放行端口、不太可控四、本地用户登录及设置1.服务端77.77
#安装软件
$ dnf -y install vsftpd
#开启服务
$ systemctl start vsftpd
#通过端口验证开启成功结果中可以看到用来监听的21端口
$ ss -antp | grep vsftpd
#禁锢本地用户只能在自己的家目录范围
#注意此时应该先把要上传共享目录的文件系统权限设置上
$ vim /etc/vsftpd/vsftpd.conf
#禁锢本地用户在家目录
chroot_local_userYES
#禁锢本地用户后允许写权限
allow_writeable_chrootYES
#重启服务
$ systemctl restart vsftpd实验
[rootlocalhost ~]# dnf -y install vsftpd[rootlocalhost ~]# systemctl start vsftpd
[rootlocalhost ~]# ss -anpt | grep vsftpd
LISTEN 0 32 *:21 *:* users:((vsftpd,pid991,fd3))
[rootlocalhost ~]# vim /etc/vsftpd/vsftpd.conf
chroot_local_userYES
allow_writeable_chrootYES
[rootlocalhost ~]# systemctl restart vsftpd
2.客户端77.79
#安装连接命令
$ dnf -y install ftp
#连接ftp服务器
$ ftp ftp服务器IP
输入用户名vsftpd服务的用户名
输入密码vsftpd服务该用户的密码
ftp pwd #查看当前位置在本地用户的家目录即/home/用户名
ftp get 文件名 #从共享目录下载文件到客户端的当前位置
ftp put 文件名 #向共享目录上传文件、默认有权限
ftp mkdir 目录名 #在共享目录中创建目录的权限、默认有权限
ftp rename、delete等 #在共享目录的其他写权限、默认有权限实验
[rootlocalhost ~]# ftp 192.168.77.77
Connected to 192.168.77.77 (192.168.77.77).
220 (vsFTPd 3.0.5)
Name (192.168.77.77:root): zhaoliu
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp ?
Commands may be abbreviated. Commands are:! debug mdir sendport site
$ dir mget put size
account disconnect mkdir pwd status
append exit mls quit struct
ascii form mode quote system
bell get modtime recv sunique
binary glob mput reget tenex
bye hash newer rstatus tick
case help nmap rhelp trace
cd idle nlist rename type
cdup image ntrans reset user
chmod lcd open restart umask
close ls prompt rmdir verbose
cr macdef passive runique ?
delete mdelete proxy send
ftp ls
227 Entering Passive Mode (192,168,77,77,134,90).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Sep 08 13:49 1.txt
-rw-r--r-- 1 0 0 0 Sep 08 13:49 2.txt
-rw-r--r-- 1 0 0 0 Sep 08 13:49 3.txt
-rw-r--r-- 1 0 0 0 Sep 08 13:49 4.txt
-rw-r--r-- 1 0 0 0 Sep 08 13:49 5.txt
226 Directory send OK.
ftp pwd
257 / is the current directoryftp get 1.txt
local: 1.txt remote: 1.txt
227 Entering Passive Mode (192,168,77,77,164,68).
150 Opening BINARY mode data connection for 1.txt (0 bytes).
226 Transfer complete.ftp !ls
1.txt anaconda-ks.cfg cat.sh nginx-1.26.3.tar.gz ng.txtftp put cat.sh
local: cat.sh remote: cat.sh
227 Entering Passive Mode (192,168,77,77,211,74).
150 Ok to send data.
226 Transfer complete.
389 bytes sent in 9.6e-05 secs (4052.08 Kbytes/sec)ftp mkdir bik.d
257 /bik.d createdftp delete 3.txt
250 Delete operation successful.
注在/etc/vsftpd/user_list中定义了被拒绝使用ftp服务的系统用户补充windows客户端
1、在文件资源管理器的地址栏中输入ftp://vsftpd服务IP/右键登录
或者ftp://username:passwordvsftpd服务IP
2、filezilla软件五、匿名用户登录及设置1.服务端77.77
#安装软件
$ dnf -y install vsftpd
#开启服务
$ systemctl start vsftpd
#通过端口验证开启成功结果中可以看到用来监听的21端口
$ ss -antp | grep vsftpd
#注意此时应该先把要上传共享目录的文件系统权限设置上
$ vim /etc/vsftpd/vsftpd.conf
#开启匿名用户模式
anonymous_enableYES
#设置上传权限
anon_upload_enableYES
#设置创建目录权限
anon_mkdir_write_enableYES
#设置上传后文件或创建目录后的默认权限
anon_umask022
#设置其他写入权限
anon_other_write_enableYES
#重启服务
$ systemctl restart vsftpd注1权限生效vsftpd服务开放权限有文件系统权限否则会出现550错误状态码
注2匿名用户一定不要改/var/ftp这个目录的文件系统权限否则退出后服务再起不来
注3配置文件里的布尔类型YES或NO结尾不能有空格2.客户端77.79
#安装连接命令
$ dnf -y install ftp
#连接ftp服务器
$ ftp ftp服务器IP
输入用户名ftp 或 anonymous
输入密码随便输入、一般输空直接回车
ftp pwd #查看当前位置在匿名用户的共享根目录即/var/ftp
ftp get 文件名 #从共享目录下载文件到客户端的当前位置
ftp put 文件名 #向共享目录上传文件、默认没有
ftp mkdir 目录名 #在共享目录中创建目录的权限、默认没有
ftp rename、delete等 #在共享目录的其他写权限、默认没有实验
[rootlocalhost ~]# ftp 192.168.77.77
Connected to 192.168.77.77 (192.168.77.77).
220 (vsFTPd 3.0.5)
Name (192.168.77.77:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.ftp pwd
257 / is the current directoryftp ls
227 Entering Passive Mode (192,168,77,77,225,225).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Sep 08 14:02 a.txt
-rw-r--r-- 1 0 0 0 Sep 08 14:02 b.txt
-rw-r--r-- 1 0 0 0 Sep 08 14:02 c.txt
-rw-r--r-- 1 0 0 0 Sep 08 14:02 d.txt
-rw-r--r-- 1 0 0 0 Sep 08 14:02 e.txt
-rw-r--r-- 1 0 0 0 Sep 08 14:02 f.txt
drwxr-xr-x 2 0 0 6 Oct 30 2023 pub
226 Directory send OK.ftp !ls
1.txt anaconda-ks.cfg cat.sh nginx-1.26.3.tar.gz ng.txt#服务器端已配置好vsftpd相关服务但ftp用户没有文件系统权限
ftp put cat.sh
local: cat.sh remote: cat.sh
227 Entering Passive Mode (192,168,77,77,81,146).
553 Could not create file.
ftp mkdir 1.txt
550 Create directory operation failed.#使用setfacl -m u:ftp:rwx /var/ftp/手动为根目录添加写权限再试
ftp mkdir 1.txt
257 /1.txt created
ftp put cat.sh
local: cat.sh remote: cat.sh
227 Entering Passive Mode (192,168,77,77,181,17).
150 Ok to send data.
226 Transfer complete.
389 bytes sent in 3.7e-05 secs (10513.51 Kbytes/sec)
注默认情况下只有写权限不可以用chmod ow的方式设置文件系统写权限因为会导致权限泄露目录只有拥有w权限才可以创建子文件、子目录、删除文件或改名。六、VSFTPD加密1.加密方式vsftpdsslsslSecure Socket Layer安全套接字安全性协议TLS基于SSL开发支持更多功能实验在服务端使用tcpdump工具抓包客户端连接可以看到用户名和密码都是明文传输并不安全所以才需要ssl进行加密2.SSL主要功能认证用户和服务器加密数据维护数据的完整性3.PKI组成公钥基础设施CA,X.509,SSLCA证书申请——审批——发放——更新——查询、撤销、废止——归档常见的CA机构Lets EncryptCA申请公网域名ip实验模拟做自签名证书——自己信任4.加密原理服务端在本地生成一对密钥携数据、公钥申请CA认证CA机构通过单项的哈希算法如MD5将申请加密为“信息摘要”CA机构对“信息摘要”进行再次加密变成数字签名数字证书申请信息服务器公钥数字签名5.加密步骤1安装ssl软件包openssl和open-devel
[rootlocalhost ~]# dnf -y install openssl openssl-devel
2基于ssh生成密钥对对称加密
#密钥对vsftpd.key
[rootlocalhost vsftpd]# openssl genrsa -out vsftpd.key 2048
[rootlocalhost vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh vsftpd.key3拿公钥、公司信息做数字证书申请
[rootlocalhost vsftpd]# openssl genrsa -out vsftpd.key 2048
[rootlocalhost vsftpd]# lsftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh vsftpd.key
[rootlocalhost vsftpd]# openssl req -new -key vsftpd.key -out vsftpd.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ., the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:shanxi
Locality Name (eg, city) [Default City]:lvliang
Organization Name (eg, company) [Default Company Ltd]:tuanyuan
Organizational Unit Name (eg, section) []:qingnian
Common Name (eg, your name or your servers hostname) []:qingnian
Email Address []:320966772qq.comPlease enter the following extra attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:[rootlocalhost vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh vsftpd.csr vsftpd.key
4签发证书
[rootlocalhost vsftpd]# openssl x509 -req -days 365 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt
Certificate request self-signature ok
subjectC cn, ST shanxi, L lvliang, O gongqing, OU qingnian, CN xxhf
[rootlocalhost vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh vsftpd.crt vsftpd.csr vsftpd.key
补充Linux证书扩展名.crt或.pem但以pem为扩展名的不一定是证书5将ssl相关配置写入配置文件添加加密设置vim /etc/vsftpd/vsftpd.conf
#启用ssl认证
ssl_enableYES
#开启tlsv1、sslv2、sslv3都支持转换成使用tls1.2
ssl_tlsv1YES
ssl_sslv2YES
ssl_sslv3YES
#允许匿名用户{虚拟用户}
allow_anon_sslYES
#匿名登录和传输时强制使用ssl
force_anon_logins_sslYES
force_anon_data_sslYES
#本地登录和传输时强制使用ssl
force_local_logins_sslYES
force_local_data_sslYES
#rsa格式的证书
rsa_cert_file/etc/vsftpd/vsftpd.crt
#rsa格式的公钥
rsa_private_key_file/etc/vsftpd/vsftpd.key
6重启服务
[rootlocalhost vsftpd]# systemctl start vsftpd
6.客户端验证注要找支持ftp、ftps协议的客户端服务端监听tcpdump -nA -i ens160 port 21 ftp2.txt客户端连接第三方工具filezilla或lftp服务均可以看到用户名和密码已经被加密安装lftp
[rootlocalhost ~]# dnf -y install lftp[rootlocalhost ~]# lftp -u zhaoliu -e set ssl:verify-certificate no 192.168.77.77
Password:
lftp zhaoliu192.168.77.77:~ ls
-rw-r--r-- 1 0 0 0 Sep 08 13:49 1.txt
-rw-r--r-- 1 0 0 0 Sep 08 13:49 2.txt
-rw-r--r-- 1 0 0 0 Sep 08 13:49 4.txt
-rw-r--r-- 1 0 0 0 Sep 08 13:49 5.txt
drwxr-xr-x 2 1004 1004 6 Sep 08 13:50 bik.d
-rw-r--r-- 1 1004 1004 389 Sep 08 13:50 cat.sh
查看服务端文件可以看到用户名和密码均已被加密补充说明lftp——命令跟shell都一样支持fpts协议vsftpd重启客户端连接不断虚拟机和真实机时间不同步可能会导致证书不生效需要同步时间可在虚拟机——设置——选项——时间同步中设置