linux练习题十八

目录

 

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

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

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

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

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


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

两台主机,一台FTP服务器,一台数据库服务器
FTP服务器:192.168.44.7
数据库服务器:192.168.44.17
一、安装所需要包和包组:
#在数据库服务器上安装包:
• Centos7:在数据库服务器上安装
yum –y install mariadb-server
systemctl start mariadb.service
systemctl enable mariadb
#在FTP服务器上安装vsftpd和pam_mysql包
• centos7:无对应rpm包,需手动编译安装
yum -y groupinstall "Development Tools"
yum -y install mariadb-devel pam-devel vsftpd gcc gcc-c++
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.建立存储虚拟用户数据库和连接的数据库用户
mysql> CREATE DATABASE vsftpd;
mysql> SHOW DATABASES;
#ftp服务和mysql不在同一主机:
mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'192.168.44.%' IDENTIFIED BY 'centos';
• 2.准备相关表
mysql> USE vsftpd;
Mysql> SHOW TABLES;
mysql> CREATE TABLE users (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(50) BINARY NOT NULL,
password CHAR(48) BINARY NOT NULL
);
#注:BINARY表示数据区分大小写
mysql>DESC users;
#测试连接
mysql -uvsftpd -h 192.168.44.17 -pcentos
mysql> SHOW DATABASES;
• 3.添加虚拟用户
#根据需要添加所需要的用户,为了安全应该使用PASSWORD函数加密其密码后存储
mysql> DESC users;
mysql> INSERT INTO users(name,password) values('user1',password('centos'));
mysql> INSERT INTO users(name,password) values('user2',password('centos'));
mysql> SELECT * FROM users;

三、在FTP服务器上配置vsftpd服务
#1.在FTP服务器上建立pam认证所需文件
vi /etc/pam.d/vsftpd.mysql 添加如下两行
auth required pam_mysql.so user=vsftpd passwd=magedu host=192.168.44.17 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=magedu host=192.168.44.17 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
#注意:参考README文档,选择正确的加密方式
#crypt是加密方式, 0表示不加密, 1表示crypt(3)加密, 2表示使用mysql
#password()函数加密, 3表示md5加密, 4表示sha1加密
配置字段说明:
• auth 表示认证
• account 验证账号密码正常使用
• required 表示认证要通过
• pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路径而言,也可以写绝对路径;后面为给此模块传递的参数
• user=vsftpd为登录mysql的用户
• passwd=magedu 登录mysql的的密码
• host=mysqlserver mysql服务器的主机名或ip地址
• db=vsftpd 指定连接msyql的数据库名称
• table=users 指定连接数据库中的表名
• usercolumn=name 当做用户名的字段
• passwdcolumn=password 当做用户名字段的密码
• crypt=2 密码的加密方式为mysql password()函数加密
#2.建立相应用户和修改vsftpd配置文件,使其适应mysql认证
#建立虚拟用户映射的系统用户及对应的目录
useradd -s /sbin/nologin -d /var/ftproot vuser
chmod 555 /var/ftproot centos7 需除去ftp根目录的写权限
mkdir /var/ftproot/{upload,pub}
setfacl -m u:vuser:rwx /var/ftproot/upload
#确保/etc/vsftpd/vsftpd.conf中已经启用了以下选项
anonymous_enable=YES
#添加下面两项
guest_enable=YES
guest_username=vuser
#修改下面一项,原系统用户无法登录
pam_service_name=vsftpd.mysql

四、启动vsftpd服务
systemctl start vsftpd
systemctl enable vsftpd
查看端口开启情况
netstat -tnlp |grep :21

五、测试:利用FTP客户端工具,以虚拟用户登录验证结果
• tail /var/log/secure

六、在FTP服务器上配置虚拟用户具有不同的访问权限
    vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可
• 1、配置vsftpd为虚拟用户使用配置文件目录
vim /etc/vsftpd/vsftpd.conf
添加如下选项
user_config_dir=/etc/vsftpd/vusers_config
• 2、创建所需要目录,并为虚拟用户提供配置文件
mkdir /etc/vsftpd/vusers_config/
cd /etc/vsftpd/vusers_config/
touch wang mage
• 3、配置虚拟用户的访问权限
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。如要让用户wang具有上传文件的权限,可修改/etc/vsftpd/vusers_config/wang文件,在里面添加如下选项并设置为YES即可,只读则设为NO
注意:需确保对应的映射用户对于文件系统有写权限
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}
local_root=/ftproot 登录目录改变至指定的目录

 

 

 

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

NFS服务器:

#启动服务
systemctl start nfs-server
systemctl enable nfs-server
mkdir /www
chown nfsnobody.nfsnobody /www
#定义导出目录
vi /etc/exports
/www 192.168.44.0/24(rw,all_squash)
#重读配置文件
exportfs –r

