NFS服务+Rsyslog服务配置实践

末鹿安然 提交于 2019-12-03 20:59:04

NFS服务

概述

  • NFS:Network File System(网络文件系统),是一种基于TCP/IP传输的网络文件系统协议,最早由SUN公司研发。目前使用的NFS 4.X版本
  • 通过使用 RPC(远程过程调用 Remote Procedure Call)实现远程到本地的映射,NFS服务启动后开启随机端口并将这些端口向RPC进行注册,RPC监听111端口 ,客户端的请求访问111号端口获取NFC真实端口,然后建立连接传输数据
  • NFS没有用户的认证机制,且文件的传输都是基于明文的方式,所以安全性很差。通常只在局域网内使用,NFS基于IP来进行认证,需要辅助的守护进程nfsd来进行
  • 传输过程
    1. 服务端启动RPC服务,监听111端口
    2. 服务端启动NFS,并将监听的随机端口向RPC进行注册
    3. 客户端启动RCP服务向服务端的RPC111端口发送请求获取服务端NFS的端口
    4. 服务端RPC收到请求后返回NFS注册的端口
    5. 客户端通过获取的NFS端口与服务端NFS服务建立连接通信
  • 相关软件包
    • RPC主程序rpcbind:提供nfs的端口映射功能,监听111端口,进程名为portmapper,通过rpcinfo命令查看端口映射
    • NFS主程序:nfs-utils,提供 rpc.nfsd 及 rpc.mountd这两个守护进程
  • 主要进程
    • mountd:是nfs服务的认证服务的守护进程,client在收到返回的真正端口时,就会去连接mountd,认证取得令牌
    • nfsd:nfs的守护进程,负责接收到用户的调用请求后与内核发出请求并得到调用结果响应给用户,工作在tcp和udp的2049端口
    • Idmapd:解决不同主机用户不存在情况下的文件归属的问题,挤压限制(squash)超级用户的文件系统中的权限
  • NFS服务程序启动的相关程序
    • /sbin/mount.nfs
    • /usr/sbin/rpc.idmapd
    • /usr/sbin/rpc.mountd
    • /usr/sbin/rpc.nfsd
  • NFS配置文件:/etc/exports

实践

  • 实验环境

    • nfs server:192.168.10.128
    • LAMP server1:192.168.10.121
    • LAMP server2:192.168.10.122
      注:主机均已关闭防火墙、selinux
  • 搭建LAMP服务器提供web服务
    详细步骤参考 LAMP环境搭建详细流程

    • 搭建完成后测试
      image-20191106151438179
      image-20191106151449355
  • 搭建NFS服务器

    • 安装服务
      image-20191106152028062

    • 启动服务(先启动rpcbind后启动nfs)
      image-20191106152750655
      image-20191106152832373

    • 检查监听端口
      image-20191106152845399

      image-20191106153046270

    • 修改配置文件

      image-20191106153633329

      /var/www/html/  192.168.10.121(rw)      192.168.10.122(rw)
      #/var/www/html/ 指定共享路径
      #192.168.10.121(rw) 指定运行连接的主机及权限
      #rw 可读写
      #ro 只读
      #async  异步访问
      #root_squash:挤压(限制)root用户权限(默认开启的选项)
      #all_squash:挤压(限制)所有用户权限
    • 创建共享目录并将Discuz项目解压存放至共享目录

      image-20191106154346213

    • 修改共享目录权限

      image-20191106162710032

    • 重启服务

      image-20191106154750853

      或重载

      image-20191106154837125

  • LAMP服务器挂载nfs共享目录到本地

    • 查看nfs共享目录

      image-20191106160636004

    • 挂载至本地/var/www/html/discuz目录下

      image-20191106160648340

    • 另一台LAMP做同样配置

      image-20191106161114021

    • 若lamp为最小化安装需要手动安装nfs-utils

      image-20191106161223718

  • 配置数据库

    • 启动数据库

      image-20191106161407771

    • 配置Mariadb root密码

      image-20191106161711227

      delete from mysql.user where user='';
      update mysql.user set password=password('12345') where user='root';
      grant all on *.* to 'root'@'%' identified by '12345';
      flush privileges;
      quit
    • 创建discuz对应数据库及管理账号

      image-20191106162144396

      mysql -u root -p
      create database discuzdb;
      grant all on discuzdb.* to 'discuzadmin'@'%' identified by '123456';
      flush privileges;
      quit
    • 重启httpd服务

      image-20191106162257039

      或重载服务

      image-20191106162325633
      注:LAMP中只需要其中一台配置Mariadb服务
  • 搭建discuz

    • 访问LAMP2进行discuz搭建配置

      image-20191106162751359

      image-20191106162816857

      image-20191106162906459

      image-20191106163058529

      image-20191106163139204

      image-20191106163200828

      image-20191106163233814

    • 使用LAMP1访问测试

      image-20191106163403407

