热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Ubuntu系统架设ftp服务器

操作系统:ubuntu(GNU/Linux)为了在机子上架设ftp服务器,我们需要安装ftp服务器软件。Linux下具有代表性的ftp服务器软件有Wu-FTP,ProFTP和Vsftp。Wu-FTP(WashingtonUniversityFTP)由美国华盛顿大学开发。它的功能强大,配置较复制。由于开发时间较早

操作系统:ubuntu (GNU/Linux)

为了在机子上架设ftp服务器,我们需要安装ftp服务器软件。Linux下具有代表性的ftp服务器软件有Wu-FTP,ProFTP和Vsftp。
Wu-FTP(Washington University FTP)由美国华盛顿大学开发。它的功能强大,配置较复制。由于开发时间较早,应用十分广泛,也因此成为黑客们主要的攻击目标。
ProFTP针对Wu-FTP的弱项而开发,在安全性方面进行了改进,并提供了一些Wu-FTP没有的功能,大大简化了架设和管理FTP服务器的工作。
Vsftp在安全性,高性能及稳定性3个方面上有上佳的表现。它提供的主要功能包括虚拟IP设置,虚拟用户,standalone(可自行单独启动的daemon),inetd操作模式(由一支特殊的super daemon管理),强大的单用户设置能力以及带宽限流等。接下来我们主要讲解在ubuntu上如何架设vsftpd。

vsftpd的安装:
在ubuntu可直接通过apt安装    sudo apt-get install vsftpd

安装完毕,检查vsftpd进程是否已启动,可以查看进程或者查看监听端口
ps -eaf|grep vsftpd

vsftpd进程已开启

netstat -tnl|grep :21

端口21正在被监听

vsftpd的配置文件:
在ubuntu中,vsftpd的主要配置文件分布如下:
/etc/vsftpd.conf    vsftpd服务器的配置文件
/usr/sbin/vsftpd    vsftpd服务器的进程文件
/etc/pam.d/vsftpd   vsftpd服务器的PAM接口配置文件
/var/ftp            vsftpd服务器匿名用户的工作目录

配置vsftpd服务器:
vsftpd服务器的配置文件以及各参数代表的意义如下:
/etc/vsftpd.conf

vsftpd.conf listen=YES

listen_ipv6=YES    # listen=YES和listen_ipv6=YES 设为YES表示将以独立的方式运行(可自行单独启动的daemon),前者监听ipv4,后者监听ipv6,但两者不能同时在一个配置文件中设置

anonymous_enable=YES        # 表示允许匿名用户登录FTP服务器
anon_world_readable_Only=NO    # 只要ftp用户在操作系统中有读权限,就可以下载文件
anon_root=/var/ftp/anonymous    # 匿名用户登录后进入到/var/ftp/anonymous目录中,可以下载该目录中的文件
anon_uploads_enable=YES        # 匿名用户可以上传文件
anon_mkdir_write_enable=YES    # 匿名用户可以在服务器上创建目录
anon_other_write_enable=YES     # 匿名用户可以在服务器上进行命名,删除等写操作

local_enable=YES        # 表示允许本地用户帐号登录
local_umask=022            # 表示本地用户创建新的文件时,该文件初始的权限值。022表示初始的权限值是创建者有全部的权限,其他用户(包括组用户,其他用户)只有读和执行权限,077表示初始创建者具有全部权限,其他用户没有权限

write_enable=YES        # 表示服务器接收与写有关的控制命令

dirmessage_enable=YES        # 表示用户第一次进入一个新目录时,会给用户一些提示信息
use_localtime=YES        # 表示服务器显示本地时区时间,默认是显示GMT时间

xferlog_enable=YES        # 允许产生日志
xferlog_std_format=YES        # 日志采用标准的xferlog格式
xferlog_file=/var/log/vsftpd.log# 日志文件以及所在目录

connect_from_port_20=YES    # 使用20端口作为建立数据连接时的源端口

pam_service_name=vsftpd        # 指定PAM服务配置文件的名字,在/etc/pam.d

chown_uploads=YES        # 这两个选项是一对相关的配置,表示匿名用户上传的文件所以者将变为whoever,这个配置是为了安全目的
chown_username=whoever        # 文件所有者变为其他用户后,匿名用户将不能再对文件进行删除,甚至读操作,例如作业上交FTP

idle_session_timeout=600    # 表示控制连接的超时值为600秒
data_connection_timeout=120    # 表示数据连接的超时值为120秒

nopriv_user=ftpsecure        # 表示当vsftpd进程处于非特权运行状态时,所使用的用户身份是ftpsecure

async_abor_enable=NO        # 表示vsftpd支持”async ABOR“的FTP命令,这条命令会影响vsftpd的安全,一般使用默认的NO设置