客户端配置:

实现持久挂载:

mkdir /mnt/nfsshare
vim /etc/fstab
192.168.44.7:/www /mnt/nfsshare    nfs    rw,nosuid,fg,hard,intr    0 0
mount -a

 持久挂载如下图:

实现自动挂载:

#父目录
vim /etc/auto.master
/-   /etc/auto.test    注:/-表示绝对路径
#子目录
vim /etc/auto.test
/mnt/nfsshare    -fstype=nfs,rw    192.168.44.7:/www
#重启autofs服务
systemctl restart autofs.service

自动挂载如下图:

 

 

 

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

1、在samba服务器上安装samba包
yum -y install samba
2、创建samba用户和组
groupadd -r admins
useradd -s /sbin/nologin -G admins yan
smbpasswd -a yan
3、创建samba共享目录,并设置SElinux
mkdir -pv /testdir/smbshare/www
chgrp admins /testdir/smbshare/www    #注意每级目录都需要有admins用户组权限
chmod 2775 /testdir/smbshare/www
semanage fcontext -a -t samba_share_t '/testdir/smbshare/www(/.*)?'
restorecon -vvFR /testdir/smbshare/www
4、 samba服务器配置
vim /etc/samba/smb.conf
security = user
passdb backend = tdbsam
[share1]
path = /testdir/smbshare/www
writeable = no
write list = @admins
#启动服务
systemctl start smb nmb
systemctl enable smb nmb
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
5、 samba客户端访问
#安装包
yum -y install cifs-utils
#查看共享列表
smbclient -L 192.168.44.7 -U yan%centos
#访问共享目录
smbclient //192.168.44.7/share1 -U yan%centos
#手动临时挂载
mkdir /mnt/yan
mount -o user=yan,password=centos //192.168.44.7/share1 /mnt/yan

实现持久挂载

#添加挂载配置
vim /etc/fstab    #注:如果是centos6挂载centos7的共享目录需要加上sec=ntlmssp选项
//192.168.44.7/share1    /mnt/yan    cifs    credentials=/etc/smb.txt    0 0
#创建鉴权文件
vim /etc/smb.txt
username=yan
password=centos
#安全设置
chmod 600 /etc/smb.txt
#加载配置
mount -a

 

实现自动挂载

#添加autofs主配置
vim /etc/auto.master
/-    /etc/auto.test
#添加子配置
vim /etc/auto.test    #注:如果是centos6挂载centos7的共享目录需要加上sec=ntlmssp选项
/mnt/yan    -fstype=cifs,credentials=/etc/smb.txt    ://192.168.44.7/share1
#重启autofs服务
systemctl restart autofs.service

 

 

 

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

场景:客户端/www目录下文件实时同步至服务端/backup目录下

 

服务端设置:

配置 rsync 服务器端的配置文件
vi /etc/rsyncd.conf
#以root用户、root组的身份运行进程
uid = root
gid = root
#不允许切根
use chroot = no
#最大连接数,0不限制
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
#反向解析,ip地址反向解析成名称
reverse lookup = no
#客户端允许的ip列表
hosts allow = 192.168.44.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

 

客户端设置

#安装inotify工具
yum install -y inotify-tools
#客户端配置密码文件
echo "centos" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
#客户端测试同步数据
rsync -avz --password-file=/etc/rsync.pass /www/ rsyncuser@192.168.44.17::backup
把本机的/data目录自动同步到远程服务器的backup定义的同步目录里面

注意:不加/是同步整个目录,加/只是同步里面的文件。

客户端创建inotify_rsync.sh脚本

#!/bin/bash
SRC='/www/'
DEST='rsyncuser@rsync服务器IP::backup'
inotifywait -mrq \
--timefmt '%Y-%m-%d %H:%M' \
--format '%T %w %f' \
-e create,delete,moved_to,close_write,attrib ${SRC} | \
while read DATE TIME DIR FILE;do
    FILEPATH=${DIR}${FILE}
rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && \
echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync">>/var/log/changelist.log
done

同步测试:

客户端运行脚本:

chmod +x inotify_rsync.sh

./inotify_rsync.sh

服务器端监控同步状态:

watch -n1 ls -l /backup/

 

 

 

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

ftp tcp:20、21

telnet tcp:23

web tcp:80、443

samba udp:137、138    

            tcp:139、445

iptables -A INPUT -p tcp -m multiport --dports  80,443,20,21,23,139,445  -j ACCEPT
iptables -A INPUT -p udp -m multiport --dports 137,138 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
#永久保存策略
yum install iptables-services
iptables-save > /etc/sysconfig/iptables
systemctl enable iptables.service

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值