Rsyslog服务

  • 日志:记录服务器发生的事件,包括错误情况、用户登录的情况、服务器访问的情况等。

    • 历史日志(记录日志的时间、发生的事件详情)
    • 日志级别(Loglevel):事件关键性程度
  • 文件记录日志的格式(文本格式):事件日期时间 主机 进程(pid) 事件内容

  • 常见日志文件说明

    • /var/log/message 包括整体系统信息,包括系统启动期间的日志。此外mail,cron,daemon,kern,auth等内容也记录在此日志中
    • /var/log/dmesg 包含一些内核缓冲信息,在系统启动时,会在屏幕上显示许多与硬件相关的信息
    • /var/log/auth.log 包含系统授权信息,如用户登录和使用的权限机制等
    • /var/log/boot.log 包含系统启动的日志
    • /var/log/kern.log 包含内核产生的日志,有助于在定制内核时解决问题
    • /var/log/lastlog 记录所有用户最近信息,不是一个ASCII文件,需要使用lastlog命令查看内容
    • /var/log/btmp 记录所有失败登录信息。使用last命令可以查看btmp文件
    • /var/log/cron 每当cron进行开始一个工作时,就会将现相关信息记录在这个文件夹中
    • /var/log/secure 包含验证和授权方面的信息。sshd会将所有信息记录在这里
    • /var/log/wtmp /var/log/utmp 包含登录信息。wtmp可以找出谁正在登录进入系统,谁使用命令显示这个文件或信息等
    • /var/log/sa 包含每日由sysstat软件包收集的sar文件
    • /var/log/sssd 用户守护进程安全服务
  • 日志的分类

    • facility:把某一类具有相同特性的由各个应用程序产生的日志数据流归类到同一日志管道中,此管道为facility,可简单理解为系统是日志的分类
    • 包括以下级别
      • auth 安全和认证系统
      • authpriv 安全和认证相关消息(私有的)
      • cron 系统执行定时任务时发出的信息
      • daemon 某些系统的守护程序的日志
      • kern 内核的syslog信息
      • lpr 打印机的syslog信息
      • mail 邮件系统的syslog信息
      • mark 定时发送消息的时标程序
      • news 新闻系统的syslog信息
      • security 本地用户应用程序的syslog信息
      • user 本地用户应用程序的syslog信息
      • uucp uucp子系统的syslog信息
      • local0-local7 本地类型的syslog信息,这些信息可以由用户来定义
      • syslog 系统日志
      • * 表示所有类别
  • 日志的级别

    • none 通常调试程序时用,指示带有none级别的类型产生的信息无需送出
    • debug 调试程序时的信息
    • info 通报信息
    • notice 注意;非错误状态的报告,但应特别处理
    • warn(warning) 警告
    • err(error) 错误
    • crit(critical) 关键状态的警告。例如,硬件故障
    • alert 告警,当前状态必须立即进行纠正。例如,系统数据库崩溃
    • emerg 紧急,处于Panic状态。通常应广播到所有用户
    • * 代表所有级别
  • rsyslog提供了三种远程传输协议

    • UDP 传输协议
      基于传统UDP协议进行远程日志传输,可靠性低、性能高、可能存在丢日志情况
    • TCP 传输协议
      基于传统TCP协议明文传输,可靠性比较高
    • RELP 传输协议
      RELP(Reliable Event Logging Protocol)是基于TCP封装的可靠日志消息传输协议,需要安装rsyslog-relp以支持该协议
  • 相关软件

    • rsyslog程序包:rsyslog
    • rsyslog的主配置文件:/etc/rsyslog.conf
    • 日志主程序:/usr/sbin/rsyslogd:
    • 服务启停脚本:/etc/init.d/rsyslog
  • 日志服务器搭建

    • 实验环镜

      • rsyslog server:Centos7 192.168.10.121
      • client:Centos7 192.168.10.122
    • 服务端配置

      • 查看是否安装rsyslog服务
        image-20191106194835937
        注:默认安装,若未安装则使用yum install进行安装
        image-20191106194929687
    • 修改主配置文件
      image-20191106195111623
      image-20191106211852743

      #### MODULES ####
      #指定装载的模块
      $ModLoad imuxsock # 加载imixsock模块,为本地系统登录提供支持
      $ModLoad imjournal # 支持本地系统访问产生日志的功能
      #$ModLoad imklog # 加载imklog模块,为内核登录提供支持
      #$ModLoad immark  # 加载immark模块,提供标记信息的能力
      # Provides UDP syslog reception  
      $ModLoad imudp    #udp方式传输日志
      $UDPServerRun 514  #监听端口514
      $AllowedSender udp, 192.168.10.0/24 #允许192.168.10网段的主机通过udp传输日志
      # Provides TCP syslog reception
      #$ModLoad imtcp  #tcp方式传输日志
      #$InputTCPServerRun 514  #监听端口514
      #### GLOBAL DIRECTIVES ####
      $WorkDirectory /var/lib/rsyslog # 辅助文件位置
      $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #使用默认格式时间戳
      #$ActionFileEnableSync on #日志同步写入
      $IncludeConfig /etc/rsyslog.d/*.conf  #加载的配置文件
      $OmitLocalLogging on #关闭本地日志套接字接收信息
      $IMJournalStateFile imjournal.state
      #### RULES ####
      #日志规则
      #kern.*                                         /dev/console #内核日志放置前台console,未启用
      *.info;mail.none;authpriv.none;cron.none        /var/log/messages #除了mail、authpriv、cron其余日志存放位置
      authpriv.*                                      /var/log/secure #安全和认证日志存放位置
      mail.*                                          -/var/log/maillog #邮箱日志信息存放位置,-表示异步存储
      cron.*                                          /var/log/cron #定时任务日志存放位置
      *.emerg                                         :omusrmsg:* #紧急及以上日志信息发送给每个在线用户
      uucp,news.crit                                  /var/log/spooler #uucp和news关键性警告及以上日志存放位置
      local7.*                                        /var/log/boot.log #启动相关信息存放位置
      #local0~6可用于自定义指定
    • 开启监听端口
      image-20191106205347900
      image-20191106205425535

      SYSLOGD_OPTIONS="-r514 -c2"
      #-r 指定监听端口
      #-c2 使用兼容模式
    • 查看端口514监听状态

      image-20191106210619839

  • 客户端配置

    • 修改日志主配置文件

      image-20191106210709763

      image-20191106210801690

      *.*@192.168.10.121:514
      #*.* 所有日志信息
      #@ udp传输
      #@@ tcp传输
      #192.168.10.121:514 日志服务器ip和端口
    • 重启日志服务

      image-20191106210957014

  • 测试

    • 服务端

      image-20191106211120898

    • 客户端手动生成日志信息

      image-20191106211239600

      logger -t kern -p err "hello,wahaha"
      #logger 从命令行直接向系统日志文件写入一行信息
      #-t 指定日志类别
      #-p 指定错误级别(小写)
    • 日志服务端接收日志结果

      image-20191106211224176

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!