CentOS7安装NFS

  1. 该分布式文件系统方案存在安全漏洞,建议您一定要做以下防护

    # 定期备份服务端共享目录
    # 修改服务端/etc/exports实现物理隔离
    
  2. 设计需求

    假设局域网有多台CentOS7系统的服务器IP段为192.168.1.1/24
    CentOS7安装rpcbind + nfs,实现不同服务器之间共享同一目录
    

服务端

  1. 假设服务端IP地址为

    192.168.1.2
    
  2. 安装rpcbind + nfs

    yum install nfs-utils rpcbind -y
    
  3. 创建共享目录

    mkdir /www
    useradd www
    chown -R www:www /www
    
  4. 查看www用户的uid、gid

    id www
    
  5. 修改配置

    # nfs服务端口配置
    vi /etc/modprobe.d/lockd.conf
    
    options lockd nlm_tcpport=32803
    options lockd nlm_udpport=32769
    
    ESC
    :wq
    
    # nfs服务端口配置
    vi /etc/sysconfig/nfs
    
    LOCKD_TCPPORT=32803
    LOCKD_UDPPORT=32769
    MOUNTD_PORT=892
    STATD_PORT=662
    STATD_OUTGOING_PORT=2020
    
    ESC
    :wq
    
    # nfs服务设置共享模式(假设上一步www用户的uid=1000、gid=1000)
    vi /etc/exports
    
    /www 192.168.1.1/24(rw,sync,no_root_squash,anonuid=1000,anongid=1000)
    
    ESC
    :wq
    
    # /etc/exports配置说明
    # 配置格式:
        共享目录 客户端地址(客户端权限)
    # 共享目录:
        服务端要共享出去的目录,从根路径开始写
    # 客户端地址:
        指定服务端的共享目录分享给的客户端的IP地址
    # 客户端权限:
        rw: 可读可写
        ro: 仅仅可读
        sync: 文件写入硬盘和内存
        async: 文件暂存到内存
        all_squash: 客户端所有用户都拥有对服务端分享目录的nobody用户权限
        root_squash: 客户端root用户都拥有对服务端分享目录的nobody用户权限
        no_root_squash: 客户端非root用户都拥有对服务端分享目录的nobody用户权限
        anonuid: nobody用户的uid(这里我们写www用户的id)
        anongid: nobody用户的gid(这里我们写www用户的id)
    
  6. 启动rpcbind + nfs

    systemctl restart rpcbind
    systemctl restart nfs
    systemctl enable rpcbind
    systemctl enable nfs
    systemctl status rpcbind
    systemctl status nfs
    
  7. 如果服务端安装了防火墙则要开启相应的端口

    # 查看服务占用端口
    rpcinfo -p|grep -oE '(tcp|udp)(\s+)[0-9]+'|sort -nk 2|uniq
    
    # 打开防火墙相关端口
    firewall-cmd --permanent --zone=public --add-port=111/tcp
    firewall-cmd --permanent --zone=public --add-port=2049/tcp
    
    firewall-cmd --permanent --zone=public --add-port=662/tcp
    firewall-cmd --permanent --zone=public --add-port=892/tcp
    firewall-cmd --permanent --zone=public --add-port=2020/tcp
    firewall-cmd --permanent --zone=public --add-port=32769/udp
    firewall-cmd --permanent --zone=public --add-port=32803/tcp
    
    firewall-cmd --reload
    
  8. 重载配置

    exportfs -arv
    

客户端

  1. 安装rpcbind + nfs

    yum install nfs-utils rpcbind -y
    
  2. 启动rpcbind + nfs

    systemctl restart rpcbind
    systemctl restart nfs
    systemctl enable rpcbind
    systemctl enable nfs
    systemctl status rpcbind
    systemctl status nfs
    
  3. 创建共享目录

    mkdir /www
    useradd www
    chown -R www:www /www
    
  4. 挂载共享目录

    mount -t nfs 192.168.1.2:/www /www
    
  5. 开机自动挂载

    vi /etc/fstab
    
    192.168.1.2:/www    /www    nfs    defaults    0 0
    
    ESC
    :wq
    

客户端(Windows)

  1. 安装NFS服务

    控制面板 → 程序 → 启用或关闭Windows功能 → 【NFS服务+NFS客户端+管理工具】 → 确定
    
  2. 挂载共享目录

    # 假设计算机没有G盘,则挂载/www目录到G盘
    mount 192.168.1.2:/www G:\
    

试一下

  1. 测试安装是否成功

    # 客户端
    su www
    cd /www
    echo 'test' > test.txt
    
    # 服务端
    ll /www
    

漏洞修复

  1. rpcbind存在可能被黑客利用的漏洞,因此你可以选择不使用它,彻底停用它的命令如下

    # 关闭服务
    systemctl stop nfs.service
    systemctl disable nfs.service
    systemctl stop rpcbind.socket
    systemctl stop rpcbind.service
    systemctl disable rpcbind.service
    # 卸载服务
    yum remove nfs-utils rpcbind -y
    
  2. 另外如果你一定要使用它的话,也可以这样进行安全加固

    1. 服务端不接入到公网,使攻击者无法访问服务端
    2. 服务端修改/etc/exports,来限制允许访问的IP
    3. 服务端和客户端都安装firewalld并禁用111/udp端口
    
Copyright © 豆包嘿嘿~ 2012-∞ 冀ICP备17033181号 小白都能看懂的文档 all right reserved,powered by Gitbook修订: 2016-12-31 12:20:37

results matching ""

    No results matching ""