美文网首页
Linux基础及总结18之ftp,nfs,samba,rsync

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

作者: 牵挂包含一种欣赏 | 来源:发表于2020-03-11 21:02 被阅读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

    相关文章

      网友评论

          本文标题:Linux基础及总结18之ftp,nfs,samba,rsync

          本文链接:https://www.haomeiwen.com/subject/qffwdhtx.html