1、实现基于MYSQL验证的vsftpd虚拟用户访问
说明:本实验在两台CentOS主机上实现,一台做为FTP服务器,一台做数据库服务器
-->一、安装所需要包和包组:
在数据库服务器上安装包:
•Centos7:在数据库服务器上安装
yum –y install mariadb-server
systemctl start mariadb.service
systemctl enable mariadb
在FTP服务器上安装vsftpd和pam_mysql包
centos6:pam_mysql由epel6的源中提供
yum install vsftpd pam_mysql
centos7:无对应rpm包,需手动编译安装
yum -y install mariadb-devel pam-devel vsftpd gcc-c++
下载pam_mysql-0.7RC1.tar.gz
tar xvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1/
./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr
make && make install
linux--18-week_第1张图片
-->查看模块安装情况:
二、在数据库服务器上创建虚拟用户账号
•1.建立存储虚拟用户数据库和连接的数据库用户
yum install mariadb-server
mysql > create database vsftpd;
mysql > use vsftpd;
CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL );

    insert users (name,password) value('class',password('centos'));  --添加虚拟用户
    insert users (name,password) value('test',password('centos'));
    grant select on vsftpd.users to vsftpd@'192.168.10.%' identified by  'centos';
![](https://s4.51cto.com/images/blog/202007/01/3c752371ec26d2421b7766097a5ae045.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)  

三、在FTP服务器上配置vsftpd服务
[11:51:41 root@master ftproot2]#cat /etc/pam.d/vsftpd.db
auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.10.10 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=centos host=192.168.10.10 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
linux--18-week_第2张图片
1- yum install vsftpd --安装被修改配置文件
useradd -d /data/ftproot -s /sbin/nologin vuser
chmod 555 /data/ftproot
mkdir /data/ftproot/upload
setfacl -m u:vuser:rwx /data/ftproot/upload
vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=vuser
user_config_dir=/etc/vsftpd/vusers.d/

2-  mkdir /etc/vsftpd/vusers.d/    --创建用户配置目录
    cat /etc/vsftpd/vusers.d/class
        anon_upload_enable=YES
        anon_mkdir_write_enable=YES
        anon_other_write_enable=YES

    cat /etc/vsftpd/vusers.d/test
        anon_upload_enable=YES
        anon_mkdir_write_enable=YES
        anon_other_write_enable=YES
        local_root=/data/ftproot2

3- 更改存储目录权限
    mkdir /data/ftproot2   
    chmod 555 /data/ftproot2
    mkdir /data/ftproot2/upload
    setfacl -m u:vuser:rwx /data/ftproot2/upload
 1- yum install vsftpd   --安装被修改配置文件
    useradd -d /data/ftproot -s /sbin/nologin vuser
    chmod 555 /data/ftproot
    mkdir /data/ftproot/upload
    setfacl -m u:vuser:rwx /data/ftproot/upload
    vim /etc/vsftpd/vsftpd.conf 
        pam_service_name=vsftpd.mysql
        guest_enable=YES
        guest_username=vuser
        user_config_dir=/etc/vsftpd/vusers.d/  

2-  mkdir /etc/vsftpd/vusers.d/    --创建用户配置目录
    cat /etc/vsftpd/vusers.d/class
        anon_upload_enable=YES
        anon_mkdir_write_enable=YES
        anon_other_write_enable=YES

    cat /etc/vsftpd/vusers.d/test
        anon_upload_enable=YES
        anon_mkdir_write_enable=YES
        anon_other_write_enable=YES
        local_root=/data/ftproot2

3- 更改存储目录权限
    mkdir /data/ftproot2   
    chmod 555 /data/ftproot2
    mkdir /data/ftproot2/upload
    setfacl -m u:vuser:rwx /data/ftproot2/upload

-->验证:
linux--18-week_第3张图片

2、通过NFS实现服务器/www共享访问。
-->两台主机
一台NFS服务www共享,一台httpd
-->1、NFS服务器:
systemctl start nfs-server ---开启nfs服务
修改exportfs文件:
linux--18-week
exportfs -v 查看是否共享成功

-->另一台服务器:
安装autofs和httpd:yum -y install autofs httpd
并启动:
-->2-配置autofs文件为绝对路径自动挂载:
linux--18-week_第4张图片
linux--18-week
配置完成后重启autofs.service使其生效:
systemctl restart autofs.service
-->验证:df -h
linux--18-week_第5张图片
linux--18-week_第6张图片

3、配置samba共享,实现/www目录共享
一、在samba服务器上安装samba包
yum -y install samba
二、创建samba用户和组
groupadd -r admins
useradd -s /sbin/nologin -G admins wang
smbpasswd -a wang
useradd -s /sbin/nologin mage
smbpasswd -a mage
三、创建samba共享目录,并设置SElinux
mkdir /testdir/smbshare
chgrp admins /testdir/smbshare
chmod 2775 /testdir/smbshare
semanage fcontext -a -t samba_share_t '/testdir/smbshare(/.*)?'
restorecon -vvFR /testdir/smbshare
三、samba服务器配置
vim /etc/samba/smb.conf
security = user
passdb backend = tdbsam
[share]
path = /testdir/smbshare
write list = @admins
systemctl start smb nmb
systemctl enable smb nmb
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
四、samba客户端访问
安装包
yum -y install cifs-utils
用wang用户挂载smb共享并访问
mkdir /mnt/wang
mount -o username=wang //smbserver/share /mnt/wang
echo "Hello wang" >/mnt/wang/wangfile.txt
用mage用户挂载smb共享并访问
mkdir /mnt/mage
mount -o username=mage //smbserver/share /mnt/mage
touch /mnt/mage/magefile.txt

4、使用rsync+inotify实现/www目录实时同步
1-本地存储服务器:yum -y install rsync inotify-tools
2-设置特定事件时间和记录日志及监控文件目录/data:
inotifywait -o /var/log/rsyncd.log -drq /data --timefmt "%Y-%m-%d %H:%M" --format "%T %w%f event: %e" -e create,delete,moved_to,close_write,attrib
创建密码文件:
echo "rsyncuser:centos" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
linux--18-week
3-本地存储端创建innotify.sh脚本
linux--18-week_第7张图片
增加周期管理:yum -y install cronie
crontab -e
/1 * /bin/bash /root/rsync.sh --每分钟调用该脚本实现数据实时同步备份
计划任务设置开机启动:systemctl enable crond
linux--18-week
2-在备份服务器端:yum -y install rsync
更改配置文件:
vi /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 0
ignore errors
exclude = lost+found/
log file = /var/log/rsyncd.log --需要创建日志文件和路径
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no
hosts allow = 192.168.10.0/24
[backup]
path = /backup/
comment = backup
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pass --需要创建
linux--18-week_第8张图片
创建实时同步 账号和密码文件:
echo "rsyncuser:centos" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
准备备份目录:
mkdir /backup
启动rsync服务
rsync --daemon 可加入/etc/rc.d/rc.local实现开机启动
systemctl start rsyncd --CentOS 7直接启动
实时查看数据:watch -n1 ls -l /backup/
linux--18-week_第9张图片
-->验证:实施同步成功:

5、使用iptable实现: 放行telnet, ftp, web服务,放行samba服务,其他端口服务全部拒绝
linux--18-week