标签:etc res 本地 指定 修改 asc 验证过 rtu oca
FTP(File Transfer Protocol,文件传输协议)是应用层协议,基于传输层为用户服务,它们负责文件的明文传输。FTP具有极高的延时,并且不时地必需执行一些冗长的登陆进程。FTP一般运行在20和21两个端口:
VSFTP(Very Secure FTP)是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,其安全特性为:
FTP有两种联机模式:主动联机模式和被动联机模式,在命令通道建立成功后,由server主动连接client称为主动联机模式,由client主动连接server称为被动联机模式(站在server角度看是主动模式还是被动模式)。
FTP客户端首先和服务器的TCP 21端口建立信号控制通道用来发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令,PORT命令包含了客户端使用哪个端口接收数据。在传输数据时,服务器端使用自己的TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接来传输数据。
主动模式连接次数较少,验证过程较为简单,适合处理连接频繁但文件不大的场景。
通过三次握手Client和Server成功建立信号控制通道,Client使用一个大于1024的随机端口去连接Server的21号端口。
FTP客户端首先和服务器的TCP 21端口建立信号控制通道用来发送命令,但是建立连接后客户端发送Pasv命令,服务器收到Pasv命令后打开一个临时端口(端口大于1023且小于65535)并通知客户端在这个端口上传输数据的请求,客户端连接FTP服务器的临时端口,FTP服务器将通过这个端口传输数据。
注意开放防火墙中FTP开放的数据连接端口。
Client与Server建立信号控制通道时不会出现问题。当Client需要进行数据传输时,Client开启一个大于1024的端口,并通过信号控制通道告知Server ,Server会主动使用20端口来连接Client。此时的Client的IP经过NAT转换,已经不再是自己的IP,Server连接会失败。
解决方案:
Linux的红帽发行版中VSFTP默认采用的是Binary模式,这样才能保证绝大多数文件传输后能正常使用。切换方式:在ftp>提示符下输入ascii即切换到ASCII模式,输入bin即切换到Binary模式。
不对数据进行任何处理,适合进行可执行文件、压缩文件、图片等
进行文本传输时,自动适应目标操作系统的结束符,如回车符等
依据不同的身份、角色和权限,FTP用户分为以下三类:
以实体用户作为FTP登入者身份时,系统默认没有针对实体用户进行限制,所以其可以针对整个文件系统进行任何他所具有权限的工作。因此如果FTP使用者未能保护密码而导致被入侵,那么整个Linux系统数据有可能被窃取,使用实体用户登录时建议:
虚拟用户验证需要人为创建、生成数据库文件,找一个系统用户作为虚拟用户的映射用户 ,借助系统用户的家目录为默认登陆点,默认登陆目录为/home/*,每一个虚拟用户的权限都可以单独设置。
由于互联网上的每个人都可以下载数据,可能导致贷款被占用,提供匿名登录给互联网的使用者不是很安全,但是分享资源的时候FTP服务器是一个很好的解决方案。开放匿名用户时注意:
服务器端
[root@server ~]# yum install -y vsftpd [root@server ~]# systemctl enable vsftpd [root@server ~]# systemctl start vsftpd [root@server ~]# cd /var/ftp/ [root@server ftp]# ls pub [root@server ftp]# touch hello.txt
客户端
[root@client Desktop]# yum install -y ftp [root@client Desktop]# ftp 192.168.75.128 Connected to 192.168.75.128 (192.168.75.128). 220 (vsFTPd 3.0.2) Name (192.168.75.128:root): ftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (192,168,75,128,56,11). 150 Here comes the directory listing. -rw-r--r-- 1 0 0 0 Sep 01 01:10 hello.txt drwxr-xr-x 2 0 0 6 Jun 21 2018 pub 226 Directory send OK.
服务器端
anon_upload_enable=YES
[root@server ftp]# vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
/var/ftp/目录下创建上传目录,修改上传目录权限或所有者,使得匿名用户有写入权限
[root@server ftp]# pwd /var/ftp [root@server ftp]# mkdir upload [root@server ftp]# ll total 0 -rw-r--r-- 1 root root 0 Sep 1 09:10 hello.txt drwxr-xr-x 2 root root 6 Jun 21 2018 pub drwxr-xr-x 2 root root 6 Sep 1 09:15 upload [root@server ftp]# chmod o+w upload/ [root@server ftp]# ll total 0 -rw-r--r-- 1 root root 0 Sep 1 09:10 hello.txt drwxr-xr-x 2 root root 6 Jun 21 2018 pub drwxr-xrwx 2 root root 6 Sep 1 09:15 upload
客户端
[root@client Desktop]# ftp 192.168.75.128 Connected to 192.168.75.128 (192.168.75.128). 220 (vsFTPd 3.0.2) Name (192.168.75.128:root): ftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd upload 250 Directory successfully changed. ftp> pwd 257 "/upload" ftp> put test.txt local: test.txt remote: test.txt 227 Entering Passive Mode (192,168,75,128,150,109). 150 Ok to send data. 226 Transfer complete.
ftp> ls
227 Entering Passive Mode (192,168,75,128,121,206).
150 Here comes the directory listing.
-rw------- 1 14 50 0 Sep 01 01:20 test.txt
226 Directory send OK.
默认情况下开放上传权限后,上传的文件是无法被下载的,因为文件的其他人权限没有r权限,设置anon_umask=022,可以让上传的文件其他人位置拥有r权限,之后才能被他人下载。
服务器端
[root@server ftp]# vim /etc/vsftpd/vsftpd.conf anon_upload_enable=YES anon_umask=022 [root@server ftp]# systemctl restart vsftpd
客户端
[root@client Desktop]# ftp 192.168.75.128 Connected to 192.168.75.128 (192.168.75.128). 220 (vsFTPd 3.0.2) Name (192.168.75.128:root): ftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd upload 250 Directory successfully changed. ftp> pwd 257 "/upload" ftp> put test_download local: test_download remote: test_download 227 Entering Passive Mode (192,168,75,128,149,159). 150 Ok to send data. 226 Transfer complete. ftp> ls 227 Entering Passive Mode (192,168,75,128,86,73). 150 Here comes the directory listing. -rw------- 1 14 50 0 Sep 01 01:20 test.txt -rw-r--r-- 1 14 50 0 Sep 01 01:27 test_download 226 Directory send OK.
[root@server ~]# useradd -r -s /sbin/nologin iamftp
[root@server ~]# passwd iamftp
[root@server ~]# vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
[root@server ~]# systemctl restart vsftpd
[root@server ~]# useradd -r -s /sbin/nologin iamftp chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
[root@server ~]# vim /etc/vsftpd/ftpusers # Users that are not allowed to login via ftp root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody ~
[root@server ~]# vim /etc/vsftpd/vsftpd.conf pasv_enable=YES pasv_min_port=30000 pasv_max_port=35000
[root@server ~]# cd /etc/vsftpd/ [root@server vsftpd]# vim vsftpd.user # 该文件名可以随便定义,文件内容格式:奇数行用户、偶数行密码 test1 123456 test2 123456 test3 123456 ~
[root@server vsftpd]# db_load -T -t hash -f vsftpd.user vsftpd.db
[root@server vsftpd]# ll
total 36
-rw------- 1 root root 125 Jun 21 2018 ftpusers
-rw------- 1 root root 361 Jun 21 2018 user_list
-rw------- 1 root root 5129 Sep 1 09:43 vsftpd.conf
-rwxr--r-- 1 root root 338 Jun 21 2018 vsftpd_conf_migrate.sh
-rw-r--r-- 1 root root 12288 Sep 1 10:01 vsftpd.db
-rw-r--r-- 1 root root 39 Sep 1 09:58 vsftpd.user
-T:将普通文件转换成数据库文件
-t:指定加密类型
-f:指定要转换的原文件
[root@server vsftpd]# chmod 600 vsftpd.db # 修改文件权限为600保障其安全性
[root@server vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual(virtual提供目录给虚拟用户,而不是用来登录)
[root@server vsftpd]# cp -a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam [root@server vsftpd]# vim /etc/pam.d/vsftpd.pam auth required pam_userdb.so db=/etc/vsftpd/vsftpd account required pam_userdb.so db=/etc/vsftpd/vsftpd [root@server vsftpd]# vim /etc/vsftpd/vsftpd.conf pam_service_name=vsftpd.pam guest_enable=YES guest_username=virtual user_config_dir=/etc/vsftpd/dir [root@server vsftpd]# mkdir dir [root@server vsftpd]# ls dir ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh vsftpd.db vsftpd.user
允许用户上传
anon_upload_enable=YES
允许用户创建文件或目录
anon_mkdir_write_enable=YES
允许用户修改文件名
anon_upload_enable=YES
anon_other_write_enable=YES
[root@server vsftpd]# cd dir
[root@server dir]# ls
[root@server dir]# vim test1
anon_upload_enable=YES
注意:做虚拟用户配置文件设置时,将主配置文件的自定义的匿名用户相关设置注释掉,因为虚拟用户的选项参数默认使用匿名用户的选项参数,若主配置文件中的匿名用户相关参数被设置,则子配置文件中的参数则失效。
标签:etc res 本地 指定 修改 asc 验证过 rtu oca
原文地址:https://www.cnblogs.com/wanao/p/13594053.html