设为首页 收藏本站
查看: 1498|回复: 0

[经验分享] Linux下FTP服务与虚拟用户及SSL加密

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-4 21:42:48 | 显示全部楼层 |阅读模式
FTP的客户端有很多种,较为常见的是网页浏览器,如:firefox等。
一般操作系统都提供了基础的命令行方式的FTP客户端。输入“ftp”或者“ftp服务器地址”就可以使用命令行方式。下面列举了一些常用的FTP命令。
远程命令:
cd                改变所在目录
ls                 查看当前目录下文件列表
get               从服务器下载当个文件
mget            从服务器下载多个文件
put               向服务器上传单个文件
mput            向服务器上传多个文件
pwd             显示服务器当前目录
quit              退出ftp程序

本地命令:
!ls                显示客户端当前目录下的文件列表
!cd               改变客户端当前所在目录
!pwd            显示客户端当前目录


VSFTPD服务器
VSFTPD的安装
我们为了安装安装包的简单,首先先架设一个本地的YUM仓库,配置本地YUM源。后期会介绍YUM的配置。使用yum 安装vsftpd

[iyunv@xingzheson /]# yum install vsftpd -y
如果系统中开启了SELinux,那么需要执行下面的命令,使得VSFTPD可以被正常访问
[iyunv@xingzheson /]# setsebool -P ftpd_disable_trans 1

VSFTPD安装完成后,默认的主配置文件是 /etc/vsftpd/vsftpd.conf 。下面按自上而下的顺序介绍此文件的参数设定。
anonymous_enable=YES
允许匿名访问,即允许anonymous账号访问FTP服务。
local_enable=YES
允许使用本机帐号登录
write_enable=YES
用户可以读写
local_umask=022
默认掩码为022,即默认创建的文件权限是755
#anon_upload_enable=YES
是否允许匿名用户上传文件夹,默认是注释掉的
#anon_mkdir_write_enable=YES
是否允许匿名用户创建新文件夹。默认注释掉的
dirmessage_enable=YES
若目录下存在.message文件,则显示该文件内容
xferlog_enable=YES
默认上传/下载的日志文件被记录在/var/log/vsftpd.log中
connect_from_port_20=YES
从20端口连接。默认状况下,20为FTP的数据传输端口
#chown_uploads=YES
#chown_username=whoever
允许新上传文件的拥有者为whoever.两行同时出现的,默认注释掉
#xferlog_file=/var/log/vsftpd.log
日至位置设定
xferlog_std_format=YES
使用标准格式登记上传/下载记录
#data_connection_timeout=120
传输延时时间,单位为秒
#nopriv_user=ftpsecure
使用特殊用户ftpsecure。这里可以把ftpsecure账户作为一般访问用户,即所有连接FTP服务器的用户都具有ftpsecure用户名。为了安全起见,可以在/etc/passwd中将ftpsecure的用户的SHELL设定为/sbin/nologin。
#ftpd_banner=Welcome to blah FTP service.
登录提示信息
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
若启用上述两项设定,则可以在/etc/vsftpd/banned_emails中建立黑名单
pam_service_name=vsftpd
列出与VSFTPD相关的PAM文件
userlist_enable=YES
当此项设置为yes的时候,启用配置文件/etc/vsftpd.user_list。此时有两种情况
a.此时若没有userlist_deny=NO,则/etc/vsftpd.user_list中存在的用户不可以访问VSFTPD服务器
b.此时若存在userlist_deny=NO,则仅接受/etc/vsftpd.user_list中存在的用户的登录请求
当此项设定为NO是,不会启用配置文件/etc/vsftpd.user_list
tcp_wrappers=YES
启用TCP Wrapper支持

以上是默认安装后,VSFTPD主配置文件出现的设定选项。除此之外,还有一些常用选项

guest_enable=YES
guest_username=ftp
guest用户名,即所有非匿名用户将具有guest用户身份
local_root=/var/ftp
anon_root=/var/ftp
设定本机用户和匿名用户的FTP根目录
use_localtime=YES
是否使用本机时间,若设定为NO,则使用格林尼治时间
#idle_session_timeout=600
客户端在600秒内没有任何动作,则服务器自动断开与客户端连接
max_clients=0
最大客户连接数
max_per_ip=0
每个客户端的最大连接数
local_max_rate=0
本地账户的最大传输速率,单位为秒,0为不限制
anon_max_rate=0
匿名用户的最大传输速率


前面已经介绍了VSFTPD的安装,安装后需要启动服务
[iyunv@xingzheson /]# service vsftpd start
设置开机启动
[iyunv@xingzheson /]# chkconfig vsftpd on

VSFTPD虚拟用户

设置虚拟用户使其仅能访问VSFTPD,而不可以登录系统
首先,我们需要确认安装盘上的db4软件包已经装上,如果没有,就要手动安装
[iyunv@xingzheson /]# rpm -qa |grep db4
db4-utils-4.7.25-16.el6.x86_64
db4-4.7.25-16.el6.x86_64

[iyunv@xingzheson Packages]# rpm -ivh db4-utils-4.7.25-16.el6.x86_64.rpm

[iyunv@xingzheson Packages]# rpm -ivh db4-4.7.25-16.el6.x86_64.rpm

