最近一直偷懒,没有上传博客,最近工做中正好要搭建FTP,来写个博客吧。
同志还需努力啊,每天犯懒之后只能去吃土了。linux
[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
[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
安装是很简单的,直接执行 yum 命令,轻松又愉快。
养成好习惯,安装完成后检查一下,是否安装成功。shell
yum -y install vsftpd rpm -qa | grep vsftpd vsftpd-2.2.2-24.el6.x86_64
用户在登陆 ftp 服务器时用户名和密码都是使用明文传送,尤其的不安全,因此下面实验的要求是vim
1.禁止匿名用户登陆(anonymous)
2.禁止系统用户登陆
3.启用虚拟用户登陆,并指定虚拟用户登陆后的家目录(管理员指定的家目录)安全
/etc/vsftpd/vsftpd.conf 是 ftp 的主配置文件bash
上面已经安装了 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
修改主配置文件,禁止匿名用户登陆tcp
vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO
建立虚拟用户口令文件
能够随便本身起个名字,我这里就叫 vuser.txt
这个文件中就是须要登陆的虚拟用户名和密码
格式:
用户1
密码
用户2
密码
后面会对这个文件进行加密处理,因此不用担忧安全问题ide
cat /etc/vsftpd/vuser.txt test1 1234 test2 1234
安装口令认证测试
yum -y install db4-utils
生成登陆验证的二进制文件ui
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。