二:开始搭建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