ascii_upload_enable=YES

ascii_download_enable=YES    # 表示上传下载文件时真正允许ASCII模式。有些FTP服务器在实现ACSII传输模式时,容易遭受DoS攻击。为了避免这种情况的发送,vsftpd给客户端回应时可以假装允AXSCII模式,但实际上使用的是binary模式,通过把这两个值设置为NO来达到。

ftpd_banner=Welcome to stone FTP service.    # 表示用户登录时,将显示Welcome to stone FTP service信息,没有这个选项时,将显示vsftpd服务器的名称和版本信息,存在安全问题,因而这样做的目的是为了隐藏这些信息

deny_email_enable=YES                # 匿名用户如果输入aaa@做为登录密码,将被拒绝,主要目的是为了防止一些自动登录工具进行登录。
banned_email_file=/etc/vsftpd.banned_emails    # 指定的deny_mail的文件

chroot_list_enable=YES                # 这两个选项制定了一个用户列表,这个列表放在/etc/vsftpd/chroot_list文件中。当 chroot_local_user
chroot_list_file=/etc/vsftpd/chroot_list    # 设为NO后,这些用户登录FTP服务器后,他们看到的根目录是他们自己的个人目录,也就是说虽然在实际的文件系统中,这些用户个人目录的上级还有目录,但是不能切换到这些上级目录

chroot_local_user=YES                # 当chroot_local_user被设置为YES时,上述用户列表将不会被限制在个人目录中,可以进一步转到其他目录

ls_recurse_enable=YES        # 表示客户端在使用ls命令时可以加-R参数,-R参数表示ls命令可以列出整个目录树的内容,需要一些处理时间,特别存在恶意用户时,情况会更严重

anon_max_rate=0        # 用于设置匿名用户客户端能够达到的最大速率,其值是一个数值,单位为b/s,0表示无限制
local_max_rate=0    # 该选项限制的是本地用户的速率
max_clients=0        # vsftpd能接收的最大客户端连接数
max_per_ip=5        # 限制每一台主机可以连入的客户端数,用户为了加快下载速度,可能会打开很多的客户端连接,影响其他用户的正常使用

匿名用户配置:
配置匿名用户,使得
1 FTP服务器支持匿名用户(帐号:anonymous   密码:任意)登录
2 只要ftp用户(操作系统用户)在操作系统有读权限,就可以下载文件
3 匿名用户登录后进入/var/ftp/anonymous目录,可以下载该目录中的文件
4 可以上传文件到目录/var/ftp/anonymous/upload目录中,但不能下载或删除该目录中的文件

利用vim修改vsftpd.conf文件
anonymous_enable=YES
anon_world_readable_Only=NO
anon_root=/var/ftp/anonymous
anon_upload_enable=YES
chown_uploads=YES

在/var目录下新建目录anonymous,所以者为root,在/var/anonymous目录下新建目录upload,所有者为ftp

重启vsftpd进程
sudo killall -HUP vsftpd

测试匿名用户
以匿名用户登录本地FTP服务器(127.0.0.1)

列出目录,下载文件

进入upload目录,上传文件,列出目录


测试完毕

虚拟主机的配置:
何为虚拟主机?vsftpd的虚拟主机是指在一台主机上配置多个vsftpd服务,各个vsftpd服务可以采用不同的配置,给用户的感觉好像这些vsftpd服务是不同的主机上运行的。vsftpd的虚拟主机是基于IP地址。既然是基于IP地址的,那您可能会问我只有一个网卡一个IP怎么配置虚拟主机?
这时,我们可以利用linux的逻辑网卡来实现不同IP。
一个虚拟主机的配置例子:
1 增加逻辑网卡,我现在的IP地址为192.168.1.100,增加逻辑网卡IP为192.168.1.101
sudo ifconfig eth0:1 192.168.1.101 netmask 255.255.255.0 up

2 停止vsftpd服务
sudo killall vsftpd

3 修改vsftpd.conf配置,增加以下一栏
listen_address=192.168.1.100

4 重新启动vsftpd服务 & 表示后台运行
sudo /usr/sbin/vsftpd /etc/vsftpd.conf &

5 为第二个vsftpd服务器建立匿名用户对应的本地帐号以及个人目录,参数-d指定个人目录,需自己建立,-s指定登录shell,/sbin/nologin是一种不登录shell
sudo useradd -d /var/ftp/myftp -s /sbin/nologin myftp

6 创建/var/ftp/myftp目录,改变/var/ftp/myftp的所有者(默认就是root),目的是使myftp用户对其没有写权限
sudo mkdir /var/ftp/myftp
sudo chown root /var/ftp/myftp

