Linux 系統管理涵蓋許多導向,從網路設定、軟體安裝到資源監控與安全性維護,都需要管理者熟悉相關工具和技巧。網路設定包含查詢和修改 IP 地址、MAC 地址、DNS 設定等。軟體管理則可以使用 APT 包管理器進行軟體安裝、移除、更新和升級。資源監控方面,可以使用 tophtopvmstatiostatsar 等工具來監控系統資源使用情況,並透過調整核心引數、程式管理、磁碟空間管理和負載平衡等技巧來最佳化資源使用。自動化指令碼可以簡化重複性任務,提升工作效率。安全性強化措施包含防火牆設定、使用者許可權管理和日誌監控與分析。虛擬化技術如 KVM 和 Docker 可以提升資源利用率,其中 KVM 允許在一台物理伺服器上執行多個虛擬機器,而 Docker 則提供輕量級的容器化佈署方案,方便應用程式封裝和佈署。

基本練習題

為了鞏固所學知識,玄貓建議你完成以下練習:

  • 查詢活躍的網路介面:使用 ip addr show 檢視當前活躍的網路介面。
  • 改變 IP 地址:將 eth0 的 IP 地址改為 192.168.1.1
  • 改變硬體地址:將 eth0 的 MAC 地址改為一個自定義值。
  • 檢查無線介面:確認系統上是否有可用的無線介面。
  • 重置 IP 地址:將 IP 地址重置為 DHCP 分發。
  • 查詢 DNS 和郵件伺服器:找到你喜歡的網站所使用的 DNS 和郵件伺服器。
  • 新增 Google DNS:將 Google 的 DNS 伺服器新增到 /etc/resolv.conf 中。

這些練習將幫助你更好地理解和掌握 Linux 網路基礎技能。

安裝與管理軟體

在 Linux 作業系統中,安裝和管理軟體是日常工作的一部分。無論是為了安裝新功能還是移除不必要的軟體以節省磁碟空間,都需要熟悉相關工具和命令。今天,玄貓將帶你看如何使用三種主要方法來管理軟體:APT 包管理器、圖形化安裝管理器以及 Git。

使用 APT 包管理器

APT 是 Debian 和 Ubuntu 等根據 Debian 的 Linux 發行版中最常用的包管理工具。它提供了簡單而強大的命令來搜尋、安裝、更新和移除軟體包。

搜尋軟體包

在安裝新軟體之前,首先需要確認該軟體包是否存在於倉函式庫中。這可以透過以下命令來實作:

apt-cache search <keyword>

例如,搜尋 Snort(一個流行的入侵檢測系統):

apt-cache search snort

這會列出所有包含 “snort” 的軟體包。找到你需要的包後,就可以開始安裝了。

安裝軟體包

要安裝某個軟體包,使用以下命令:

sudo apt-get install <packagename>

例如,安裝 Snort:

sudo apt-get install snort

這會從倉函式庫下載並安裝 Snort 及其所有依賴項。

移除軟體包

如果需要移除已安裝的軟體包,可以使用以下命令:

sudo apt-get remove <packagename>

例如,移除 Snort:

sudo apt-get remove snort

注意:這個命令不會刪除組態檔案。如果想要完全移除軟體包及其組態檔案,可以使用 --purge 選項:

sudo apt-get purge snort

其他管理方法

除了 APT 包管理器之外,還有其他方法來管理軟體包。例如圖形化介面(GUI)根據的安裝管理器(如 Synaptic 或 Software Center),以及直接從原始碼編譯和安裝(如使用 Git)。

再次強調重點

玄貓希望透過這些技術分享與例項分析讓大家能夠更加深刻理解 Linux 網路基礎技能與軟體管理方法。透過掌握這些技巧不僅能提升日常工作效率也能應用於更高階駭客技術及安全測試。

管理 Linux 套件:清除、更新及升級

使用 apt-get 清除軟體及其組態檔

在管理 Linux 系統時,有時我們需要完全移除某些軟體,包括其組態檔。這樣可以確保系統中不會留下任何殘餘的組態或依賴專案。以 Snort 為例,以下是使用 apt-get purge 命令來完全移除 Snort 的步驟:

kali > apt-get purge snort

執行這個命令後,系統會讀取套件清單並構建依賴樹,然後顯示已自動安裝但不再需要的套件。例如:

The following packages were automatically installed and are no longer required:
libdaq0 libprelude2 oinkmaster snortcommonlibraries snortrulesdefault

接著系統會詢問是否繼續進行清除操作。只要在提示符中輸入 Y 即可繼續。

內容解密:

  • 命令說明apt-get purge 命令用於完全移除指定的軟體及其所有相關的組態檔。
  • 依賴管理:當我們移除一個軟體時,與其相關的依賴專案如果不再被其他軟體使用,也會被標記為不再需要。
  • 確認操作:在執行 purge 之前,系統會列出所有將被移除的依賴專案,並詢問是否繼續。

