天天看点

Blog.033 SSH 远程访问及控制、YUM 基础

1. SSH 远程管理

  • SSH是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能;
  • 对通信双方的数据传输进行加密处理,其中包括用户登录时输入的用户口令;
  • 与早期的Telnet(远程登录)、rsh(远程执行命令)、rcp(远程文件控制)等相比,SSH协议提供了更好的安全性。
  • Blog.033 SSH 远程访问及控制、YUM 基础
  • 1.1 配置Open SSH 服务端

    • SSH服务端的配置文件:/etc/ssh/sshd_config
    • 服务监听选项:端口(默认Tcp的22号端口)、地址、协议版本和DNS反向解析等
    • 1 vim /etc/ssh/sshd_config               #服务端配置文件
       2 #Port 22                               #监听端口为 22
       3 #AddressFamily any                     #监听地址为任意网卡,也可以指定 Openssh 服务器的具体 ip
       4 #LoginGraceTime 2m                     #登录验证时间为2分钟
       5 #PermitRootLogin yes                   #禁止 root 用户登录
       6 #MaxAuthTries 6                        #最大重试次数为 6
       7 #PermitEmptyPasswords no               #禁止空密码用户登录
       8 #UseDNS no                             #禁用 DNS 反向解析,以提高服务器的响应速度
       9 ----------------------------------------------------------------------------------
      10 配置允许和禁止用户登录:加@表示限制ip,注意允许和禁止不要同时使用!!
      11 AllowUsers zhangsan                    #允许 zhangsan 登录
      12 AllowUsers [email protected]      #只允许 zhangsan 通过 192.168.80.80 登录
      13 DenyUsers lisi                         #禁止 lisi 登录      
    •  例:只允许zhangsang、lisi、wangwu用户登录,且其中lisi用户仅能够从IP地址为192.168.80.80的主机远程登录。
      1 vim /etc/ssh/sshd_config                                 #修改服务端配置文件
      2 -------------------------------------------------------    
      3 AllowUsers zhangsan [email protected]  wangwu           #这里为添加的配置
      4 -------------------------------------------------------
      5 systemctl reload sshd                                    #修改完记得重新加载      
    • 1.2 sshd 支持的登陆验证方式

          sshd服务支持登录验证方式有:密码验证和密钥对验证,可以设置只使用其中一种,也可以都启用。
      • 密码验证:
          以服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便,但从客户机角度来看,正在连接的服务器有可能被假冒,从服务器角度来看,当遭遇密码暴力破解攻击时防御能力比较弱。
      • 密钥对验证:
          要求提供相匹配的密钥信息才能通过验证,通常先在客户机中创建一对密钥文件(公钥和私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,增强了远程管理的安全性。
      • 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密;
      • 不能根据一个密码来推算出另一个密钥;
      • 公钥对外公开,私钥只有私钥的持有人才知道。
      • 公钥和私钥要配对使用,如果用公钥对数据进行加密,只有用相对应的私钥才能解密;如果用私钥对数据进行加密,那么只有对应的公钥才能解密。
      • 当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。对于安全性要求较高的服务器,建议将密码验证方式禁用,只允许启用密码对验证方式;若没有特殊要求,则两种方式都可以。
      • 1.3 使用 SSH 客户端程序

        • SSH客户端的配置文件:/etc/ssh/ssh_config
        • 通过 ssh 命令可以远程登录 sshd 服务,为用户提供一个安全的 Shell 环境,以便于对服务器进行管理和维护。
        • 命令行格式:
        • 1 ssh [选项] [email protected]    #指定登录用户、目标主机地址作为参数
          2 ssh -p 20 [email protected]    #-p为指定端口      
          • 当用户第一次登录 SSH 服务器时,必须接受服务器发来的 RSA 密钥(需要根据提示输入:yes)后才能继续验证,接受的密钥信息将保存到 ~/.ssh/known_hosts 文件中,密码验证成功以后,就登录到目标服务器的命令行环境中了。如下:
          1 The authenticity of host '192.168.80.77 (192.168.80.77)' can't be established.
          2 ECDSA key fingerprint is SHA256:sRKz60ZIwaIjOXejXaNdZp69M/aygMdkunCMR7a3u+4.
          3 ECDSA key fingerprint is MD5:be:42:dd:a7:be:d9:96:f3:9d:8a:0c:20:b6:65:c9:2e.
          4 Are you sure you want to continue connecting (yes/no)? yes         #接受密钥
          5 [email protected]'s password:                                     #输入密码      
          • 如果 sshd 服务器使用了非默认的端口号(如:1234),则在登录时必须通过 -p 选项指定端口号:
          1 ssh -p 1234 [email protected]             #指定端口
          2 [email protected]'s password:             #输入密码      
        • 2. 密钥对验证的 SSH 体系

            2.1 配置密钥对验证的步骤

          ① 在客户端创建密钥对:

          ② 将公钥文件上传至服务器:

          ③ 在服务器中导入公钥文本:

          ④ 在服务端验证并设置ssh 代理功能,实现免交互登录:

          3. TCP Wrapper 访问控制

            3.1 TCP Wrapper 概述

          • TCP Wrappers (TCP封套)
          • 将 TCP 服务程序“包裹”起来,代为监听 TCP 服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
          • 大多数 Linux 发行版,TCP Wrappers 是默认提供的功能。rpm -q tcp_ wrappers 查看是否安装程序。
          • TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。
          • 对应的两个策略文件为 /etc/hosts.allow 和 /etc/hosts.deny,分别用来设置允许和拒绝的策略。

            3.2 TCP Wrapper 保护机制

              TCP Wrappers保护机制的两种实现方式:

          • 直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序。
          • 由其他网络服务程序调用libwrap.so. 链接库,不需要运行tcpd程序。此方式的应用更加广泛,也更有效率。
          • 使用ldd命令可以查看程序的libwrap.so. 链接库;
          • 命令:ldd $ (which ssh)

            3.3 TCP Wrapper 配置格式

              (1)命令行格式:<服务程序列表> : <客户端地址列表>

              (2)服务程序列表:

          • ALL:代表所有的服务。
          • 单个服务程序:如“vsftpd"。
          • 多个服务程序组成的列表:如“vsftpd, sshd”。
              (3)客户端地址列表:
          • ALL:代表任何客户端地址。
          • LOCAL:代表本机地址。
          • 多个地址以逗号分隔。
          • 允许使用通配符 “*” 和 "?” ,前者代表任意长度字符,后者仅代表一个字符。
          • 网段地址,如"192. 168.80.”或者192. 168.80.0/255.255.255.0。
          • 区域地址,如". benet . com"匹配benet.com 域中的所有主机。

            3.4 TCP Wrapper 访问机制

              (1)查看策略:
          • 首先检查 /etc/hosts.allow 文件,如果找到相匹配的策略,则允许访问;
          • 否则继续检查 /etc/hosts.deny 文件, 如果找到相匹配的策略,则拒绝访问;
          • 如果检查上述两个文件都找不到相匹配的策略,则允许访问。
              (2)“允许所有,拒绝个别”
          • 只需在 /etc/hosts.deny 文件中添加相应的拒绝策略。
              (3)“允许个别,拒绝所有”
          • 除了在 /etc/hosts.allow 中添加允许策略之外,还需要在 /etc/hosts.deny 文件中设置 "ALL : ALL" 的拒绝策略。

            3.5 TCP Wrapper 配置步骤

          例:只希望从IP地址为192.168.80.80的主机访问sshd服务,其他地址被拒绝。

          ① 主机1(192.168.80.77)的/etc/ hosts.allow配置文件内增加192.168.80.80主机2的ip;

          ② 主机1(192.168.80.77)的/etc/ hosts.deny配置文件内增加拒绝所有的配置;

          ③ 主机2(192.168.80.80)可以正常远程登录到主机1上;

          ④ 主机2(192.168.80.78)被拒绝登录到主机1上。

          4. YUM

            4.1 YUM 概述

          • 基于 RPM 包构建的软件更新机制
          • 可以自动解决依赖关系
          • 所有软件包由集中的 YUM 软件仓库提供

            4.2 准备安装源

          (1)软件仓库的提供方式:

          • FTP 服务:ftp://......
          • HTTP 服务:http://......
          • 本地目录:file://......
          (2)RPM 软件包的来源
          • CentOS 发布的 RPM 包集合
          • 第三方组织发布的 RPM 包集合
          • 用户自定义的 RPM 包集合
          (3)构建CentOS 7 软件仓库
          • RPM 包来自 CentOS 7 DVD 光盘
          • 通过 FTP 方式提供给客户机
          1 [root@localhost~]# mkdir -p /var/ftp/centos7
          2 [root@localhost~]# cp -rf /media/cdrom/* /var/ftp/centos7
          3 [root@localhost~]# rpm -ivh /madia/cdrom/Packages/vsftpd-3.0.2.21.el7.x86_64.rpm
          4 [root@localhost~]# systemctl start vsftpd
          5 [root@localhost~]# systemctl enable vsftpd      
          (4)在软件仓库中加入非官方 RPM 包组
          • 包括存在以来关系的所有 RPM 包
          • 使用 createrepo 工具建立仓库数据文件
          1 [root@localhost~]# mkdir /var/ftp/other
          2 [root@localhost~]# cd /var/ftp/other          # 非官方的 RPM 文件要先放入此目录中
          3 [root@localhost other]# createrepo -g /media/cdrom/repodata/repomd.xml ./       

            4.3 YUM 仓库

              (1)访问 YUM 仓库:
          • 为客户机指定 YUM 仓库位置:
          • 配置文件:/etc/yum.repos.d/centos7.repo
              (2)本地 YUM 仓库:
          • 直接以 CentOS 7 光盘作软件仓库:
          • 将 CentOS 7 光盘放入光驱
          • 挂载镜像到仓库位置,URL 地址为 file:///media/cdrom

            4.4 YUM 工具概述

              (1)关于 YUM 命令

          • 由软件包 yum-3.4.3-150.el7.centos.noarch 提供
              (2)YUM 的配置文件
          • 基本设置:/etc/yum.conf
          • 仓库设置:/etc/yum.repos.d/*.repo
          • 日志文件:/var/log/yum.log
              (3)YUM 缓存目录
          • 存放下载的软件包、仓库信息等数据
          • 位于 /var/cache/yum/$basearch/$releasever
          • 清除 YUM 缓存命令:yum clean all

            4.5 YUM 的一些命令格式

              (1)查询软件包

          • yum list [软件名]
          • yum info [软件名]
          • yum search <关键词>
          • yum whatprovides <关键词>
              (2)查询软件包组
          • yum grouplist [包组名]
          • yum groupinfo <包组名>
              (3)软件安装
          • yum install [软件名]
          • yum groupinstall <包组名>
          • yum update
          • yum groupupdate
          • yum remove <软件名>
          • yum groupremove <包组名>

继续阅读