網站伺服器建置與管理上課補充教材


Chapter 06:遠端連線伺服器: sshd, vnc 與 xrdp
  1. 遠端連線伺服器:
    1. 透過遠端連線的功能登入到伺服器,經常使用於工作站,或者是多人共用伺服器的環境,包括科學運算過程當中需要用到的數值模式模擬環境。
    2. 但如果你要使用這些功能,就得要管理你的用戶才行啊!
    3. 可能的話,最好還得要管理你的對外防火牆系統 (例如 gocloud 系統的對外連線限制喔!)
    4. 常見的模式:
      • 透過純文字模式,目前主流為 ssh
      • 透過圖形界面,包括 VNC, RDP 以及 Linux 模擬的 XRDP 功能!
  2. 什麼是 ssh 服務的金鑰系統加密功能?
    1. 整個金鑰系統的運作流程如下圖所示:
    2. 練習:聽完白板上面的說明後,請說明
      • 當用戶端要傳送資料給伺服器端,資料是如何進行加密與解密?(用誰的公鑰?用誰的私鑰?)
      • 當伺服器端要傳送資料給用戶端,資料是如何進行加密與解密?(用誰的公鑰?用誰的私鑰?)
      • 所以,那一個鑰匙是不能夠外流的?
  3. CentOS 7 預設提供的 ssh 伺服器,與用戶端功能操作
    1. 預設針對整個 Internet 放行
    2. 預設啟動的埠口為 port 22
    3. 預設提供了 root 進行遠端登入
    4. 同時提供 scp 與 sftp 等伺服器功能。
    5. 練習:
      1. 觀察與想辦法設定,讓你的 port 22 防火牆不要讓整個 Internet 可以連接
      2. 使用 ssh root@localhost 來連接到自己的 ssh 伺服器,查看整個流程
      3. 登入後,查看自己家目錄的 .ssh 裡面有多出什麼資料?該資料的內容又如何?
      4. 查看一下自己系統中的 /etc/ssh/ssh_host* 的內容,看看有沒有正確對應的資料?
      5. 登出 root 的連線
      6. 刪除 /etc/ssh/ssh_host??? 當中的成對金鑰,然後重新啟動 sshd 服務
      7. 再次使用 ssh root@localhost 會出現什麼訊息?如何克服?
      8. 在原本的 student 身份下,進入到 /dev/shm ,然後使用 scp 將 localhost 的 /etc/ssh 目錄完整的複製到本目錄下
      9. 使用 sftp root@localhost 查看一下檔名與持續下載 /etc/pam.d 這個目錄。完成後請登出 sftp
      10. 在 client 端,使用 ssh -X root@server_ip someprogram 來直接操作 server 的軟體!
  4. sshd 取消 root 登入權限
    1. 前往 /etc/ssh/sshd_config 修改 Root 的權限,讓 root 無法登入,請注意要重新啟動 sshd 這個服務
    2. 嘗試以 ssh root@localhost 確認一下是否無法登入?
    3. 分別觀察 sshd 的狀態 (systemctl status) 以及登錄檔 (/var/log/messages, /var/log/secure),查看是否有相關資訊?
    4. 最終請重新放行 root 的 ssh 使用權 (因為老師需要進行成績修改的原因...)
  5. sshd 的啟動埠口 (port) 修改
    1. 讓啟動埠口存在兩個,分別是 port 22 與 port 543
    2. 如果無法啟動 port 543 ,可能原因為何?是否能夠在哪些登錄檔發現錯誤?又該如何處理?
    3. 該如何使用 ssh 連線到本機的 port 543 ?
    4. 該如何使用 scp 連線到本機的 port 543 去下載 /etc/group 檔案?
  6. 讓系統可以定期的在兩個 linux 之間進行資料的傳輸
    1. 先啟動 client 系統,然後使用 root 的身份操作 ssh-keygen 來建立好兩把金鑰
    2. 透過 ssh-copy-id 的方式,將公鑰傳送到 server 的 student 帳號底下
    3. 在 server 上面用 student 觀察是否存在了正確的金鑰檔案?
    4. 在 client 端,使用root 的身份,透過 rsync 的方法將 /etc 固定在每週日 2 點傳送給 server 的 student 的 ~student/backup/ 目錄中。
  7. 建立可以本機登入,但無法使用 ssh 登入的帳號
    1. 先使用 man sshd_config 的方式,搜尋 denygroups 的設定值,觀察如何設定與它的功能為何?
    2. 建立一個 denyssh 的群組,而且將這個群組設定到無法使用 sshd 的參數中
    3. 建立一個 nossh 的帳號,這個帳號還加入 denyssh 的次要群組,同時密碼為 1234hehehe
    4. 嘗試用 tty3 登入這個帳號
    5. 嘗試用 ssh nossh@localhost 登入系統
    6. PS: 可以用在特別帳號,讓這個帳號可以使用系統的其他全部服務,但是不可遠端接觸到本機的登入服務,例如 ftp 帳號、mail 帳號, 除了使用 /sbin/nologin 這個永遠都無法登入的 shell 之外,另外可以使用這個功能參數來限制 sshd 而已。
  8. VNC 伺服器
    1. 伺服器端先安裝 tigervnc-server 之類的軟體
    2. 第一次使用時,請參考 vncserver 的指令與參數
    3. 記得參考 port number 並據以修改 iptables
    4. 嘗試在 client 端使用 vncviewer 啟動連線到 server 端的功能看看。
    5. 嘗試看看能不能每次開機都啟用這個 VNC 服務呢?
  9. XRDP 伺服器
    1. 透過各種方式 (包括 epel) 安裝好 xrdp 軟體
    2. 啟動該軟體並且觀察軟體啟動的 port 為何?
    3. 記得放行防火牆功能
    4. 用戶端使用 windows 系統,然後連接到 server 端 (遠端連線) 看看是否可以順利連接呢?
  10. 特別防火牆功能
    1. 網路搜尋 knock 這個軟體,例如: https://pkgs.org/download/knock-server
    2. 安裝後,參考一下舊版資料 http://linux.vbird.org/linux_security/knockd.php 加以設定
    3. 在 client 端也安裝該軟體,然後嘗試敲擊 server 看看!再到 server 看看防火牆是否有啟動呢?
    4. 如此一來,你就無須擔心跳板的問題了!
Top
HOME