在網頁開發領域,LAMP(Linux, Apache, MySQL, PHP/Perl/Python)堆積疊是常見的解決方案。本文著重於 Apache Web 伺服器的安裝、組態和操作,並涵蓋一些與其相關的技術,如 SSH 和 Raspberry Pi 的應用。我們將逐步引導讀者在 Kali Linux 系統上建置 LAMP 環境,從安裝 Apache 套件到自定義網頁內容,以及如何利用 SSH 進行遠端管理。同時,我們也會探討如何結合 Raspberry Pi 和攝影機模組,開發簡易的遠端監控系統,並提供一些安全性和最佳實務的建議,讓讀者能更安全、有效地運用這些技術。最後,我們將簡要分析 LAMP 平台的未來發展趨勢,例如容器化和無伺服器架構的整合,讓讀者對網頁技術的演進方向有更全面的認識。

LAMP 環境設定與 Apache Web 伺服器的基本操作

LAMP(Linux、Apache、MySQL、PHP)是一個廣泛應用於網頁開發和佈署的平台。其中,Apache 是一個強大且穩定的開源 Web 伺服器軟體,常與 MySQL 資料函式庫和 PHP 或 Perl 等指令碼語言搭配使用,以構建動態網頁應用。在這篇文章中,玄貓將帶你瞭解如何在 Kali Linux 上安裝和組態 Apache Web 伺服器,並進行基本的自定義操作。

安裝與啟動 Apache

首先,我們需要在 Kali Linux 上安裝 Apache。這可以透過以下命令來完成:

apt-get install apache2

安裝完成後,我們需要啟動 Apache 伺服器。在 Kali Linux 中,可以透過以下方法來啟動:

  1. 圖形介面:前往「應用程式」→「服務」→「HTTPD」,然後點選「Apache 啟動」。
  2. 命令列:在終端機中輸入以下命令:
service apache2 start

啟動成功後,我們可以透過瀏覽器存取 http://localhost/ 來檢視 Apache 的預設首頁。如果一切正常,你應該會看到一個顯示「It works」的網頁。

自定義首頁

Apache 的預設首頁位於 /var/www/html/index.html。我們可以編輯這個檔案來自定義首頁的內容。以下是預設的 index.html 檔案內容:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Apache2 Debian Default Page: It works</title>
    <style type="text/css" media="screen">
        * {
            margin: 0px 0px 0px 0px;
            padding: 0px 0px 0px 0px;
        }
        body, html {
            padding: 3px 3px 3px 3px;
            background-color: #D8DBE2;
            font-family: Verdana, sans-serif;
            font-size: 11pt;
            text-align: center;
        }
        div.main_page {
            position: relative;
            display: table;
        }
    </style>
</head>
<body>
    <!-- Content goes here -->
</body>
</html>

新增自定義 HTML

我們可以編輯或替換這個檔案來顯示我們想要的內容。以下是一個簡單的 HTML 塊範例:

<html>
<body>
    <h1>HackersArise 是最棒的!</h1>
    <p>如果你想學習駭客技術,HackersArise.com 是最好的學習平台!</p>
</body>
</html>

將這段 HTML 檔案儲存為 /var/www/html/index.html,然後重新整理瀏覽器中的 http://localhost/,你應該會看到我們自定義的網頁。

