Linux基础及总结18之ftp,nfs,samba,rsync

2020-03-11  本文已影响0人  牵挂包含一种欣赏

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
上一篇下一篇

猜你喜欢

热点阅读