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
-->查看模块安装情况:
二、在数据库服务器上创建虚拟用户账号
•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_30,g_se,x_10,y_10,shadow_20,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 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
-->验证:
2、通过NFS实现服务器/www共享访问。 -->两台主机 一台NFS服务www共享,一台httpd -->1、NFS服务器: systemctl start nfs-server ---开启nfs服务 修改exportfs文件: exportfs -v 查看是否共享成功
-->另一台服务器: 安装autofs和httpd:yum -y install autofs httpd 并启动: -->2-配置autofs文件为绝对路径自动挂载: 配置完成后重启autofs.service使其生效: systemctl restart autofs.service -->验证:df -h
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 3-本地存储端创建innotify.sh脚本 增加周期管理:yum -y install cronie crontab -e */1 * * * * /bin/bash /root/rsync.sh --每分钟调用该脚本实现数据实时同步备份 计划任务设置开机启动:systemctl enable crond 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 --需要创建 创建实时同步 账号和密码文件: 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/ -->验证:实施同步成功:
5、使用iptable实现: 放行telnet, ftp, web服务,放行samba服务,其他端口服务全部拒绝