更新套件清單

軟體倉函式庫會定期更新,新增新的軟體或新版本的現有軟體。這些更新不會自動應用到您的系統上,因此需要手動請求更新。使用 apt-get update 命令可以更新本地套件清單以反映倉函式庫中的最新狀態。

kali > apt-get update

這個命令會搜尋所有系統中的套件,檢查是否有可用的更新。如果有更新,則會下載並儲存在本地。

內容解密:

  • 命令說明apt-get update 用於更新本地套件清單以反映倉函式庫中的最新狀態。
  • 下載更新:更新過程中,系統會下載最新的套件清單。
  • 完成提示:如果更新成功,終端機會顯示 Reading package lists... Done

升級已安裝的套件

要升級系統中的現有套件,可以使用 apt-get upgrade 命令。這個命令會升級所有已知且可升級的套件。由於升級可能會對軟體產生影響,因此需要以 root 身份或使用 sudo 命令來執行。

kali > apt-get upgrade

執行這個命令後,系統會讀取套件清單並構建依賴樹,然後計算需要升級的套件數量和所需的磁碟空間。

內容解密:

  • 命令說明apt-get upgrade 用於升級所有已知且可升級的套件。
  • 根許可權:升級操作可能會改變系統軟體,因此需要以 root 身份或使用 sudo 操作。
  • 確認操作:在開始升級之前,系統會顯示需要下載的資料量和可用的磁碟空間。

新增倉函式庫到 sources.list 檔案

Linux 發行版通常有一組預設的倉函式庫來提供軟體。例如 Kali Linux 的倉函式庫專注於安全和測試工具。然而,Kali Linux 不包括某些專業軟體和工具。因此,新增備份倉函式庫(如 Ubuntu 的倉函式庫)可能對於找不到特定軟體時非常有幫助。

倉函式庫列表儲存在 /etc/apt/sources.list 檔案中。可以使用任何文字編輯器來修改這個檔案。以下是使用 Leafpad 編輯器開啟這個檔案的方法:

kali > leafpad /etc/apt/sources.list

內容解密:

  • 倉函式庫定義sources.list 檔案定義了系統將從哪些倉函式庫下載軟體。
  • 新增備份倉函式庫:為了確保能夠找到所需的軟體,可以在 sources.list 中新增其他發行版的倉函式庫。
  • 編輯檔案:使用文字編輯器(如 Leafpad)來修改 sources.list 檔案。

管理 Linux 資源:如何高效運作

資源監控與伺服器管理

在伺服器管理中,資源監控是確保系統穩定執行和高效運作的重要環節。透過監控 CPU、記憶體、磁碟空間等資源使用情況,管理員可以及時發現潛在問題並採取相應措施。

資源監控工具

以下是一些常用的資源監控工具:

  1. top:實時顯示系統資源使用情況。
  2. htop:增強版的 top,提供更直觀的介面和更多功能。
  3. vmstat:顯示虛擬記憶體、程式、CPU 活動等資訊。
  4. iostat:顯示 I/O 活動和 CPU 利用率。
  5. sar:收集、報告和儲存系統活動資訊。
# 安裝 htop
sudo apt-get install htop

# 執行 htop
htop

內容解密:

  • top 命令:顯示實時資源使用情況。
  • htop 命令:提供更直觀且功能豐富的資源監控介面。
  • vmstat 命令:報告虛擬記憶體、程式和 CPU 活動等資訊。
  • iostat 命令:顯示 I/O 活動和 CPU 利用率。
  • sar 命令:收集和報告系統活動資訊。

資源最佳化技巧

除了監控之外,最佳化資源使用也是提升伺服器效能的一個重要方面。以下是一些常見的最佳化技巧:

  1. 調整核心引數:根據具體需求調整核心引數來提升效能。
  2. 程式管理:適當地終止或限制資源消耗大的程式。
  3. 磁碟空間管理:定期清理不必要的檔案和日誌檔案來釋放磁碟空間。
  4. 負載平衡:透過負載平衡技術將流量分散到多個伺服器上。
# 檢視核心引數
sysctl -a

# 清理磁碟空間
sudo apt-get autoremove
sudo apt-get autoclean

內容解密:

  • 核心引數調整:根據具體需求調整核心引數來提升效能。
  • 程式管理:適當地終止或限制資源消耗大的程式。
  • 磁碟空間管理:定期清理不必要的檔案和日誌檔案來釋放磁碟空間。
  • 負載平衡:透過負載平衡技術將流量分散到多個伺服器上。

自動化與安全:最佳化 Linux 環境

自動化指令碼與工作流程

自動化是提升工作效率和減少錯誤率的一個重要手段。在 Linux 中,可以使用指令碼語言(如 Bash)來編寫自動化指令碼來完成重複性任務。

以下是一個簡單的 Bash 指令碼範例:

#!/bin/bash