当我们用yum 安装时,就已经默认安装好了。所以不用手动安装的了
接下来,需要创建虚拟用户的用户名和密码,创建一个文档,假定这个文件为/tmp/id.txt 内容如下
xingzheson
123456
zhulaoshi
654321
这里的单数行为用户名,而双数行为用户名对应的密码。生产用户账号的数据库文件并设定数据文件权限,最后删除/tmp/id.txt
[iyunv@xingzheson tmp]# db_load -T -t hash -f /tmp/id.txt /etc/vsftpd/vsftpd_id.db
[iyunv@xingzheson tmp]# chmod 600 /etc/vsftpd/vsftpd_id.db
[iyunv@xingzheson tmp]# rm -f /tmp/id.txt

下面设定vsftpd.conf 文件

wKiom1O2UoSS955xAAMZWAjv1zc401.jpg
wKioL1O2VQyihL_9AAIWF_73_Vs141.jpg


接着建立PAM文件/etc/pam.d/vsftpd.virtual,
[iyunv@xingzheson tmp]# vi /etc/pam.d/vsftpd.virtual
内容如下:

#%PAM-1.0
auth                    required        pam_userdb.so   db=/etc/vsftpd/vsftpd_id
account                 required        pam_userdb.so   db=/etc/vsftpd/vsftpd_id
session                 reiuired        pam_loginuid.so


下面建立相关的目录:
[iyunv@xingzheson tmp]# mkdir /home/vsftpd
[iyunv@xingzheson tmp]# mkdir -p /home/vsftpd/{xingzheson,zhulaoshi}
[iyunv@xingzheson tmp]# chown -R ftp:ftp /home/vsftpd/
重启服务,如果系统中开启了SELinux,那么需要执行以下命令,允许虚拟用户存取其家目录
[iyunv@xingzheson tmp]# setsebool -p allow_ftpd_full_access 1

如果设置正确,则虚拟用户可以登录服务器。输出如下:
wKioL1O2VtOCkpSzAANvBJt6gvI211.jpg

虚拟用户的配置部分完全正常,但是会发现一个问题,那就是本地用户无法正常登录VSFTPD服务器了。接下来我们找找原因
a.用户的FTP根目录变为了/home/vsftpd/$USER.也就是说,如果一个本地用户zhu尝试登录VSFTPD,那么服务器会试图寻找/home/vsftpd/zhu这个目录。但是zhu的家目录应该是/home/zhu,而/home/vsftpd/zhu 并不存在,所以登录失败
b.即使我们可以用一些方法让zhu的家目录可以被重新定位到/home/zhu(可以用链接的方法),但是由于zhu登录VSFTPD时的身份实际上是ftp(因为启用了guest_enable=YES),所以还是无权访问自己的家目录
c.及时上述两个问题解决了,还是无法登录。哎。因为在PAM文件/etc/pam.d/vsftpd.virtual中,只设定了虚拟用户的验证。zhu是本地用户,该用户的身份验证并不在虚拟用户的数据库中,所以无法登录。

解决办法:
wKiom1O2XmTAAM7RAAIpSjScEEM815.jpg

接下来,修改/etc/vsftpd/vsftpd.conf文件,在其中加入 user_config_dir=/etc/vsftpd/virtua
重启服务,建立/etc/vsftpd/virtua文件夹,并在其中建立文本文件/etc/vsftpd/virtua/zhu
[iyunv@xingzheson vsftpd]# mkdir /etc/vsftpd/virtua
[iyunv@xingzheson vsftpd]# vim /etc/vsftpd/virtua/zhu
内容如下:
local_root=/home/zhu           (指定zhu真正的家目录)
guest_username=zhu         (修改zhu的身份。这里的zhu的身份就不是ftp了)

经过这样的修改之后,本地用户和虚拟用户就都可以登录VSFTPD了,并且在增加了user_config_dir之后,就可以给每个用户单独添加不同的访问规则和权限,无论该用户是本地用户还是虚拟用户。


配置具有SSL的VSFTPD
为了提升VSFTPD的传输安全性,这里可以使用SSL加密。
首先用OpenSSL为VSFTPD生成安全证书。这里生成的证书有效期为365天
[iyunv@xingzheson virtua]# cd /etc/vsftpd/
[iyunv@xingzheson vsftpd]# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem
生成证书的时候需要填写一些信息,任意写都可以,输出如下
Generating a 1024 bit RSA private key
.............................++++++
.........................++++++
writing new private key to 'vsftpd.pem'
-----
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) []:JiangSu
Locality Name (eg, city) [Default City]:NanH^H^H^H^H^H^Hj
Organization Name (eg, company) [Default Company Ltd]:ITD^H^H
Organizational Unit Name (eg, section) []:whatever
Common Name (eg, your name or your server's hostname) []:Martian
Email Address []:abc@xyz.com
接下来编辑/etc/vsftpd/vsftpd.conf,加入以下内容
ssl_enable=YES
allow_anon_ssl=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/vsftpd.pem
重启服务,这样带有SSL加密的·VSFTPD服务器就假设好了。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-21657-1-1.html 上篇帖子: VSFTP配置 下篇帖子: 搭建vsftp服务 Linux 加密 用户
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表