ftp、nfs、samba、rsync、iptables
1、实现基于MYSQL验证的vsftpd虚拟用户访问
10.0.30.120 ftp server
10.0.30.122 mysql server
1)分别在两台服务器上安装对应的软件包
ftp服务器安装软件包
yum -y install vsftp mariadb-devel
无对应pam-mysql的rpm包,需手动编译安装
yum -y groupinstall "Development Tools"
wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
tar xf pam_mysql-0.7RC1.tar.gz
mysql服务器安装mariadb包
yum -y install mariadb-server
./configure --with-pam-mods-dir=/lib64/security
make && make install
2)创建ftp库、虚拟用户表及授权登录账号
create database vsftp;
grant all on vsftp.* to 'ftp'@'10.0.30.%' identified by 'ftp';
CREATE TABLE users (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(50) BINARY NOT NULL,
password CHAR(48) BINARY NOT NULL
);
添加虚拟用户,根据需要添加所需要的用户,为了安全应该使用PASSWORD函数加密其密码后存储
INSERT INTO users(name,password) values('ftpu1',password('centos'));
INSERT INTO users(name,password) values('ftpu2',password('centos'));
3)在ftp服务器上修改vsftp配置
vim /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=ftp passwd=ftp host=10.0.30.122 db=vsftp table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=ftp passwd=ftp host=10.0.30.122 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()函数加密
4)建立相应用户和修改vsftpd配置文件,使其适应mysql认证
建立虚拟用户映射的系统用户及对应的目录
useradd -s /sbin/nologin -d /data/ftpadmin ftpadmin
修改ftpadmin用户home目录的权限,centos7 需除去ftp根目录的写权限
chmod 555 /data/ftpadmin
创建数据目录
mkdir /data/ftpadmin/{upload,pub}
setfacl –m u:ftpadmin:rwx /data/ftpadmin/upload
修改vsftp配置文件,添加两行配置
vim /etc/vsftpd/vsftpd.conf
guest_enable=YES #所有系统用户都映射成guest用户
guest_username=ftpadmin #配合上面选项才生效,指定guest用户
修改下面一项,原系统用户无法登录,使用数据库虚拟账号登录
pam_service_name=vsftpd.mysql
5)启动vsftp服务,在客户端机器使用虚拟账号登录ftp验证
systemctl start vsftpd
image.png
6)在FTP服务器上配置虚拟用户具有不同的访问权限
vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访
问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任
意未使用目录,只需要在vsftpd.conf指定其路径及名称即可
vim /etc/vsftpd/vsftpd.conf
添加如下选项
user_config_dir=/etc/vsftpd/vusers_config
创建所需要目录,并为每个虚拟用户提供独立的配置文件
mkdir /etc/vsftpd/vusers_config/
cd /etc/vsftpd/vusers_config/
touch ftpu1 ftpu2
7)配置虚拟用户的访问权限
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。如
要让用户ftpu1具有上传文件的权限,可修改/etc/vsftpd/vusers_config/ftpu1文
件,在里面添加如下选项并设置为YES即可,只读则设为NO
注意:需确保对应的映射用户对于文件系统有写权限
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/ftpadmin 登录目录改变至指定的目录
8)重启vsftp服务,登录上传文件验证
mkdir -p /ftpadmin/upload
chmod 555 /ftpadmin
setfact -m u:ftpadmin:rwx /ftpadmin/upload
systemctl restart vsftpd
分别使用虚拟账户ftpu1和ftpu2登录并验证上传文件。
ftpu1用户上传文件正常,且根目录为/ftpadmin
image.png
image.png
ftpu2用户登录上传提示没有权限,根目录为/data/ftpadmin
image.png
2、通过NFS实现服务器/www共享访问。
10.0.30.120 NFS server 软件包nfs-utils
10.0.30.121 httpd server 软件包httpd
1)安装环境所需的软件包
yum -y install nfs-utils
yum -y install httpd
2)设置共享
创建共享目录,并修改配置
mkdir /www
vim /etc/exports
/www 10.0.30.0/24(rw)
启动服务加载配置
systemctl start nfs
创建网页测试文件
echo "10.0.30.120 nfs server" > /www/nfs.html
在httpd服务器上查看nfs共享
showmount -e 10.0.30.120
image.png
3)在httpd服务器上将共享目录挂载到/var/www/html
mount 10.0.30.120:/www /var/www/html/
image.png
启动httpd服务,浏览器访问验证
systemctl start httpd
image.png
4)在httpd服务器上设置nfs开机自动挂载
vim /etc/fstab
10.0.30.120:/www /var/www/html nfs defaults 0 0
3、配置samba共享,实现/www目录共享
10.0.30.120 samba server 软件包samba
10.0.30.121 httpd server 软件包httpd cifs-utils
1)安装环境所需的软件包
yum -y install samba
yum -y install httpd cifs-utils samba-client
2)创建samba用户和组
groupadd -r sambaadmin
useradd -s /sbin/nologin -G sambaadmin smbuser1
smbpasswd -a smbuser1
useradd -s /sbin/nologin -G sambaadmin smbuser2
smbpasswd -a smbuser2
mkdir /www
echo "10.0.30.120 samba server" > /www/smb.html
3)创建共享目录,并修改samba服务配置文件
vim /etc/samba/smb.conf
[www]
path = /www
write list = @sambaadmin
4)启动samba服务并验证
systemctl start smb nmb
使用smbclient工具访问验证
smbclient -L //10.0.30.120 -U smbuser1
image.png
image.png
5)将samba共享的目录挂载到httpd服务的根目录/var/www/html
mount -o username=smbuser1 //10.0.30.120/www /var/www/html
image.png
6)设置samba共享开机自动挂载
创建挂载所需用户名和密码认证文件
vim /etc/smb.txt
username=smbuser1
password=centos
vim /etc/fstab
//10.0.30.120:/www /var/www/html cifs credentials=/etc/smb.txt 0 0
4、使用rsync+inotify实现/www目录实时同步
10.0.30.120 rsync服务端
10.0.30.121 rsync客户端
1)服务端机器安装同步和监控软件
yum -y install inotify-tools rsync
2)修改rsync配置文件
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 = 10.0.30.0/24
[backup]
path = /www/
comment = backup
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pass
创建同步目录
mkdir /www
3)服务器端生成验证文件
echo "rsyncuser:centos" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
启动rsync服务
systemctl start rsyncd
4)客户端机器上配置rsync同步数据认证的密码文件
echo "centos" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
客户端测试同步数据
rsync -avz --password-file=/etc/rsync.pass /data/ rsyncuser@10.0.30.120::backup
image.png
image.png
5)客户端创建inotify_rsync.sh脚本,inotify和rsync实现实时同步
vim inotify_rsync.sh
#!/bin/bash
SRC='/data/'
DEST='rsyncuser@10.0.30.120::backup'
/usr/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib {DIR}SRC {TIME} on FILEPATH was backuped up via rsync"
>> /var/log/changelist.log
done
使用nohup将脚本运行在后台
nohup /bin/sh /data/inotify_rsync.sh 2>&1 /dev/null &
6)验证自动同步功能
在客户端机器/data/目录下创建目录rsync
image.png
rsync服务端使用watch -n1 ls -l /www监控,数据自动同步正常
image.png
5、使用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 REJECT
客户端机器验证:
image.png
image.png
网友评论