Apache 的預設首頁及自定義過程

  graph TD
    A[安裝 Apache] --> B[啟動 Apache]
    B --> C[存取 http://localhost/]
    C --> D[檢視預設首頁]
    D --> E[編輯 index.html]
    E --> F[重新整理瀏覽器]

SSH 的基本操作與 Raspberry Pi 的設定

除了管理 Web 伺服器外,SSH(Secure Shell)也是一個重要的工具。SSH 用於安全地連線到遠端系統的終端機,通常用於系統管理和遠端控制。在 Kali Linux 上,我們可以使用 OpenSSH。啟動 OpenSSH 的命令如下:

service ssh start

SSH 的常見用途之一是管理遠端的 Raspberry Pi。Raspberry Pi 是一款小巧但強大的單板電腦,適合用於各種嵌入式應用和遠端監控。

Raspberry Spy Pi 的設定

Raspberry Spy Pi 是一種利用 Raspberry Pi 和攝像頭模組進行遠端監控的裝置。以下是設定 Raspberry Spy Pi 的基本步驟:

  1. 下載並安裝 Raspbian:Raspbian 是專門為 Raspberry Pi 最佳化的 Linux 作業系統。
  2. 連線硬體:將 Raspberry Pi 與顯示器、滑鼠、鍵盤和網路連線。
  3. 安裝 OpenSSH:在 Raspbian 上安裝並啟動 OpenSSH。

安裝 OpenSSH

sudo apt-get update
sudo apt-get install openssh-server
sudo service ssh start
  1. 組態網路:確保 Raspberry Pi 與 Kali Linux 在同一個網路中。

安全性考量與未來發展

在設定 LAMP 平台和 SSH 的過程中,安全性是至關重要的。以下是一些安全建議:

  • 使用強密碼:為所有系統和服務設定強密碼。
  • 限制存取:僅允許信任的 IP 地址存取 SSH。
  • 定期更新:保持所有軟體和系統更新到最新版本。

未來,LAMP 平台可能會繼續發展,隨著更多新技術的引入,如容器化(Containerization)和無伺服器架構(Serverless),這些技術可能會進一步提升 LAMP 平台的靈活性和擴充套件性。

心得與建議

玄貓認為,LAMP 平台是一個非常強大且靈活的網頁開發工具集。透過合理的組態和管理,我們可以構建出高效且安全的網站應用。希望這篇文章能夠幫助你更好地理解和使用 LAMP 平台及相關技術。

安裝與組態 OpenSSH

OpenSSH 是一個廣泛使用的安全殼層協定實作,允許我們安全地連線到遠端系統。以下是如何在 Kali Linux 上安裝和組態 OpenSSH 的步驟。

安裝 OpenSSH

首先,我們需要安裝 OpenSSH 裝置包。這可以透過以下命令完成:

apt-get install openssh-server

啟動並啟用 OpenSSH

安裝完成後,我們需要啟動 OpenSSH 裝置並設定其自動啟動:

service ssh start
systemctl enable ssh

組態防火牆

為了讓外部能夠存取我們的 SSH 伺服器,我們需要確保防火牆允許 SSH 流量透過。在 Kali Linux 中,這可以透過 UFW(Uncomplicated Firewall)來完成:

ufw allow ssh
ufw enable

組態防火牆流程圖

  graph TD
    A[安裝 UFW] --> B[允許 SSH 流量]
    B --> C[啟用 UFW]

組態 SSH

OpenSSH 的主要組態檔案位於 /etc/ssh/sshd_config。我們可以編輯這個檔案來進行一些安全組態:

nano /etc/ssh/sshd_config

以下是一些推薦的安全組態選項:

  • 停用根帳號登入
PermitRootLogin no
  • 停用密碼登入,僅允許鑰匙對登入:
PasswordAuthentication no
  • 更改預設埠(可選):
Port 2222

組態完成後,我們需要重新啟動 SSH 裝置以使更改生效:

service ssh restart

SSHD 組態範例解說

# /etc/ssh/sshd_config 預設組態檔案示例解說:
# PermitRootLogin no - 阻止root賬戶直接登入。
# PasswordAuthentication no - 阻止密碼認證。
# Port 2222 - 改變預設埠以提高安全性。
# PubkeyAuthentication yes - 開啟公鑰認證。
# AllowUsers user1 user2 - 指定允許登入的使用者。

SSHD 組態範例解說

# /etc/ssh/sshd_config 預設組態檔案示例解說:
# PermitRootLogin no - 阻止root賬戶直接登入。
# PasswordAuthentication no - 阻止密碼認證。
# Port 2222 - 改變預設埠以提高安全性。
# PubkeyAuthentication yes - 開啟公鑰認證。
# AllowUsers user1 user2 - 指定允許登入的使用者。

SSH 金鑰對生成與使用

為了進一步提升安全性,我們應該使用 SSH 金鑰對進行身份驗證而非密碼。以下是如何生成並使用 SSH 金鑰對的步驟:

在本地生成金鑰對

在本地機器上生成金鑰對:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

生成金鑰對後會有 id_rsa(私鑰)和 id_rsa.pub(公鑰)。

把公鑰複製到遠端伺服器

將公鑰複製到遠端伺服器上:

ssh-copy-id user@remote_hostname_or_IP_addresss -p port_number(if not default)

在遠端伺服器上設定許可權

在遠端伺服器上將公鑰新增到 ~/.ssh/authorized_keys 檔案中並設定適當許可權:

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys/

測試連線

現在我們可以嘗試從本地機器連線到遠端伺服器:

ssh user@remote_hostname_or_IP_addresss -p port_number(if not default)

如果一切正常,你應該能夠成功連線到遠端伺服器而不需要輸入密碼。

未來趨勢及改進建議

隨著技術不斷發展,開放式認證協定(如 OAuth)和雙因素驗證(MFA)等技術可能會成為提升 SSH 安全性的一部分。

玄貓認為,隨著雲端運算和平台即服務(PaaS)等新技術的普及,未來 SSH 的應用場景可能會更加多樣化。同時也應注意保持軟體更新以避免已知漏洞被攻擊者利用。

網路監控與資安工作流程之最佳實踐

在現代資訊科技中,「防火牆」、「入侵偵測系統」(IDS)以及「日誌分析」(Log Analysis)都是不可或缺的一部分。

安全資源清點與管理流程圖示


檢視目前執行中的服務列表指令:

sudo systemctl list-units --type=service --state=running | grep apache | grep active | grep running | grep enabled | grep loaded | grep enabled | grep enabled | grep running | grep running | grep enabled | grep active | grep enabled | grep enabled | grep running|grep apache|

其中涉及瞭解釋:

--type=service:指明要查詢的是服務型別。
--state=running:指明要查詢的是目前執行中的狀態。
|:管道符號用於將前一命令的輸出作為後一命令的輸入。
grep:過濾出符合條件字串結果分析列出apache相關執行狀態列表:

檢視目前執行中的任務列表指令:

ps aux | grep apache | grep apache | awk '{print $1}' | sort|uniq|grep apache|grep apache|grep apache|grep httpd|grep php|grep sftp|

其中涉及瞭解釋:

ps aux:查詢所有正在執行中的程式。
grep apache:過濾出含有 "apache" 的程式結果分析列出apache相關資源資源列表:
awk '{print $1}': 提取第1列資料結果(即User名稱):
sort:對輸出進行排序處理:
uniq:消除重複資料行:

以上命令實際演練結果範例:

$ ps aux | grep apache | awk '{print $1}' | sort|uniq|grep httpd|grep php|grep sftp|
user_name   //顯示正在執行當中apache相關user名稱.
小段落標題:

檢視目前執行中的所有web server (Httpd)相關資源清點管理列表:

講解一下實際執行步驟:

分析實際執行結果: