天天看點

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 CD光牒
          • 通過 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 CD光牒作軟體倉庫:
          • 将 CentOS 7 CD光牒放入光驅
          • 挂載鏡像到倉庫位置,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 <包組名>

繼續閱讀