# 自動更新系統並安裝最新補丁
sudo apt-get update
sudo apt-get upgrade -y

# 清理無用檔案
sudo apt-get autoremove -y
sudo apt-get autoclean -y

echo "系統已自動更新並清理完畢"

內容解密:

  • Bash 指令碼:可以透過編寫 Bash 指令碼來自動化重複性任務。
  • 更新系統:透過 apt-get updateapt-get upgrade -y 自動更新系統並安裝最新補丁。
  • 清理無用檔案:透過 apt-get autoremove -yapt-get autoclean -y 清理無用檔案。

安全性增強措施

在管理 Linux 環境時,安全性是不可忽視的一環。以下是一些常見的安全增強措施:

  1. 防火牆設定:設定防火牆規則來阻止未經授權的存取。
  2. 使用者許可權管理:嚴格控制使用者許可權以減少潛在風險。
  3. 日誌監控與分析:定期檢查和分析日誌檔案以發現異常行為。
# 安裝 ufw 防火牆工具
sudo apt-get install ufw

# 啟用防火牆並設定規則
sudo ufw enable
sudo ufw allow ssh/tcp
sudo ufw deny http/tcp

# 檢視防火牆狀態
sudo ufw status verbose

內容解密:

  • 防火牆設定:設定防火牆規則來阻止未經授權的存取。
  • 使用者許可權管理:嚴格控制使用者許可權以減少潛在風險。
  • 日誌監控與分析:定期檢查和分析日誌檔案以發現異常行為。

虛擬化技術:提升資源利用率

虛擬機器與容器技術

虛擬化技術透過將一台實際物理伺服器分割成多個虛擬機器(Virtual Machines, VMs),從而提高資源利用率。常見的一些虛擬化技術包括 KVM 和 VMware。

以下是 KVM 的基本安裝步驟:

# 安裝 KVM 包組合
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager -y

# 啟動 libvirtd 虛擬機器管理服務
sudo systemctl enable --now libvirtd

# 驗證 KVM 是否成功安裝
virsh list --all

內容解密:

  • KVM 安裝步驟:KVM 是一種開源虛擬化技術,透過安裝相關包組合來實作虛擬機器管理功能。
  • libvirtd 虛擬機器管理服務:啟動 libvirtd 與 virsh 工具可以方便地進行虛擬機器管理。

根據 Docker 的容器化佈署

除了虛擬機器之外,Docker 是另一種廣受歡迎且輕量級的容器化技術。它允許開發者將應用程式及其所需依賴包裝成一個標準化單元(即容器),並執行在任何支援 Docker 的主機上。

以下是 Docker 基本安裝步驟:

# 下載 Docker 安裝指令碼並執行安裝操作:
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh

# 新增當前使用者到 Docker 使用者組中:
sudo usermod -aG docker $USER

# 驗證 Docker 是否成功安裝:
docker --version
小段落標題1: Docker 語法介紹

Docker 提供了豐富且靈活地語法以完成各種操作任務:

  1. 基礎語法介紹:
    • docker run: 執行一個新docker container.
    • docker ps: 檢視正在執行中的docker container.
    • docker pull: 提取指定 repository 或 tag 的 image.
    • docker push: 推播image到指定repository.
    • docker stop: 停止container.
    • docker rm: 清除container.
小段落標題2: 舉例說明:
$ docker pull nginx // 提取nginx image, 預設 tag 是 latest.
$ docker run nginx // 執行nginx container, 預設 port mapping 是80.
$ docker ps // 檢視正在執行中的nginx container.
$ docker stop $(docker ps -aq) // 停止全部正在執行中的container.
$ docker rm $(docker ps -aq) // 清除全部container.
$ docker images // 檢視當前主機上的image list.
$ docker rmi $(docker images -q) // 清除全部image.

內容解密:

  1. 基礎語法介紹:

    • docker run: 執行一個新docker container, 常見引數:

      • --name: 指定container name.
      • -p: 指定 port mapping, e.g.: -p8080:80, map 主機 port8080 to container port80.
    • docker ps: 檢視正在執行中的docker container, 常見引數:

      • -a: show all containers(include stopped ones).
      • -q: show only container ID.
    • docker pull: 提取指定 repository 或 tag 的 image, 常見引數:

      • :tag: 指定image tag, e.g.: nginx:latest.
    • docker push: 推播image到指定repository.

    • docker stop: 停止container.

    • docker rm: 清除container.

  2. 舉例說明:

    $ docker pull nginx // 提取nginx image, 預設 tag 是 latest.
    $ docker run nginx // 執行nginx container, 預設 port mapping 是80.
    $ docker ps // 檢視正在執行中的nginx container.
    $ docker stop $(docker ps -aq) // 停止全部正在執行中的container.
    $ docker rm $(docker ps -aq) // 清除全部container.
    $ docker images // 檢視當前主機上的image list.
    $ docker rmi $(docker images -q) // 清除全部image.