7 复制vsftpd.conf,命名为myvsftpd.conf放在/etc目录下
sudo cp /etc/vsftpd.conf /etc/myvsftpd.conf

8 修改myvsftp.conf
ftpd_banner=Welcome to my virtual FTP server
ftp_username=myftp
listen=YES
listen_address=192.168.1.101

9 启动第二个vsftpd
sudo /usr/sbin/vsftpd /etc/vsftpd/myvsftpd.conf

测试虚拟主机:
登录192.168.1.100 和 192.168.1.101

测试完毕

虚拟用户的配置:
vsftpd中的用户有3种。匿名用户,本地用户。还有一种就是接下来介绍的虚拟用户,该用户无法登录你的操作系统,但是能够登录FTP服务器,而且当存在很多虚拟用户,您并不需要在操作系统上为每个虚拟用户新建一个不可登录的本地用户,只需要一个。而且还有一个更强大的用法,我们可以通过为每个虚拟帐号创建一个配置文件来不同虚拟帐号不同的权限,目录,这将对我们管理FTP用户有很大的方便。

1 新建user.txt,输入以下内容,表示有2个虚拟用户,分别为xuni1(密码pass1),xuni2(密码pass2)

user.txtxuni1
pass1
xuni2
pass2
2 接下来我们需要生成虚拟帐号数据库,先安装DB库工具
sudo apt-get install db4.8-util

在/etc下新建目录/etc/vsftpd
sudo mkdir /etc/vsftpd

将数据库文件导入到刚刚产生的目录
sudo db4.8_load -T -t hash -f /home/stone/user.txt /etc/vsftpd/vsftpd_login.db

将数据库文件设置权限为600,并不需要被其他用户读,修改
sudo chmod 600 /etc/vsftpd/vsftpd_login.db

3 新建/etc/pam.d/vsftpd_login文件,输入以下内容

vsftpd_login

auth required /lib/i386-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/vsftp_login
account required /lib/i386-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/vsftp_login

所有支持PAM的程序都有一个与PAM进行对接的配置文件,它们存放在/etc/pam.d目录,vsftpd与PAM的对接配置文件名可以由vsftpd.conf文件中的pam_service_name选项指定,默认是pam_service_name=vsftpd,当以后认证本地用户时,会根据/etc/pam.d/vsftpd文件的配置内容进行认证。

4 建立所有FTP虚拟用户帐号使用的操作系统帐号,需要我们自己新建目录,并设置该帐号工作目录的权限,所有者(貌似可以修改使之自动新建目录)
sudo useradd -d /home/ftpsite -s /sbin/nologin ftp_virt
sudo mkdir /home/ftpsite
sudo chown ftp_virt /home/ftpsite
sudo chgrp ftp_virt /home/ftpsite
sudo chmod 700 /home/ftpsite

5 在vsftpd.conf配置文件中添加有关虚拟帐号用户的配置内容
guest_enable=YES
guest_username=ftp_virt
pam_service_name=vsftpd_login

最后一项将于原来的默认值冲突,可以注释掉原来的项,重启vsftpd之后,你将发现本地用户无法登录vsftpd了

6 设置虚拟用户的权限,我们可以通过添加下面这一行,来指定放置用户配置文件的目录位置是/etc/vsftpd
user_config_dir=/etc/vsftpd

解释下这一项的作用,添加这一项之后,当我们以虚拟用户登录vsftpd时,服务器将会寻找/etc/vsftpd目录下于虚拟用户名相同的配置文件,从而确定该虚拟用户的权限等属性。这方便了我们管理FTP虚拟用户。

7 配置虚拟用户配置文件
在/etc/vsftpd下,我们新建文件xuni1,输入以下内容

xuni1local_root=/home/ftpsite
新建文件xuni2,输入以下内容
xuni2

local_root=/home/ftpsite
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
anon_world_readable_Only=YES
write_enable=YES

8 然后重启vsftpd
先关闭
sudo killall vsftpd
启动
sudo /usr/sbin/vsftpd /etc/vsftpd.conf &

测试

虚拟用户具体的权限,目录配置方法将可以通过各种方法来配置,这里不再描述。

继续编辑中...


推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 如何基于ggplot2构建相关系数矩阵热图以及一个友情故事
    本文介绍了如何在rstudio中安装ggplot2,并使用ggplot2构建相关系数矩阵热图。同时,通过一个友情故事,讲述了真爱难觅的故事背后的数据量化和皮尔逊相关系数的概念。故事中的小伙伴们在本科时参加各种考试,其中有些沉迷网络游戏,有些热爱体育,通过他们的故事,展示了不同兴趣和特长对学习和成绩的影响。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
author-avatar
彦廷孟颖益皓
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有