码迷,mamicode.com
首页 > 其他好文 > 详细

FTP 服务搭建

时间:2018-02-12 16:55:47      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:一个   linux c   调整   修改   命令行   pen   name   努力   ssi   

FTP 服务搭建

最近一直偷懒,没有上传博客,最近工作中正好要搭建FTP,来写个博客吧。
同志还需努力啊,天天犯懒以后只能去吃土了。

首先介绍一下我的实验环境:CentOS6.7,内核2.6

[root@CentOS-6 ~]# cat /etc/redhat-release 
CentOS release 6.7 (Final)
[root@CentOS-6 ~]# uname -a
Linux CentOS-6 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

实验中我是关闭了selinux和iptables

[root@CentOS-6 ~]# getenforce
Disabled
[root@CentOS-6 ~]# chkconfig --list iptables
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
如何关闭selinux,iptables
  • selinux
    编辑 /etc/selinux/config 文件,调整参数 SELINUX=disabled
  • iptables
    执行 chkonfig iptables off,查看命令 chkconfig --list iptables

安装 ftp 服务

安装是很简单的,直接执行 yum 命令,轻松又愉快。
养成好习惯,安装完成后检查一下,是否安装成功。

yum -y install vsftpd
rpm -qa | grep vsftpd
vsftpd-2.2.2-24.el6.x86_64

用户在登录 ftp 服务器时用户名和密码都是使用明文传送,尤为的不安全,所以下面实验的要求是

1.禁止匿名用户登录(anonymous)
2.禁止系统用户登录
3.启用虚拟用户登录,并指定虚拟用户登录后的家目录(管理员指定的家目录)

配置 ftp 服务

/etc/vsftpd/vsftpd.conf 是 ftp 的主配置文件

上面已经安装了 ftp 服务,启动 ftp 并查看其 21 端口是否正常工作

[root@CentOS-6 ~]# /etc/init.d/vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]
[root@CentOS-6 ~]# netstat -tlunp | grep vsf
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      1890/vsftpd     

修改主配置文件,禁止匿名用户登录

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO

创建虚拟用户口令文件
可以随便自己起个名字,我这里就叫 vuser.txt
这个文件中就是需要登录的虚拟用户名和密码
格式:
用户1
密码
用户2
密码
后面会对这个文件进行加密处理,所以不用担心安全问题

cat /etc/vsftpd/vuser.txt 
test1
1234
test2
1234

安装口令认证

yum -y install db4-utils

生成登录验证的二进制文件

db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db

开始啰嗦:咳咳
下面要实现的是不允许系统用户登录 ftp 服务,为什么禁止上面已经说了,因为 ftp 的用户名密码都是明文传送,很容易就被截获,很是不安全。
要禁止系统用户登录需要将 /etc/pam.d/vsftpd 文件中的内容全部注释,为啥?
其实具体我说不明白,只是系统用户登录 ftp 服务器都要经过这个文件,现在内容都被注释了,自然无法登陆了
注意:在主配置文件中(/etc/vsftpd/vsftpd.conf)文件中有一条选项,local_enable=YES(默认就是YES),大不可将其改为NO,因为即使是通过虚拟用户登录,我们下面的操作也是要创建一个 nologin 的系统用户,在将写入 vuser.txt 文件中的用户映射到这个系统用户上,从而实现虚拟用户登录
啰嗦完毕

编辑 /etc/pam.d/vsftpd 文件,注释所有内容,可以使用末行模式,开心还简单
末行模式的命令哈

:2,8s/^/#/g

光是注释还不够,还需要在 /etc/pam.d/vsftpd 文件中追加两行内容

auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser

建立本地映射用户并设置宿主目录权限(所有虚拟用户映射成为 vuser 用户)
要指定用户的bash shell为 /sbin/nologin
宿主目录的权限定义为 755

useradd -d /home/vftproot -s /sbin/nologin vuser
chmod 755 /home/vftproot/

在 /etc/vsftpd/vsftpd.conf 文件中添加内容

# 开启虚拟用户
guest_enable=YES
# FTP虚拟用户对应的系统用户
guest_username=vuser
# PAM认证文件(默认存在)
pam_service_name=vsftpd

到此为止 ftp 服务器就算是搭建完成了,在宿主上测试一下
介绍一下我的宿主机:win10
ftp 服务器地址:10.1.41.168
cmd 下 ftp 10.1.41.168
test1,test2用户可以登录,下载文件和目录(目录的下载在cmd命令行中无法实现,可以使用filezilla软件)
但是只能下载不能上传

上传报错

ftp> put ftp.txt
200 PORT command successful. Consider using PASV.
550 Permission denied.

下载成功

ftp> get zhao.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for zhao.txt (0 bytes).
226 Transfer complete.

可以通过修改主配置文件 /etc/vsftpd/vsftpd.conf 文件,允许虚拟用户进行上传下载

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

上面在命令是在宿主机上操作,如果执行命令时 cmd 的路径在 C:\Users\Administrator> 那么默认就下载到了这个目录
当要增加虚拟用户时,需要重新修改 /etc/vsftpd/vuser.txt 文件,并重新生成登录的二进制文件。

---------------------------------------------------------华丽的分割线----------------------------------------------------------

下面来个更帅的配置,指定用户登录后的家目录,并且不需要修改主配置文件

编辑 /etc/vsftpd/vsftpd.conf 文件,配置和上面一样,但是需要多加一条

user_config_dir=/etc/vsftpd/vusers_dir

创建上面的 vusers_dir 目录,这个目录存放的就是每个虚拟用户的登录文件了

mkdir /etc/vsftpd/vusers_dir

为虚拟用户建立配置文件

vim /etc/vsftpd/vusers_dir/test2
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/tmp/vtest2

创建用户登录后的上传下载文件的路径

mkdir /tmp/vtest2

更改 vcanglaoshi 这个目录的属主,vtest2 这个目录要满足 ftp 的上传权限和目录本身的读写执行权限
系统中所有虚拟用户都是 vuser,并不是 test2
chown vuser /tmp/vtest2/

最后一个小总:
上面环境中有两个用户,分别是 test1 和 test2 用户,
test1 登录后的目录是默认的 /home/vftproot/ 目录
test2 登录后是分割线下面我们配置的 /tmp/vtest2 目录

环境完成,OK。

FTP 服务搭建

标签:一个   linux c   调整   修改   命令行   pen   name   努力   ssi   

原文地址:http://blog.51cto.com/aby028/2071352

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!