第十八周实践操作

一、实现基于MYSQL验证的vsftpd虚拟用户访问

1、安装vsftpd、pam_mysql包
yum install -y vsftpd
# 由于centos7没有pam_mysql的包所以需要编译安装
wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
tar -xzvf pam_mysql-0.7RC1.tar.gz
# 安装相关依赖包
yum -y groupinstall   Development tools mariadb-devel pam-devel 
# 进入pam安装文件夹进行编译安装
./configure  --with-pam-mods-dir=/lib64/security 
make && make install 
2、 配置数据库
mysql -uroot -p
Enter password: 
# 创建一个为ftpdbde 数据库
mysql> create database vsftpd; 
# 创建一个为ftp 用户对vsftpd数据库有最大权限
mysql> grant all on ftpdb.* to 'ftp'@'%' identified by 'ftp'; 
# 创建表
mysql> create table ftpusers(id int unsigned auto_increment primary key,name char(50),password char(48)); 
# 建立用户ftp1 与 ftp2用户
mysql> insert into ftpusers(name,password) values('ftp1',password('123456')),('ftp2',password('123456'));
mysql> flush privileges;
3、配置ftp服务器配置
# 配置pam的配置文件
vim /etc/vsftpd/vsftpd.conf 
anonymous_enable=YES
# 添加下面两项
guest_enable=YES
guest_username=ftpuser
# 修改下面一项,原系统用户无法登录
pam_service_name=vsftpd # 改成以下配置
pam_service_name=vsftpd.mysql
# 保存退出

# 防火墙开启21端口允许访问
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --reload
# 重启vsftpd服务
systemctl restart vsftpd
systemctl enable vsftpd
4、测试ftp能否正常连接即可
image.png

二、通过NFS实现服务器/www共享访问

# 服务端10.50.6.23安装nfs-utils rpcbind组件
yum install -y nfs-utils rpcbind

# 启动rpc服务以及设置开机自启动
systemctl start rpcbind    
systemctl enable rpcbind

# 启动nfs服务设置开机自启动
systemctl start nfs-server
systemctl enable nfs-server

# 配置防火墙放行nfs服务
firewall-cmd --permanent --add-service=nfs
firewall-cmd  --reload 

# 创建共享目录,在/etc/exports配置文件中编辑配置即可
mkdir /www
vim /etc/exportfs
/www 10.0.0.0/8(rw,sync,fsid=0)
#  保存退出


# 客户端10.50.6.22测试机器
yum install rpcbind
systemctl enable rpcbind.service
systemctl restart rpcbind.service
mount -v -t nfs 10.50.6.23:/www /mnt
df -h 验证一下即可

三、配置samba共享,实现/www目录共享

# 服务端10.50.6.23安装samba服务
yum install -y samba
# 服务器端创建samba认证用户
groupadd samba
useradd samba -g samba -s /sbin/nologin -d /dev/null
smbpasswd -a samba
# 输入两遍自定义的密码,我这里用用户名samba作为密码

# 编辑配置文件,配置共享目录/www
vim /etc/samba/smb.conf
# 文件结尾添加以下内容
[www]
        comment = www
        path = /www
        valid user = samba
        writable = yes
        browseable = yes
        create mode = 0755
        directory mode = 0755
# 保存退出
# 使用Windows电脑或者mac电脑连接samba服务器做测试即可

四、使用rsync+inotify实现/www目录实时同步

# centos7 默认自带rsync,修改服务端(10.50.6.23)配置文件
vim /etc/rsnycd.conf

uid = root
gid = root
use chroot = no       # 如果上面的uid不是root用户启动,则更改为yes,如果是root则更改为弄
max connections = 4
pid file = /var/run/rsyncd.pid
exclude = lost+found/
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
hosts allow = 10.50.6.22     # 允许传输数据的ip  网段也可以,生产建议精确到ip

[wwwroot]     # 定义同步时的名称
path = /www   # 需要同步的路径
comment = wwwroot   # 与同步名称相同
ignore errors
read only = no     # 是否允许client上传文件到server,设置成yes 则client的数据无法推送到server上
write only =no     # 是否允许client从server上拉取数,设置成yes则client无法从server上拉取数据
list = no 
auth userrs = rsync   # 同步数据时用到的用户,非系统用户,不用创建
secrets file = /etc/rsyncd.passwd   # 保存密码和用户名的文件,根据自己的需求进行生成,路径可以自定义
# 保存退出
# 创建用户名密码文件
vim /etc/rsyncd.passwd
rsync:rsync123
# 保存退出
# 设置密码文件的权限,否则会报错
chmod 600 /etc/rsyncd.passwd
# 启动服务并加入到开机自启动
systemctl rstart rsyncd
systemctl enable rsyncd
客户端测试
# 创建用于存放server端密码的文件不需要用户名
vim /etc/rsyncd.passwd
rsync123
# 保存退出
# 创建存储同步文件的文件夹
mkdir /www
# 运行同步server端文件命令
rsync -avzp --delete [email protected]::wwwroot /www --password-file=/etc/rsyncd.passwd 
# 在/www文件夹创建一个文件,反之client同步到server
rsync -avzp /www [email protected]::wwwroot  --password-file=/etc/rsyncd.passwd 

注意:客户端同步到server端切记文件夹/www与/www/是有区别的

/www 表示将整个文件夹同步到服务端的/www下面会单独生成一个文件夹

/www/ 表示将客户端的/www文件夹下面的文件同步到服务端的/www下面

参数说明
--delete
# 表示在同步时,server端/opt/ldx目录中不论是删除,添加,修改,都会同步到client
# 如果不加该参数,则只会同步server端新添加和修改的数据,server端删除掉的数据,client端不会删除
# 依然存在,该选项按个人需求选择

/data  
# 本地同步的路径

--password-file=/root/rsyncd.passwd    
# 本地存放密码的文件
安装inotify
# 首先在客户端安装
yum install inotify-tools -y 
# 当要监控的目录、文件数量较多或者变化较频繁时,建议加大内核的三个参数的值
vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
# 保存退出
sysctl -p # 生效内核配置
编辑监听脚本
#!/bin/bash
host=10.50.6.23
src=/www/
des=wwwroot
password=/etc/rsyncd.passwd
user=rsync
inotifywait=/usr/bin/inotifywait

${inotifywait} -mrq --timefmt '%Y%m%d %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib ${src} | while read files
do
 rsync -avzP ${src} --timeout=100 --password-file=${password} ${user}@${host}::${des}
 echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done
# 保存退出
将脚本添加到开机自启动
chmod +x /opt/inotify_monitor.sh
echo "nohup bash /opt/inotify_monitor.sh" >> /etc/rc.d/rc.local
以上脚本只能用于客户端文件发生变更同步到服务端,无法做到服务端文件变更自动同步,需要在客户端将rsync的服务搭建起来,服务端再搭建一套inotify环境即可进行双向同步

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

iptables -A INPUT -p tcp -m multiport --dports 21,22,23,80,139,445 -j ACCEPT
iptables -I INPUT 2 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP

你可能感兴趣的:(第十八周实践操作)