利用centos7搭建ftp服务器详细版(2)

二:开始搭建ftp服务器

1. 最简单的搭建

①先在centos上安装ftp,代码如下

 yum install vsftpd

②安装好软件,你要启动这个服务,代码如下

systemctl enable vsftpd //允许使用ftp
systemctl start vsftpd  // 将这个服务开启

③检查服务器是否正常运行,代码如下

systemctl status vsftpd //输入后你应该会看到一个绿的单词 active(running)这个代表正常运行
ps -ef |grep vsftpd
netstat -natpul |grep vsftpd

④然后你就可以访问了,在浏览器里面输入url ftp://10.10.10.2 打开后就会向我下面显示的那样。
在这里插入图片描述

但这只是最简单的搭建,很显然这个并不安全,所以我们得从安全角度去考虑。
考虑一下几个方面:
(1):你的rwx权限,你要考虑到底要不要让匿名用户上传东西等等。
(2):你可以使用PAM这种安全模块。
(3):你可以用防火墙来防护。
(4):使用selinux(这个主要功能是 如果你某一主体或者客体遭到入侵,不要殃及其他的。
(5):ftp自身所提供的安全策略

2.配置ftp自身服务器

ftp自身的安全机制主要通过配置文件来实现
主配置文件 /etc/vsftpd/vsftpd.conf

vim /etc/vsftpd/vsftpd.conf

全面的信息请参考man帮助文档

man vsftp.conf (不过里面全是英文的)

你可以根据你自己的需求在/etc/vsftpd/vsftpd.conf 里面加入命令

3.PAM(这里需要介绍一下PAM,下面要用)

①进入vsftpd需要pam验证的应用程序配置文件
vim /etc/pam.d/vsftpd
在这里插入图片描述
第一列代表模块类型:

模块类型:
auth 作用:检查到底有没有这个用户账号&密码对不对
account作用:检查账号还能不能用
session作用:账号合规后,系统初始化改账号的环境
password作用:口令接口类型,控制用户信息更新

第二列代表控制标记

required:表示该行以及所涉及的模块的成功是用户通过鉴别的必要条件。
注意:任何带required标记的模块出现了错误,PAM并不立即将错误消息返回给应用程序,
而是在所有模块都调用完毕后才将错误消息返回调用他的程序。

requisite:与required类似,但如果requisite模块一旦发生错误,就不会再执行堆后面
的其他模块,同时返回错误消息。

sufficent:只要该模块一旦成功,PAM就会立即向应用程序返回成功结果。如果失败,sufficient
会被当做optional看待。!!!!!要慎用

optional:这个模块如果失败了,将继续执行下一模块。即如果这一模块验证失败,并不影响用户享
受应用程序提供的服务。

第三列代表模块路径(模块一般保存在/lib64/security)

(1)pam_unix.so
(2)pam_shells.so
(3)pam_deny.so
(4)pam_permit.so
(5)pam_security.so
(6)pam_listfile.so
(7)pam_cracklib.so
(8)pam_limits.so

第四列代表模块参数

参数之间用空格分开
password required pam_unix.so nullok obscure min=4 max=8 md5

4.开始正式搭建ftp

(1).先安装ftp

yum install vsftpd

(2).创建映射实体用户和数据目录

mkdir -p /data/ftp
useradd -s /sbin/nologin -d /data/ftp George   (其中George是名字)
chown -R George.George /data/ftp    (/data/ftp这个文件属于用户George)

(3).配置ftp服务

cp /etc/vsftpd/vsftpd.conf	/etc/vsftpd/vsftpd.conf.bak (弄一个备份)
vim /etc/vsftpd/vsftpd.conf
往里面写入的代码如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
idle_session_timeout=300
nopriv_user=George
chroot_local_user=NO
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=George
local_root=/data/ftp/George
user_sub_token=George
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf

(4)配置vsftpd的PAM文件

cp /etc/pam.d/vsftpd	/etc/pam.d/vsftpd.bak (做一个备份)
vim /etc/pam.d/vsftpd
往里面写入的代码如下
auth    required        pam_userdb.so   db=/etc/vsftpd/account-passwd
account required        pam_userdb.so   db=/etc/vsftpd/account-passwd
session required        pam_loginuid.so /etc/pam.d/vsftpd

(5)配置虚拟用户
①创建虚拟用户在ftp上的数据目录
mkdir /data/ftp/user1
chown -R George.George /data/ftp (George是实体用户,这只是我自己创建的名字)

②对虚拟用户进行权限配置

先在/etc/vsftpd下创建一个名字叫vconf的文件夹:mkdir /etc/vsftpd/vconf

然后在里面创建一个user1文本:
cd /etc/vsftpd/vconf
touch user1

现在到user1里面写入:
vim /etc/vsftpd/vconf/user1

写入代码如下:
dirlist_enable=YES
download_enable=YES
local_root=/data/ftp/user1
write_enable=YES


③在/etc/vsftpd下touch一个virtual-user用来存储用户名和密码

mkdir /etc/vsftpd/virtual-user

进入到这里面配置文件

vim /etc/vsftod/virtual-user
写入内容如下:
user1   //用户名
hiahaihia  //密码

④load

db_load -T -t hash -f /etc/vsftpd/virtual-user /etc/vsftpd/account-passwd.db

(6)启动服务

systemctl enable vsftpd.service
systemctl start vsftpd.service

(7)启用selinux

vim /etc/selinux/config

在这里插入图片描述
如上图将disabled改为enforcing

好了到这里就结束了,若发现错误,请大佬斧正。谢谢!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章